@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/0-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+20-7F}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/2-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+80-FF}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/4-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+100-17F}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/6-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+180-24F}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/8-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+2000-206F}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/10-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+2100-214F}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/12-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+2190-21FF}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/14-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+20A0-20CF}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/16-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+22??}@font-face{font-family:MonoLisaCode;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/18-MonoLisaCode-normal.woff2)format("woff2");unicode-range:U+300-36F}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/0-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+20-7F}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/1-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+20-7F}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/2-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+80-FF}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/3-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+80-FF}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/4-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+100-17F}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/5-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+100-17F}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/6-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+180-24F}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/7-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+180-24F}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/8-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+2000-206F}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/9-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+2000-206F}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/10-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+2070-209F}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/11-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+2070-209F}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/12-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+2100-214F}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/13-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+2100-214F}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/14-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+2190-21FF}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/15-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+2190-21FF}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/16-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+20A0-20CF}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/17-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+20A0-20CF}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/18-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+22??}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/19-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+22??}@font-face{font-family:MonoLisaText;font-style:normal;font-weight:1 1000;font-display:swap;src:url(/fonts/20-MonoLisaText-normal.woff2)format("woff2");unicode-range:U+300-36F}@font-face{font-family:MonoLisaText;font-style:italic;font-weight:1 1000;font-display:swap;src:url(/fonts/21-MonoLisaText-italic.woff2)format("woff2");unicode-range:U+300-36F}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/SourceSerif4-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2000-206F,U+20AC,U+2122,U+2212,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/SourceSerif4-latinext.woff2)format("woff2");unicode-range:U+100-17F,U+218-21B}@font-face{font-family:SS4Fallback;src:local(Georgia);ascent-override:103.6%;descent-override:33.5%;line-gap-override:0%}:root{--washi-0:#fffdfa;--washi-1:#faf8f4;--washi-2:#f4f1ea;--washi-3:#efeae1;--sumi-0:#1a1714;--sumi-1:#2e2925;--sumi-2:#443e37;--sumi-3:#575047;--sumi-4:#6b645b;--kuro-0:#131110;--kuro-1:#1b1917;--kuro-2:#23201d;--kuro-3:#2a2622;--hinoki-0:#f2eadc;--hinoki-1:#e8dcc6;--hinoki-2:#c7b695;--hinoki-3:#a89778;--shu:#c24634;--shu-deep:#a5382a;--shu-lift:#d96a56;--ai:#2e5470;--ai-lift:#7ba3c4;--murasaki:#6e5a9e;--murasaki-lift:#b9a6e8;--font-serif:"Source Serif 4", "SS4Fallback", Georgia, "Times New Roman", serif;--font-text:MonoLisaText, ui-sans-serif, system-ui, -apple-system, sans-serif;--font-code:MonoLisaCode, ui-monospace, SFMono-Regular, Menlo, monospace;--fs-xs:.75rem;--fs-sm:.875rem;--fs-base:1.0625rem;--fs-md:1.25rem;--fs-lg:clamp(1.375rem, 1.19rem + .78vw, 1.75rem);--fs-xl:clamp(1.75rem, 1.37rem + 1.6vw, 2.5rem);--fs-2xl:clamp(2.25rem, 1.55rem + 2.9vw, 3.5rem);--fs-3xl:clamp(2.6rem, 1.6rem + 4.2vw, 4.75rem);--lh-tight:1.08;--lh-snug:1.22;--lh-normal:1.6;--lh-loose:1.7;--tr-tight:-.022em;--tr-snug:-.012em;--tr-none:0;--tr-wide:.08em;--grad-light:0;--grad-dark:-18;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-7:2.5rem;--sp-8:3rem;--sp-9:4rem;--sp-10:5rem;--sp-11:6.5rem;--sp-12:8rem;--radius:0;--radius-control:2px;--rule-w:1px;--measure:62ch;--content-max:1200px;--kumiko-cell:48;--kumiko-stroke:1.25;--ease-settle:cubic-bezier(.2,.7,.3,1);--dur-settle:.24s;--dur-tone:.14s;--dur-draw:.9s}@media (prefers-reduced-motion:reduce){:root{--dur-settle:1ms;--dur-draw:1ms}}:root,[data-ground=paper]{--ground:var(--washi-1);--ground-raised:var(--washi-0);--ground-sunken:var(--washi-3);--ink:var(--sumi-0);--ink-muted:var(--sumi-3);--ink-subtle:var(--sumi-4);--rule:#1a171424;--rule-strong:#1a171447;--lattice:var(--sumi-2);--computed:var(--sumi-1);--inferred:var(--murasaki);--sealed:var(--shu);--link:var(--ai);--cta-bg:var(--shu);--cta-bg-hover:var(--shu-deep);--cta-ink:var(--washi-0);--grade:var(--grad-light)}[data-ground=workshop]{--ground:var(--kuro-0);--ground-raised:var(--kuro-1);--ground-sunken:var(--kuro-0);--ink:var(--hinoki-1);--ink-muted:var(--hinoki-2);--ink-subtle:var(--hinoki-3);--rule:#e8dcc629;--rule-strong:#e8dcc657;--lattice:var(--hinoki-3);--computed:var(--hinoki-1);--inferred:var(--murasaki-lift);--sealed:var(--shu-lift);--link:var(--ai-lift);--cta-bg:var(--shu);--cta-bg-hover:var(--shu-deep);--cta-ink:var(--washi-0);--grade:var(--grad-dark)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--ground);color:var(--ink);font-family:var(--font-text);font-size:var(--fs-base);line-height:var(--lh-normal);font-variation-settings:"GRAD" var(--grade);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}[data-ground]{background:var(--ground);color:var(--ink);font-variation-settings:"GRAD" var(--grade)}::selection{background:var(--shu);color:var(--washi-0)}:focus-visible{outline:2px solid var(--shu);outline-offset:2px}.skip-link{z-index:50;background:var(--cta-bg);color:var(--cta-ink);font-family:var(--font-text);font-size:var(--fs-sm);padding:10px 16px;text-decoration:none;position:absolute;top:0;left:-9999px}.skip-link:focus{left:0}.t-display,.t-title,.t-section{font-family:var(--font-serif);letter-spacing:var(--tr-tight);font-weight:600;line-height:var(--lh-tight);text-wrap:balance;margin:0}.t-display{font-size:var(--fs-3xl)}.t-title{font-size:var(--fs-2xl)}.t-section{font-size:var(--fs-xl);line-height:var(--lh-snug)}.t-lead{font-family:var(--font-serif);font-size:var(--fs-lg);font-weight:400;line-height:var(--lh-snug);letter-spacing:var(--tr-snug);color:var(--ink);text-wrap:pretty;max-width:46ch;margin:0}p{margin:0 0 var(--sp-4);max-width:var(--measure);text-wrap:pretty}p:last-child{margin-bottom:0}.t-muted{color:var(--ink-muted)}strong{font-weight:600}.mono,code,.eyebrow,.tag{font-family:var(--font-code);font-variant-ligatures:none}.eyebrow{font-size:var(--fs-xs);letter-spacing:var(--tr-wide);color:var(--ink-muted);margin-bottom:var(--sp-4);font-weight:500;display:block}code{color:var(--ink);font-size:.92em}.tag{font-size:var(--fs-xs);letter-spacing:.04em;border:var(--rule-w) solid var(--rule-strong);border-radius:var(--radius-control);color:var(--ink-muted);white-space:nowrap;padding:3px 7px}.num{font-variant-numeric:tabular-nums}.wrap{max-width:var(--content-max);padding-inline:var(--sp-5);margin-inline:auto}.band{padding-block:var(--sp-11)}.band-tight{padding-block:var(--sp-9)}.edge{border-top:var(--rule-w) solid var(--rule)}.site-head{z-index:20;border-bottom:var(--rule-w) solid var(--rule);position:sticky;top:0}.site-head .wrap{align-items:center;gap:var(--sp-5);justify-content:space-between;min-height:64px;display:flex}.brandmark{color:var(--ink);align-items:center;gap:10px;text-decoration:none;display:flex}.brandmark .word{font-family:var(--font-serif);letter-spacing:var(--tr-snug);font-size:1.3rem;font-weight:600}.nav{align-items:center;gap:var(--sp-5);display:flex}.nav a{font-size:var(--fs-sm);color:var(--ink-muted);border-bottom:var(--rule-w) solid transparent;transition:color var(--dur-tone), border-color var(--dur-tone);padding-bottom:2px;text-decoration:none}.nav a:hover{color:var(--ink);border-bottom-color:var(--rule-strong)}.nav a.cta{color:var(--cta-ink);border-bottom:0}.nav a.cta:hover{color:var(--cta-ink)}.cta{background:var(--cta-bg);color:var(--cta-ink);font-family:var(--font-text);font-size:var(--fs-sm);letter-spacing:.005em;border-radius:var(--radius-control);cursor:pointer;transition:background var(--dur-tone);border:0;align-items:center;gap:9px;padding:11px 20px;font-weight:600;text-decoration:none;display:inline-flex}.cta:hover{background:var(--cta-bg-hover)}.cta-quiet{color:var(--ink);font-size:var(--fs-sm);border-bottom:var(--rule-w) solid var(--rule-strong);transition:border-color var(--dur-tone);align-items:center;gap:8px;padding-bottom:3px;font-weight:500;text-decoration:none;display:inline-flex}.cta-quiet:hover{border-bottom-color:var(--ink)}.actions{align-items:center;gap:var(--sp-5);margin-top:var(--sp-7);flex-wrap:wrap;display:flex}.lattice{width:100%;height:auto;color:var(--lattice);display:block}.lattice [data-role=computed]{color:var(--computed)}.lattice [data-role=inferred]{color:var(--inferred)}.lattice [data-role=sealed]{color:var(--sealed)}.draw [pathLength]{stroke-dasharray:1;stroke-dashoffset:0}[data-js] .draw:not([data-drawn]) [pathLength]{stroke-dashoffset:1px}[data-js] .draw[data-drawn] [pathLength]{animation:draw var(--dur-draw) var(--ease-settle) forwards}[data-js] .draw[data-drawn] g>:nth-child(4n+2){animation-delay:80ms}[data-js] .draw[data-drawn] g>:nth-child(4n+3){animation-delay:.16s}[data-js] .draw[data-drawn] g>:nth-child(4n){animation-delay:.24s}@keyframes draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){[data-js] .draw:not([data-drawn]) [pathLength]{stroke-dashoffset:0}[data-js] .draw[data-drawn] [pathLength]{animation:none}}
