@font-face{font-family:sora;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/sora.woff2)format('woff2')}@font-face{font-family:jetbrains mono;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/jetbrains-mono.woff2)format('woff2')}@font-face{font-family:schibsted grotesk;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/schibsted-grotesk.woff2)format('woff2')}@font-face{font-family:hanken grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/hanken-grotesk.woff2)format('woff2')}@font-face{font-family:newsreader;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/newsreader.woff2)format('woff2')}@font-face{font-family:newsreader;font-style:italic;font-weight:200 800;font-display:swap;src:url(/fonts/newsreader-italic.woff2)format('woff2')}@font-face{font-family:literata;font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/literata.woff2)format('woff2')}@font-face{font-family:literata;font-style:italic;font-weight:200 900;font-display:swap;src:url(/fonts/literata-italic.woff2)format('woff2')}:root{--paper:#f9f5ec;--head:#201c16;--fg:#5a5245;--fg-dim:#6c6558;--fg-faint:#766e61;--accent:#c1522a;--link:#a5451f;--link-2:#8f3a1a;--cta-text:#fefaf3;--pill:#efe4d2;--hover:#f4ecdd;--card:#fdfbf6;--line:rgba(32,28,22,.12);--line-2:rgba(32,28,22,.14);--line-soft:rgba(32,28,22,.09);--code-bg:#221d17;--code-fg:#d5cbbb;--code-mut:#948a79;--code-kw:#e08a63;--code-fn:#efb27f;--code-str:#a8bf95;--code-num:#e8b45c;--r:6px;--r-img:12px;--maxw:1120px;--gut:64px;--link-line:rgba(165,69,31,.35);--line-3:rgba(32,28,22,.24);--err:#b3261e;--scrim:rgba(249,245,236,.86);--backdrop:rgba(32,28,22,.4);--plate:transparent;--plate-pad:0px;--sans:'Sora',sans-serif;--text:var(--sans);--ts:1;--mono:'JetBrains Mono',monospace}[data-sans=schibsted]{--sans:'Schibsted Grotesk',sans-serif}[data-sans=hanken]{--sans:'Hanken Grotesk',sans-serif}[data-text=newsreader]{--text:'Newsreader',Georgia,serif;--ts:1.12}[data-text=literata]{--text:'Literata',Georgia,serif;--ts:.98}[data-text=newsreader] .body,[data-text=literata] .body{line-height:1.68}[data-text=newsreader] .body p,[data-text=literata] .body p{margin-bottom:22px}[data-palette=paper]{--paper:#f6f5f1;--card:#fcfcfa;--pill:#e8e5dd;--hover:#efede8;--head:#1e1d1a;--fg:#54514a;--fg-dim:#66625a;--fg-faint:#736f67;--line:rgba(30,29,26,.12);--line-2:rgba(30,29,26,.15);--line-soft:rgba(30,29,26,.08);--line-3:rgba(30,29,26,.24);--scrim:rgba(246,245,241,.88)}[data-palette=notebook]{--paper:#eef1ef;--card:#f8faf9;--pill:#dfe4e1;--hover:#e6eae7;--head:#1b1f1e;--fg:#4d5350;--fg-dim:#5d6461;--fg-faint:#666d6a;--link:#a3431d;--line:rgba(27,31,30,.13);--line-2:rgba(27,31,30,.16);--line-soft:rgba(27,31,30,.09);--line-3:rgba(27,31,30,.26);--scrim:rgba(238,241,239,.88)}[data-palette=notebook] body{background-image:linear-gradient(rgba(27,31,30,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(27,31,30,.045) 1px,transparent 1px);background-size:24px 24px}[data-palette=dark]{--paper:#1b1916;--card:#23201c;--pill:#2e2a25;--hover:#25221e;--head:#f0eae0;--fg:#cdc4b6;--fg-dim:#ada392;--fg-faint:#978d7e;--accent:#e0703f;--link:#ec9468;--link-2:#f4ad88;--cta-text:#1b1916;--link-line:rgba(236,148,104,.4);--line:rgba(240,234,224,.12);--line-2:rgba(240,234,224,.16);--line-soft:rgba(240,234,224,.08);--line-3:rgba(240,234,224,.28);--code-bg:#12100d;--err:#f2867a;--scrim:rgba(27,25,22,.9);--backdrop:rgba(0,0,0,.55);--plate:#f4efe4;--plate-pad:14px;color-scheme:dark}@media(prefers-color-scheme:dark){[data-palette=auto]{--paper:#1b1916;--card:#23201c;--pill:#2e2a25;--hover:#25221e;--head:#f0eae0;--fg:#cdc4b6;--fg-dim:#ada392;--fg-faint:#978d7e;--accent:#e0703f;--link:#ec9468;--link-2:#f4ad88;--cta-text:#1b1916;--link-line:rgba(236,148,104,.4);--line:rgba(240,234,224,.12);--line-2:rgba(240,234,224,.16);--line-soft:rgba(240,234,224,.08);--line-3:rgba(240,234,224,.28);--code-bg:#12100d;--err:#f2867a;--scrim:rgba(27,25,22,.9);--backdrop:rgba(0,0,0,.55);--plate:#f4efe4;--plate-pad:14px;color-scheme:dark}}*{box-sizing:border-box}html{scroll-behavior:smooth;caret-color:var(--accent);accent-color:var(--accent)}body{margin:0;background:var(--paper);color:var(--fg);font-family:var(--sans);font-size:16px;line-height:1.6;min-height:100vh;display:flex;flex-direction:column}::selection{background:var(--accent);color:var(--cta-text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:inherit}button{font:inherit;background:0 0;border:none;color:inherit;padding:0}kbd{display:inline-block;font:500 12px/1.5 var(--mono);color:var(--fg-dim);background:var(--card);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:4px;padding:0 6px}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}main{flex:1;max-width:var(--maxw);margin:0 auto;width:100%;min-width:0}.nav{display:flex;align-items:center;justify-content:space-between;gap:40px;padding:28px var(--gut);max-width:var(--maxw);margin:0 auto;width:100%}.logo{display:inline-flex;align-items:center;gap:9px;font:500 15px var(--mono);color:var(--head);text-decoration:none}.logomark{width:17px;height:17px}.lg1{stroke:var(--head);opacity:.26}.lg2{stroke:var(--accent)}.navr{display:flex;align-items:center;gap:6px}.navlinks{display:flex;align-items:center;gap:6px;font:14.5px var(--sans)}.themebtn{display:none;width:40px;height:40px;margin-left:4px;align-items:center;justify-content:center;border-radius:var(--r);color:var(--fg-dim);cursor:pointer;transition:color .18s,background .18s}.js .themebtn{display:inline-flex}.themebtn:hover{color:var(--head);background:var(--hover)}.themebtn .i-sun,.themebtn[data-eff=dark] .i-moon{display:none}.themebtn[data-eff=dark] .i-sun{display:block}.nl{color:var(--fg-dim);text-decoration:none;padding:8px 10px;transition:color .18s}.nl::before,.mnl.on::before{content:'/';font-family:var(--mono);color:var(--accent);margin-right:5px}.nl::before{opacity:0;transition:opacity .18s}.nl:hover{color:var(--head)}.nl.on{color:var(--head)}.nl.on::before{opacity:1}.navmobile{display:none;align-items:center;gap:10px}::view-transition-old(root),::view-transition-new(root){animation-duration:.22s}.burger{width:44px;height:44px;border:1px solid var(--line-2);border-radius:var(--r);display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;cursor:pointer}.bl{width:15px;height:1.5px;background:var(--head);display:block;transition:transform .2s cubic-bezier(.22,.68,.3,1)}.burger[aria-expanded=true] .bl:first-child{transform:translateY(2.75px)rotate(45deg)}.burger[aria-expanded=true] .bl:last-child{transform:translateY(-2.75px)rotate(-45deg)}.mnav{display:none;flex-direction:column;padding:8px 22px 18px;border-bottom:1px solid var(--line)}.mnav.open{display:flex}.mnl{color:var(--fg-dim);text-decoration:none;padding:13px 4px;font-size:15px;border-bottom:1px solid var(--line);text-align:left;cursor:pointer}.mnl.on{color:var(--head)}.mnl:last-child{border-bottom:none}.hero{display:grid;grid-template-columns:minmax(0,1fr)300px;gap:32px 64px;align-items:end;padding:84px var(--gut)76px}.hh{margin:0;max-width:20ch;font:600 clamp(36px,4.8vw,56px)/1.06 var(--sans);letter-spacing:-.035em;color:var(--head);text-wrap:balance}.hmark{display:inline-block;width:.66em;height:.66em;margin:0 .14em 0 -.06em;vertical-align:-.04em}.hside{padding-bottom:6px}.sub{margin:0;font:calc(16px*var(--ts))/1.75 var(--text);color:var(--fg);text-wrap:pretty}.more{display:inline-block;margin-top:16px;font:500 15px var(--sans);color:var(--link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;text-decoration-color:var(--link-line);cursor:pointer;transition:color .18s,text-decoration-color .18s}.more:hover{color:var(--link-2);text-decoration-color:initial}.cta{display:inline-block;background:var(--link);color:var(--cta-text);padding:12px 22px;border-radius:var(--r);font:500 14.5px var(--sans);text-decoration:none;cursor:pointer;transition:background .18s}.cta:hover{background:var(--link-2);color:var(--cta-text)}.cta:disabled{opacity:.6;cursor:progress}.rw{padding:8px var(--gut)48px}.rwhead{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:14px;border-bottom:1px solid var(--line)}.rwh{margin:0;font:600 17px var(--sans);letter-spacing:-.01em;color:var(--head)}.rwall{font:14px var(--sans);color:var(--link);text-decoration:none}.rwall:hover{color:var(--link-2);text-decoration:underline;text-underline-offset:4px}.hrow{display:grid;grid-template-columns:56px 1fr 140px;gap:28px;align-items:baseline;padding:28px 0;text-decoration:none}.brow{display:grid;grid-template-columns:120px 1fr 90px;gap:28px;align-items:baseline;padding:26px 0;text-decoration:none;border-top:1px solid var(--line-soft)}.brow:first-child{border-top:1px solid var(--line)}.hrow+.hrow{border-top:1px solid var(--line-soft)}.hrow::before{content:'';align-self:start;width:28px;height:2px;margin-top:13px;border-radius:1px;background:var(--accent);transition:width .18s}.hrow:hover::before{width:44px}.rtitle{font:500 20px/1.4 var(--sans);color:var(--head);letter-spacing:-.012em;margin-bottom:8px;text-wrap:balance;transition:color .18s}.hrow:hover .rtitle,.brow:hover .rtitle{color:var(--link)}.brow .rtitle{font-size:19px}.rdesc{font:calc(14.5px*var(--ts))/1.7 var(--text);color:var(--fg-dim);max-width:640px;text-wrap:pretty}.rmeta{font:12.5px/1.7 var(--mono);color:var(--fg-dim)}.rmeta-r{text-align:right}.rmin{font:12.5px/1.7 var(--mono);color:var(--fg-dim);text-align:right}.brow.has-thumb,.hrow.has-thumb{row-gap:20px}.brow.has-thumb .rthumb,.hrow.has-thumb .rthumb{grid-area:1/2/2/-1;align-self:start}.brow.has-thumb .rmeta{grid-area:1/1;align-self:start}.brow.has-thumb>div{grid-area:2/2}.brow.has-thumb .rmin{grid-area:2/3}.hrow.has-thumb::before{grid-area:1/1}.hrow.has-thumb>div{grid-area:2/2}.hrow.has-thumb .rmeta{grid-area:2/3}.rthumb img{display:block;width:100%;max-width:640px;height:auto;border-radius:var(--r-img);background:var(--plate);padding:var(--plate-pad)}.bhead{padding:72px var(--gut)40px}.bh1{margin:0;font:600 clamp(32px,5vw,44px)/1.1 var(--sans);letter-spacing:-.03em;color:var(--head);text-wrap:balance}.bh1 .hmark{width:.7em;height:.7em}.bsub{margin:16px 0 0;font:calc(16px*var(--ts))/1.65 var(--text);color:var(--fg-dim);max-width:600px;text-wrap:pretty}.bsub p{margin:0}.tools{display:flex;align-items:center;justify-content:space-between;gap:20px 32px;padding:0 var(--gut)36px;flex-wrap:wrap}.search{flex:1;max-width:320px;min-width:240px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:var(--card);border:1px solid var(--line-2);border-radius:var(--r);padding:11px 12px 11px 16px;font:14.5px var(--sans);color:var(--fg-dim);cursor:text;text-align:left;transition:border-color .18s}.search:hover{border-color:var(--accent)}.tagrow{display:flex;gap:2px 20px;flex-wrap:wrap;font:14.5px var(--sans)}.tagrow-big{padding:0 0 60px;font-size:16px}.tag{color:var(--fg-dim);text-decoration:none;padding:6px 0;transition:color .18s}.tag::before{content:'#';font-family:var(--mono);color:var(--fg-faint);margin-right:2px}.tag-all::before{content:none}.tag:hover{color:var(--head)}.tag.on{color:var(--head);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:7px}.tcount{font:12px var(--mono);color:var(--fg-faint);margin-left:4px}.pager{display:flex;justify-content:center;gap:8px;padding:44px 0 10px;font:13.5px var(--mono)}.pg{width:40px;height:40px;border-radius:var(--r);border:1px solid var(--line-2);display:flex;align-items:center;justify-content:center;color:var(--fg-dim);text-decoration:none;transition:all .18s}.pg:hover{border-color:var(--accent);color:var(--head)}.pg.on{background:var(--link);border-color:var(--link);color:var(--cta-text)}.art{max-width:680px;margin:0 auto;padding:72px 24px 0}.at{margin:0 0 24px;font:600 clamp(30px,4.5vw,40px)/1.18 var(--sans);letter-spacing:-.028em;color:var(--head);text-wrap:balance}.ameta{display:flex;align-items:center;gap:8px 10px;font:13px var(--mono);color:var(--fg-dim);padding-bottom:40px;border-bottom:1px solid var(--line);flex-wrap:wrap}.ameta a{color:var(--link);text-decoration:none}.ameta a:hover{color:var(--link-2);text-decoration:underline;text-underline-offset:4px}.ameta .sep{color:var(--fg-faint)}.ava{width:36px;height:36px;border-radius:50%;background:var(--pill);margin-right:2px}.pcover{max-width:680px;margin:0 auto;padding:40px 24px 0}.pcover .figzoom{display:block;cursor:zoom-in}.pcover img{display:block;width:100%;height:auto;border-radius:var(--r-img);background:var(--plate);padding:var(--plate-pad)}.body{max-width:680px;margin:0 auto;padding:40px 24px 88px;font:calc(17px*var(--ts))/1.8 var(--text);color:var(--fg);overflow-wrap:break-word}.body p{margin:0 0 26px;text-wrap:pretty}.body h2{font:600 26px/1.3 var(--sans);letter-spacing:-.02em;color:var(--head);margin:52px 0 16px;text-wrap:balance}.body h3{font:600 20px/1.35 var(--sans);color:var(--head);margin:40px 0 12px;text-wrap:balance}.body a{color:var(--link);text-decoration:none;border-bottom:1px solid var(--link-line)}.body a:hover{border-color:var(--link)}.body strong{color:var(--head);font-weight:600}.body ul,.body ol{margin:0 0 26px;padding-left:26px}.body li{margin-bottom:8px;text-wrap:pretty}.body li::marker{color:var(--fg-faint)}.body img{max-width:100%;height:auto;border-radius:var(--r-img)}.body p:empty{display:none}.body .fig{margin:0 0 26px}.body .fig img{display:block;width:100%;border-radius:var(--r-img);background:var(--plate);padding:var(--plate-pad)}.body .figzoom{display:block;border-bottom:none;cursor:zoom-in}.body .figcap{margin-top:10px;font:calc(13.5px*var(--ts))/1.6 var(--text);color:var(--fg-faint);text-align:center}.body blockquote{border-left:2px solid var(--accent);padding:4px 0 4px 24px;margin:0 0 26px;font:italic calc(19px*var(--ts))/1.6 var(--text);color:var(--head)}.body blockquote p{margin:0}.body code{font-family:var(--mono);font-size:.85em;background:var(--pill);border:1px solid var(--line);border-radius:4px;padding:2px 6px;color:var(--link)}.body pre{background:var(--code-bg);border-radius:var(--r-img);padding:24px 26px;margin:0 0 26px;overflow-x:auto}.body pre code{background:0 0;border:none;padding:0;font-size:13px;line-height:1.95;color:var(--code-fg)}.body pre ::selection{background:rgba(224,138,99,.35);color:inherit}.body .highlight{position:relative;width:100%;margin:0 0 26px;background:var(--code-bg);border-radius:var(--r-img)}.body .highlight pre{margin:0;background:0 0}.body .highlight{overflow:hidden}.body .highlight pre{margin:0 10px 6px;padding:24px 16px 18px}.body pre::-webkit-scrollbar{height:8px}.body pre::-webkit-scrollbar-track{background:0 0}.body pre::-webkit-scrollbar-thumb{background:rgba(213,203,187,.26);border-radius:4px;border:2px solid var(--code-bg)}.body pre::-webkit-scrollbar-thumb:hover{background:rgba(213,203,187,.45)}.body pre:focus-visible{outline-offset:-3px}.sres::-webkit-scrollbar,.body .fig-wide::-webkit-scrollbar{width:8px;height:8px}.sres::-webkit-scrollbar-thumb,.body .fig-wide::-webkit-scrollbar-thumb{background:var(--line-3);border-radius:4px;border:2px solid var(--paper)}@supports not selector(::-webkit-scrollbar){.body pre{scrollbar-width:thin;scrollbar-color:rgba(213,203,187,.26)transparent}.body pre:hover{scrollbar-color:rgba(213,203,187,.45)transparent}.sres,.body .fig-wide{scrollbar-width:thin;scrollbar-color:var(--line-3)transparent}}.cfile{padding:14px 26px 0;font:12px var(--mono);color:var(--code-fg);letter-spacing:.02em}.cfile.clang{color:var(--code-mut)}.body .cfile+pre{padding-top:10px}.cbar{position:absolute;top:10px;right:10px;display:flex;gap:6px}.cwide{padding:5px 10px;border:1px solid rgba(213,203,187,.18);border-radius:4px;background:var(--code-bg);color:var(--code-mut);font:11px var(--mono);letter-spacing:.06em;cursor:pointer;transition:color .18s,border-color .18s}.body .highlight:hover .cwide{border-color:rgba(213,203,187,.3)}.cwide:hover{color:var(--code-fg);border-color:rgba(213,203,187,.4)}@media(max-width:760px){.cexp{display:none}}@media(min-width:761px){.body .highlight{transition:width .24s ease,margin-left .24s ease}}.pn{display:grid;grid-template-columns:1fr 1fr;gap:26px 20px;max-width:680px;margin:0 auto;padding:0 24px 88px}.pn::before{content:'';grid-column:1/-1;border-top:1px solid var(--line)}.post-wrap:has(+.pn)>.body{padding-bottom:56px}.pnc{border:1px solid var(--line-2);border-radius:var(--r);padding:20px 22px;text-decoration:none;display:block;transition:border-color .18s,background .18s}.pnc:hover{border-color:var(--accent);background:var(--hover)}.pnc-r{text-align:right;grid-column:2}.pnl{font:12.5px var(--mono);color:var(--fg-dim);margin-bottom:8px}.pnt{font:500 16px/1.4 var(--sans);color:var(--head);text-wrap:balance}.chroma{background:0 0}.chroma .c,.chroma .c1,.chroma .cm{color:var(--code-mut);font-style:italic}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kc,.chroma .nt{color:var(--code-kw)}.chroma .s,.chroma .s1,.chroma .s2,.chroma .l{color:var(--code-str)}.chroma .nf,.chroma .nx,.chroma .nc,.chroma .nb{color:var(--code-fn)}.chroma .m,.chroma .mi,.chroma .mf{color:var(--code-num)}.chroma .o,.chroma .p{color:var(--code-mut)}.asplit{display:grid;grid-template-columns:340px 1fr;gap:64px;align-items:start;padding:76px var(--gut)64px}.portrait{width:100%;height:420px;background:var(--pill);border-radius:var(--r-img);overflow:hidden}.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 30%}.bio{font:calc(16.5px*var(--ts))/1.8 var(--text);color:var(--fg);margin-top:22px;max-width:600px}.bio p{margin:0 0 22px;text-wrap:pretty}.bio strong{color:var(--head);font-weight:600}.stackwrap{padding:48px var(--gut)90px}.subhead{margin:0;font:600 17px var(--sans);letter-spacing:-.01em;color:var(--head);padding-bottom:14px;border-bottom:1px solid var(--line)}.stack{margin:0}.skrow{display:grid;grid-template-columns:340px 1fr;gap:8px 64px;align-items:baseline;padding:20px 0;border-bottom:1px solid var(--line-soft)}.stack dt{font:600 16px var(--sans);color:var(--head)}.stack dd{margin:0;font:13.5px/1.9 var(--mono);color:var(--fg-dim);text-wrap:pretty}.chero{max-width:640px;margin:0 auto;padding:112px 24px 72px;text-align:center}.ch1{margin:0;font:600 clamp(34px,5vw,46px)/1.1 var(--sans);letter-spacing:-.03em;color:var(--head);text-wrap:balance}.csub{margin:18px 0 36px;font:calc(16.5px*var(--ts))/1.75 var(--text);color:var(--fg)}.csub p{margin:0}.cmail{display:inline-block;font:clamp(20px,3vw,26px)var(--mono);color:var(--link);text-decoration:none;border-bottom:2px solid var(--link-line);padding-bottom:6px;transition:border-color .18s}.cmail:hover{border-color:var(--link)}.cnote{margin:14px 0 0;font:14px var(--sans);color:var(--fg-dim)}.socials{display:flex;justify-content:center;gap:4px 28px;margin-top:36px;flex-wrap:wrap;font:15px var(--sans)}.soc{color:var(--fg-dim);padding:8px 0;text-decoration:underline;text-decoration-color:var(--line-2);text-decoration-thickness:1px;text-underline-offset:6px;transition:color .18s,text-decoration-color .18s}.soc:hover{color:var(--link);text-decoration-color:initial}.fl{display:flex;flex-direction:column;gap:7px;font:500 13.5px var(--sans);color:var(--head)}.finput{width:100%;background:var(--card);border:1px solid var(--line-2);border-radius:var(--r);padding:13px 15px;color:var(--head);font:15px var(--sans);transition:border-color .18s}.finput::placeholder{color:var(--fg-faint)}.finput:hover{border-color:var(--line-3)}.finput:focus{border-color:var(--accent)}.finput:focus-visible{outline-offset:1px}.ftextarea{resize:vertical;min-height:130px;line-height:1.6}.fbottom{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.fstatus{margin:0;font-size:14px;color:var(--fg-dim);min-height:1.2em}.fstatus.ok{color:var(--link)}.fstatus.err{color:var(--err)}.cform-wrap{max-width:640px;margin:0 auto;padding:0 var(--gut)90px}.cor{position:relative;text-align:center;margin:0 0 32px;color:var(--fg-faint);font:13px var(--mono)}.cor::before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:var(--line)}.cor span{position:relative;background:var(--paper);padding:0 16px}.cform{display:flex;flex-direction:column;gap:18px;text-align:left}.frow{display:grid;grid-template-columns:1fr 1fr;gap:18px}.nlbox{max-width:var(--maxw);margin:0 auto;padding:16px var(--gut)88px}.post-wrap~.nlbox,.pn~.nlbox{max-width:728px;padding-left:24px;padding-right:24px}.nlinner{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:20px 48px;border-top:1px solid var(--line);padding-top:36px}.nlh{margin:0;font:600 22px var(--sans);letter-spacing:-.02em;color:var(--head)}.nlp{font:calc(15px*var(--ts))/1.7 var(--text);color:var(--fg-dim);max-width:440px;margin:8px 0 0}.nlform{flex:1;min-width:280px;max-width:440px}.nlrow{display:flex;gap:10px}.nlinput{flex:1}.nlbtn{flex:none;white-space:nowrap;border:none;cursor:pointer}.nlform .fstatus{margin-top:10px}.tlist{padding:4px var(--gut)90px}.trow{display:grid;grid-template-columns:180px minmax(0,1fr)210px;gap:28px;align-items:baseline;padding:22px 0;border-top:1px solid var(--line-soft);text-decoration:none}.trow:first-child{border-top-color:var(--line)}.trow:last-child{border-bottom:1px solid var(--line-soft)}.toolname{font:600 18px var(--sans);color:var(--head);transition:color .18s}.trow:hover .toolname{color:var(--link)}.tooldesc{margin:0;font:calc(15px*var(--ts))/1.65 var(--text);color:var(--fg-dim);max-width:560px;text-wrap:pretty}.toolurl{font:13px var(--mono);color:var(--fg-dim);text-align:right;overflow-wrap:anywhere;transition:color .18s}.trow:hover .toolurl{color:var(--link)}.statuslink{display:inline-flex;align-items:center;gap:9px;margin-top:22px;color:var(--fg-dim);border:1px solid var(--line-2);border-radius:var(--r);padding:10px 16px;font:14px var(--sans);text-decoration:none;transition:all .18s}.statuslink:hover{color:var(--head);border-color:var(--accent)}.dot{width:7px;height:7px;border-radius:50%;background:#5a9e5f}.legal{max-width:680px}.legal h2{font-size:22px}.legal blockquote{font-style:normal;font-size:15px}.notfound{padding:120px var(--gut)140px;max-width:760px}.nf-links{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:32px}.nf-links .more{margin-top:0}.sdlg{position:fixed;inset:0;background:var(--backdrop);backdrop-filter:blur(5px);z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:12vh 20px 20px}.sdlg[hidden]{display:none}.sbox{width:100%;max-width:560px;background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-img);overflow:hidden;box-shadow:0 24px 70px rgba(32,28,22,.28)}.sinput{width:100%;background:0 0;border:none;outline:none;color:var(--head);font:17px var(--sans);padding:22px 26px;border-bottom:1px solid var(--line);-webkit-appearance:none;appearance:none}.sinput::placeholder{color:var(--fg-faint)}.sres{max-height:46vh;overflow-y:auto}.sri{display:block;padding:16px 26px;text-decoration:none;border-bottom:1px solid var(--line-soft);transition:background .15s}.sri:hover,.sri.sel,.sri:focus-visible{background:var(--hover)}.sri:focus-visible{outline-offset:-2px}.srt{font:600 15px var(--sans);color:var(--head)}.srm{font:12.5px var(--mono);color:var(--fg-faint);margin-top:4px}.snone{padding:22px 26px;font-size:14px;color:var(--fg-dim)}.shint{padding:12px 26px;font:12.5px var(--sans);color:var(--fg-faint);border-top:1px solid var(--line)}.shint kbd{margin-right:2px}.foot{position:relative;display:flex;align-items:center;justify-content:space-between;gap:12px 24px;flex-wrap:wrap;padding:36px var(--gut)40px;font:13px var(--mono);color:var(--fg-dim);max-width:var(--maxw);margin:0 auto;width:100%}.foot::before{content:'';position:absolute;top:0;left:var(--gut);right:var(--gut);border-top:1px solid var(--line)}.flinks{display:flex;flex-wrap:wrap;gap:0 22px}.foot a{display:inline-block;padding:8px 0;color:var(--fg-dim);text-decoration:none;transition:color .18s}.foot a:hover{color:var(--link)}.js .reveal{opacity:0;transform:translateY(14px);transition:opacity .6s cubic-bezier(.22,.68,.3,1),transform .6s cubic-bezier(.22,.68,.3,1)}.js .reveal.vis{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.js .reveal{opacity:1;transform:none;transition:none}}.lbox{position:fixed;inset:0;z-index:60;background:var(--scrim);backdrop-filter:blur(12px);opacity:0;transition:opacity .28s ease;cursor:zoom-out}.lbox.on{opacity:1}.lbox:not(.on){pointer-events:none}.lbox[hidden]{display:none}.lbox img{position:fixed;border-radius:var(--r-img);background:var(--plate);transform-origin:0 0;transition:transform .28s cubic-bezier(.22,.68,.3,1)}@media(prefers-reduced-motion:reduce){.lbox,.lbox img{transition:none}}.body h2,.body h3{scroll-margin-top:24px}.body .hanchor{margin-left:.3em;color:var(--fg-faint);border-bottom:none;font-weight:400;opacity:0;transition:opacity .15s}.body h2:hover .hanchor,.body h3:hover .hanchor,.body .hanchor:focus-visible{opacity:1}.body .hanchor:hover{color:var(--link)}.post-wrap{display:grid;grid-template-columns:1fr minmax(0,680px)1fr}.post-wrap>.body{grid-column:2;grid-row:1;width:100%}.toc{display:none}.toc-h{margin:0 0 10px;font:500 13px var(--sans);color:var(--head)}.toc ul,.toc-m ul{list-style:none;margin:0;padding:0}.toc ul{border-left:1px solid var(--line)}.toc a{display:block;margin-left:-1px;padding:5px 0 5px 14px;border-left:1px solid transparent;font:13.5px/1.45 var(--sans);color:var(--fg-dim);text-decoration:none;text-wrap:pretty;transition:color .15s,border-color .15s}.toc a:hover{color:var(--head)}.toc a.on{color:var(--head);border-left-color:var(--accent)}.toc-m{margin:0 0 32px;border:1px solid var(--line-2);border-radius:var(--r);padding:12px 16px;font-family:var(--sans)}.toc-m summary{cursor:pointer;font:500 14.5px var(--sans);color:var(--head)}.toc-m ul{margin-top:8px}.toc-m li{margin:0}.body .toc-m a{display:block;padding:6px 0;border-bottom:none;font:15px/1.4 var(--sans);color:var(--fg-dim)}.body .toc-m a:hover{color:var(--link)}.body .sn{margin:0 0 22px;padding-left:16px;border-left:1px solid var(--line-2);font:14px/1.6 var(--sans);color:var(--fg-dim)}.body .sn p{margin:0}@media(min-width:1100px){.toc{display:block;grid-column:1;grid-row:1;justify-self:end;align-self:start;position:sticky;top:28px;width:176px;margin:44px 28px 0 0}.toc-m{display:none}.body .sn{float:right;clear:right;width:188px;margin:6px -222px 16px 0;padding-left:0;border-left:none}}.now{padding:8px var(--gut)64px}.now-body{padding:20px 0 0 84px;font:calc(15.5px*var(--ts))/1.7 var(--text);color:var(--fg);max-width:740px}.now-body ul{margin:0;padding:0;list-style:none}.now-body li{position:relative;padding-left:20px;margin-bottom:6px;text-wrap:pretty}.now-body li::before{content:'';position:absolute;left:0;top:.8em;width:10px;height:1.5px;background:var(--accent)}.now-body p{margin:0}@media(max-width:1000px){:root{--gut:40px}.nav{padding-top:22px;padding-bottom:22px}.hero{grid-template-columns:1fr;align-items:start;gap:24px;padding:60px var(--gut)56px}.hside{max-width:520px}.bhead{padding:60px var(--gut)40px}.asplit{grid-template-columns:300px 1fr;gap:44px;padding:64px var(--gut)50px}.skrow{grid-template-columns:200px 1fr;gap:8px 32px}.trow{grid-template-columns:160px minmax(0,1fr)}.toolurl{grid-column:2;text-align:left}}@media(max-width:640px){:root{--gut:22px}.navlinks{display:none}.navmobile{display:flex}.themebtn{width:44px;height:44px;margin-left:0}.nav{padding-top:18px;padding-bottom:18px}.hero{padding:44px var(--gut)40px}.rw{padding-bottom:34px}.hrow{grid-template-columns:1fr;gap:8px;padding:20px 0}.hrow::before{display:none}.hrow .rmeta-r{text-align:left}.brow{grid-template-columns:1fr;gap:8px;padding:20px 0}.brow .rmin{text-align:left}.bhead{padding:38px var(--gut)26px}.tools{flex-direction:column;align-items:stretch;gap:16px;padding-bottom:26px}.search{max-width:none}.search kbd{display:none}.tagrow-big{padding-bottom:40px}.pager{padding:30px 0 0}.pg{width:44px;height:44px}.art{padding:50px 22px 0}.body{padding:34px 22px 60px}.post-wrap:has(+.pn)>.body{padding-bottom:40px}.body .fig-wide{margin-left:-22px;margin-right:-22px;overflow-x:auto;-webkit-overflow-scrolling:touch}.body .fig-wide img{border-radius:0}.body .fig-wide .figcap{padding:0 22px}.pcover{padding:28px 22px 0}.pcover-wide{padding-left:0;padding-right:0}.pcover-wide img{border-radius:0}.brow.has-thumb,.hrow.has-thumb{grid-template-columns:1fr;row-gap:14px}.brow.has-thumb .rthumb,.hrow.has-thumb .rthumb{grid-area:1/1/2/-1}.brow.has-thumb .rmeta,.brow.has-thumb>div,.brow.has-thumb .rmin,.hrow.has-thumb>div,.hrow.has-thumb .rmeta{grid-area:auto}.pn{grid-template-columns:1fr;gap:20px;padding:0 22px 60px}.pnc-r{grid-column:auto}.asplit{grid-template-columns:1fr;gap:30px;padding:44px var(--gut)40px}.portrait{height:360px;max-width:360px;margin:0 auto}.stackwrap{padding:36px var(--gut)60px}.skrow{grid-template-columns:1fr;gap:4px}.chero{padding:80px 22px 64px}.trow{grid-template-columns:1fr;gap:6px;padding:20px 0}.toolurl{grid-column:auto}.cform-wrap{padding-bottom:54px}.frow{grid-template-columns:1fr}.nlrow{flex-direction:column}.notfound{padding:72px var(--gut)96px}.now-body{padding-left:0}}