:root{--paper:#f2f4f8;--paper-raised:#ffffff;--ink:#16213f;--ink-soft:#4a5577;--ink-faint:#8790ab;--rule:#d8dce8;--accent:#2f49d1;--accent-ink:#ffffff;--accent-wash:#e3e8fb;--stage-production:#1d7f55;--stage-beta:#b8730a;--stage-development:#2f49d1;--stage-concept:#7a5ea8;--stage-paused:#8790ab;--radius-s:6px;--radius-m:14px;--measure:68ch;--gutter:clamp(16px,4vw,40px);--font-display:var(--font-bricolage),"Segoe UI",sans-serif;--font-body:var(--font-instrument),"Segoe UI",sans-serif;--font-code:var(--font-jetbrains),ui-monospace,monospace;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#0e1530;--paper-raised:#16203f;--ink:#e8ecf6;--ink-soft:#aab3cf;--ink-faint:#717b9c;--rule:#28335a;--accent:#8ea0ff;--accent-ink:#0e1530;--accent-wash:#1c2757;--stage-production:#4cc38a;--stage-beta:#e6a53c;--stage-development:#8ea0ff;--stage-concept:#b69ae0;--stage-paused:#717b9c;color-scheme:dark}}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{animation:none!important;transition:none!important}}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:1.0625rem;line-height:1.6;overflow-x:hidden}img{max-width:100%;height:auto}a{color:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}h1,h2,h3{font-family:var(--font-display);line-height:1.1;margin:0;letter-spacing:-.01em}h1{font-size:clamp(2.5rem,6.5vw,4.75rem);font-weight:700;letter-spacing:-.035em}h2{font-size:clamp(1.75rem,3.5vw,2.5rem);letter-spacing:-.02em}h2,h3{font-weight:650}h3{font-size:1.25rem}p{margin:0}.wrap{width:100%;max-width:1180px;margin:0 auto;padding:0 var(--gutter)}.prose{max-width:var(--measure);color:var(--ink-soft)}.prose p+p{margin-top:1em}.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:16px;z-index:10;background:var(--paper-raised);padding:8px 14px;border-radius:var(--radius-s)}.masthead{border-bottom:1px solid var(--rule)}.masthead-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:68px}.wordmark{font-family:var(--font-display);font-weight:700;font-size:1.125rem;text-decoration:none;letter-spacing:-.02em}.wordmark span{color:var(--accent)}.nav{display:flex;align-items:center;gap:4px}.nav a{text-decoration:none;padding:8px 12px;border-radius:var(--radius-s);color:var(--ink-soft);font-weight:500;font-size:.975rem}.nav a:hover{color:var(--ink);background:var(--accent-wash)}.nav .lang{margin-left:8px;border:1px solid var(--rule);color:var(--ink)}.menu-toggle{display:none}@media (max-width:820px){.menu-toggle{display:inline-flex;align-items:center;gap:8px;background:none;border:1px solid var(--rule);color:var(--ink);font:inherit;padding:8px 12px;border-radius:var(--radius-s);cursor:pointer}.nav{display:none;position:absolute;left:0;right:0;top:68px;z-index:5;flex-direction:column;align-items:stretch;background:var(--paper-raised);border-bottom:1px solid var(--rule);padding:8px var(--gutter) 16px}.nav[data-open=true]{display:flex}.nav .lang{margin:8px 0 0;text-align:center}.masthead{position:relative}}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 20px;border-radius:var(--radius-s);text-decoration:none;border:1.5px solid var(--accent);font:inherit;font-weight:600;cursor:pointer}.button-primary{background:var(--accent);color:var(--accent-ink)}.button-primary:hover{filter:brightness(1.08)}.button-secondary{background:transparent;color:var(--accent)}.button-secondary:hover{background:var(--accent-wash)}.button[disabled]{opacity:.6;cursor:progress}.hero{padding:clamp(48px,8vw,104px) 0 clamp(48px,7vw,88px)}.hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-gap:clamp(32px,5vw,72px);gap:clamp(32px,5vw,72px);align-items:start}.hero .kicker{color:var(--ink-soft);font-weight:500;margin-bottom:20px}.hero h1{max-width:11ch}.hero .lead{margin-top:24px;font-size:clamp(1.125rem,1.6vw,1.3rem);color:var(--ink-soft);max-width:38ch}.hero-page{padding-bottom:8px}.hero-page h1{max-width:18ch;font-size:clamp(2.25rem,5vw,3.5rem)}@media (max-width:900px){.hero-grid{grid-template-columns:minmax(0,1fr)}}.log{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-m);padding:22px 22px 8px}.log-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid var(--rule)}.log-head h2{font-size:1.05rem;font-weight:650;letter-spacing:0}.log-head p{font-size:.875rem;color:var(--ink-faint);display:flex;align-items:center;gap:8px}.pulse{width:8px;height:8px;border-radius:50%;background:var(--stage-production);box-shadow:0 0 0 0 var(--stage-production);animation:pulse 2.4s ease-out infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--stage-production) 60%,transparent)}70%,to{box-shadow:0 0 0 8px transparent}}.log ol{list-style:none;margin:0;padding:0}.log li{display:grid;grid-template-columns:4px minmax(0,1fr);grid-gap:14px;gap:14px;padding:14px 0;border-bottom:1px solid var(--rule)}.log li:last-child{border-bottom:0}.log .bar{border-radius:2px;background:var(--stage,var(--accent))}.log .message{color:var(--ink);font-weight:500;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.log .where{margin-top:4px;font-size:.875rem;color:var(--ink-faint);display:flex;flex-wrap:wrap;gap:4px 12px}.log .where a{color:var(--ink-soft);font-weight:600;text-decoration:none}.log .where a:hover{text-decoration:underline}.sha{font-family:var(--font-code);font-size:.8125rem}.block{padding:clamp(48px,7vw,88px) 0;border-top:1px solid var(--rule)}.block-head{display:grid;grid-gap:14px;gap:14px;margin-bottom:36px;max-width:var(--measure)}.block-head .kicker{color:var(--accent);font-weight:600}.block-cta{background:var(--ink);color:var(--paper);border-top:0}.block-cta .prose{color:color-mix(in srgb,var(--paper) 78%,transparent)}.block-cta .button-primary{background:var(--paper);color:var(--ink);border-color:var(--paper)}.block-cta .button-secondary{color:var(--paper);border-color:color-mix(in srgb,var(--paper) 55%,transparent)}.block-cta .button-secondary:hover{background:color-mix(in srgb,var(--paper) 10%,transparent)}.block-hero{border-top:0;padding-bottom:12px}.items{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:16px;gap:16px}.item{padding:20px;border:1px solid var(--rule);border-radius:var(--radius-m);background:var(--paper-raised);display:grid;grid-gap:8px;gap:8px;align-content:start}.item .icon{font-size:1.5rem;line-height:1}.item h3{font-size:1.1rem}.item p{color:var(--ink-soft);white-space:pre-line}.item .meta{font-size:.9rem}.item .meta,.item a.item-link{color:var(--accent);font-weight:600}.item a.item-link{text-decoration:none;margin-top:4px}.item a.item-link:hover{text-decoration:underline}.items-plain{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 32px}.items-plain .item{background:none;border:0;border-top:1px solid var(--rule);border-radius:0;padding:14px 0}.ledger{list-style:none;margin:0;padding:0;border-top:2px solid var(--ink)}.entry{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto;grid-gap:16px 40px;gap:16px 40px;padding:28px 0;border-bottom:1px solid var(--rule);align-items:start}.entry-title{display:grid;grid-gap:10px;gap:10px}.entry-title h3{font-size:clamp(1.5rem,2.6vw,2rem);font-weight:700;letter-spacing:-.02em}.entry-title h3 a{text-decoration:none}.entry-title h3 a:hover{color:var(--accent)}.entry-tags{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:.9rem;color:var(--ink-faint)}.entry-body{color:var(--ink-soft)}.entry-stats{display:grid;grid-gap:4px;gap:4px;justify-items:end;text-align:right;min-width:150px;font-size:.9rem;color:var(--ink-faint)}.entry-stats strong{font-family:var(--font-display);font-size:1.5rem;color:var(--ink);font-weight:650}.entry-last{margin-top:12px;font-size:.9rem;color:var(--ink-faint);overflow-wrap:anywhere}@media (max-width:860px){.entry{grid-template-columns:minmax(0,1fr);gap:12px}.entry-stats{justify-items:start;text-align:left;grid-auto-flow:column;justify-content:start;gap:16px;align-items:baseline}}.stage{display:inline-flex;align-items:center;gap:7px;font-weight:600;color:var(--stage-color);font-size:.875rem;padding:3px 10px 3px 8px;border-radius:999px;background:color-mix(in srgb,var(--stage-color) 12%,transparent)}.stage:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.stage-production{--stage-color:var(--stage-production)}.stage-beta{--stage-color:var(--stage-beta)}.stage-development{--stage-color:var(--stage-development)}.stage-concept{--stage-color:var(--stage-concept)}.stage-paused{--stage-color:var(--stage-paused)}.project-head{padding:clamp(40px,7vw,88px) 0 40px}.project-head .back{display:inline-block;margin-bottom:28px;color:var(--ink-soft);font-weight:500}.project-head h1{font-size:clamp(2.5rem,6vw,4.25rem)}.project-head .lead{margin-top:20px;font-size:clamp(1.125rem,1.6vw,1.3rem);max-width:48ch;color:var(--ink-soft)}.project-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-gap:clamp(32px,5vw,64px);gap:clamp(32px,5vw,64px);padding-bottom:72px;align-items:start}@media (max-width:920px){.project-grid{grid-template-columns:minmax(0,1fr)}}.project-main{display:grid;grid-gap:48px;gap:48px}.project-main section{display:grid;grid-gap:16px;gap:16px}.project-main h2{font-size:1.5rem}.checklist{list-style:none;margin:0;padding:0;display:grid;grid-gap:10px;gap:10px;max-width:var(--measure)}.checklist li{position:relative;padding-left:26px;color:var(--ink-soft)}.checklist li:before{content:"";position:absolute;left:2px;top:.6em;width:10px;height:10px;border-radius:2px;background:var(--stage-color,var(--accent))}.checklist-open li:before{background:none;border:2px solid var(--ink-faint)}.chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.chips li{border:1px solid var(--rule);border-radius:var(--radius-s);padding:4px 10px;font-size:.925rem;background:var(--paper-raised)}.aside{position:-webkit-sticky;position:sticky;top:24px;display:grid;grid-gap:16px;gap:16px}.panel{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-m);padding:22px;display:grid;grid-gap:14px;gap:14px}.facts{display:grid;grid-template-columns:auto 1fr;grid-gap:8px 16px;gap:8px 16px;margin:0;font-size:.95rem}.facts dt{color:var(--ink-faint)}.facts dd{margin:0;text-align:right;font-weight:600}.commits{list-style:none;margin:0;padding:0;display:grid}.commits li{padding:12px 0;border-top:1px solid var(--rule);display:grid;grid-gap:2px;gap:2px}.commits .message{overflow-wrap:anywhere}.commits .when{color:var(--ink-faint);font-size:.85rem}.rewards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:16px;gap:16px}.reward{border:1px solid var(--rule);border-radius:var(--radius-m);padding:20px;display:grid;grid-gap:12px;gap:12px;align-content:start;background:var(--paper-raised)}.reward .price{font-family:var(--font-display);font-size:2rem;font-weight:700}.reward .price small{font-family:var(--font-body);font-size:.95rem;color:var(--ink-faint);font-weight:500}.reward ul{margin:0;padding-left:18px;color:var(--ink-soft);display:grid;grid-gap:4px;gap:4px}.faq{border-top:1px solid var(--rule)}.faq summary{cursor:pointer;padding:16px 0;font-weight:600;list-style-position:outside}.faq p{padding:0 0 18px;color:var(--ink-soft);max-width:var(--measure)}.form{display:grid;grid-gap:18px;gap:18px;max-width:640px}.field{display:grid;grid-gap:6px;gap:6px}.field label{font-weight:600;font-size:.95rem}.field input,.field select,.field textarea{font:inherit;color:var(--ink);background:var(--paper-raised);border:1.5px solid var(--rule);border-radius:var(--radius-s);padding:11px 12px;width:100%}.field textarea{min-height:150px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-wash)}.form-status{padding:14px 16px;border-radius:var(--radius-s)}.form-status[data-kind=ok]{background:color-mix(in srgb,var(--stage-production) 14%,transparent)}.form-status[data-kind=error]{background:color-mix(in srgb,#d0342c 14%,transparent)}.honeypot{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.footer{border-top:1px solid var(--rule);padding:40px 0 48px;color:var(--ink-faint);font-size:.95rem}.footer-row{justify-content:space-between;gap:16px 32px}.footer nav,.footer-row{display:flex;flex-wrap:wrap}.footer nav{gap:8px 20px}.footer a{color:var(--ink-soft);text-decoration:none}.footer a:hover{color:var(--ink);text-decoration:underline}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bricolage Grotesque Fallback;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_a4bae9{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.__variable_a4bae9{--font-bricolage:"Bricolage Grotesque","Bricolage Grotesque Fallback"}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400 700;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Instrument Sans Fallback;src:local("Arial");ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.00%;size-adjust:102.74%}.__className_3d9088{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.__variable_3d9088{--font-instrument:"Instrument Sans","Instrument Sans Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/2f186ab49059fbbb-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7be269dd6123b082-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/db5568a2cfd831e2-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6760c1b492207d80-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/1f424c9580f97313-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/427e4a37d3642943-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:JetBrains Mono Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_ecea63{font-family:JetBrains Mono,JetBrains Mono Fallback;font-weight:400;font-style:normal}.__variable_ecea63{--font-jetbrains:"JetBrains Mono","JetBrains Mono Fallback"}