:root{--bg:#f5efe2;--bg-raised:#fbf8f1;--bg-sunken:#ece4d2;--ink:#2a241b;--ink-soft:#5a5144;--ink-faint:#6c6252;--line:#e1d7c2;--accent:#7f6027;--accent-ink:#fff;--accent-soft:#f0e6cf;--code-bg:#2a241b;--code-ink:#f1ead9;--radius:10px;--shadow:0 1px 2px #2a241b0f, 0 8px 24px #2a241b0f;--font-display:"Kumbh Sans", system-ui, sans-serif;--font-body:"Lato", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--measure:62ch;--gutter:clamp(16px, 4vw, 40px);color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.6}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.01em;text-wrap:balance;margin:0 0 .5em;line-height:1.15}h1{font-size:clamp(2rem,5.5vw,3.5rem);font-weight:700}h2{font-size:clamp(1.6rem,3.5vw,2.25rem);font-weight:700}h3{font-size:1.2rem;font-weight:700}p{max-width:var(--measure);margin:0 0 1em}p,li,figcaption{text-wrap:pretty}a{color:var(--accent);text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}ul,ol{padding-left:1.2em}li{margin-bottom:.35em}code,pre{font-family:var(--font-mono);font-size:.88em}pre{background:var(--code-bg);color:var(--code-ink);border-radius:var(--radius);margin:0 0 1em;padding:14px 16px;line-height:1.5;overflow-x:auto}:not(pre)>code{background:var(--bg-sunken);border-radius:4px;padding:.1em .35em}img,iframe{max-width:100%}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.wrap{width:min(1120px, 100% - 2 * var(--gutter));margin-inline:auto}.section{border-top:1px solid var(--line);padding:clamp(56px,9vw,112px) 0}.section:first-of-type{border-top:0}section[id]{scroll-margin-top:64px}.eyebrow{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:.75em;font-size:.8rem;font-weight:700}.section .wrap>p,.section-head>p{max-width:none}.section-head{margin-bottom:28px}.section-head>:last-child{margin-bottom:0}@media (width>=960px){.split{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:start;gap:64px;display:grid}.split>.section-head{margin-bottom:0;position:sticky;top:96px}}.lead{color:var(--ink-soft);font-size:1.15rem}.grid{gap:20px;display:grid}.grid-3,.grid-2{grid-template-columns:minmax(0,1fr)}@media (width>=960px){.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}}.card{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}.card h3{margin-top:0}.card p:last-child,.card ul:last-child{margin-bottom:0}.muted{color:var(--ink-soft)}.faint{color:var(--ink-faint);font-size:.9rem}.btn{font-family:var(--font-display);border:1px solid var(--line);background:var(--bg-raised);color:var(--ink);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:12px 20px;font-size:1rem;font-weight:700;text-decoration:none;transition:transform 80ms,background .15s;display:inline-flex}.btn:hover{text-decoration:none}@media (hover:hover){.btn:hover{transform:translateY(-1px)}}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn-row{flex-wrap:wrap;gap:12px;margin-top:24px;display:flex}@media (width<=640px){body{font-size:16px}.card{padding:20px}.grid{gap:16px}.eyebrow{letter-spacing:.08em;font-size:.75rem}.lead{font-size:1.05rem}.btn{padding:11px 16px;font-size:.95rem}.btn-row{gap:10px}pre{padding:12px 14px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.btn{transition:none}}.skip:where(.astro-hkbrpulz){background:var(--accent);color:var(--accent-ink);z-index:10;border-radius:6px;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:where(.astro-hkbrpulz):focus{left:8px}.header:where(.astro-hkbrpulz){z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner:where(.astro-hkbrpulz){justify-content:space-between;align-items:center;gap:16px;min-height:60px;display:flex}.header-end:where(.astro-hkbrpulz){align-items:center;gap:20px;display:flex}.github:where(.astro-hkbrpulz){width:36px;height:36px;color:var(--ink-soft);border-radius:999px;place-items:center;display:inline-grid}.github:where(.astro-hkbrpulz):hover{color:var(--ink);background:var(--bg-sunken)}.brand:where(.astro-hkbrpulz){font-family:var(--font-display);color:var(--ink);white-space:nowrap;align-items:center;gap:10px;font-weight:700;text-decoration:none;display:inline-flex}nav:where(.astro-hkbrpulz) ul:where(.astro-hkbrpulz){margin:0;padding:0;list-style:none}.nav-links:where(.astro-hkbrpulz){align-items:center;gap:18px;display:flex}.nav-links:where(.astro-hkbrpulz) li:where(.astro-hkbrpulz){margin:0}nav:where(.astro-hkbrpulz) a:where(.astro-hkbrpulz){color:var(--ink-soft);white-space:nowrap;font-size:.95rem;text-decoration:none}nav:where(.astro-hkbrpulz) a:where(.astro-hkbrpulz):hover{color:var(--ink);text-decoration:underline}.menu:where(.astro-hkbrpulz){display:none}.menu:where(.astro-hkbrpulz) summary:where(.astro-hkbrpulz){cursor:pointer;font-family:var(--font-display);color:var(--ink);border:1px solid var(--line);background:var(--bg-raised);border-radius:999px;padding:8px 14px;font-size:.95rem;font-weight:700;list-style:none}.menu:where(.astro-hkbrpulz) summary:where(.astro-hkbrpulz)::-webkit-details-marker{display:none}.menu:where(.astro-hkbrpulz)[open] summary:where(.astro-hkbrpulz){background:var(--accent-soft);border-color:var(--accent)}.menu:where(.astro-hkbrpulz) ul:where(.astro-hkbrpulz){padding:8px var(--gutter) 14px;background:var(--bg-raised);border-bottom:1px solid var(--line);box-shadow:var(--shadow);gap:2px;display:grid;position:absolute;top:100%;left:0;right:0}.menu:where(.astro-hkbrpulz) ul:where(.astro-hkbrpulz) a:where(.astro-hkbrpulz){color:var(--ink);padding:10px 0;font-size:1.05rem;display:block}.footer:where(.astro-hkbrpulz){border-top:1px solid var(--line);background:var(--bg-sunken);padding:28px 0 36px}.credit:where(.astro-hkbrpulz){max-width:none;color:var(--ink-soft);text-align:center;text-wrap:balance;margin-block:0;font-size:.9rem}@media (width<=959px){.nav-links:where(.astro-hkbrpulz){display:none}.menu:where(.astro-hkbrpulz){display:block}}@media (width<=639px){.header-end:where(.astro-hkbrpulz){gap:6px}.brand:where(.astro-hkbrpulz){font-size:.95rem}}@media (width<=399px){.header-inner:where(.astro-hkbrpulz){gap:8px}.brand:where(.astro-hkbrpulz){gap:8px;min-width:0;font-size:.88rem}.brand:where(.astro-hkbrpulz) span:where(.astro-hkbrpulz):last-child{text-overflow:ellipsis;overflow:hidden}.menu:where(.astro-hkbrpulz) summary:where(.astro-hkbrpulz){padding:6px 12px}.github:where(.astro-hkbrpulz){width:32px}}@media (pointer:coarse){.skip:where(.astro-hkbrpulz){padding:12px 16px}.brand:where(.astro-hkbrpulz){min-height:44px}.menu:where(.astro-hkbrpulz) summary:where(.astro-hkbrpulz){align-items:center;min-height:44px;display:flex}.github:where(.astro-hkbrpulz){width:44px;height:44px}}.art:where(.astro-66u3kelc){container-type:inline-size}.art:where(.astro-66u3kelc) svg:where(.astro-66u3kelc){width:100%;height:auto;font-family:var(--font-body);-webkit-user-select:none;user-select:none}.wide:where(.astro-66u3kelc){display:block}.narrow:where(.astro-66u3kelc){display:none}@container (width<=439px){.wide:where(.astro-66u3kelc){display:none}.narrow:where(.astro-66u3kelc){display:block}}.card:where(.astro-66u3kelc){fill:var(--bg-raised);stroke:var(--line);stroke-width:1.5px}.frame:where(.astro-66u3kelc){fill:none;stroke:var(--line);stroke-width:1px}.label:where(.astro-66u3kelc){fill:var(--ink-soft);font-size:15px}.strong:where(.astro-66u3kelc){fill:var(--ink);font-weight:700;font-family:var(--font-display)}.caption:where(.astro-66u3kelc){fill:var(--ink-soft);font-size:13px}.flow:where(.astro-66u3kelc){fill:none;stroke:var(--ink-faint);stroke-width:1.5px;stroke-dasharray:4 5}.arrow-head:where(.astro-66u3kelc){fill:var(--ink-faint)}.field:where(.astro-66u3kelc){fill:#fff;stroke:var(--line);stroke-width:1.5px}.glyph:where(.astro-66u3kelc){fill:none;stroke:var(--ink-soft);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.query:where(.astro-66u3kelc){fill:var(--ink);font-size:13px}.hero:where(.astro-ge2uvauf){padding:clamp(48px,8vw,96px) 0}.hero-grid:where(.astro-ge2uvauf){grid-template-columns:minmax(0,11fr) minmax(0,9fr);align-items:center;gap:48px;display:grid}.hero-art:where(.astro-ge2uvauf){max-width:560px}@media (width<=959px){.hero-grid:where(.astro-ge2uvauf){grid-template-columns:1fr;gap:40px}.hero-art:where(.astro-ge2uvauf){max-width:480px}}.hero:where(.astro-ge2uvauf) h1:where(.astro-ge2uvauf){max-width:20ch}.hero:where(.astro-ge2uvauf) .lead:where(.astro-ge2uvauf){max-width:56ch;margin-bottom:0;font-size:1.25rem}@media (width<=639px){.hero:where(.astro-ge2uvauf){padding-top:48px}.hero:where(.astro-ge2uvauf) .lead:where(.astro-ge2uvauf){font-size:1.1rem}}.cases:where(.astro-5oxtwd5f){margin:0;padding:0;list-style:none}.cases:where(.astro-5oxtwd5f) li:where(.astro-5oxtwd5f){border-top:1px solid var(--line);margin:0;padding:28px 0}.cases:where(.astro-5oxtwd5f) li:where(.astro-5oxtwd5f):first-child{border-top:0;padding-top:0}.cases:where(.astro-5oxtwd5f) li:where(.astro-5oxtwd5f):last-child{padding-bottom:0}.cases:where(.astro-5oxtwd5f) h3:where(.astro-5oxtwd5f){margin-bottom:.4em;font-size:1.2rem}.cases:where(.astro-5oxtwd5f) p:where(.astro-5oxtwd5f){color:var(--ink-soft);margin-bottom:14px}.cases:where(.astro-5oxtwd5f) picture{display:block}.cases:where(.astro-5oxtwd5f) img{border-radius:calc(var(--radius) - 4px);border:1px solid var(--line);width:100%;height:auto;display:block}.steps:where(.astro-l43jfdkk){grid-template-columns:minmax(0,1fr);gap:32px;margin:0;padding:0;list-style:none;display:grid}@media (width>=960px){.steps:where(.astro-l43jfdkk){grid-template-columns:repeat(3,minmax(0,1fr));gap:40px}}.steps:where(.astro-l43jfdkk)>li:where(.astro-l43jfdkk){border-top:2px solid var(--line);margin:0;padding-top:20px}.num:where(.astro-l43jfdkk){background:var(--accent);width:36px;height:36px;color:var(--accent-ink);font-family:var(--font-display);border-radius:50%;place-items:center;margin-bottom:14px;font-weight:700;display:inline-grid}.steps:where(.astro-l43jfdkk) h3:where(.astro-l43jfdkk){margin-bottom:.4em;font-size:1.15rem}.steps:where(.astro-l43jfdkk) p:where(.astro-l43jfdkk){margin-bottom:0}.search:where(.astro-l43jfdkk){border-top:1px solid var(--line);margin:48px 0 0;padding-top:24px}.search:where(.astro-l43jfdkk) h3:where(.astro-l43jfdkk){margin-bottom:0;font-size:1.15rem}.search-cases:where(.astro-l43jfdkk){grid-template-columns:minmax(0,1fr);gap:20px;margin-top:16px;display:grid}@media (width>=960px){.search-cases:where(.astro-l43jfdkk){grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}}.search-cases:where(.astro-l43jfdkk) figure:where(.astro-l43jfdkk){background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);margin:0;padding:16px;container-type:inline-size}.query:where(.astro-l43jfdkk){border:1px solid var(--line);max-width:none;color:var(--ink);background:#fff;border-radius:999px;align-items:center;gap:10px;margin:0;padding:10px 16px;font-size:1.05rem;display:flex}.query:where(.astro-l43jfdkk) svg:where(.astro-l43jfdkk){fill:none;width:18px;height:18px;stroke:var(--ink-faint);stroke-width:2px;stroke-linecap:round;flex:none}.results:where(.astro-l43jfdkk){grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0 0;padding:0;list-style:none;display:grid}@container (width>=26rem){.results:where(.astro-l43jfdkk){grid-template-columns:repeat(4,minmax(0,1fr))}}.results:where(.astro-l43jfdkk) li:where(.astro-l43jfdkk){margin:0}.results:where(.astro-l43jfdkk) img:where(.astro-l43jfdkk){aspect-ratio:1;object-fit:contain;background:var(--bg-sunken);border-radius:6px;width:100%;height:auto;padding:6px;display:block}.search-cases:where(.astro-l43jfdkk) figcaption:where(.astro-l43jfdkk){color:var(--ink-soft);margin-top:14px}.ways:where(.astro-hjwq3ci7){grid-template-columns:minmax(0,1fr);gap:20px;margin:0;padding:0;list-style:none;display:grid}.ways:where(.astro-hjwq3ci7) li:where(.astro-hjwq3ci7){margin:0}.way:where(.astro-hjwq3ci7) h3:where(.astro-hjwq3ci7){margin-bottom:.4em;font-size:1.15rem}.way:where(.astro-hjwq3ci7) h3:where(.astro-hjwq3ci7) a:where(.astro-hjwq3ci7){color:var(--ink)}.way:where(.astro-hjwq3ci7) p:where(.astro-hjwq3ci7){margin-bottom:0}@media (width>=960px){.ways:where(.astro-hjwq3ci7){grid-template-columns:repeat(3,minmax(0,1fr))}}.showcases:where(.astro-wyo25zii){gap:20px;margin:0;padding:0;list-style:none;display:grid}.showcases:where(.astro-wyo25zii)>li:where(.astro-wyo25zii){margin:0}.showcase:where(.astro-wyo25zii){grid-template-columns:minmax(0,1fr);align-items:center;gap:20px;display:grid}.shot:where(.astro-wyo25zii){border-radius:calc(var(--radius) - 4px);border:1px solid var(--line);background:#121212;display:block;overflow:hidden}.shot:where(.astro-wyo25zii) picture{display:block}.shot:where(.astro-wyo25zii) img{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%;height:auto;display:block}.showcase:where(.astro-wyo25zii) h3:where(.astro-wyo25zii){margin-bottom:.3em}.showcase:where(.astro-wyo25zii) h3:where(.astro-wyo25zii) a:where(.astro-wyo25zii){color:var(--ink);text-decoration:none}.showcase:where(.astro-wyo25zii) h3:where(.astro-wyo25zii) a:where(.astro-wyo25zii):hover{text-decoration:underline}.try-label:where(.astro-wyo25zii){color:var(--ink-soft);margin:18px 0 8px;font-size:.85rem;font-weight:700}.tries:where(.astro-wyo25zii){flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.tries:where(.astro-wyo25zii) li:where(.astro-wyo25zii){margin:0}.tries:where(.astro-wyo25zii) a:where(.astro-wyo25zii){border:1px solid var(--line);background:var(--bg-raised);color:var(--ink);border-radius:999px;padding:6px 12px;font-style:italic;text-decoration:none;display:inline-block}.tries:where(.astro-wyo25zii) a:where(.astro-wyo25zii):hover{border-color:var(--accent);background:var(--accent-soft)}@media (pointer:coarse){.tries:where(.astro-wyo25zii) a:where(.astro-wyo25zii){padding:10px 14px}}@media (width>=960px){.showcase:where(.astro-wyo25zii){grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:32px}}.more:where(.astro-zsd2brlv){margin:0}.wishlist:where(.astro-lilee4hy){gap:8px;display:grid}.wishlist:where(.astro-lilee4hy) p:where(.astro-lilee4hy):last-child{margin-bottom:0}.wishlist-actions:where(.astro-lilee4hy) .btn-row:where(.astro-lilee4hy){margin-top:8px}.help:where(.astro-lilee4hy){margin-top:20px}.ideas:where(.astro-lilee4hy){padding-left:1.2em}@media (width>=960px){.wishlist:where(.astro-lilee4hy){grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:48px}.wishlist-actions:where(.astro-lilee4hy) .btn-row:where(.astro-lilee4hy){margin-top:0}}
