:root{--ink: #0d1f1b;--body: #2b3a37;--muted: #5a6b68;--faint: #8a9b97;--forest: #0b2a25;--forest-2: #103a32;--green-800: #0a5f4a;--green-700: #0c7a5f;--green-600: #0f9a76;--mint-500: #20cf9f;--mint-300: #74e4c2;--mint-100: #d6f6ec;--bg: #ffffff;--bg-soft: #f6f9f8;--bg-tint: #ecf4f1;--border: #e4ece9;--border-strong: #cddcd7;--shadow-sm: 0 1px 2px rgba(10, 42, 37, .05);--shadow-md: 0 8px 26px rgba(10, 42, 37, .09);--radius: 12px;--radius-sm: 8px;--maxw: 1320px;--readw: 740px;--sidebar: 268px;--toc: 220px;--sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--sans);color:var(--body);background:var(--bg);line-height:1.65;font-size:17px;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--sans);color:var(--ink);line-height:1.22;font-weight:650;letter-spacing:-.018em}a{color:var(--green-700);text-decoration:none}a:hover{color:var(--green-600)}img{max-width:100%;height:auto}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}.eyebrow{font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.06em;text-transform:lowercase;color:var(--green-700)}.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:10px 16px;z-index:100}.skip:focus{left:0}.site-header{position:sticky;top:0;z-index:50;background:#ffffffe0;backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--border)}.site-header .wrap{display:flex;align-items:center;justify-content:space-between;height:62px;gap:24px}.brand{display:inline-flex;align-items:center;gap:10px}.brand:hover{text-decoration:none}.brand .logo{width:27px;height:27px;display:grid;place-items:center}.brand .logo svg{width:27px;height:27px}.brand .name{font-weight:650;font-size:1.06rem;color:var(--ink);letter-spacing:-.02em}.brand .name b{color:var(--green-700);font-weight:650}.brand .kb{font-family:var(--mono);font-size:.7rem;color:var(--faint);text-transform:lowercase;border-left:1px solid var(--border-strong);padding-left:10px;margin-left:2px}.nav{display:flex;align-items:center;gap:24px;font-size:.92rem}.nav a{color:var(--ink);text-transform:lowercase}.nav a:hover{color:var(--green-700);text-decoration:none}@media(max-width:760px){.nav .hide-sm,.brand .kb{display:none}}.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--sans);font-weight:550;font-size:.94rem;padding:10px 18px;border-radius:8px;border:1px solid transparent;cursor:pointer;transition:background .12s,box-shadow .12s,border-color .12s}.btn:hover{text-decoration:none}.btn-primary{background:var(--green-700);color:#fff}.btn-primary:hover{background:var(--green-800);color:#fff}.btn-ghost{background:transparent;color:#eafaf4;border-color:#ffffff47}.btn-ghost:hover{border-color:var(--mint-300);color:#fff}.btn-ghost.dark{color:var(--ink);border-color:var(--border-strong)}.btn-ghost.dark:hover{border-color:var(--green-600);color:var(--green-700)}.hero{background:var(--forest);color:#cfe7e0;border-bottom:1px solid var(--forest-2);position:relative;overflow:hidden}.hero:after{content:"";position:absolute;right:-120px;top:-120px;width:460px;height:460px;border-radius:50%;background:radial-gradient(circle,rgba(32,207,159,.16),transparent 62%);pointer-events:none}.hero .wrap{padding:64px 28px 58px;position:relative;z-index:1}.hero .eyebrow{color:var(--mint-300)}.hero h1{color:#fff;font-size:clamp(2.1rem,5vw,3.2rem);margin:14px 0 0;max-width:16ch}.hero .sub{font-size:clamp(1.02rem,2vw,1.2rem);color:#aacabf;margin:18px 0 0;max-width:60ch}.hero .cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.hero .facts{display:flex;flex-wrap:wrap;gap:10px;margin-top:34px}.hero .pill{font-family:var(--mono);font-size:.74rem;color:#bfe0d6;border:1px solid rgba(255,255,255,.16);border-radius:999px;padding:5px 12px;text-transform:lowercase}.shell{display:grid;grid-template-columns:var(--sidebar) minmax(0,1fr);gap:0;align-items:start}.shell.with-toc{grid-template-columns:var(--sidebar) minmax(0,1fr) var(--toc)}.sidebar{position:sticky;top:62px;height:calc(100vh - 62px);overflow-y:auto;padding:28px 22px 60px;border-right:1px solid var(--border);font-size:.88rem}.sidebar .sec{margin-bottom:18px}.sidebar .sec>.h{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--ink);margin:0 0 7px;font-size:.82rem;letter-spacing:.01em}.sidebar .sec>.h .ix{font-family:var(--mono);font-size:.72rem;color:var(--green-700)}.sidebar ul{list-style:none;margin:0;padding:0 0 0 2px;border-left:1px solid var(--border)}.sidebar li a,.sidebar li span.soon{display:block;padding:4px 10px;margin-left:-1px;border-left:2px solid transparent;color:var(--muted);line-height:1.35}.sidebar li a:hover{color:var(--green-700);text-decoration:none;border-left-color:var(--border-strong)}.sidebar li a.active{color:var(--green-800);font-weight:600;border-left-color:var(--green-600);background:var(--bg-soft)}.sidebar li span.soon{color:var(--faint)}.sidebar li span.soon:after{content:"soon";font-family:var(--mono);font-size:.6rem;margin-left:7px;color:var(--faint);border:1px solid var(--border);border-radius:4px;padding:1px 4px;vertical-align:1px}.main{padding:40px 44px 80px;min-width:0}.main.narrow{max-width:860px}.toc{position:sticky;top:62px;height:calc(100vh - 62px);overflow-y:auto;padding:40px 20px 60px;font-size:.82rem}.toc .lbl{font-family:var(--mono);text-transform:lowercase;font-size:.7rem;color:var(--faint);letter-spacing:.04em;margin-bottom:10px}.toc ul{list-style:none;margin:0;padding:0}.toc li a{display:block;color:var(--muted);border-left:2px solid var(--border);padding:4px 0 4px 12px}.toc li.d3 a{padding-left:24px}.toc li a:hover{color:var(--green-700);text-decoration:none;border-left-color:var(--green-600)}@media(max-width:1180px){.shell.with-toc{grid-template-columns:var(--sidebar) minmax(0,1fr)}.toc{display:none}}@media(max-width:940px){.shell,.shell.with-toc{grid-template-columns:1fr}.sidebar{display:none}.main{padding:32px 24px 64px}}.index-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:30px 40px;margin-top:8px}.idx-sec{padding-top:22px;border-top:2px solid var(--bg-tint)}.idx-sec .head{display:flex;align-items:baseline;gap:10px;margin-bottom:4px}.idx-sec .num{font-family:var(--mono);font-size:.82rem;color:var(--green-700)}.idx-sec h3{font-size:1.16rem;margin:0}.idx-sec .tag{font-family:var(--mono);font-size:.62rem;text-transform:lowercase;letter-spacing:.04em;padding:2px 7px;border-radius:5px;margin-left:auto;align-self:center}.idx-sec .tag.done{background:var(--mint-100);color:var(--green-800)}.idx-sec .intro{color:var(--muted);font-size:.92rem;margin:6px 0 12px}.idx-list{list-style:none;margin:0;padding:0}.idx-list li{margin:0}.idx-list a,.idx-list .na{display:flex;gap:10px;padding:6px 8px;border-radius:7px;align-items:baseline;line-height:1.4}.idx-list a:hover{background:var(--bg-soft);text-decoration:none}.idx-list .mn{font-family:var(--mono);font-size:.74rem;color:var(--green-700);min-width:34px}.idx-list a .tt{color:var(--ink);font-size:.95rem}.idx-list a:hover .tt{color:var(--green-700)}.idx-list .na,.idx-list .na .mn{color:var(--faint)}.idx-list .na .tt{color:var(--faint);font-size:.95rem}.idx-list .na .tt:after{content:"soon";font-family:var(--mono);font-size:.6rem;margin-left:8px;border:1px solid var(--border);border-radius:4px;padding:1px 4px;color:var(--faint);vertical-align:1px}.crumb{font-family:var(--mono);font-size:.74rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:7px;align-items:center;text-transform:lowercase}.crumb a{color:var(--green-700)}.crumb .sep{color:var(--faint)}.article-title{font-size:clamp(1.7rem,3.6vw,2.4rem);margin:14px 0 0;color:var(--ink)}.article-lede{font-size:1.1rem;color:var(--muted);margin:14px 0 0;max-width:64ch}.article-sep{border:none;border-top:1px solid var(--border);margin:26px 0 0}.prose{max-width:var(--readw)}.prose>*:first-child{margin-top:0}.prose h2{font-size:1.5rem;margin:2em 0 .55em;scroll-margin-top:80px}.prose h3{font-size:1.2rem;margin:1.7em 0 .45em;color:var(--ink);scroll-margin-top:80px}.prose h4{font-size:1.04rem;margin:1.5em 0 .4em;color:var(--ink-soft)}.prose p{margin:0 0 1.2em}.prose ul,.prose ol{margin:0 0 1.25em;padding-left:1.35em}.prose li{margin:.35em 0}.prose li::marker{color:var(--green-600)}.prose a{text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--mint-300)}.prose a:hover{text-decoration-color:var(--green-600)}.prose strong{color:var(--ink);font-weight:650}.prose hr{border:none;border-top:1px solid var(--border);margin:2.4em 0}.prose blockquote{margin:1.5em 0;padding:4px 20px;border-left:3px solid var(--mint-300);color:var(--ink-soft);background:var(--bg-soft);border-radius:0 6px 6px 0}.prose code{font-family:var(--mono);font-size:.86em;background:var(--bg-tint);padding:.12em .38em;border-radius:5px;color:var(--green-800)}.prose pre{background:var(--forest);color:#d8efe9;padding:16px 18px;border-radius:10px;overflow-x:auto;font-size:.88rem;margin:1.5em 0}.prose pre code{background:transparent;color:inherit;padding:0}.prose table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:.92rem}.prose th,.prose td{border:1px solid var(--border-strong);padding:9px 13px;text-align:left;vertical-align:top}.prose th{background:var(--bg-tint);font-weight:650;color:var(--ink)}.prose tr:nth-child(2n) td{background:var(--bg-soft)}.article-nav{max-width:var(--readw);margin:44px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:14px}.article-nav a{display:block;padding:15px 18px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);transition:border-color .12s,background .12s}.article-nav a:hover{text-decoration:none;border-color:var(--green-600);background:var(--bg-soft)}.article-nav .lbl{font-family:var(--mono);font-size:.68rem;text-transform:lowercase;letter-spacing:.04em;color:var(--faint)}.article-nav .ttl{color:var(--ink);font-weight:600;margin-top:3px;display:block;font-size:.95rem}.article-nav .next{text-align:right}@media(max-width:600px){.article-nav{grid-template-columns:1fr}}.list{display:flex;flex-direction:column;gap:2px;max-width:820px}.list-item{display:flex;gap:14px;padding:15px 14px;border-radius:9px;align-items:baseline;border:1px solid transparent}a.list-item:hover{text-decoration:none;background:var(--bg-soft);border-color:var(--border)}.list-item.disabled{opacity:.6}.list-item .ix{font-family:var(--mono);color:var(--green-700);font-size:.82rem;min-width:38px}.list-item.disabled .ix{color:var(--faint)}.list-item .tx h3{font-size:1.06rem;margin:0;color:var(--ink);font-weight:600}.list-item .tx p{margin:3px 0 0;font-size:.9rem;color:var(--muted)}.soon-tag{font-family:var(--mono);font-size:.6rem;text-transform:lowercase;margin-left:8px;border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--faint);vertical-align:1px}.site-footer{background:var(--forest);color:#9fc1ba;padding:48px 0 36px;margin-top:70px}.site-footer a{color:#d7f6ec}.site-footer .cols{display:flex;flex-wrap:wrap;gap:44px;justify-content:space-between}.site-footer .brand .name{color:#fff}.site-footer .blurb{max-width:340px;margin:14px 0 0;font-size:.9rem;color:#8fb2ac}.site-footer h4{color:#eafaf5;font-family:var(--mono);font-weight:500;font-size:.72rem;text-transform:lowercase;letter-spacing:.06em;margin:0 0 12px}.site-footer ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;font-size:.9rem}.site-footer ul a{color:#bcd6d1}.site-footer ul a:hover{color:#fff}.site-footer .legal{margin-top:38px;padding-top:20px;border-top:1px solid rgba(255,255,255,.12);font-size:.8rem;color:#7ea29c;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between}.site-footer .legal a{color:#9fc1ba}.site-header{background:var(--forest);border-bottom:1px solid var(--forest-2);backdrop-filter:none}.site-header .nav a{color:#cfe7e0}.site-header .nav a:hover{color:var(--mint-300)}.brand .logo-img{height:26px;width:auto;display:block}.brand .kb{color:#8fb2ac;border-left:1px solid rgba(255,255,255,.22)}.site-header .brand .name{color:#fff}.site-header .brand .name b{color:var(--mint-300)}.site-footer .brand .logo-img{height:30px}
