@layer reset,tokens,base,layout,components,utilities;@font-face{font-family:atkinson hyperlegible next;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/atkinson-next-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:atkinson hyperlegible next;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/atkinson-next-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:atkinson hyperlegible next;font-style:italic;font-weight:200 800;font-display:swap;src:url(/fonts/atkinson-next-italic-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:atkinson hyperlegible next;font-style:italic;font-weight:200 800;font-display:swap;src:url(/fonts/atkinson-next-italic-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:atkinson hyperlegible mono;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/atkinson-mono-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:atkinson hyperlegible mono;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/atkinson-mono-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:atkinson fallback;src:local("Arial"),local("ArialMT"),local("Helvetica"),local("Liberation Sans");size-adjust:99.8%;ascent-override:98.6%;descent-override:31.7%;line-gap-override:0%}@layer tokens{:root{--bg:#f7f8fa;--surface:#eceff4;--text:#15171c;--muted:#545a66;--accent:#3140c8;--accent-hover:#2430a3;--on-accent:#ffffff;--mark:#ffe45c;--border:#d5dae3;--border-strong:#b9c0cc;--shadow-pop:0 12px 32px -12px rgb(0 0 0 / .25);--backdrop:rgb(10 12 18 / .45);color-scheme:light;--font-text:"Atkinson Hyperlegible Next", "Atkinson Fallback", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"Atkinson Hyperlegible Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--step--1:clamp(.84rem, .82rem + .1vw, .9rem);--step-0:clamp(1.0625rem, 1.02rem + .22vw, 1.1875rem);--step-1:clamp(1.25rem, 1.18rem + .35vw, 1.45rem);--step-2:clamp(1.5rem, 1.36rem + .7vw, 1.9rem);--step-3:clamp(1.9rem, 1.62rem + 1.4vw, 2.75rem);--fs-ui:.95rem;--fs-label:.8125rem;--lh-text:1.65;--lh-tight:1.15;--s-1:.25rem;--s-2:.5rem;--s-3:.75rem;--s-4:1rem;--s-5:1.5rem;--s-6:2rem;--s-7:3rem;--s-8:4.5rem;--radius-sm:4px;--radius:6px;--radius-lg:10px;--radius-pill:999px;--measure:66ch;--container:72rem;--header-h:3.75rem;--hang:3rem;--gutter-l:max(16px, env(safe-area-inset-left, 0px));--gutter-r:max(16px, env(safe-area-inset-right, 0px))}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#101217;--surface:#191c23;--text:#e5e7ec;--muted:#a1a7b4;--accent:#9ba6ff;--accent-hover:#c0c7ff;--on-accent:#101217;--mark:#6b5a00;--border:#2b2f39;--border-strong:#3c4250;--shadow-pop:0 12px 32px -12px rgb(0 0 0 / .6);--backdrop:rgb(0 0 0 / .6);color-scheme:dark}}:root[data-theme=dark]{--bg:#101217;--surface:#191c23;--text:#e5e7ec;--muted:#a1a7b4;--accent:#9ba6ff;--accent-hover:#c0c7ff;--on-accent:#101217;--mark:#6b5a00;--border:#2b2f39;--border-strong:#3c4250;--shadow-pop:0 12px 32px -12px rgb(0 0 0 / .6);--backdrop:rgb(0 0 0 / .6);color-scheme:dark}}@layer reset{*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0}h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,pre{margin:0}img,svg,video,canvas,picture,iframe{display:block;max-width:100%}img,video{height:auto}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer}table{border-collapse:collapse}[hidden]{display:none!important}}@layer base{html{scroll-padding-top:calc(var(--header-h) + 1rem);background:var(--bg)}body{background:var(--bg);color:var(--text);font-family:var(--font-text);font-size:var(--step-0);line-height:var(--lh-text);font-optical-sizing:auto;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:30;background:var(--bg)}::selection{background:var(--mark);color:var(--text)}a{color:var(--accent);text-decoration-thickness:.08em;text-underline-offset:.18em}a:hover{color:var(--accent-hover);text-decoration-thickness:.14em}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:2px}main:focus{outline:none}h1,h2,h3,h4,h5,h6{line-height:var(--lh-tight);letter-spacing:-.015em;font-weight:800;text-wrap:balance}p,li,figcaption{text-wrap:pretty}code,kbd,samp,pre{font-family:var(--font-mono)}kbd{font-size:.85em;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:var(--radius-sm);padding:.05em .35em;background:var(--bg);white-space:nowrap}mark{background:var(--mark);color:var(--text);padding:0 .15em;border-radius:2px}small{font-size:var(--step--1)}hr{border:0;border-top:1px solid var(--border)}abbr[title]{text-decoration:underline dotted;text-underline-offset:.18em}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}}@layer layout{.wrap{width:100%;max-width:calc(var(--container) + var(--gutter-l) + var(--gutter-r));margin-inline:auto;padding-left:var(--gutter-l);padding-right:var(--gutter-r)}.site-main{flex:1 0 auto;padding-block:var(--s-7)var(--s-8)}.col{max-width:var(--measure);margin-inline:auto}@media(min-width:64rem){.col{margin-left:calc(50% - var(--measure)/2 + var(--hang))}}.col-wide{max-width:var(--container);margin-inline:auto}.page-intro{margin-bottom:var(--s-7)}.page-intro h1{font-size:var(--step-3)}.page-intro .lede{color:var(--muted);margin-top:var(--s-3);max-width:52ch}.eyebrow{font-family:var(--font-mono);font-size:var(--step--1);font-weight:600;color:var(--muted);letter-spacing:.05em;text-transform:uppercase;margin:0 0 var(--s-2)}}@layer utilities{.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.no-js-hidden{display:none}}@layer components{.prose>*{margin-block:0}.prose>*+*{margin-top:1.1em}.prose h2{font-size:var(--step-2);margin-top:2em}.prose h3{font-size:var(--step-1);margin-top:1.7em}.prose h4,.prose h5,.prose h6{font-size:var(--step-0);margin-top:1.6em;letter-spacing:-.005em}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.6em}.prose .heading-anchor{margin-left:.3em;color:var(--border-strong);text-decoration:none;font-weight:400;opacity:0;transition:opacity .15s}.prose :is(h2,h3,h4,h5,h6):hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose .heading-anchor:hover{color:var(--accent)}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.35em}.prose li>ul,.prose li>ol{margin-top:.35em}.prose li::marker{color:var(--muted)}.prose li>p+p{margin-top:.6em}.prose ul.contains-task-list,.prose ul:has(>li>input[type=checkbox]){list-style:none;padding-left:.2em}.prose li>input[type=checkbox]{margin:0 .5em 0 0;accent-color:var(--accent)}.prose dl{display:grid;gap:.2em 0}.prose dt{font-weight:600}.prose dd{margin-left:1.3em;color:var(--text)}.prose dd+dt{margin-top:.6em}.prose strong,.prose b{font-weight:700}.prose em,.prose i{font-style:italic}.prose del{color:var(--muted)}.prose ins{text-decoration:none;background:var(--surface);padding:0 .15em}.prose hr{border:0;height:auto;margin-block:2.6em;text-align:center;line-height:1;overflow:visible}.prose hr::after{content:"";display:inline-block;vertical-align:middle;width:3rem;height:3px;border-radius:2px;background:var(--accent);opacity:.7}.prose hr+*{margin-top:0}.prose blockquote{margin-inline:0;padding:.2em 0 .2em 1.1em;border-left:3px solid var(--accent);color:var(--muted);font-style:italic}.prose blockquote>*+*{margin-top:.8em}.prose blockquote em{font-style:normal}.prose code{font-size:.88em;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.05em .3em;overflow-wrap:break-word}.prose a code{color:inherit}.prose pre{font-size:.88rem;line-height:1.55;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--s-4);overflow-x:auto;tab-size:4}.prose pre code{background:0 0;border:0;padding:0;font-size:inherit;overflow-wrap:normal}.prose .highlight{margin-top:1.1em}.prose .highlight pre{margin:0}.prose sup,.prose sub{line-height:0}.prose .footnote-ref,.prose sup a{font-family:var(--font-mono);font-size:.75em;font-weight:600;text-decoration:none;padding:0 .15em}.prose img{border-radius:var(--radius-lg)}.prose img.vgwort,img.vgwort{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.prose figure{margin-block:var(--s-6)}.prose>figure+figure{margin-top:var(--s-5)}.prose figure>*+*{margin-top:var(--s-3)}.prose figure img{margin-inline:auto}.prose figcaption,.prose .caption{font-size:var(--step--1);color:var(--muted);margin-top:var(--s-2);line-height:1.5}.prose figcaption>*+*{margin-top:.5em}.prose figcaption p{margin:0}.prose figcaption a{color:inherit}.prose figcaption a:hover{color:var(--accent)}.prose img[data-fullsize]{cursor:zoom-in}.prose a.zoom{display:block;width:fit-content;max-width:100%;border-radius:var(--radius-lg)}.prose figure a.zoom{margin-inline:auto}.prose .inline-gallery a.zoom{width:auto}.prose video,.prose iframe{border-radius:var(--radius-lg);max-width:100%}.prose iframe{border:0}.prose .video,.prose .embed{aspect-ratio:16/9}.prose .video iframe,.prose .embed iframe{width:100%;height:100%}.prose svg{display:inline-block;vertical-align:middle}.prose .table-wrap{overflow-x:auto}.prose table{width:100%;font-size:var(--step--1);font-variant-numeric:tabular-nums}.prose th,.prose td{padding:.5em .75em;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.prose th{font-weight:600;border-bottom-color:var(--border-strong);white-space:nowrap}.prose th[style*=right],.prose td[style*=right]{text-align:right}.prose tbody tr:last-child td{border-bottom:0}.prose .footnotes{margin-top:var(--s-7);padding-top:var(--s-4);border-top:1px solid var(--border);font-size:var(--step--1);color:var(--muted)}.prose .footnotes>hr{display:none}.prose .footnotes ol{padding-left:1.3em;margin:0}.prose .footnotes li+li{margin-top:.5em}.prose .footnotes li::marker{font-family:var(--font-mono)}.prose .footnotes p{margin:0}.prose .footnotes p+p{margin-top:.5em}.prose .footnote-backref{text-decoration:none;margin-left:.2em}.prose .footnotes li:target{color:var(--text)}.prose .katex-display,.prose mjx-container[display=true]{overflow-x:auto;overflow-y:hidden;padding-block:.2em}@media(max-width:30rem){.prose p,.prose li{hyphens:auto}}}@layer components{.prose svg.icon{width:1.1em;height:1.1em;display:inline-block;vertical-align:-.15em}.prose li>span:first-child>svg.icon{margin-right:.25em}.prose math[display=block]{overflow-x:auto;overflow-y:hidden;padding-block:.3em}.prose math{font-size:1.05em}.prose>.katex:has(>math[display=block]){display:block}.prose img.h-150{max-height:150px;width:auto}.prose img.h-250{max-height:250px;width:auto}.prose img.h-350{max-height:350px;width:auto}.prose img.h-500{max-height:500px;width:auto}.prose img.h-750{max-height:750px;width:auto}.prose img.w-350{max-width:min(350px,100%)}}@layer components{.btn{display:inline-flex;align-items:center;gap:.5rem;min-height:40px;font-size:var(--fs-ui);font-weight:600;line-height:1.3;padding:.6rem 1rem;border-radius:var(--radius);border:1px solid transparent;cursor:pointer;text-decoration:none}.btn svg{width:1.05rem;height:1.05rem;flex:none}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-hover);color:var(--on-accent)}.btn-ghost{background:var(--bg);border-color:var(--border-strong);color:var(--text)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.btn[disabled],.btn[aria-disabled=true]{color:var(--muted);cursor:progress;border-color:var(--border)}.chip{display:inline-flex;align-items:center;min-height:2rem;font-family:var(--font-mono);font-size:.82rem;line-height:1.4;text-decoration:none;border:1px solid var(--border-strong);border-radius:var(--radius-pill);padding:.15rem .7rem;color:var(--text)}.chip:hover{border-color:var(--accent);color:var(--accent)}.chip .count{color:var(--muted);margin-left:.4em}.chips{display:flex;flex-wrap:wrap;gap:var(--s-2);list-style:none;margin:0;padding:0}.years{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center;margin-top:var(--s-7);font-size:var(--step--1)}.years .label{color:var(--muted);margin-right:var(--s-2)}.tags{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-5)}.tags .chip::before{content:"#";color:var(--muted);margin-right:.1em}.years+.tags{margin-top:var(--s-4)}.feedback{margin-top:var(--s-7);padding:var(--s-5);background:var(--surface);border-radius:var(--radius-lg)}.feedback h2{font-size:var(--step-1)}.feedback .note{margin:var(--s-2)0 var(--s-4);color:var(--muted);font-size:var(--step--1)}.feedback .note a{color:inherit}.feedback .note a:hover{color:var(--accent)}.feedback .actions{display:flex;flex-wrap:wrap;gap:var(--s-3)}.comments{display:grid;gap:var(--s-4);margin-top:var(--s-5)}.comments:empty{display:none}.comment{display:grid;grid-template-columns:2.5rem 1fr;gap:var(--s-3);font-size:var(--step--1)}.comment.is-reply{margin-left:var(--s-6)}.comment-avatar{width:2.5rem;height:2.5rem;border-radius:var(--radius);background:var(--border)}.comment-author{font-weight:600;color:var(--text)}.comment-meta{font-family:var(--font-mono);font-size:.78rem}.comment-meta a{color:var(--muted)}.comment-text{margin-top:var(--s-1);color:var(--text);white-space:pre-line;overflow-wrap:anywhere}.comments-status{color:var(--muted);font-size:var(--step--1)}.link-list{margin-top:var(--s-7)}.link-list h2{font-size:var(--step-1);margin-bottom:var(--s-3)}.link-list ul{list-style:none;margin:0;padding:0}.link-list li{padding:.5rem 0;border-bottom:1px solid var(--border);display:flex;gap:var(--s-3);align-items:baseline;justify-content:space-between}.link-list li:first-child{border-top:1px solid var(--border)}.link-list a{color:var(--text);text-decoration:none;min-width:0}.link-list a:hover{color:var(--accent);text-decoration:underline}.link-list .d{font-family:var(--font-mono);font-size:var(--step--1);color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.prevnext{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-4);margin-top:var(--s-7)}.prevnext a{display:block;padding:var(--s-4);border:1px solid var(--border);border-radius:var(--radius-lg);text-decoration:none;color:var(--text);min-width:0;line-height:1.35;font-weight:600}.prevnext a:hover{border-color:var(--accent);color:var(--text)}.prevnext small{display:block;color:var(--muted);font-size:var(--step--1);font-weight:400;margin-bottom:var(--s-1)}.prevnext .prev{grid-column:1}.prevnext .next{grid-column:2;text-align:right}@media(max-width:30rem){.prevnext{grid-template-columns:1fr}.prevnext .next{grid-column:1}}.toc{margin-top:var(--s-5);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:var(--step--1)}.toc summary{cursor:pointer;padding:var(--s-3)var(--s-4);font-weight:600;font-size:var(--fs-ui);list-style-position:inside}.toc summary::marker{color:var(--muted)}.toc nav{padding:0 var(--s-4)var(--s-4)}.toc ul{list-style:none;margin:0;padding:0}.toc ul ul{padding-left:var(--s-4)}.toc li{margin-top:.3rem}.toc a{color:var(--muted);text-decoration:none;display:inline-block}.toc a:hover,.toc a[aria-current=true]{color:var(--accent);text-decoration:underline}@media(min-width:88rem){.has-toc .col{position:relative}.has-toc .toc{position:absolute;top:0;bottom:0;left:calc(100% + var(--s-6));width:13rem;margin:0;border:0}.has-toc .toc[open]>nav,.has-toc .toc>nav{position:sticky;top:calc(var(--header-h) + var(--s-5));max-height:calc(100vh - var(--header-h) - var(--s-7));overflow-y:auto;padding:0;border-left:1px solid var(--border);padding-left:var(--s-4)}.has-toc .toc summary{display:none}}}@layer components{:root{--code-string:#19613a;--code-number:#8a3b00;--code-name:#6b2f9a}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--code-string:#8fd6a8;--code-number:#f2b27a;--code-name:#d5b0ff}}:root[data-theme=dark]{--code-string:#8fd6a8;--code-number:#f2b27a;--code-name:#d5b0ff}.highlight .chroma{background:0 0}.highlight>.chroma:has(>table.lntable){background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow-x:auto;font-size:.88rem}.chroma .lntable{border-spacing:0;padding:0;margin:0;width:100%;font-size:inherit}.chroma .lntable td{padding:0;border:0;vertical-align:top}.chroma .lntable pre{border:0;border-radius:0;background:0 0;margin:0;overflow:visible}.chroma .lntd:first-child pre{padding-right:var(--s-2);color:var(--muted);user-select:none;text-align:right;border-right:1px solid var(--border)}.chroma .lntd:last-child{width:100%}.chroma .lnt,.chroma .ln{color:var(--muted);user-select:none;margin-right:.8em}.chroma .hl{background:color-mix(in srgb,var(--mark) 35%,transparent);display:block}.chroma :is(.k,.kc,.kd,.kn,.kp,.kr,.kt,.ow,.nt){color:var(--accent);font-weight:600}.chroma :is(.s,.sa,.sb,.sc,.dl,.sd,.s2,.se,.sh,.si,.sx,.sr,.s1,.ss){color:var(--code-string)}.chroma :is(.m,.mb,.mf,.mh,.mi,.il,.mo,.no,.bp){color:var(--code-number)}.chroma :is(.nf,.fm,.nc,.na,.nb,.nd,.ne,.nn,.vc,.vg,.vi,.nv){color:var(--code-name)}.chroma :is(.c,.ch,.cm,.c1,.cs,.cp,.cpf){color:var(--muted);font-style:italic}.chroma .gd{color:var(--code-number)}.chroma .gi{color:var(--code-string)}.chroma .gh,.chroma .gu{font-weight:700}.chroma .err{color:inherit;background:0 0}}@layer components{.site-footer{border-top:1px solid var(--border);background:var(--surface);font-size:var(--step--1);color:var(--muted)}.site-footer .grid{padding-block:var(--s-7)calc(var(--s-7) + env(safe-area-inset-bottom,0px));display:grid;gap:var(--s-6);grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.site-footer h2{font-family:var(--font-mono);font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 var(--s-3)}.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}.site-footer a{color:var(--text);text-decoration:none}.site-footer a:hover{color:var(--accent);text-decoration:underline}.webring{display:flex;gap:var(--s-2);align-items:center;flex-wrap:wrap}.webring a{border:1px solid var(--border-strong);border-radius:var(--radius);padding:.25rem .6rem;min-height:2rem;display:inline-flex;align-items:center}.colophon{grid-column:1/-1;border-top:1px solid var(--border);padding-top:var(--s-4);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-3)}.colophon a{color:inherit;text-decoration:underline;text-decoration-color:var(--border-strong)}}@layer components{.skip-link{position:absolute;left:1rem;top:-4rem;z-index:50;background:var(--accent);color:var(--on-accent);padding:.5rem 1rem;border-radius:var(--radius);font-weight:600;text-decoration:none}.skip-link:focus{top:calc(env(safe-area-inset-top,0px) + .5rem);color:var(--on-accent)}.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:var(--bg);border-bottom:1px solid var(--border)}.site-header .bar{display:flex;align-items:center;gap:var(--s-4);min-height:var(--header-h)}.brand{display:flex;align-items:center;gap:.55rem;font-weight:800;font-size:1.06rem;letter-spacing:-.01em;color:var(--text);text-decoration:none;white-space:nowrap}.brand:hover{color:var(--text)}.brand-mark{width:1.6rem;height:1.6rem;border-radius:5px;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-family:var(--font-mono);font-size:.8rem;font-weight:600;line-height:1}.nav{display:flex;align-items:center;gap:var(--s-1);margin-left:var(--s-4)}.nav>a,.nav summary{font-size:var(--fs-ui);font-weight:600;line-height:1.4;color:var(--muted);text-decoration:none;padding:.4rem .65rem;border-radius:var(--radius);cursor:pointer;list-style:none;white-space:nowrap}.nav summary::-webkit-details-marker{display:none}.nav>a:hover,.nav summary:hover{color:var(--text);background:var(--surface)}.nav>a[aria-current=page],.nav>a.is-section{color:var(--text);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0}.nav>a[aria-current=page]:hover,.nav>a.is-section:hover{background:0 0}.more{position:relative}.more summary::after{content:"";display:inline-block;width:.4em;height:.4em;margin-left:.45em;border-right:2px solid;border-bottom:2px solid;transform:translateY(-.2em)rotate(45deg)}.more[open] summary::after{transform:translateY(.05em)rotate(-135deg)}.more[open] summary{color:var(--text);background:var(--surface)}.more-panel{position:absolute;top:calc(100% + .4rem);left:0;min-width:15rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:var(--s-2);display:grid;box-shadow:var(--shadow-pop)}.more-panel a{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-4);font-size:var(--fs-ui);font-weight:600;color:var(--text);text-decoration:none;padding:.45rem .65rem;border-radius:var(--radius)}.more-panel a:hover{background:var(--surface);color:var(--text)}.more-panel a[aria-current=page]{color:var(--accent)}.more-panel .hint{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);font-weight:400}.tools{margin-left:auto;display:flex;align-items:center;gap:var(--s-2)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;height:2.5rem;min-width:2.5rem;padding:0 .65rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:.92rem;font-weight:600;line-height:1;cursor:pointer;text-decoration:none}.btn-icon:hover{border-color:var(--border-strong);background:var(--surface);color:var(--text)}.btn-icon svg{width:1.1rem;height:1.1rem;flex:none}.search-btn{min-width:11rem;justify-content:flex-start;color:var(--muted);font-weight:400}.search-btn kbd{margin-left:auto;font-size:.75rem;border:1px solid var(--border);border-bottom-width:1px;border-radius:var(--radius-sm);padding:.1rem .35rem;color:var(--muted);background:0 0}.lang-switch{font-family:var(--font-mono);font-size:.85rem}.theme-switch{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);padding:2px;gap:2px}.theme-switch button{width:2.1rem;height:2.1rem;display:grid;place-items:center;border:0;border-radius:var(--radius-sm);background:0 0;color:var(--muted);cursor:pointer;padding:0}.theme-switch button:hover{color:var(--text)}.theme-switch button[aria-pressed=true]{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-strong)}.theme-switch svg{width:1rem;height:1rem}.menu-btn{display:none}.js .mobile-nav:not(.is-open){display:none}.mobile-nav{border-top:1px solid var(--border);padding-block:var(--s-3)var(--s-5)}.mobile-nav ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:var(--s-1)var(--s-4)}.mobile-nav li a{display:block;padding:.6rem 0;font-weight:600;color:var(--text);text-decoration:none;border-bottom:1px solid var(--border)}.mobile-nav li a[aria-current=page]{color:var(--accent)}.mobile-nav .row{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);flex-wrap:wrap;margin-top:var(--s-4)}@media(max-width:56rem){.nav,.tools>.theme-switch,.tools>.lang-switch{display:none}.js .menu-btn{display:inline-flex}.search-btn{min-width:0}.search-btn kbd{display:none}.search-btn .label{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}}@media(min-width:56.0625rem){.mobile-nav{display:none}}@media(max-width:22rem){.brand-name{display:none}}}@layer components{.year{margin-top:var(--s-7)}.year:first-of-type{margin-top:0}.year>h2{font-size:var(--step-1);display:flex;align-items:baseline;gap:var(--s-3);margin:0 0 var(--s-2);position:sticky;top:calc(env(safe-area-inset-top,0px) + var(--header-h));z-index:1;background:var(--bg);padding-block:var(--s-2)}.year>h2 .count{font-family:var(--font-mono);font-weight:400;font-size:var(--step--1);color:var(--muted);letter-spacing:0}.month{font-family:var(--font-mono);font-size:var(--fs-label);font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin:var(--s-5)0 0;padding-bottom:var(--s-1);border-bottom:1px solid var(--border-strong)}.arch{list-style:none;margin:0;padding:0}.arch li{display:grid;grid-template-columns:4rem 1fr auto;gap:var(--s-4);align-items:baseline;padding:.55rem 0;border-bottom:1px solid var(--border)}.arch time,.arch .n{font-family:var(--font-mono);font-size:var(--step--1);color:var(--muted);font-variant-numeric:tabular-nums}.arch .n{color:var(--accent)}.arch a{color:var(--text);text-decoration:none;min-width:0}.arch a:hover{color:var(--accent);text-decoration:underline}.arch .badge-lang{margin-left:.4em;vertical-align:.1em}@media(max-width:30rem){.arch li{grid-template-columns:1fr auto}.arch time{grid-column:1/-1;margin-bottom:-.4rem}}.term-cloud{display:flex;flex-wrap:wrap;gap:var(--s-2);list-style:none;margin:0;padding:0}.gallery-grid{display:grid;gap:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(min(100%,16rem),1fr));list-style:none;margin:0;padding:0}.gallery-grid a{display:block;color:var(--text);text-decoration:none}.gallery-grid img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius-lg);background:var(--surface)}.gallery-grid .cap{display:block;font-size:var(--step--1);color:var(--muted);margin-top:var(--s-2);line-height:1.45}.gallery-grid .t{display:block;font-family:var(--font-mono);font-size:.78rem;color:var(--muted);margin-top:var(--s-1)}.gallery-grid a:hover .cap{color:var(--text)}.gallery-grid a:hover img{outline:2px solid var(--accent);outline-offset:2px}.fof h1{font-size:var(--step-3)}.fof .code{font-family:var(--font-mono);color:var(--accent);font-size:var(--step-2)}.fof .actions{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-5)}.about-head{display:grid;gap:var(--s-5);align-items:center;grid-template-columns:1fr}.about-head img{width:8rem;height:8rem;border-radius:50%;object-fit:cover;background:var(--surface)}.about-head h1{font-size:var(--step-3)}.about-head .lede{color:var(--muted);margin-top:var(--s-2)}.about-head .chips{margin-top:var(--s-4)}@media(min-width:36rem){.about-head{grid-template-columns:auto 1fr}.about-head img{width:9rem;height:9rem}}}@layer components{dialog.lightbox{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgb(8 9 12/.94);color:#e5e7ec;overflow:hidden}dialog.lightbox[open]{display:grid;grid-template-rows:minmax(0,1fr)auto}dialog.lightbox::backdrop{background:rgb(8 9 12/.94)}.lightbox .stage{min-height:0;display:grid;grid-template:minmax(0,1fr)/minmax(0,1fr);place-items:center;overflow:hidden;padding:var(--s-6)var(--s-8)var(--s-4)}.lightbox img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius)}.lightbox .cap{max-width:var(--measure);margin:0 auto;padding:0 var(--s-4)calc(var(--s-5) + env(safe-area-inset-bottom,0px));font-size:var(--step--1);color:#c9ced8;text-align:center;line-height:1.5}.lightbox .cap a{color:#c0c7ff}.lightbox .cap p{margin:0}.lightbox button{position:absolute;display:grid;place-items:center;width:2.75rem;height:2.75rem;border:1px solid rgb(255 255 255/.25);border-radius:var(--radius);background:rgb(0 0 0/.4);color:#fff;padding:0}.lightbox button:hover{background:rgb(255 255 255/.12)}.lightbox button:focus-visible{outline-color:#c0c7ff}.lightbox button svg{width:1.3rem;height:1.3rem}.lightbox .close{top:calc(var(--s-4) + env(safe-area-inset-top,0px));right:var(--s-4)}.lightbox .prev,.lightbox .next{top:50%;translate:0 -50%}.lightbox .prev{left:var(--s-4)}.lightbox .next{right:var(--s-4)}.lightbox .pos{position:absolute;top:calc(var(--s-4) + env(safe-area-inset-top,0px));left:var(--s-4);font-family:var(--font-mono);font-size:.8rem;color:#a1a7b4}@media(max-width:40rem){.lightbox .stage{padding:var(--s-8)var(--s-2)var(--s-3)}.lightbox .prev,.lightbox .next{top:auto;bottom:calc(var(--s-4) + env(safe-area-inset-bottom,0px));translate:none}.lightbox .cap{padding-inline:3.75rem}}.prose figure.inline-gallery{display:grid;grid-template-columns:repeat(var(--gallery-cols,3),minmax(0,1fr));gap:var(--s-3);align-items:start}.prose figure.inline-gallery>*+*{margin-top:0}.prose .inline-gallery figure{margin:0}.prose .inline-gallery img{width:100%;aspect-ratio:var(--gallery-ratio,4/3);object-fit:var(--gallery-fit,cover);background:var(--surface)}.prose .inline-gallery figcaption{margin-top:var(--s-1)}.prose .inline-gallery>figcaption{grid-column:1/-1}.inline-gallery.gallery-ratio-1-1{--gallery-ratio:1 / 1}.inline-gallery.gallery-ratio-3-2{--gallery-ratio:3 / 2}.inline-gallery.gallery-ratio-16-9{--gallery-ratio:16 / 9}.inline-gallery.gallery-ratio-3-4{--gallery-ratio:3 / 4}.inline-gallery.gallery-ratio-natural{--gallery-ratio:auto}.inline-gallery.gallery-fit-contain{--gallery-fit:contain}@media(min-width:64rem){.prose figure.inline-gallery{margin-inline:calc(-1 * var(--hang))}.prose figure.inline-gallery>figcaption{margin-inline:var(--hang)}}@media(max-width:36rem){.prose figure.inline-gallery{grid-template-columns:repeat(min(var(--gallery-cols,3),2),minmax(0,1fr))}}.prose .cta{margin-block:var(--s-6);text-align:center}}@layer components{.numbered{position:relative}.post-no{display:block;font-family:var(--font-mono);font-weight:600;font-size:var(--step--1);font-variant-numeric:tabular-nums;letter-spacing:.02em;line-height:1.2;color:var(--accent);margin-bottom:var(--s-1)}@media(min-width:64rem){.post-no{position:absolute;right:calc(100% + 1.5rem);top:.15em;margin:0;font-size:var(--step-1);font-weight:400;opacity:.9}}.meta{--meta-gap:1.2rem;display:flex;flex-wrap:wrap;gap:.25rem var(--meta-gap);font-size:var(--step--1);color:var(--muted);margin:var(--s-2)0 0;padding:0;list-style:none;font-variant-numeric:tabular-nums;clip-path:inset(-1rem -1rem -1rem -6px)}.meta li{position:relative;display:inline-flex;align-items:center;gap:.35rem}.meta li::before{content:"";position:absolute;left:calc(var(--meta-gap)/-2 - 1.5px);top:50%;width:3px;height:3px;margin-top:-1.5px;border-radius:50%;background:var(--border-strong)}.meta a{color:inherit}.meta a:hover{color:var(--accent)}.badge-lang{font-family:var(--font-mono);font-size:.74rem;line-height:1.5;border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:0 .3rem;text-decoration:none;color:var(--muted)}.meta .badge-lang:hover{border-color:var(--accent)}.post-list{display:grid;gap:var(--s-8);list-style:none;margin:0;padding:0}.post-card h2{font-size:var(--step-2)}.post-card h2 a{color:var(--text);text-decoration:none}.post-card h2 a:hover{color:var(--accent)}.post-card .teaser{margin:var(--s-4)0 0}.post-card .teaser img{border-radius:var(--radius-lg);width:100%;aspect-ratio:16/9;object-fit:cover;background:var(--surface)}.post-card .teaser figcaption{font-size:var(--step--1);color:var(--muted);margin-top:var(--s-2);line-height:1.5}.post-card .teaser figcaption a{color:inherit}.topics{list-style:none;margin:var(--s-4)0 0;padding:0;display:grid;gap:.15rem}.topics li{padding-left:1.9rem;text-indent:-1.9rem}.topics .e{display:inline-block;width:1.9rem;text-indent:0}.post-card .excerpt{margin-top:var(--s-4);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.post-card .excerpt>*{display:inline;margin:0}.post-card .excerpt>*+*::before{content:" "}.more-link{display:inline-flex;align-items:center;gap:.4rem;margin-top:var(--s-4);font-weight:600}.more-link .arrow{transition:transform .15s}.more-link:hover .arrow{transform:translateX(3px)}.pager{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:var(--s-4);margin-top:var(--s-8);padding-top:var(--s-5);border-top:1px solid var(--border);font-weight:600}.pager .pos{font-family:var(--font-mono);color:var(--muted);font-weight:400;font-size:var(--step--1);text-align:center}.pager .next{text-align:right}.article-head h1{font-size:var(--step-3)}.article-head .subtitle{font-size:var(--step-1);color:var(--muted);margin-top:var(--s-2);line-height:1.35;font-weight:400}.lead-figure{margin:var(--s-6)0}.lead-figure img{border-radius:var(--radius-lg);width:100%;height:auto;background:var(--surface)}.lead-figure figcaption{font-size:var(--step--1);color:var(--muted);margin-top:var(--s-2);line-height:1.5}.lead-figure figcaption a{color:inherit}@media(min-width:64rem){.lead-figure{margin-inline:calc(-1 * var(--hang))}.lead-figure figcaption{margin-inline:var(--hang)}}.article-head+.prose,.article-head+.toc+.prose{margin-top:var(--s-6)}}@layer components{dialog.search{width:min(42rem,calc(100vw - 2rem));max-height:min(80vh,40rem);margin:12vh auto auto;padding:0;border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg);color:var(--text);box-shadow:0 24px 60px -20px rgb(0 0 0/.45);overflow:hidden}dialog.search[open]{display:flex;flex-direction:column}dialog.search::backdrop{background:var(--backdrop);backdrop-filter:blur(2px)}.search-field{display:flex;align-items:center;gap:var(--s-3);padding:var(--s-3)var(--s-4);border-bottom:1px solid var(--border);flex:none}.search-field>svg{width:1.2rem;height:1.2rem;color:var(--muted);flex:none}.search-field input{flex:1;min-width:0;font-size:1.1rem;border:0;background:0 0;color:var(--text);padding:.5rem 0;-webkit-appearance:none;appearance:none}.search-field input::-webkit-search-cancel-button{display:none}.search-field input:focus{outline:none}.search-field:focus-within{box-shadow:inset 0 -2px 0 var(--accent)}.search-field kbd{font-size:.75rem;border-bottom-width:1px}.search-body{overflow-y:auto;padding:var(--s-2);flex:auto;min-height:0}.search-group{margin:var(--s-2)var(--s-3)var(--s-1)}.results{list-style:none;margin:0;padding:0}.results a{display:block;padding:var(--s-3);border-radius:var(--radius);text-decoration:none;color:var(--text)}.results a:hover,.results a[aria-selected=true]{background:var(--surface);color:var(--text)}.results .t{display:block;font-weight:600}.results .x{display:block;font-size:var(--step--1);color:var(--muted);margin-top:.15rem}.results mark{background:var(--mark);color:var(--text);border-radius:2px;padding:0 .1em}.results .d{font-family:var(--font-mono);font-size:.76rem;color:var(--muted)}.results .terms{display:flex;flex-wrap:wrap;gap:var(--s-2);padding:var(--s-1)var(--s-3)var(--s-2)}.results .terms a{display:inline-flex;padding:.15rem .7rem}.results .terms a[aria-selected=true]{border-color:var(--accent);color:var(--accent);background:var(--surface)}.search-empty{padding:var(--s-5)var(--s-3);color:var(--muted);font-size:var(--step--1);margin:0}.search-note{padding:var(--s-2)var(--s-3);color:var(--muted);font-size:var(--step--1);margin:0}.search-foot{display:flex;gap:var(--s-4);justify-content:flex-end;padding:var(--s-2)var(--s-4);border-top:1px solid var(--border);font-size:.78rem;color:var(--muted);flex:none}.search-foot kbd{font-size:.72rem;border-bottom-width:1px;padding:0 .3rem}@media(max-width:30rem){dialog.search{margin-top:1rem;max-height:calc(100dvh - 2rem)}.search-foot{display:none}}.search-page .search-field{border:1px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--bg)}.search-page .search-body{padding:var(--s-4)0 0;overflow:visible}.search-page .results a{padding-inline:0}.search-page .results a:hover{background:0 0}.search-page .results .t{color:var(--accent);text-decoration:underline;text-decoration-thickness:.08em;text-underline-offset:.18em}.search-page .results li+li{border-top:1px solid var(--border)}}