@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/_next/static/media/schibsted-grotesk-latin-ext-wght-normal.09a8b277.woff2) format("woff2-variations");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:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/_next/static/media/schibsted-grotesk-latin-wght-normal.dae0c9f4.woff2) format("woff2-variations");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-cyrillic-ext-400-normal.66a2e865.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-ext-400-normal.88f8fd5b.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-cyrillic-400-normal.651bc97e.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-400-normal.9533b520.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-vietnamese-400-normal.110e2a76.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-vietnamese-400-normal.7d495472.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-latin-ext-400-normal.9faee8e8.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-ext-400-normal.f14ffb91.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/ibm-plex-mono-latin-400-normal.06ac09dc.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-400-normal.e32cf7a4.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-mono-cyrillic-ext-500-normal.60bbe6c8.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-ext-500-normal.994c9659.woff) format("woff");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-mono-cyrillic-500-normal.2a0db536.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-cyrillic-500-normal.d2ac083e.woff) format("woff");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-mono-vietnamese-500-normal.cd8df815.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-vietnamese-500-normal.e53d79b9.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-mono-latin-ext-500-normal.5a49cbe3.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-ext-500-normal.f9f2cfdc.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_next/static/media/ibm-plex-mono-latin-500-normal.dece0821.woff2) format("woff2"),url(/_next/static/media/ibm-plex-mono-latin-500-normal.2258ff2f.woff) format("woff");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}:root{--paper:#f2f4f6;--surface:#ffffff;--ink:#17202b;--muted:#586373;--rule:#d5dbe3;--code-bg:#f8f9fb;--note-bg:#ffe86b;--note-ink:#3d3200;--add-bg:#e3f4ea;--add-ink:#17643e;--del-bg:#fbe7e3;--del-ink:#9b2f20;--link:#1d4fb5;--danger:#a32a1c;--focus:#1d4fb5;--font-sans:"Schibsted Grotesk Variable","Schibsted Grotesk",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--step--1:0.875rem;--step-0:1rem;--step-1:1.25rem;--step-2:1.625rem;--step-3:2.25rem;--step-4:clamp(2.25rem,1.6rem + 2.6vw,3.25rem);color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#11151b;--surface:#182029;--ink:#e5e9ef;--muted:#9aa4b3;--rule:#2a3440;--code-bg:#141a22;--note-bg:#e6cd3e;--note-ink:#2a2200;--add-bg:#15301f;--add-ink:#7fd3a2;--del-bg:#3a1c17;--del-ink:#f0a597;--link:#8fb1ff;--danger:#ff9a8a;--focus:#8fb1ff;color-scheme:dark}}:root[data-theme=dark]{--paper:#11151b;--surface:#182029;--ink:#e5e9ef;--muted:#9aa4b3;--rule:#2a3440;--code-bg:#141a22;--note-bg:#e6cd3e;--note-ink:#2a2200;--add-bg:#15301f;--add-ink:#7fd3a2;--del-bg:#3a1c17;--del-ink:#f0a597;--link:#8fb1ff;--danger:#ff9a8a;--focus:#8fb1ff;color-scheme:dark}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);line-height:1.55;padding-inline:16px}img,svg{max-width:100%}a{color:var(--link);text-underline-offset:.18em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:3px}h1,h2,h3{line-height:1.15;text-wrap:balance;margin:0;letter-spacing:-.015em}h1{font-size:var(--step-4);letter-spacing:-.03em}h1,h2{font-weight:700}h2{font-size:var(--step-3)}h3{font-size:var(--step-1);font-weight:600}p{margin:0}code,kbd,pre{font-family:var(--font-mono);font-size:.875em}:not(pre)>code{background:var(--code-bg);border:1px solid var(--rule);border-radius:4px;padding:.05em .35em}.wrap{max-width:68rem;margin-inline:auto}.prose{max-width:40rem}.lede{font-size:var(--step-1);line-height:1.45;max-width:36rem}.lede,.muted{color:var(--muted)}.skip{position:absolute;left:-999px}.skip:focus{left:16px;top:16px;background:var(--surface);padding:8px 12px;z-index:10}.site-header{padding-block:20px}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.wordmark{display:inline-flex;align-items:baseline;gap:2px;font-weight:700;font-size:var(--step-1);color:var(--ink);text-decoration:none;letter-spacing:-.02em}.wordmark .caret{font-family:var(--font-mono);font-weight:500;color:var(--muted)}.nav{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.nav a{color:var(--ink);text-decoration:none;font-weight:500}.nav a:hover,.nav a[aria-current=page]{text-decoration:underline}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-weight:600;cursor:pointer;background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:8px;padding:11px 18px}.btn,.btn:hover{text-decoration:none}.btn:hover{opacity:.9}.btn[disabled]{opacity:.6;cursor:progress}.btn-quiet{background:transparent;color:var(--ink);border-color:var(--rule)}.waitlist{display:grid;grid-gap:12px;gap:12px;margin-top:28px;max-width:30rem}.waitlist .row{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.field{display:grid;grid-gap:4px;gap:4px;min-width:0}.field label{font-size:var(--step--1);font-weight:600}.field .opt{font-weight:400;color:var(--muted)}.field input{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:10px 12px;width:100%}.field input:focus-visible{outline:2px solid var(--focus);outline-offset:0;border-color:var(--focus)}.field input[aria-invalid=true]{border-color:var(--danger)}.form-note{color:var(--muted)}.form-error,.form-note{font-size:var(--step--1)}.form-error{color:var(--danger);font-weight:500}.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.hero{padding-block:40px 72px}.hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);grid-gap:56px;gap:56px;align-items:start}.hero .lede{margin-top:20px}@media (max-width:920px){.hero .wrap{grid-template-columns:minmax(0,1fr);gap:40px}}@media (max-width:520px){.waitlist .row{grid-template-columns:minmax(0,1fr)}}.review{background:var(--surface);border:1px solid var(--rule);border-radius:12px;overflow:hidden}.review-head{padding:14px 16px;border-bottom:1px solid var(--rule);display:grid;grid-gap:6px;gap:6px}.review-head .ask{font-size:var(--step--1)}.handle{font-weight:600}.handle.ella{color:var(--ink);background:var(--note-bg);color:var(--note-ink);padding:0 4px;border-radius:3px}.file{font-family:var(--font-mono);font-size:.8rem;color:var(--muted)}.diff-scroll{overflow-x:auto}.diff{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.75rem;line-height:1.6;background:var(--code-bg)}.diff td{padding:0 10px;white-space:pre;vertical-align:top}.diff .ln{color:var(--muted);text-align:right;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:1%}.diff .hunk td{color:var(--muted);padding-block:4px}.diff .add{background:var(--add-bg)}.diff .add .code,.diff .add .sign{color:var(--add-ink)}.diff .del{background:var(--del-bg)}.diff .del .code,.diff .del .sign{color:var(--del-ink)}.diff .sign{width:1%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.diff mark{background:var(--note-bg);color:var(--note-ink);border-radius:2px;padding:0 1px}.pin{display:inline-grid;place-items:center;width:1.3rem;height:1.3rem;border-radius:50%;background:var(--note-bg);color:var(--note-ink);font-family:var(--font-sans);font-size:.72rem;font-weight:700}.notes{list-style:none;margin:0;padding:14px 16px 16px;display:grid;grid-gap:12px;gap:12px;border-top:1px solid var(--rule)}.notes li{display:grid;grid-template-columns:auto 1fr;grid-gap:10px;gap:10px;font-size:var(--step--1);line-height:1.5}.notes b{font-weight:600}.review-foot{padding:10px 16px 14px;font-size:.8rem;color:var(--muted)}.review-foot,.section{border-top:1px solid var(--rule)}.section{padding-block:64px}.section h2+.lede,.section h2+p{margin-top:14px}.threads{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:20px;gap:20px;margin-top:36px}@media (max-width:920px){.threads{grid-template-columns:minmax(0,1fr)}}.thread{display:grid;grid-gap:10px;gap:10px;align-content:start}.thread h3{font-size:var(--step-0);color:var(--muted);font-weight:500}.msg{display:grid;grid-gap:4px;gap:4px;padding:12px 14px;border-radius:10px;font-size:var(--step--1)}.msg.from-dev{background:var(--surface);border:1px solid var(--rule)}.msg.from-ella{background:var(--code-bg);border:1px solid var(--rule)}.msg ul{margin:0;padding-left:1.1em;display:grid;grid-gap:2px;gap:2px}.msg .who{font-weight:600;font-size:.8rem}.steps{list-style:none;margin:36px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:28px;gap:28px;counter-reset:step}@media (max-width:920px){.steps{grid-template-columns:minmax(0,1fr)}}.steps li{counter-increment:step;display:grid;grid-gap:10px;gap:10px;align-content:start;min-width:0}.steps li:before{content:counter(step);font-family:var(--font-mono);font-weight:500}.steps li:before,.steps p{color:var(--muted)}.codeblock{position:relative;min-width:0}.codeblock pre{margin:0;background:var(--code-bg);border:1px solid var(--rule);border-radius:8px;padding:12px 14px;overflow-x:auto;line-height:1.55;font-size:.82rem}.codeblock .copy{position:absolute;top:6px;right:6px;font:inherit;font-size:.75rem;font-weight:600;background:var(--surface);color:var(--ink);border:1px solid var(--rule);border-radius:6px;padding:3px 8px;cursor:pointer}.codeblock .copy:hover{border-color:var(--muted)}.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:48px;gap:48px;align-items:start}@media (max-width:920px){.split{grid-template-columns:minmax(0,1fr);gap:28px}}.checklist{list-style:none;padding:0;margin:20px 0 0;display:grid;grid-gap:10px;gap:10px}.checklist li{display:grid;grid-template-columns:1.4rem 1fr;grid-gap:6px;gap:6px}.checklist .yes:before{content:"+";font-family:var(--font-mono);color:var(--add-ink);font-weight:600}.checklist .no:before{content:"\2212";font-family:var(--font-mono);color:var(--del-ink);font-weight:600}.cta-band{padding-block:64px 80px;border-top:1px solid var(--rule)}.cta-band .wrap{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}.site-footer{padding-block:28px 40px;border-top:1px solid var(--rule);font-size:var(--step--1);color:var(--muted)}.site-footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.site-footer a{color:var(--muted)}.docs{display:grid;grid-template-columns:13rem minmax(0,1fr);grid-gap:48px;gap:48px;padding-block:32px 80px}@media (max-width:860px){.docs{grid-template-columns:minmax(0,1fr);gap:24px}.toc{position:static!important}}.toc{position:-webkit-sticky;position:sticky;top:calc(env(safe-area-inset-top, 0px) + 20px);align-self:start;font-size:var(--step--1)}.toc ol{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-gap:6px;gap:6px}.toc a{color:var(--muted);text-decoration:none}.toc a:hover{color:var(--ink);text-decoration:underline}.toc .title{font-weight:600}.doc{display:grid;grid-gap:18px;gap:18px;min-width:0;max-width:46rem}.doc h2{font-size:var(--step-2);margin-top:28px}.doc h2,.doc h3{scroll-margin-top:20px}.doc h3{margin-top:12px}.doc li,.doc p{max-width:42rem}.doc ol,.doc ul{margin:0;padding-left:1.25em;display:grid;grid-gap:6px;gap:6px}.status{display:inline-block;font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid var(--rule);color:var(--muted);vertical-align:middle;margin-left:6px;letter-spacing:0}.status.now{color:var(--add-ink);border-color:currentColor}.callout{border-left:3px solid var(--note-bg);background:var(--surface);padding:12px 16px;border-radius:0 8px 8px 0}.table-scroll{overflow-x:auto;border:1px solid var(--rule);border-radius:8px}table.ref{border-collapse:collapse;width:100%;font-size:var(--step--1);background:var(--surface)}table.ref td,table.ref th{text-align:left;padding:8px 12px;border-bottom:1px solid var(--rule);vertical-align:top}table.ref th{font-weight:600;background:var(--code-bg)}table.ref tr:last-child td{border-bottom:0}table.ref td code{white-space:nowrap}.tool{display:grid;grid-gap:10px;gap:10px;padding-top:8px}.tool h3 code{font-size:1rem;background:none;border:0;padding:0}.thanks{padding-block:48px 96px}.thanks .prose{display:grid;grid-gap:18px;gap:18px}.next{list-style:none;padding:0;margin:8px 0 0;display:grid;grid-gap:14px;gap:14px}.next li{display:grid;grid-gap:2px;gap:2px}@media (prefers-reduced-motion:no-preference){.review .notes li{animation:note-in .42s ease-out both}.review .notes li:nth-child(2){animation-delay:.14s}.review .notes li:nth-child(3){animation-delay:.28s}}@keyframes note-in{0%{opacity:.35;transform:translateX(6px)}to{opacity:1;transform:none}}@media (max-width:560px){.nav,.site-header .wrap{flex-wrap:nowrap}.nav{gap:16px}.nav .nav-cta{display:none}.nav a{font-size:var(--step--1);white-space:nowrap}}.footer-links{display:inline-flex;gap:16px}.more-link{margin-top:18px}.thanks .msg{max-width:34rem}.thanks h2{font-size:var(--step-2);margin-top:12px}.not-found{padding-block:48px 96px;display:grid;grid-gap:16px;gap:16px}