@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/_next/static/media/bricolage-grotesque-vietnamese-standard-normal.05da5107.woff2) format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/_next/static/media/bricolage-grotesque-latin-ext-standard-normal.93645677.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;font-stretch:75% 100%;src:url(/_next/static/media/bricolage-grotesque-latin-standard-normal.a94a4482.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/newsreader-vietnamese-standard-normal.7192a3c3.woff2) format("woff2-variations");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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/newsreader-latin-ext-standard-normal.3a4fec0c.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:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_next/static/media/newsreader-latin-standard-normal.4f140710.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_next/static/media/newsreader-vietnamese-standard-italic.f88862ea.woff2) format("woff2-variations");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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_next/static/media/newsreader-latin-ext-standard-italic.f21f28c7.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:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_next/static/media/newsreader-latin-standard-italic.c8b9005a.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:Iosevka;font-style:normal;font-display:swap;font-weight:400;src:url(/_next/static/media/iosevka-latin-400-normal.f4b36c33.woff2) format("woff2"),url(/_next/static/media/iosevka-latin-400-normal.dc4510ff.woff) format("woff")}@font-face{font-family:Iosevka;font-style:normal;font-display:swap;font-weight:700;src:url(/_next/static/media/iosevka-latin-700-normal.d6b08eb6.woff2) format("woff2"),url(/_next/static/media/iosevka-latin-700-normal.bb7ab108.woff) format("woff")}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-cyrillic-ext-wght-normal.0d2c2f66.woff2) format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-cyrillic-wght-normal.23645aad.woff2) format("woff2-variations");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-greek-wght-normal.c6c31cb1.woff2) format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-vietnamese-wght-normal.93fc40a8.woff2) format("woff2-variations");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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-latin-ext-wght-normal.9c9751ca.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_next/static/media/jetbrains-mono-latin-wght-normal.a865edea.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}:root,html[data-theme=foolscap]{--bg:#F4F1EA;--sf:#FBF9F5;--sf2:#ECE8DF;--ink:#16202E;--mute:#5D6675;--line:rgba(22,32,46,.16);--line2:rgba(22,32,46,.34);--acc:#E2482A;--acc-ink:#FFFFFF;--acc-tint:rgba(226,72,42,.09);--ok:#1F6E4C;--warn:#B26A00;color-scheme:light}html[data-theme=blueprint]{--bg:#111823;--sf:#18212E;--sf2:#1F2937;--ink:#E8E4DA;--mute:#8B94A3;--line:rgba(232,228,218,.14);--line2:rgba(232,228,218,.32);--acc:#FF6A45;--acc-ink:#111823;--acc-tint:rgba(255,106,69,.12);--ok:#4BB98A;--warn:#E0A33C;color-scheme:dark}:root{--machine-bg:#111823;--machine-sf:#18212E;--machine-ink:#E8E4DA;--machine-mute:#8B94A3;--machine-acc:#FF6A45;--machine-line:rgba(232,228,218,.16);--display:"Bricolage Grotesque Variable","Bricolage Grotesque",Georgia,sans-serif;--body:"Newsreader Variable",Newsreader,Georgia,serif;--mono:Iosevka,"JetBrains Mono Variable","JetBrains Mono",ui-monospace,Menlo,monospace;--mono-diagram:var(--mono);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--r-ctl:2px;--r-box:0;--page:1180px;--read:68ch;--bar:60px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:19px;line-height:1.65;font-optical-sizing:auto;-webkit-font-smoothing:antialiased}a{color:var(--acc);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}::selection{background:var(--acc-tint)}:focus-visible{outline:2px solid var(--acc);outline-offset:2px}h1,h2,h3,h4{font-family:var(--display);font-weight:600;letter-spacing:-.02em;line-height:1.04;margin:0;font-variation-settings:"wdth" 86}b,strong{font-weight:600}.mono,code,kbd{font-family:var(--mono)}button{font:inherit}.topline{height:4px;background:var(--acc)}.shell{max-width:var(--page);margin:0 auto;padding:0 var(--s6)}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum","tnum"}.display-1{font-size:clamp(46px,7vw,104px);font-variation-settings:"wdth" 80;line-height:1}.display-2{font-size:clamp(34px,4vw,54px)}.display-3{font-size:34px}.display-4{font-size:26px}.body-lede{font-size:22px;line-height:1.5}.body-sm{font-size:15.5px;line-height:1.55}.eyebrow,.mono-label,.railhead{font-family:var(--mono);font-weight:500;font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--mute)}.eyebrow b,.mono-label b{color:var(--ink);font-weight:500}.railhead{margin-bottom:var(--s3)}.meta{font-size:14.5px;color:var(--mute)}.mono-ui{font-size:12.5px;letter-spacing:.04em}.file,.mono-ui{font-family:var(--mono)}.file{font-size:.86em;color:var(--acc)}.rule{background:var(--line)}.rule,.rule-acc{height:1px;border:0;margin:0}.rule-acc{background:var(--acc)}.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--mono);font-size:12.5px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);background:transparent;border:1px solid var(--line2);border-radius:var(--r-ctl);padding:13px 18px;cursor:pointer;line-height:1;transition:background .15s ease-out,border-color .15s ease-out,color .15s ease-out}.btn:hover{border-color:var(--ink);text-decoration:none}.btn-acc{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}.btn-acc:hover{filter:brightness(.94);border-color:var(--acc)}.btn-ghost{border-color:transparent;color:var(--mute)}.btn-ghost:hover{color:var(--ink);border-color:transparent}.btn-sm{font-size:11px;padding:8px 12px}.btn.on,.btn[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn:disabled{opacity:.45;cursor:default}.tag{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;border:1px solid var(--line2);color:var(--mute);border-radius:var(--r-ctl);padding:3px 7px;white-space:nowrap}.tag-acc{border-color:var(--acc);color:var(--acc)}.tag-ok{border-color:var(--ok);color:var(--ok)}.panel{border:1px solid var(--line);border-radius:var(--r-box);background:var(--sf)}.panel-head{display:flex;align-items:center;gap:var(--s3);padding:12px 16px;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute)}.panel-head b{color:var(--ink);font-weight:500}.panel-head .right{margin-left:auto;display:flex;gap:var(--s2);align-items:center}.reg{position:relative}.reg:after,.reg:before{content:"";position:absolute;width:14px;height:14px;border:1px solid var(--line2);pointer-events:none}.reg:before{top:-1px;left:-1px;border-right:0;border-bottom:0}.reg:after{bottom:-1px;right:-1px;border-left:0;border-top:0}.slot label{display:block;font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--mute);margin-bottom:6px}.slot[data-filled="1"] label{color:var(--acc)}.slot input,.slot textarea{width:100%;background:var(--sf2);border:1px solid var(--line2);border-radius:var(--r-ctl);color:var(--ink);font-family:var(--body);font-size:17px;padding:10px 12px;resize:vertical;min-height:42px}.panel .slot input,.panel .slot textarea{background:var(--bg)}.slot input:focus,.slot textarea:focus{outline:0;border-color:var(--acc)}.alert{display:flex;gap:var(--s3);align-items:baseline;border-left:3px solid var(--line2);padding:10px 14px;margin:0 0 var(--s5);background:var(--sf);font-size:15.5px;line-height:1.5}.alert-label{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);flex:0 0 auto}.alert[data-kind=ok]{border-left-color:var(--ok)}.alert[data-kind=ok] .alert-label{color:var(--ok)}.alert[data-kind=wait]{border-left-color:var(--warn)}.alert[data-kind=wait] .alert-label{color:var(--warn)}.alert[data-kind=no]{border-left-color:var(--ink)}.alert[data-kind=no] .alert-label{color:var(--ink)}.table{width:100%;border-collapse:collapse;font-size:15px}.table th{text-align:left;font-family:var(--mono);font-weight:500;color:var(--mute);font-size:11px;letter-spacing:.12em;text-transform:uppercase;padding:8px 10px 8px 0;border-bottom:1px solid var(--line2)}.table td{padding:10px 10px 10px 0;vertical-align:top}.table td,.topbar{border-bottom:1px solid var(--line)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:60;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar .inner{display:flex;align-items:center;gap:var(--s5);height:var(--bar)}.topbar .brand{font-family:var(--display);font-weight:600;font-size:19px;color:var(--ink);white-space:nowrap;letter-spacing:-.01em}.topbar .brand:hover{text-decoration:none}.topbar .brand-short{display:none}.topbar nav{display:flex;gap:var(--s4);font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.topbar nav a{color:var(--mute)}.topbar nav a:hover,.topbar nav a[aria-current]{color:var(--ink);text-decoration:none}.topbar .spacer{flex:1 1}.searchbtn{display:flex;align-items:center;gap:10px;border:1px solid var(--line2);border-radius:var(--r-ctl);background:transparent;color:var(--mute);font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;padding:8px 10px;cursor:pointer}.searchbtn:hover{border-color:var(--ink);color:var(--ink)}.searchbtn kbd{font-family:var(--mono);font-size:10.5px;border:1px solid var(--line);border-radius:var(--r-ctl);padding:1px 5px}.searchbtn .short{display:none}.counter{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;border:1px solid var(--line2);border-radius:var(--r-ctl);padding:6px 10px;color:var(--ink);white-space:nowrap;transition:color .15s ease-out,border-color .15s ease-out}.counter b{color:var(--acc);font-weight:500}.counter[data-flash="1"]{animation:counterflash .6s ease-out}@keyframes counterflash{0%{color:var(--acc);border-color:var(--acc)}to{color:var(--ink);border-color:var(--line2)}}.themeswitch{display:flex;border:1px solid var(--line2);border-radius:var(--r-ctl);overflow:hidden}.themeswitch button{background:transparent;border:0;cursor:pointer;font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);padding:8px 12px}.themeswitch button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.chip{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);white-space:nowrap}.chip,.chip:hover{text-decoration:none}.chip:hover{color:var(--ink)}.chip-blank{display:inline-block;width:56px;height:1em}.chip-user{display:flex;align-items:center;gap:10px;margin:0}.chip-email{font-size:12px;color:var(--ink);text-decoration:none;max-width:22ch;overflow:hidden;text-overflow:ellipsis;text-transform:none;letter-spacing:0}.chip-email,.chip-out{font-family:var(--mono)}.chip-out{background:none;border:0;color:var(--mute);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:4px 0;cursor:pointer}.chip-out:hover{color:var(--ink)}.subbar{position:-webkit-sticky;position:sticky;top:var(--bar);z-index:50;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.subbar .inner{display:flex;align-items:center;gap:var(--s4);height:48px;font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase}.subbar .inner,.subbar a{color:var(--mute)}.subbar a:hover{color:var(--ink);text-decoration:none}.subbar .spacer{flex:1 1}.readspine{position:fixed;left:0;top:var(--bar);bottom:0;width:2px;background:var(--line);z-index:40;pointer-events:none}.readspine i{display:block;width:100%;background:var(--acc);height:0}.reader{display:grid;grid-template-columns:190px minmax(0,1fr) 240px;grid-gap:var(--s7);gap:var(--s7);max-width:var(--page);margin:0 auto;padding:var(--s7) var(--s6) 100px;align-items:start}.reader .rail{position:-webkit-sticky;position:sticky;top:calc(var(--bar) + 64px)}.railrow{display:flex;gap:10px;align-items:baseline;width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);padding:7px 0;cursor:pointer;text-align:left;font-family:var(--mono);font-size:12px;line-height:1.5;color:var(--mute)}.railrow:hover{color:var(--ink)}.railrow .n{color:var(--acc);font-weight:500;flex:0 0 auto}.railrow[data-open="1"]{color:var(--ink)}.railrow .mark{margin-left:auto;font-size:10px;color:var(--acc)}.article{max-width:var(--read)}.article h1{font-size:clamp(36px,4vw,54px);margin:var(--s3) 0 var(--s4)}.metarow{display:flex;flex-wrap:wrap;gap:var(--s4);font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mute);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px 0;margin-bottom:var(--s5);line-height:1.7}.lede{font-size:22px;line-height:1.5;color:var(--ink);margin:0 0 var(--s4)}.lede p{margin:0}.artifact{margin-top:var(--s7);border:1px solid var(--line);background:var(--sf);padding:var(--s5);display:flex;flex-wrap:wrap;gap:var(--s4);align-items:center}.artifact .f{font-family:var(--mono);font-size:15px;color:var(--ink);flex:1 1 100%}.artifact .actions{display:flex;gap:var(--s3);flex-wrap:wrap}.artifact .f b{color:var(--acc);font-weight:500}.artifact[data-done="1"] .f b{color:var(--ok)}.sec{border-top:1px solid var(--line)}.sec:first-of-type{border-top:1px solid var(--line2)}.sechead{display:flex;align-items:center;gap:var(--s3);width:100%;background:transparent;border:0;cursor:pointer;text-align:left;padding:18px 0;color:var(--mute);font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase}.sechead:hover{color:var(--ink)}.sechead .n{color:var(--acc);flex:0 0 auto}.sechead h2{font:inherit;letter-spacing:inherit;color:var(--ink);flex:0 1 auto}.sechead:after{content:"";flex:1 1;height:1px;background:var(--line2);margin-left:var(--s2)}.sechead .t{flex:0 0 auto}.sechead .plus{flex:0 0 auto;color:var(--mute);transition:color .15s ease-out}.sechead[data-open="1"] .plus{color:var(--acc)}.secbody{padding:0 0 var(--s6)}.prose{font-size:19px;line-height:1.65;color:var(--ink)}.prose p{margin:0 0 var(--s4)}.prose h3{font-size:26px;margin:var(--s6) 0 var(--s3)}.prose h4{font-size:21px;margin:var(--s5) 0 var(--s2)}.prose strong{font-weight:600}.prose em{font-style:italic}.prose ol,.prose ul{margin:0 0 var(--s4);padding-left:var(--s5)}.prose li{margin-bottom:var(--s2)}.prose li::marker{color:var(--acc);font-family:var(--mono)}.prose hr{border:0;border-top:1px solid var(--line);margin:var(--s6) 0}.prose code{font-family:var(--mono);font-size:.84em;color:var(--ink);background:var(--sf2);border:1px solid var(--line);border-radius:var(--r-ctl);padding:1px 5px}.prose pre{position:relative;background:var(--sf);border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:var(--s4) var(--s5);overflow-x:auto;margin:0 0 var(--s5)}.prose pre code{background:transparent;border:0;padding:0;font-size:13px;line-height:1.45;white-space:pre;color:var(--mute)}.prose pre code b{color:var(--ink);font-weight:500}.prose blockquote{margin:var(--s5) 0;padding:0 0 0 var(--s4);border-left:3px solid var(--line2);color:var(--ink)}.prose blockquote p{margin:0}.prose .caption{font-size:15.5px;color:var(--mute);margin-top:calc(-1 * var(--s2))}.prose table{width:100%;border-collapse:collapse;font-size:15.5px;margin:0 0 var(--s5)}.prose td,.prose th{border-bottom:1px solid var(--line);padding:9px 12px 9px 0;text-align:left;vertical-align:top}.prose th{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);border-bottom-color:var(--line2)}.tablewrap{overflow-x:auto;margin:0 0 var(--s5)}.copybtn{position:absolute;top:8px;right:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;background:var(--bg);border:1px solid var(--line2);color:var(--mute);padding:4px 8px;border-radius:var(--r-ctl);cursor:pointer;opacity:0;transition:opacity .15s ease-out}.copybtn:focus-visible,.prose pre:hover .copybtn{opacity:1}.copybtn:hover{color:var(--ink);border-color:var(--ink)}.pull{border-top:1px solid var(--line2);border-bottom:1px solid var(--line2);padding:var(--s5) 0;margin:var(--s6) 0}.pull .q{font-family:var(--display);font-weight:600;font-size:28px;line-height:1.2;color:var(--ink);letter-spacing:-.02em}.figure{margin:0 0 var(--s4);background:var(--sf);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.figure pre{margin:0;padding:var(--s4) var(--s5);overflow-x:auto;font-family:var(--mono-diagram);font-size:13px;line-height:1.45;color:var(--mute);white-space:pre}.figure pre b{color:var(--ink);font-weight:500}.figure pre i{color:var(--acc);font-style:normal}.figure .scrollnote{padding:0 var(--s5) 10px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--mute)}.steps{list-style:none;margin:0;padding:0}.steps li{border-bottom:1px solid var(--line)}.steps li:last-child{border-bottom:0}.steps button{display:flex;gap:var(--s3);align-items:flex-start;width:100%;background:transparent;border:0;padding:10px 16px;cursor:pointer;text-align:left;font-family:var(--body);font-size:17px;line-height:1.5;color:var(--ink);transition:background .15s ease-out}.steps button:hover{background:var(--sf2)}.steps .glyph{font-family:var(--mono);font-size:13px;color:var(--acc);flex:0 0 auto;padding-top:3px}.steps button[aria-checked=true] .txt{color:var(--mute);text-decoration:line-through;-webkit-text-decoration-color:var(--acc);text-decoration-color:var(--acc)}.steps code{font-family:var(--mono);font-size:.84em;color:var(--acc)}.lanetabs{display:flex;border-bottom:1px solid var(--line)}.lanetabs button{background:transparent;border:0;border-bottom:2px solid transparent;font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);padding:11px 16px;cursor:pointer}.lanetabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--acc)}.machine{background:var(--machine-bg);color:var(--machine-ink);border:1px solid var(--machine-line);margin:var(--s4) 0}.machine .rh{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--machine-line);font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--machine-mute)}.machine .rh b{color:var(--machine-ink);font-weight:500}.machine .rh .sp{flex:1 1}.machine .rh .btn{border-color:var(--machine-acc);background:var(--machine-acc);color:#111823;padding:8px 12px;font-size:11px}.machine .rh .btn:hover{filter:brightness(1.06)}.machine .prose{color:var(--machine-mute);font-size:16.5px;padding:var(--s4) var(--s4) 0}.machine .prose code,.machine .prose strong{color:var(--machine-ink)}.machine .prose code{background:var(--machine-sf);border-color:var(--machine-line)}.machine .ptext{margin:0;padding:var(--s4);font-family:var(--mono);font-size:13px;line-height:1.65;white-space:pre-wrap;color:var(--machine-mute);overflow:auto;max-height:360px}.machine .ptext mark{background:transparent;color:var(--machine-acc);border-bottom:1px dotted var(--machine-acc);padding:0}.machine .ptext mark[data-done]{color:var(--machine-ink);border-bottom:1px solid var(--machine-acc)}.machine .slots{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--s3);gap:var(--s3);padding:14px 16px;border-top:1px solid var(--machine-line)}.machine .slot label{color:var(--machine-mute)}.machine .slot[data-filled="1"] label{color:var(--machine-acc)}.machine .slot textarea{background:var(--machine-sf);border-color:var(--machine-line);color:var(--machine-ink);font-size:15.5px;padding:8px 10px;min-height:40px}.machine .slot textarea:focus{border-color:var(--machine-acc)}.gate{display:grid;grid-template-columns:1.05fr .95fr;grid-gap:var(--s7);gap:var(--s7);padding-top:var(--s7);padding-bottom:90px;align-items:start}.gate h1{font-size:clamp(36px,4vw,54px);margin:10px 0 var(--s4)}.gaterow{display:flex;gap:var(--s3);align-items:baseline;border-bottom:1px solid var(--line);padding:9px 0;font-size:16.5px;color:var(--mute)}.gaterow .n{font-family:var(--mono);font-size:12px;color:var(--acc);font-weight:500;flex:0 0 auto}.gaterow .t{flex:1 1}.plans{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line2);border-left:1px solid var(--line)}.plan{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:var(--s5) var(--s4);display:flex;flex-direction:column;gap:var(--s3);background:var(--bg)}.plan[data-featured="1"]{background:var(--sf)}.plan h3{font-size:24px}.plan .price{font-family:var(--mono);font-size:22px;color:var(--ink)}.plan .price .alt{display:block;font-size:11.5px;color:var(--mute);letter-spacing:.04em;margin-top:4px}.plan p{font-size:15.5px;line-height:1.55;color:var(--mute);margin:0;flex:1 1}.plan .btn{align-self:flex-start}.buy .currency{display:flex;gap:0;margin-bottom:var(--s4);border:1px solid var(--line2);border-radius:var(--r-ctl);width:max-content;overflow:hidden}.buy .currency .btn{border:0;border-radius:0;padding:8px 12px;font-size:11px}.buy .currency .btn[aria-pressed=true]{background:var(--ink);color:var(--bg)}.buy .row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:var(--s3)}.pal{position:fixed;inset:0;z-index:100;background:color-mix(in srgb,var(--bg) 72%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;justify-content:center;align-items:flex-start;padding-top:12vh}.pal .box{width:min(680px,92vw);background:var(--sf);border:1px solid var(--line2);border-radius:var(--r-box);overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.35)}.pal .top{display:flex;align-items:center;gap:var(--s3);padding:14px 18px;border-bottom:1px solid var(--line)}.pal .top .g{color:var(--acc);font-family:var(--mono)}.pal input{flex:1 1;background:transparent;border:0;color:var(--ink);font-family:var(--body);font-size:18px}.pal input:focus{outline:0}.pal kbd{font-family:var(--mono);font-size:10.5px;border:1px solid var(--line2);border-radius:var(--r-ctl);padding:2px 6px;color:var(--mute)}.pal ul{list-style:none;margin:0;padding:4px 0;max-height:52vh;overflow-y:auto}.pal li{display:flex;gap:var(--s3);align-items:center;padding:10px 18px;cursor:pointer;border-bottom:1px solid var(--line)}.pal li[data-sel="1"]{background:var(--bg)}.pal li .n{font-family:var(--mono);font-size:12px;color:var(--acc);flex:0 0 26px}.pal li .t{font-size:16.5px;color:var(--ink)}.pal li .s{letter-spacing:.04em}.pal .foot,.pal li .s{font-family:var(--mono);font-size:11px;color:var(--mute)}.pal .foot{display:flex;gap:var(--s4);padding:10px 18px;border-top:1px solid var(--line);letter-spacing:.06em}.pal .foot .right{margin-left:auto}.pal .empty{padding:var(--s5);color:var(--mute);font-family:var(--mono);font-size:12.5px}.idxgrid{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-gap:var(--s7);gap:var(--s7);align-items:start}.parthead{display:flex;align-items:baseline;gap:var(--s4);border-bottom:1px solid var(--line2);padding-bottom:10px;margin-bottom:4px}.parthead .n{font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--acc);font-weight:500}.parthead h2{font-size:26px;flex:1 1}.modrow{display:flex;gap:var(--s4);align-items:flex-start;padding:18px 0;border-bottom:1px solid var(--line);color:var(--ink);transition:background .15s ease-out}.modrow:hover{background:var(--sf);text-decoration:none}.modrow .id{font-family:var(--mono);font-size:13px;color:var(--mute);flex:0 0 36px;padding-top:5px}.modrow .id[data-done="1"]{color:var(--acc)}.modrow .t{display:block;font-family:var(--display);font-weight:600;font-size:24px;letter-spacing:-.02em;line-height:1.1}.modrow .b{display:block;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--mute);margin-top:6px}.modrow .b code{color:var(--acc)}.idxaside{position:-webkit-sticky;position:sticky;top:calc(var(--bar) + 24px);padding:var(--s4) var(--s4) var(--s3)}.idxaside .big{font-family:var(--mono);font-size:20px;color:var(--ink);margin:6px 0 10px}.idxaside .big b{color:var(--acc);font-weight:500}.cover{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-gap:var(--s7);gap:var(--s7);padding:var(--s7) 0 var(--s8);align-items:end}.cover h1{font-size:clamp(46px,7vw,104px);font-variation-settings:"wdth" 80;line-height:1;margin:var(--s5) 0}.cover h1 em{font-style:normal;color:var(--acc)}.cover .lead{font-size:20px;line-height:1.5;color:var(--mute);max-width:44ch;margin:0 0 var(--s6)}.facts{display:flex;gap:var(--s4);flex-wrap:wrap}.facts span+span:before{content:"/";color:var(--line2);margin-right:var(--s4)}.mark{font-family:var(--mono);font-size:12px;letter-spacing:.06em;margin-top:var(--s4)}.mark,.tree{color:var(--mute)}.tree{background:var(--sf);border:1px solid var(--line);padding:var(--s5);font-family:var(--mono-diagram);font-size:13.5px;line-height:1.55;white-space:pre;overflow-x:auto;margin:0}.tree b{color:var(--ink);font-weight:500}.tree i{font-style:normal;color:var(--acc)}.tree .todo{color:var(--line2)}.tree .todo i{color:var(--mute)}.author{display:flex;gap:var(--s4);align-items:baseline;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:var(--s4) 0;margin:0 0 var(--s7)}.author .who{font-family:var(--display);font-weight:600;font-size:20px;letter-spacing:-.01em;flex:0 0 auto}.author .line{color:var(--mute);font-size:16.5px}.written{padding:var(--s6) 0;border-top:1px solid var(--line)}.written p{font-family:var(--display);font-weight:600;font-size:28px;letter-spacing:-.02em;line-height:1.2;margin:var(--s3) 0 0;max-width:34ch}.different{border-top:1px solid var(--line);padding:var(--s6) 0}.different .grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--s5);gap:var(--s5);margin-top:var(--s4)}.different h3{font-size:20px;margin:0 0 var(--s2)}.different p{font-size:15.5px;line-height:1.55;color:var(--mute);margin:0}.steps5{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line2);border-bottom:1px solid var(--line)}.steps5>div{padding:var(--s5) var(--s4);border-right:1px solid var(--line)}.steps5>div:first-child{padding-left:0}.steps5>div:last-child{padding-right:0;border-right:0}.steps5 .n{font-family:var(--mono);font-size:12px;color:var(--acc);font-weight:500}.steps5 h3{font-size:22px;margin:var(--s2) 0}.steps5 p{font-size:15px;line-height:1.5;color:var(--mute);margin:0}.courses{display:grid;grid-template-columns:1fr 1fr;margin:var(--s7) 0}.courses>div{padding:0 var(--s6);border-right:1px solid var(--line)}.courses>div:first-child{padding-left:0}.courses>div:last-child{border-right:0;padding-right:0}.courses h3{font-size:40px;margin:var(--s3) 0 var(--s3)}.courses .tagline{color:var(--mute);max-width:40ch;margin:0 0 var(--s4)}.partchips{display:flex;flex-wrap:wrap;gap:var(--s2);margin:var(--s4) 0}.partchip{font-family:var(--mono);font-size:11px;letter-spacing:.06em;border:1px solid var(--line);border-radius:var(--r-ctl);padding:4px 8px;color:var(--mute)}.courses .foot{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;border-top:1px solid var(--line);padding-top:var(--s4)}.kitgrid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);grid-gap:var(--s7);gap:var(--s7);align-items:start;padding-bottom:90px}.map{background:var(--sf);border:1px solid var(--line);padding:var(--s5);font-family:var(--mono-diagram);font-size:13px;line-height:1.5;color:var(--mute);white-space:pre;overflow-x:auto;margin:0}.map b{color:var(--ink);font-weight:500}.map i{font-style:normal;color:var(--acc)}.map .todo,.map .todo b,.map .todo i{color:var(--line2)}.filerow{display:flex;gap:var(--s3);align-items:baseline;width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);padding:11px 0;cursor:pointer;text-align:left;font-family:var(--mono);font-size:13.5px;color:var(--ink)}.filerow:hover{background:var(--sf)}.filerow .dot{color:var(--line2);flex:0 0 auto}.filerow[aria-pressed=true] .f,.filerow[data-on="1"] .dot{color:var(--acc)}.filerow .f{flex:1 1;min-width:0}.filerow .w{color:var(--mute);font-size:11.5px;letter-spacing:.04em;margin-left:auto;text-align:right}.detail{border-left:3px solid var(--acc);padding:4px 0 4px var(--s4);margin-bottom:var(--s5)}.legal h1{font-size:clamp(34px,4vw,52px);margin:12px 0 6px}.legal h2{font-size:24px;margin:var(--s6) 0 var(--s2)}.legal li,.legal p{font-size:17.5px;line-height:1.6;color:var(--ink)}.legal ul{padding-left:22px}.footer{border-top:1px solid var(--line);margin-top:var(--s7)}.footer .inner{max-width:var(--page);margin:0 auto;padding:var(--s5) var(--s6);display:flex;gap:var(--s5);align-items:center;flex-wrap:wrap;font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute)}.footer nav{display:flex;gap:var(--s4);margin-left:auto}.footer nav a{color:var(--mute);text-decoration:none}.footer nav a:hover{color:var(--ink)}@media (max-width:900px){.shell{padding:0 20px}.topbar .inner{height:auto;min-height:52px;flex-wrap:wrap;gap:var(--s3);padding:8px 20px}.topbar .brand-long{display:none}.topbar .brand-short{display:inline}.topbar .spacer,.topbar nav{display:none}.topbar .counter{margin-left:auto;font-size:11px;padding:5px 8px}.themeswitch button{padding:7px 9px;font-size:10.5px}.searchbtn{order:10;flex:1 1;justify-content:space-between;padding:7px 9px}.searchbtn .long{display:none}.searchbtn .short{display:inline}.topbar .chip,.topbar .chip-user{order:11}.narrow-hide{display:none!important}.reader{grid-template-columns:minmax(0,1fr);gap:var(--s6);padding:var(--s6) 20px 80px 26px}.reader .rail{display:none}.readspine{left:8px}.subbar .inner{height:44px;gap:var(--s3)}.article h1{font-size:36px;font-variation-settings:"wdth" 82}.lede{font-size:20px}.prose{font-size:17px;line-height:1.62}.prose h3{font-size:22px}.figure{margin-left:-26px;margin-right:-20px}.figure pre{padding:14px 20px 12px 26px;font-size:12px}.machine .slots{grid-template-columns:1fr}.gate{grid-template-columns:minmax(0,1fr);gap:var(--s6);padding-top:var(--s6);padding-bottom:80px}.plans{grid-template-columns:1fr}.idxgrid{grid-template-columns:minmax(0,1fr);gap:var(--s6)}.idxaside{position:static}.modrow .t{font-size:22px}.cover{grid-template-columns:minmax(0,1fr);gap:var(--s6);padding:var(--s6) 0 var(--s7)}.cover h1{font-size:46px}.facts{font-size:10.5px}.different .grid,.steps5{grid-template-columns:1fr}.different .grid{gap:var(--s4)}.steps5>div{padding:var(--s4) 0;border-right:0;border-bottom:1px solid var(--line)}.steps5>div:last-child{border-bottom:0}.courses{grid-template-columns:1fr}.courses>div{padding:0 0 var(--s6);border-right:0;border-bottom:1px solid var(--line);margin-bottom:var(--s6)}.courses>div:last-child{border-bottom:0;margin-bottom:0}.courses h3{font-size:32px}.written p{font-size:22px}.kitgrid{grid-template-columns:minmax(0,1fr);gap:var(--s6)}.table{font-size:14px}.table td,.table th{padding-right:8px}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.counter[data-flash="1"]{animation:none}}