:root{--bg:#f4f6f8;--surface:#ffffff;--surface-sunk:#eef2f5;--ink:#0b1220;--dim:#5a6672;--line:#dde3e9;--line-firm:#c7d0d8;--accent:#0e7c66;--accent-deep:#0a6151;--accent-tint:#e4f0ed;--viz-1:#0a8168;--viz-2:#7c3aed;--viz-track:#e8edf1;--code-bg:#0d1117;--code-bar:#161b22;--code-line:#232c37;--code-fg:#e6edf3;--code-dim:#8b949e;--code-kw:#d2a8ff;--code-str:#a5d6ff;--code-fn:#79c0ff;--code-num:#ffa657;--sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;--mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--shell:1120px;--gutter:24px;--r:6px;--r-sm:4px;--header-h:56px;--lift:0 2px 10px rgba(11,18,32,0.07),0 1px 3px rgba(11,18,32,0.05)}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 20px)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.62;font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body,dd,dl,figure,h1,h2,h3,h4,ol,p,pre,table,ul{margin:0}ol,ul{padding-left:0}img,svg{max-width:100%}h1{font-size:34px;line-height:1.18;letter-spacing:-.022em;max-width:20ch}h1,h2{font-weight:600}h2{font-size:22px;line-height:1.28;letter-spacing:-.015em}h3{font-size:16px;line-height:1.35;letter-spacing:-.008em}h3,h4{font-weight:600}h4{font-size:14px}p{max-width:70ch}p+p{margin-top:12px}.lede{font-size:17px;line-height:1.55;color:var(--dim);max-width:62ch}.mono{font-family:var(--mono);font-feature-settings:"tnum" 1}.dim,.label{color:var(--dim)}.label{font-family:var(--mono);font-size:11px;line-height:1.45;text-transform:uppercase;letter-spacing:.14em;max-width:none}.label-accent{color:var(--accent-deep)}strong{font-weight:600}abbr[title]{text-decoration:none;border-bottom:1px dotted var(--line-firm);cursor:help}a{color:var(--accent-deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;-webkit-text-decoration-color:rgba(14,124,102,.4);text-decoration-color:rgba(14,124,102,.4);transition:color .12s linear,-webkit-text-decoration-color .12s linear;transition:color .12s linear,text-decoration-color .12s linear;transition:color .12s linear,text-decoration-color .12s linear,-webkit-text-decoration-color .12s linear}a:hover{color:var(--ink);-webkit-text-decoration-color:var(--ink);text-decoration-color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;font-family:var(--mono);font-size:12px;padding:9px 14px;border-radius:0 0 var(--r) 0;text-decoration:none;z-index:60}.skip:focus{left:0}.shell{width:100%;max-width:var(--shell);margin:0 auto;padding:0 var(--gutter)}.site-header{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:rgba(255,255,255,.94);-webkit-backdrop-filter:saturate(1.4) blur(6px);backdrop-filter:saturate(1.4) blur(6px);border-bottom:1px solid var(--line)}.site-header .bar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:55px}.wordmark{display:inline-flex;align-items:center;gap:9px;font-family:var(--mono);font-size:12.5px;font-weight:600;letter-spacing:.07em;text-decoration:none;white-space:nowrap}.wordmark,.wordmark:hover{color:var(--ink)}.wordmark svg{display:block;flex:none}.wordmark .sub{color:var(--dim);font-weight:500}.site-nav ul{display:flex;align-items:center;gap:4px;list-style:none;margin:0}.site-nav a{display:inline-block;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.11em;color:var(--dim);text-decoration:none;padding:8px 10px;border-radius:var(--r-sm);border:1px solid transparent}.site-nav a:hover{color:var(--ink);background:var(--surface-sunk)}.site-nav a[aria-current=page]{color:var(--accent-deep);background:var(--accent-tint);border-color:rgba(14,124,102,.22)}.hero{padding:52px 0 40px}.hero .label{margin-bottom:16px}.hero .lede{margin-top:18px}.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;text-decoration:none;padding:10px 16px;border-radius:var(--r);border:1px solid var(--line-firm);background:var(--surface);transition:box-shadow .13s ease,border-color .13s ease,background-color .13s ease}.btn,.btn:hover{color:var(--ink)}.btn:hover{box-shadow:var(--lift);border-color:var(--line-firm)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px;margin:0 0 8px}.metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 16px 15px;transition:box-shadow .13s ease,border-color .13s ease}.metric:hover{box-shadow:var(--lift);border-color:var(--line-firm)}.metric-cap{font-family:var(--mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--accent-deep)}.metric-value{font-family:var(--sans);font-size:32px;line-height:1.1;font-weight:600;letter-spacing:-.03em;margin-top:10px;display:flex;align-items:baseline;gap:5px;flex-wrap:wrap}.metric-unit{font-size:14px;font-weight:500;letter-spacing:0;color:var(--dim)}.metric-label{font-size:13px;line-height:1.45;color:var(--dim);margin-top:8px}.sec{padding:44px 0 4px}.sec-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 14px;padding-bottom:12px;border-bottom:1px solid var(--line);margin-bottom:22px}.sec-idx{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--accent-deep);background:var(--accent-tint);border:1px solid rgba(14,124,102,.2);border-radius:var(--r-sm);padding:2px 7px;white-space:nowrap}.sec-head h2{flex:1 1 260px;min-width:0}.sec-note{font-family:var(--mono);font-size:11.5px;line-height:1.5;color:var(--dim);max-width:46ch}.sec-body>*+*{margin-top:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;transition:box-shadow .13s ease,border-color .13s ease}.card:hover{box-shadow:var(--lift);border-color:var(--line-firm)}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px}.grid-2,.grid-3{display:grid;gap:12px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;align-items:start}.cap-card .code-tag{display:inline-block;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--accent-deep);border:1px solid rgba(14,124,102,.25);border-radius:var(--r-sm);padding:2px 6px;margin-bottom:10px}.cap-card h3{margin-bottom:7px}.cap-card h3 a{text-decoration:none;color:var(--ink)}.cap-card h3 a:hover{color:var(--accent-deep);text-decoration:underline;-webkit-text-decoration-color:rgba(14,124,102,.4);text-decoration-color:rgba(14,124,102,.4)}.cap-card p{font-size:13.5px;line-height:1.5;color:var(--dim)}.cap-card .stack-line{font-family:var(--mono);font-size:10.5px;line-height:1.55;color:var(--dim);margin-top:11px;padding-top:10px;border-top:1px solid var(--line);overflow-wrap:anywhere}.figure{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px}.figure-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px;margin-bottom:14px}.figure-head h3{font-size:14px}.figure-tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.scroller{width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.scroller:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.flow-svg{display:block;width:100%;min-width:900px;height:auto}.flow-svg text{font-family:var(--mono);font-feature-settings:"tnum" 1}.scroll-hint{display:none;font-family:var(--mono);font-size:10.5px;color:var(--dim);margin-top:10px}figcaption.figure-foot{font-size:12.5px;line-height:1.55;color:var(--dim);margin-top:14px;padding-top:12px;border-top:1px solid var(--line);max-width:90ch}.legend{display:flex;flex-wrap:wrap;gap:8px 20px;list-style:none;margin:0 0 14px;padding:0}.legend li{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;color:var(--dim)}.swatch{width:14px;height:8px;border-radius:2px;flex:none}.swatch-1{background:var(--viz-1)}.swatch-2{background:var(--viz-2)}table.bench{width:100%;border-collapse:collapse;font-size:13.5px;text-align:left;min-width:720px}table.bench caption{caption-side:top;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);text-align:left;padding-bottom:10px}table.bench td,table.bench th{vertical-align:top;padding:13px 18px 13px 0}table.bench td:last-child,table.bench th:last-child{padding-right:0}table.bench thead th{font-family:var(--mono);font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.09em;color:var(--dim);border-bottom:1px solid var(--line-firm);padding-bottom:9px;vertical-align:bottom}table.bench thead .scale{display:block;text-transform:none;letter-spacing:.02em;color:var(--dim);font-size:10px;margin-top:3px}table.bench tbody td,table.bench tbody th{border-bottom:1px solid var(--line)}table.bench tbody th{font-weight:500;color:var(--ink);width:31%}.bench-name{display:block;font-weight:600;font-size:13.5px}.bench-sub{display:block;font-size:10.5px;color:var(--dim);margin-top:3px;overflow-wrap:anywhere}.bench-sub,.bench-val{font-family:var(--mono)}.bench-val{font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink);white-space:nowrap}.bench-val .u{color:var(--dim);font-size:11px}.bench-note{display:block;font-family:var(--mono);font-size:10px;color:var(--dim);margin-top:2px;white-space:nowrap}.bar-track{position:relative;width:100%;min-width:96px;height:8px;background:var(--viz-track);border-radius:2px;margin-top:7px;overflow:hidden}.bar-fill{position:absolute;left:0;top:0;bottom:0;border-radius:0 4px 4px 0}.bar-fill.f1{background:var(--viz-1)}.bar-fill.f2{background:var(--viz-2)}.bar-pair{margin-top:7px}.bar-pair .bar-track+.bar-track{margin-top:2px}.bench-prior{display:block;font-family:var(--mono);font-size:10px;color:var(--dim);margin-top:5px;white-space:nowrap}.foot-note{font-size:12px;line-height:1.55;color:var(--dim);margin-top:16px;padding-top:12px;border-top:1px solid var(--line);max-width:92ch}.foot-note .fn-mark{font-family:var(--mono);color:var(--accent-deep);margin-right:6px}.model-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;transition:box-shadow .13s ease,border-color .13s ease}.model-card:hover{box-shadow:var(--lift);border-color:var(--line-firm)}.model-card+.model-card{margin-top:18px}.model-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 14px;padding:16px 18px;border-bottom:1px solid var(--line);background:linear-gradient(0deg,var(--surface),var(--surface))}.model-head .code-tag{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--accent-deep);background:var(--accent-tint);border:1px solid rgba(14,124,102,.2);border-radius:var(--r-sm);padding:2px 7px;white-space:nowrap}.model-head h2{font-size:18px;flex:1 1 240px;min-width:0}.model-body{padding:16px 18px 18px}.model-body>p{font-size:14px;color:var(--dim)}.spec-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:1px;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin-top:16px}.spec-cell{background:var(--surface);padding:11px 13px;min-width:0}.spec-cell dt{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.11em;color:var(--dim)}.spec-cell dd{margin:5px 0 0;font-size:13px;line-height:1.5;overflow-wrap:anywhere}.spec-cell dd.mono{font-size:11.5px;line-height:1.55}.def{display:grid;grid-template-columns:200px minmax(0,1fr);border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden;font-size:14px}.def dt{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);background:#fbfcfd;line-height:1.5}.def dd,.def dt{padding:11px 14px;border-top:1px solid var(--line)}.def dd{margin:0;line-height:1.55;overflow-wrap:anywhere}.def dt:first-of-type,.def dt:first-of-type+dd{border-top:0}ol.steps,ul.checks{list-style:none;margin:0;padding:0;counter-reset:stepitem}ul.checks li{position:relative;padding:10px 0 10px 26px;border-top:1px solid var(--line);font-size:14px;line-height:1.55}ul.checks li:first-child{border-top:0;padding-top:0}ul.checks li:first-child:before{top:8px}ul.checks li:before{content:"";position:absolute;left:2px;top:18px;width:8px;height:8px;border-radius:2px;border:1.5px solid var(--accent)}ol.steps li{counter-increment:stepitem;position:relative;padding:12px 0 12px 44px;border-top:1px solid var(--line);font-size:14px;line-height:1.55}ol.steps li:first-child{border-top:0}ol.steps li:before{content:counter(stepitem,decimal-leading-zero);position:absolute;left:0;top:12px;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--accent-deep);background:var(--accent-tint);border:1px solid rgba(14,124,102,.2);border-radius:var(--r-sm);padding:2px 6px}ol.terms{list-style:none;margin:0;padding:0;counter-reset:termitem}ol.terms li{counter-increment:termitem;position:relative;padding:11px 0 11px 34px;border-top:1px solid var(--line);font-size:14px;line-height:1.55}ol.terms li:first-child{border-top:0}ol.terms li:before{content:"(" counter(termitem,lower-alpha) ")";position:absolute;left:0;top:11px;font-family:var(--mono);font-size:12px;color:var(--accent-deep)}.code-panel{margin-top:16px;background:var(--code-bg);border:1px solid var(--code-line);border-radius:var(--r);overflow:hidden}.code-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 13px;background:var(--code-bar);border-bottom:1px solid var(--code-line);font-family:var(--mono);font-size:10.5px;letter-spacing:.07em;color:var(--code-dim)}.code-head .file{color:var(--code-fg);overflow-wrap:anywhere}.code-panel pre{margin:0;padding:14px 13px 15px;overflow-x:auto;font-family:var(--mono);font-size:12px;line-height:1.72;color:var(--code-fg);-moz-tab-size:2;tab-size:2}.code-panel code{font-family:inherit}.code-panel .ln{display:inline-block;width:2.2ch;margin-right:14px;text-align:right;color:#5c6672;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tok-kw{color:var(--code-kw)}.tok-str{color:var(--code-str)}.tok-fn{color:var(--code-fn)}.tok-num{color:var(--code-num)}.tok-com{color:var(--code-dim);font-style:normal}.log{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);overflow:hidden}.log-entry{display:grid;grid-template-columns:132px minmax(0,1fr);grid-gap:0 18px;gap:0 18px;padding:15px 18px;border-top:1px solid var(--line)}.log-entry:first-child{border-top:0}.log-date{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--dim);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;padding-top:2px}.log-entry h3{font-size:14px;margin-bottom:5px}.log-entry p{font-size:13.5px;line-height:1.55;color:var(--dim)}.log-tag{display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);border:1px solid var(--line);border-radius:var(--r-sm);padding:1px 6px;margin-top:9px}.pkg-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.pkg{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;transition:box-shadow .13s ease,border-color .13s ease}.pkg:hover{box-shadow:var(--lift);border-color:var(--line-firm)}.pkg:target{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.pkg-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.pkg-code{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--accent-deep);background:var(--accent-tint);border:1px solid rgba(14,124,102,.22);border-radius:var(--r-sm);padding:3px 8px;white-space:nowrap}.pkg h3{font-size:16.5px;margin-top:12px}.pkg h3 a{color:var(--ink);text-decoration:none}.pkg h3 a:hover{color:var(--accent-deep);text-decoration:underline;-webkit-text-decoration-color:rgba(14,124,102,.4);text-decoration-color:rgba(14,124,102,.4)}.pkg-sum{font-size:13.5px;line-height:1.5;color:var(--dim);margin-top:8px}.pkg-scope{list-style:none;margin:14px 0 0;padding:0}.pkg-scope li{position:relative;padding:4px 0 4px 18px;font-size:13px;line-height:1.5}.pkg-scope li:before{content:"";position:absolute;left:0;top:12px;width:7px;height:1.5px;background:var(--accent)}.pkg-spec{font-family:var(--mono);font-size:10.5px;line-height:1.6;color:var(--dim);margin-top:14px;padding:9px 11px;background:var(--surface-sunk);border-radius:var(--r-sm);overflow-wrap:anywhere}.pkg-spec b{color:var(--accent-deep);font-weight:500;letter-spacing:.08em;text-transform:uppercase;font-size:9.5px;display:block;margin-bottom:2px}.pkg-price{margin-top:auto;padding-top:16px}.pkg-price .amount{display:block;font-family:var(--sans);font-size:26px;font-weight:600;letter-spacing:-.025em;line-height:1.15}.pkg-price .basis{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--dim);margin-top:5px}.table-wrap{width:100%;overflow-x:auto}table.rate{width:100%;min-width:420px;border-collapse:collapse;font-size:14px;text-align:left;background:var(--surface)}table.rate caption{caption-side:top;font-family:var(--mono);font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--dim);text-align:left;padding-bottom:10px}table.rate td,table.rate th{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:top}table.rate thead th{font-family:var(--mono);font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.09em;color:var(--dim);border-bottom:1px solid var(--line-firm);white-space:nowrap}table.rate tbody tr:last-child td,table.rate tbody tr:last-child th{border-bottom:0}table.rate tbody th{font-weight:500}table.rate .price{font-family:var(--mono);font-size:13px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}.boxed,table.rate .boxed{border:1px solid var(--line);border-radius:var(--r)}.boxed{overflow:hidden}.site-footer{border-top:1px solid var(--line);background:var(--surface);margin-top:60px;padding:32px 0 44px;font-size:12.5px;line-height:1.7;color:var(--dim)}.site-footer .cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:24px;gap:24px}.site-footer h2{font-family:var(--mono);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.14em;color:var(--ink);margin-bottom:10px}.site-footer ul{list-style:none;margin:0}.site-footer a{color:var(--dim);text-decoration:none}.site-footer a:hover{color:var(--accent-deep);text-decoration:underline}.site-footer .mono{font-size:11.5px}.site-footer .colophon{border-top:1px solid var(--line);margin-top:26px;padding-top:16px;display:flex;flex-wrap:wrap;gap:6px 24px;justify-content:space-between;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em}@media (max-width:1000px){.grid-3,.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:860px){:root{--gutter:18px}h1{font-size:28px;max-width:none}h2{font-size:20px}.lede{font-size:16px}.hero{padding:36px 0 30px}.sec{padding:34px 0 4px}.grid-2,.pkg-grid{grid-template-columns:minmax(0,1fr)}.def{grid-template-columns:148px minmax(0,1fr)}.scroll-hint{display:block}.site-footer .cols{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.def,.grid-3,.spec-grid{grid-template-columns:minmax(0,1fr)}.def dd{padding-top:0}.def dd,.def dt:first-of-type+dd{border-top:0}.log-entry{grid-template-columns:minmax(0,1fr);gap:6px}.site-header .bar{flex-direction:column;align-items:flex-start;gap:0;padding-top:10px;min-height:0}.site-nav{width:100%;overflow-x:auto}.site-nav ul{gap:2px}.site-nav a{white-space:nowrap;padding:7px 8px}}@media (max-width:460px){.site-nav a{font-size:10px;letter-spacing:.06em;padding:7px 6px}.metrics{grid-template-columns:minmax(0,1fr)}.metric-value{font-size:28px}.site-footer .cols{grid-template-columns:minmax(0,1fr)}.pkg-top{flex-wrap:wrap}}@media print{.scroll-hint,.site-header,.skip{display:none}body{background:#fff;font-size:10.5pt}a{color:var(--ink);text-decoration:none}.card,.figure,.log,.model-card,.pkg{page-break-inside:avoid;break-inside:avoid;box-shadow:none}.scroller{overflow:visible}}