@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-cyrillic-ext-wght-normal.DSNfmdVt.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-cyrillic-wght-normal.B2hlT84T.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-devanagari-wght-normal.Cv-Vwajv.woff2)format("woff2-variations");unicode-range:U+900-97F,U+1CD0-1CF9,U+200C-200D,U+20A8,U+20B9,U+20F0,U+25CC,U+A830-A839,U+A8E0-A8FF,U+11B00-11B09}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-greek-ext-wght-normal.12T8GTDR.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-greek-wght-normal.Ymb6dZNd.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-vietnamese-wght-normal.DLTJy58D.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-latin-ext-wght-normal.W1qJv59z.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Noto Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/noto-sans-latin-wght-normal.BYSzYMf3.woff2)format("woff2-variations");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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-opsz-normal.DIwfbPUE.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-opsz-normal.C0olyEE-.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-opsz-normal.DrHU7SY7.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-opsz-normal.DX68cEVD.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-opsz-normal.HoL-AExg.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-opsz-normal.BpEBLj1O.woff2)format("woff2-variations");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:Site Song;src:url(/fonts/site-song.woff2)format("woff2");font-weight:400;font-display:swap;unicode-range:U+2E80-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF,U+20000-2FA1F}:root{--paper:#eeece6;--paper-2:#e4e1d8;--ink:#18171c;--muted:#5e5c66;--rule:#d2cfc5;--signal:#5b4bd6;--lavender:#c7c0ee;--plate:#fff;--night:#000;--night-ink:#ece9e0;--night-muted:#9a978f;--code-key:#5b4bd6;--code-str:#26663f;--code-num:#9a3520;--sans:"Noto Sans Variable", "Site Song", "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", "SimSun", serif;--serif:"Source Serif 4 Variable", "Site Song", "Songti SC", "Noto Serif CJK SC", "Source Han Serif SC", "SimSun", serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--t-xs:.8125rem;--t-s:.9375rem;--t-m:1.0625rem;--t-l:1.3125rem;--t-xl:clamp(1.5rem, 1.2rem + 1vw, 1.875rem);--t-2xl:clamp(2rem, 1.4rem + 2vw, 3rem);--t-3xl:clamp(2.5rem, 1.5rem + 4vw, 5rem);--gutter:clamp(20px, 4vw, 56px);--max:1360px;--header:64px;--ease:cubic-bezier(.22, 1, .36, 1);--feedback-duration:2.2s;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--paper:#131317;--paper-2:#1d1c22;--ink:#eceae3;--muted:#9d9ba5;--rule:#2f2e35;--signal:#b0a7f5;--lavender:#4b4475;--plate:#f4f2ec;--code-key:#b0a7f5;--code-str:#7fcfa0;--code-num:#f09a7a}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header) + 24px)}body{background:var(--paper);color:var(--ink);font:400 var(--t-m) / 1.75 var(--sans);font-feature-settings:"kern", "tnum" 0;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3,p,dl,dd,figure,ul,ol{margin:0}h1,h2,h3{font-family:var(--serif);letter-spacing:-.01em;text-wrap:balance;font-weight:500;line-height:1.2}h1{font-weight:380}p,li,dd{text-wrap:pretty}ul,ol{padding:0;list-style:none}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration:none}button,input,select{font:inherit;color:inherit}button{cursor:pointer}[hidden]{display:none!important}::selection{background:var(--signal);color:var(--paper)}:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:2px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.wrap{width:100%;max-width:var(--max);padding-inline:var(--gutter);margin-inline:auto}.skip{z-index:100;background:var(--ink);color:var(--paper);padding:10px 16px;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip:focus{transform:none}.more,.inline-more,.back,.footer-links a,.footer-mail,.route-links a,.about-links a,.cv-links a,.nf-links a,.case-links a,.facts dd a,.archive a,.cv-list a,.reader-end a,.link-button{transition:background-size .45s var(--ease), color .2s;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;padding-bottom:2px}:is(.more,.inline-more,.back,.footer-links a,.footer-mail,.route-links a,.about-links a,.cv-links a,.nf-links a,.case-links a,.facts dd a,.archive a,.cv-list a,.reader-end a,.link-button):hover{background-size:100% 1px}.more,.inline-more{font-size:var(--t-s);color:var(--muted)}.more:hover,.inline-more:hover{color:var(--ink)}.back{font-size:var(--t-s);color:var(--muted);margin-bottom:clamp(24px,4vw,48px);display:inline-block}.back:before{content:"← "}.link-button{color:var(--muted);font-size:inherit;background-color:#0000;border:0;padding:0 0 2px}.link-button:hover{color:var(--ink)}.button{border:1px solid var(--ink);font-size:var(--t-s);background:0 0;border-radius:999px;padding:10px 20px;transition:background .2s,color .2s;display:inline-block}.button:hover{background:var(--ink);color:var(--paper)}.lead{max-width:36em;font-size:clamp(1.0625rem,1rem + .35vw,1.25rem);line-height:1.8;font-family:var(--serif)}.footnote{max-width:48em;font-size:var(--t-xs);color:var(--muted);margin-top:32px}.footnote a{text-underline-offset:3px;text-decoration:underline}.notice{border-left:2px solid var(--rule);font-size:var(--t-s);color:var(--muted);margin-top:20px;padding-left:14px}.notice a{text-underline-offset:3px;text-decoration:underline}.header{z-index:50;height:var(--header);padding-inline:max(var(--gutter), (100% - var(--max)) / 2 + var(--gutter));background:var(--paper);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:24px;transition:border-color .3s,background .3s;display:flex;position:sticky;top:0}.header.is-scrolled{background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom-color:var(--rule)}.wordmark{letter-spacing:.02em;white-space:nowrap;align-items:center;font-size:1.0625rem;font-weight:700;display:inline-flex}.wordmark span{font-weight:500;font-size:var(--t-s);letter-spacing:0;color:var(--muted);margin-left:.6em}.signature{aspect-ratio:348/146.4;background:currentColor;height:1em;display:inline-block;-webkit-mask:url(/img/signature.svg) 50%/contain no-repeat;mask:url(/img/signature.svg) 50%/contain no-repeat}.wordmark .signature{height:1.75em;margin:0;transform:translateY(16%)}.nav{gap:4px;margin-right:-14px;display:flex}.nav a{font-size:var(--t-s);color:var(--muted);padding:8px 14px;transition:color .2s;position:relative}.nav a:hover,.nav a[aria-current=page]{color:var(--ink)}.nav a:after{content:"";background:var(--signal);width:4px;height:4px;transition:transform .3s var(--ease);border-radius:50%;margin-left:-2px;position:absolute;bottom:2px;left:50%;transform:scale(0)}.nav a[aria-current=page]:after{transform:scale(1)}.zh-only{color:var(--muted);opacity:.8;margin-left:.35em;font-size:.72em}.nav .lang-switch{border-left:1px solid var(--rule);font-variant-numeric:tabular-nums;margin-left:10px;padding-inline:10px}.menu-toggle{background:0 0;border:0;width:44px;height:44px;margin-right:-10px;display:none}.menu-toggle i,.menu-toggle i:before{width:20px;height:1.5px;transition:transform .3s var(--ease);background:currentColor;margin:auto;display:block}.menu-toggle i{position:relative;transform:translateY(-3px)}.menu-toggle i:before{content:"";position:absolute;top:6px}.menu-toggle[aria-expanded=true] i{transform:translateY(0)rotate(45deg)}.menu-toggle[aria-expanded=true] i:before{transform:translateY(-6px)rotate(-90deg)}.mobile-nav{inset:var(--header) 0 0;padding:16px var(--gutter) 32px;background:var(--paper);border-top:1px solid var(--rule);animation:drop .35s var(--ease);align-content:start;gap:4px;display:grid;position:fixed}.mobile-nav a{font-size:var(--t-2xl);padding:6px 0;font-weight:600}.mobile-nav a[aria-current=page]{color:var(--signal)}.mobile-nav .mobile-mail{font-size:var(--t-s);color:var(--muted);margin-top:16px;font-weight:400}@keyframes drop{0%{opacity:0;transform:translateY(-8px)}}@media (width<=760px){.nav{display:none}.menu-toggle{display:block}}.footer{background:var(--night);color:var(--night-ink);--signal:var(--lavender);margin-top:clamp(120px,14vw,200px)}.footer-inner{max-width:var(--max);padding:clamp(56px, 7vw, 96px) var(--gutter) 28px;margin-inline:auto}.footer-contact p{color:var(--night-muted)}.footer-mail{letter-spacing:-.025em;word-break:break-all;font-size:clamp(1.75rem,1rem + 3.6vw,4rem);font-weight:400;line-height:1.15;font-family:var(--serif);background-size:0 2px;margin-top:8px;display:inline-block}.footer-mail:hover{color:var(--lavender);background-size:100% 2px}.footer-links{font-size:var(--t-s);flex-wrap:wrap;gap:8px 28px;margin-top:clamp(32px,4vw,56px);display:flex}.endcard{letter-spacing:.04em;text-align:center;color:#fff;user-select:none;margin:clamp(64px,10vw,160px) 0 clamp(16px,2vw,28px);font-size:clamp(5rem,1rem + 22vw,21rem);font-weight:700;line-height:.9}.endcard .signature{width:min(100%,3.4em);height:auto}.footer-meta{font-size:var(--t-xs);color:var(--night-muted);justify-content:space-between;display:flex}.page-head{padding-top:clamp(48px,8vw,120px);padding-bottom:clamp(48px,6vw,88px)}.page-head h1{font-size:var(--t-3xl);letter-spacing:-.03em;margin-bottom:clamp(20px,2.5vw,32px)}.block{margin-top:clamp(96px,12vw,176px)}.block-head{justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:clamp(24px,3vw,40px);display:flex}.block-head h2{font-size:var(--t-2xl);letter-spacing:-.03em}.hero{max-width:var(--max);padding:clamp(24px, 4vw, 56px) var(--gutter) 0;--plastic-hi:#f4efe3;--plastic:#e6dfcd;--plastic-lo:#cdc3aa;--engrave:#8a8167;margin-inline:auto;display:grid}.machine{justify-self:center;width:min(780px,100%,110svh - 187px);position:relative}.machine:after{content:"";z-index:-1;background:radial-gradient(closest-side,#28200c47,#0000);border-radius:50%;height:28px;position:absolute;bottom:-14px;left:8%;right:8%}.machine-monitor{background:linear-gradient(180deg, var(--plastic-hi), var(--plastic) 45%, var(--plastic-lo));box-shadow:inset 0 2px 0 #ffffffbf, inset 0 -8px 16px #00000012, 0 1px 0 var(--plastic-lo);border-radius:24px 24px 14px 14px;padding:4.4% 4.4% 0}.machine-bezel{background:linear-gradient(160deg,#d9d1bd,#c2b89f);border-radius:16px;padding:3.4%;box-shadow:inset 0 4px 10px #00000047,inset 0 -1px #ffffff8c}.machine-screen{aspect-ratio:4/3;color:#ece9e0;--flow-1:#8f84e8;--flow-2:#c7c0ee;--flow-3:#f1ede2;--flow-4:#f0b866;background:radial-gradient(at 50% 45%,#24222d,#121117 72%);border-radius:4%/5.4%;position:relative;overflow:hidden;box-shadow:inset 0 0 70px #000000bf,inset 0 0 0 1px #0009}.machine-screen:after{content:"";border-radius:inherit;pointer-events:none;background:radial-gradient(at 28% 8%,#ffffff17,#0000 46%),repeating-linear-gradient(0deg,#ffffff08 0 1px,#0000 1px 3px);position:absolute;inset:0}.screen-canvas{width:100%;height:100%;position:absolute;inset:0}.terminal{font:clamp(9px, 1.25vw, 13px) / 1.75 var(--mono);color:#a79ef0;white-space:normal;margin:0;position:absolute;top:5.5%;left:5.5%;right:5.5%}.terminal span{white-space:pre;text-overflow:clip;transition:opacity .2s;display:block;overflow:hidden}.terminal span:first-child{color:#ece9e0}.is-flowing .terminal span:not(.is-on){opacity:0}.screen-static{letter-spacing:.02em;place-items:center;padding-top:8%;font-size:clamp(3rem,12vw,11rem);font-weight:700;display:grid;position:absolute;inset:0}.screen-static .signature{width:80%;height:auto}.screen-t{font:clamp(9px, 1.25vw, 13px) var(--mono);color:#a79ef0;font-variant-numeric:tabular-nums;position:absolute;bottom:5%;right:5.5%}.machine-panel{align-items:center;gap:3.5%;min-height:64px;padding:2.6% 1% 3%;display:flex}.machine-badge{letter-spacing:.14em;color:var(--engrave);text-shadow:0 1px #ffffffb3;font-size:11px;font-weight:700}.machine-slot{background:#3b372c;border-radius:2px;flex:0 0 22%;height:8px;box-shadow:inset 0 2px 3px #0009,0 1px #ffffffb3}.machine-controls{align-items:center;gap:18px;margin-left:auto;display:flex}.fader{font:italic 600 14px var(--mono);color:#4c4636;align-items:center;gap:10px;display:flex}.fader input{-webkit-appearance:none;appearance:none;cursor:ew-resize;background:linear-gradient(#a99f84,#a99f84) 50%/100% 4px no-repeat;border-radius:2px;width:clamp(120px,17vw,210px);height:28px}.fader input::-webkit-slider-thumb{-webkit-appearance:none;background:linear-gradient(90deg,#f7f3ea,#ddd5c2 45%,#f7f3ea 55%,#d8cfba);border:1px solid #a2987d;border-radius:3px;width:14px;height:26px;box-shadow:0 2px 3px #00000040}.fader input::-moz-range-thumb{background:linear-gradient(90deg,#f7f3ea,#ddd5c2 45%,#f7f3ea 55%,#d8cfba);border:1px solid #a2987d;border-radius:3px;width:14px;height:26px}.machine-key{color:#3f3a2d;background:linear-gradient(#f6f2e8,#ded6c3);border:1px solid #b0a68b;border-radius:6px;padding:6px 12px 5px;font-size:12px;transition:transform 80ms,box-shadow 80ms;box-shadow:0 3px #b0a68b}.machine-key:active{transform:translateY(3px);box-shadow:0 0 #b0a68b}.machine-led{background:#9d8ff5;border-radius:50%;flex:none;width:8px;height:8px;box-shadow:0 0 10px #9d8ff5}.machine-stand{background:linear-gradient(var(--plastic-lo), #b7ad93);clip-path:polygon(10% 0,90% 0,100% 100%,0 100%);width:34%;height:clamp(16px,2.6vw,28px);margin:0 auto}.hero-text{border-top:1px solid var(--rule);grid-template-columns:minmax(0,4fr) minmax(0,5fr) minmax(0,3fr);align-items:end;gap:16px clamp(24px,4vw,56px);margin-top:clamp(40px,5vw,72px);padding-top:24px;display:grid}.hero-name{letter-spacing:-.035em;font-size:clamp(2.5rem,1.4rem + 3.6vw,4.5rem);line-height:1}.hero-role{font-size:var(--t-s);margin-bottom:6px;font-weight:600}.hero-intro{color:var(--muted)}.hero-hint{font-size:var(--t-xs);color:var(--muted);line-height:1.65}.interlude{background:var(--night);color:var(--night-ink);--signal:var(--lavender);--montage-ink:#ece9e0;--montage-accent:#b4aaf2;margin-top:clamp(96px,12vw,176px)}.montage{max-width:var(--max);padding:clamp(40px, 6vw, 96px) var(--gutter) clamp(24px, 3vw, 40px);margin-inline:auto}.montage canvas{aspect-ratio:16/9;width:100%;display:block}.montage-bar{font-size:var(--t-s);color:var(--night-muted);border-top:1px solid #2b2a2f;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:baseline;gap:8px clamp(20px,3vw,40px);margin-top:clamp(20px,3vw,36px);padding-top:16px;display:grid}.montage-title{font-size:var(--t-l);color:var(--night-ink)}.montage-note{max-width:40em}.montage-now{font:var(--t-xs) var(--mono);color:var(--night-ink);white-space:nowrap;font-variant-numeric:tabular-nums;gap:14px;display:flex}.montage-buttons{gap:8px;display:flex}.montage-buttons button{min-height:36px;color:var(--night-ink);font-size:var(--t-xs);background:0 0;border:1px solid #3b3a41;border-radius:999px;padding:0 16px;transition:border-color .2s}.montage-buttons button:hover{border-color:var(--night-ink)}.montage:not(.is-live) canvas{display:none}.facts{margin-top:clamp(40px,5vw,64px)}.facts dl{border-top:1px solid var(--rule);grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding-top:24px;display:grid}.facts dt{font-size:var(--t-xs);color:var(--muted);margin-bottom:6px}.facts dd a{font-weight:600}.facts dd span{font-size:var(--t-s);color:var(--muted);display:block}.work-index{border-bottom:1px solid var(--rule);position:relative}.work-index li{border-top:1px solid var(--rule)}.work-row{transition:opacity .35s var(--ease);grid-template-columns:minmax(0,4fr) minmax(0,4fr) minmax(0,2fr) 7.5em;align-items:baseline;gap:8px 24px;padding:clamp(20px,2.4vw,32px) 0;display:grid}.work-title{letter-spacing:-.03em;transition:transform .45s var(--ease);font-size:clamp(1.625rem,1.1rem + 1.8vw,2.5rem)}.work-sub{color:var(--ink)}.work-cat,.work-year{font-size:var(--t-s);color:var(--muted)}.work-year{text-align:right;font-variant-numeric:tabular-nums}.work-peek{display:none}@media (hover:hover) and (width>=960px){.work-index:hover .work-row:not(:hover){opacity:.32}.work-row:hover .work-title,.work-row:focus-visible .work-title{transform:translate(10px)}.work-peek{left:var(--peek-x,50%);top:var(--peek-y,50%);z-index:2;background:var(--plate);pointer-events:none;opacity:0;width:300px;transition:opacity .3s, transform .5s var(--ease);padding:10px;display:block;position:absolute;transform:translate(32px,-50%)scale(.9)rotate(-2deg);box-shadow:0 18px 50px -20px #00000059}.work-row:hover .work-peek{opacity:1;transform:translate(32px,-50%)scale(1)rotate(0)}.work-peek img{object-fit:contain;width:100%;max-height:220px}}@media (width<=760px){.work-row{grid-template-columns:minmax(0,1fr) auto}.work-sub{font-size:var(--t-s);color:var(--muted);grid-area:2/1/auto/-1}.work-cat{display:none}}.routes ul{border-bottom:1px solid var(--rule)}.routes li{border-top:1px solid var(--rule);grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:baseline;gap:8px 24px;padding:22px 0;display:grid}.routes-note{font-size:var(--t-xs);color:var(--muted);margin:-8px 0 16px}.routes-lead{font-size:var(--t-s);color:var(--muted);letter-spacing:0;margin-bottom:16px;font-weight:400}.route-q{font-size:var(--t-l);letter-spacing:-.01em;font-weight:600}.route-links{flex-wrap:wrap;gap:4px 24px;display:flex}.route-links a{color:var(--signal)}.routes-page{margin-bottom:clamp(64px,8vw,112px)}@media (width<=760px){.routes li{grid-template-columns:1fr}}.strip{scroll-snap-type:x mandatory;padding:0 max(var(--gutter), (100vw - var(--max)) / 2 + var(--gutter)) 12px;scroll-padding-inline:max(var(--gutter), (100vw - var(--max)) / 2 + var(--gutter));scrollbar-width:thin;scrollbar-color:var(--rule) transparent;gap:12px;display:flex;overflow-x:auto}.strip-item{scroll-snap-align:start;flex:none}.strip-item img{object-fit:cover;background:var(--paper-2);width:auto;height:clamp(280px,34vw,480px);transition:filter .4s}.strip-item span{font-size:var(--t-xs);color:var(--muted);margin-top:10px;display:block}.strip-item:hover span{color:var(--ink)}.case-head{padding-top:clamp(40px,6vw,88px)}.case-head h1{letter-spacing:-.045em;font-size:clamp(3rem,1.5rem + 7vw,8rem);line-height:1}.case-subtitle{font-size:var(--t-xl);color:var(--muted);letter-spacing:-.01em;margin-top:clamp(16px,2vw,28px)}.case-meta{border-top:1px solid var(--rule);font-size:var(--t-s);grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;margin-top:clamp(40px,6vw,80px);padding-top:20px;display:grid}.case-meta dt{font-size:var(--t-xs);color:var(--muted);margin-bottom:4px}.case-links{gap:16px;display:flex}.case-figure{margin-top:clamp(40px,5vw,72px)}.plate{background:var(--plate);place-items:center;padding:clamp(16px,4vw,64px);display:grid;position:relative}.plate:before{content:"";pointer-events:none;--m:linear-gradient(var(--muted), var(--muted));background:var(--m) 0 0 / 16px 1px no-repeat, var(--m) 0 0 / 1px 16px no-repeat, var(--m) 100% 0 / 16px 1px no-repeat, var(--m) 100% 0 / 1px 16px no-repeat, var(--m) 0 100% / 16px 1px no-repeat, var(--m) 0 100% / 1px 16px no-repeat, var(--m) 100% 100% / 16px 1px no-repeat, var(--m) 100% 100% / 1px 16px no-repeat;position:absolute;inset:-12px}.plate img{width:auto;max-height:72vh}.case-figure figcaption{font-size:var(--t-xs);color:var(--muted);margin-top:12px}.case-body{grid-template-columns:minmax(0,3fr) minmax(0,8fr);gap:clamp(48px,6vw,88px) 24px;margin-top:clamp(64px,8vw,120px);display:grid}.case-summary{font-size:var(--t-xl);letter-spacing:-.01em;grid-column:2;max-width:30em;line-height:1.6}.case-body section{border-top:1px solid var(--rule);grid-column:1/-1;grid-template-columns:minmax(0,3fr) minmax(0,8fr);gap:16px 24px;padding-top:24px;display:grid}.case-body section>:not(h2){grid-column:2;max-width:40em}.case-body h2{font-size:var(--t-l)}.decisions{gap:24px;display:grid}.decisions dt{font-weight:600}.decisions dd{color:var(--muted)}.metric{gap:4px;display:grid}.metric strong{font-size:var(--t-3xl);letter-spacing:-.04em;font-weight:600;line-height:1}.metric span{font-size:var(--t-s);color:var(--muted)}.case-body .inline-more{justify-self:start}.next{margin-top:clamp(96px,12vw,160px)}.next>span{font-size:var(--t-s);color:var(--muted);margin-bottom:12px;display:block}.next a{border-block:1px solid var(--rule);padding:24px 0;display:block}.next strong{font-size:var(--t-3xl);letter-spacing:-.04em;transition:color .3s, transform .5s var(--ease);font-weight:600;line-height:1.05;display:block}.next a:hover strong{color:var(--signal);transform:translate(12px)}.next a>span{color:var(--muted)}@media (width<=760px){.case-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.case-body,.case-body section{grid-template-columns:1fr}.case-summary,.case-body section>:not(h2){grid-column:1}}.library-bar{grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px 24px;display:grid}.search{border-bottom:1px solid var(--ink);align-items:center;display:flex;position:relative}.search svg{fill:none;stroke:currentColor;stroke-width:1.5px;flex:none;width:20px;height:20px}.search input{min-width:0;font-size:var(--t-l);background:0 0;border:0;outline:none;flex:1;padding:12px}.search input::placeholder{color:var(--muted)}.search:focus-within{border-bottom-color:var(--signal);box-shadow:0 1px 0 var(--signal)}.search kbd{border:1px solid var(--rule);font:var(--t-xs) var(--mono);color:var(--muted);border-radius:4px;padding:1px 7px}.segmented{border:1px solid var(--rule);border-radius:999px;margin:0;padding:3px;display:inline-flex}.segmented label{position:relative}.segmented input{opacity:0;cursor:pointer;position:absolute;inset:0}.segmented span{font-size:var(--t-s);white-space:nowrap;border-radius:999px;padding:6px 14px;transition:background .25s,color .25s;display:block}.segmented small{font-size:var(--t-xs);color:var(--muted);font-variant-numeric:tabular-nums;margin-left:6px}.segmented input:checked+span{background:var(--ink);color:var(--paper)}.segmented input:checked+span small{color:inherit;opacity:.6}.segmented input:focus-visible+span{outline:2px solid var(--signal);outline-offset:2px}.topic select{-webkit-appearance:none;appearance:none;border:1px solid var(--rule);background:linear-gradient(45deg, transparent 50%, var(--muted) 50%) calc(100% - 20px) 52% / 5px 5px no-repeat, linear-gradient(-45deg, transparent 50%, var(--muted) 50%) calc(100% - 15px) 52% / 5px 5px no-repeat, var(--paper);max-width:100%;font-size:var(--t-s);cursor:pointer;border-radius:999px;padding:8px 36px 8px 16px}.library-status{font-size:var(--t-s);color:var(--muted);align-items:baseline;gap:16px;margin:32px 0 12px;display:flex}.library[aria-busy=true] .entries{opacity:.5}.shelf{margin-top:56px}.shelf-title{font-size:var(--t-xl);letter-spacing:-.01em;font-weight:500}.shelf-group{margin-top:24px}.shelf-topic{font-size:var(--t-s);color:var(--muted);font-weight:600;font-family:var(--sans);align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.shelf-topic small{font-size:var(--t-xs);font-variant-numeric:tabular-nums;font-weight:400}.entries{border-bottom:1px solid var(--rule)}.entries li{border-top:1px solid var(--rule)}.entry{grid-template-columns:6em minmax(0,1fr) 9em;align-items:baseline;gap:4px 24px;padding:22px 0;display:grid}.entry-date,.entry-meta{font-size:var(--t-xs);color:var(--muted);font-variant-numeric:tabular-nums}.entry-meta{text-align:right}.entry-meta span{display:block}.entry-title{font-size:var(--t-l);letter-spacing:-.01em;font-weight:500;line-height:1.35;font-family:var(--serif);transition:color .2s;display:block}.entry-desc{font-size:var(--t-s);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:4px;display:-webkit-box;overflow:hidden}.entry:hover .entry-title{color:var(--signal)}.empty{padding:48px 0}.empty p{color:var(--muted);margin-bottom:20px}@media (width<=860px){.library-bar{grid-template-columns:1fr auto}.search{grid-column:1/-1}}@media (width<=600px){.library-bar{grid-template-columns:minmax(0,1fr)}.segmented{justify-self:start}.topic select{width:100%}.search kbd{display:none}.entry{grid-template-columns:1fr}.entry-meta{text-align:left}.entry-meta span{margin-left:12px;display:inline}.entry-date{order:-1}.segmented span{padding:6px 10px}}.progress{z-index:60;pointer-events:none;height:2px;position:fixed;top:0;left:0;right:0}.progress span{background:var(--signal);width:0;height:100%;display:block}.reader-head,.reader-layout,.reader-end{grid-template-columns:minmax(0,3fr) minmax(0,8fr) minmax(0,1fr);column-gap:clamp(24px,4vw,64px);display:grid}.reader-head{padding-top:clamp(40px,6vw,88px);padding-bottom:clamp(40px,5vw,64px)}.reader-head>*{grid-column:2}.reader-head .back{justify-self:start}.reader-head h1{letter-spacing:-.03em;font-size:clamp(2rem,1.4rem + 2.6vw,3.5rem)}.reader-meta{font-size:var(--t-s);color:var(--muted);flex-wrap:wrap;gap:4px 20px;margin-top:20px;display:flex}.toc{font-size:var(--t-s);grid-column:1}.toc details{top:calc(var(--header) + 24px);max-height:calc(100vh - var(--header) - 48px);position:sticky;overflow:auto}.toc summary{color:var(--muted);cursor:pointer;margin-bottom:12px;list-style:none}.toc summary::-webkit-details-marker{display:none}.toc nav{border-left:1px solid var(--rule);gap:2px;display:grid}.toc a{color:var(--muted);border-left:1px solid #0000;margin-left:-1px;padding:4px 0 4px 14px;line-height:1.45;transition:color .2s,border-color .2s}.toc a.sub{font-size:var(--t-xs);padding-left:28px}.toc a:hover,.toc a.is-active{color:var(--ink);border-left-color:var(--signal)}.prose{overflow-wrap:anywhere;grid-column:2;min-width:0;max-width:44em}.reader-end{margin-top:clamp(64px,8vw,112px)}.reader-end>*{grid-column:2}.reader-end section{border-top:1px solid var(--rule);margin-bottom:32px;padding-top:24px}.reader-end h2{font-size:var(--t-s);color:var(--muted);margin-bottom:12px;font-weight:400}.reader-end li{font-size:var(--t-l);padding:6px 0;font-weight:600}.reader-end .inline-more{justify-self:start}@media (width<=960px){.reader-head,.reader-layout,.reader-end{grid-template-columns:minmax(0,1fr)}.reader-head>*,.reader-end>*,.prose,.toc{grid-column:1}.toc{background:var(--paper-2);border-radius:8px;margin-bottom:32px;padding:14px 16px}.toc details{max-height:none;position:static}.toc summary{margin:0}.toc details[open] summary{margin-bottom:12px}}.prose>:first-child{margin-top:0}.prose>*+*{margin-top:1.1em}.prose h2{font-size:var(--t-xl);margin-top:2.6em}.prose h3{font-size:var(--t-l);margin-top:2em}.prose h4{font-size:var(--t-m);margin:1.6em 0 0}.prose :is(h2,h3,h4)+*{margin-top:.7em}.prose a{color:var(--signal);text-underline-offset:3px;overflow-wrap:anywhere;text-decoration:underline 1px}.prose ul,.prose ol{padding-left:1.4em}.prose ul{list-style:outside}.prose ol{list-style:decimal}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--muted)}.prose img{background:var(--plate);border-radius:4px;margin-inline:auto}.prose blockquote{border-left:2px solid var(--rule);color:var(--muted);margin-inline:0;padding-left:18px}.prose hr{border:0;border-top:1px solid var(--rule);margin:3em 0}.prose code{background:var(--paper-2);font:.88em/1.6 var(--mono);overflow-wrap:anywhere;border-radius:4px;padding:.12em .38em}.prose pre{background:var(--paper-2);border-radius:8px;padding:20px 22px;font-size:.875rem;line-height:1.65;position:relative;overflow-x:auto}.prose pre code{overflow-wrap:normal;font-size:inherit;background:0 0;padding:0}.copy-code{border:1px solid var(--rule);background:var(--paper);font-size:var(--t-xs);color:var(--muted);opacity:0;border-radius:999px;padding:4px 10px;transition:opacity .2s;position:absolute;top:8px;right:8px}.prose pre:hover .copy-code,.prose pre:focus-within .copy-code,.copy-code[data-copy-state]{opacity:1}.prose table{border-collapse:collapse;max-width:100%;font-size:var(--t-s);display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;padding:8px 14px 8px 0}.prose th{font-weight:600}.prose .katex-display{padding:4px 0;overflow:auto hidden}.prose .katex{overflow-wrap:normal;font-size:1.05em}.prose :is(p,li):has(>.katex){overflow:auto hidden}.prose details summary{cursor:pointer;color:var(--muted)}.mermaid-wrap{background:var(--plate);color:#17181b;border-radius:8px;padding:20px;overflow-x:auto}.mermaid-wrap svg{max-width:100%;height:auto;margin-inline:auto}.archive-prose table{display:table}.archive-prose .name{font-size:var(--t-xl);font-weight:600}.hljs-keyword,.hljs-built_in,.hljs-type,.hljs-meta{color:var(--code-key)}.hljs-string,.hljs-attr,.hljs-symbol{color:var(--code-str)}.hljs-number,.hljs-literal{color:var(--code-num)}.hljs-comment,.hljs-quote{color:var(--muted);font-style:italic}.hljs-title,.hljs-function .hljs-title,.hljs-section{font-weight:600}.album-head{grid-template-columns:minmax(0,5fr) minmax(0,6fr);align-items:end;gap:24px clamp(32px,5vw,80px);display:grid}.album-head h1{margin:0}.album-meta{font-size:var(--t-xs);color:var(--muted);margin-top:20px;line-height:1.7}.gallery{columns:3 280px;column-gap:clamp(12px,2vw,28px)}.shot{break-inside:avoid;margin-bottom:clamp(28px,4vw,56px)}.shot button{background:var(--paper-2);cursor:zoom-in;border:0;width:100%;padding:0;display:block;overflow:hidden}.shot img{width:100%;transition:transform 1.2s var(--ease)}.shot button:hover img{transform:scale(1.025)}.shot figcaption{font-size:var(--t-s);color:var(--muted);margin-top:12px}.shot figcaption strong{color:var(--ink);font-weight:600}.shot figcaption span{color:var(--ink);margin-top:4px;display:block}.album-end{margin-top:clamp(48px,6vw,96px)}.album-end h2{font-size:var(--t-xl);margin-bottom:12px}.album-end p{max-width:36em}@media (width<=860px){.album-head{grid-template-columns:1fr}}.lightbox{color:#ebebe6;background:#0d0d0f;border:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:clamp(16px,3vw,40px)}.lightbox[open]{animation:fade .3s var(--ease);grid-template-rows:1fr auto;gap:16px;display:grid}.lightbox::backdrop{background:0 0}.lightbox figure{grid-template-rows:minmax(0,1fr) auto;justify-items:center;gap:14px;min-height:0;display:grid}.lightbox img{object-fit:contain;width:auto;max-width:100%;min-height:0;max-height:100%;transition:opacity .3s}.lightbox[data-image-state=loading] img{opacity:.35}.lightbox figcaption{max-width:44em;font-size:var(--t-s);text-align:center;color:#b5b6bb}.lightbox-status{text-align:center;font-size:var(--t-s)}.lightbox-bar{font-size:var(--t-s);justify-content:center;align-items:center;gap:8px;display:flex}.lightbox-count{font-variant-numeric:tabular-nums;color:#b5b6bb;margin-right:12px}.lightbox-bar button{min-width:44px;height:44px;color:inherit;background:0 0;border:1px solid #fff3;border-radius:999px;padding:0 16px;transition:background .2s}.lightbox-bar button:hover{background:#ffffff1a}.lightbox .link-button{border:0}@keyframes fade{0%{opacity:0}}.about-head{grid-template-columns:minmax(0,7fr) minmax(0,4fr);align-items:end;gap:40px clamp(32px,6vw,112px);padding-top:clamp(48px,8vw,120px);display:grid}.about-head h1{font-size:var(--t-3xl);letter-spacing:-.03em}.about-head h1 span{color:var(--muted);font-weight:500;display:block}.about-head h1 .signature{height:1.6em;color:var(--ink);margin-bottom:.1em}.about-focus{font-size:var(--t-s);margin:24px 0 16px;font-weight:600}.about-links{font-size:var(--t-s);flex-wrap:wrap;gap:8px 24px;margin-top:28px;display:flex}.portrait img{aspect-ratio:4/5;object-fit:cover;object-position:50% 30%;width:100%}.cv{margin-top:clamp(80px,10vw,144px)}.cv section{border-top:1px solid var(--rule);grid-template-columns:minmax(0,3fr) minmax(0,8fr);gap:16px 24px;padding:28px 0 clamp(40px,5vw,64px);display:grid}.cv h2{font-size:var(--t-l)}.cv-items{gap:36px;max-width:44em;display:grid}.cv-item h3{font-size:var(--t-l);letter-spacing:-.01em}.cv-item h3 span{color:var(--muted);margin-left:.4em;font-weight:500}.cv-sub{font-size:var(--t-s);color:var(--muted);font-variant-numeric:tabular-nums;flex-wrap:wrap;gap:2px 16px;margin:4px 0 10px;display:flex}.cv-item ul{gap:8px;display:grid}.cv-item li{padding-left:18px;position:relative}.cv-item li:before{content:"";background:var(--muted);width:6px;height:1px;position:absolute;top:.8em;left:2px}.authors{font-size:var(--t-s);color:var(--muted);margin-bottom:8px}.authors strong{color:var(--ink);font-weight:600}.cv-links{font-size:var(--t-s);gap:20px;margin-top:10px;display:flex}.cv-list{gap:20px}.cv-list li{grid-template-columns:9em minmax(0,1fr);gap:4px 20px;display:grid}.cv-list a,.cv-list b{justify-self:start;font-weight:600}.cv-list span{color:var(--muted)}.tools{gap:16px}.tools div{grid-template-columns:9em minmax(0,1fr);gap:4px 20px;display:grid}.tools dt{font-weight:600}.about-review{gap:8px;margin-top:28px;display:grid}.cv-item h3 a{transition:color .2s}.cv-item h3 a:hover{color:var(--signal)}.cv-detail{font-size:var(--t-s);grid-template-columns:6em minmax(0,1fr);gap:2px 16px;margin-top:10px;display:grid}.cv-detail>span{color:var(--muted)}.cv-detail a,.cv-detail a+span{grid-column:1/-1}.cv-detail a{font-weight:600}.cv-courses{font-size:var(--t-s);margin-top:12px}.cv-courses summary{cursor:pointer;color:var(--muted)}.cv-courses ul{flex-wrap:wrap;gap:6px 20px;margin-top:10px;display:flex}.cv-courses li{padding-left:0}.cv-courses li:before{content:none}@media (width<=760px){.about-head,.cv section{grid-template-columns:1fr}.portrait{order:-1;max-width:260px}.cv-list li,.tools div{grid-template-columns:1fr}}.archive{border-bottom:1px solid var(--rule)}.archive li{border-top:1px solid var(--rule);grid-template-columns:6.5em minmax(0,1fr) auto;align-items:baseline;gap:4px 24px;padding:16px 0;display:grid}.archive time,.archive li>span{font-size:var(--t-xs);color:var(--muted);font-variant-numeric:tabular-nums}.archive li>a{justify-self:start;font-weight:500}@media (width<=600px){.archive li{grid-template-columns:1fr}}.not-found{padding-top:clamp(40px,7vw,100px)}.desk svg{width:min(760px,100%);height:auto;display:block;overflow:visible}.desk .ruler{fill:#ead9a4;stroke:#a88f55}.desk .tick{stroke:#6d5b2c}.desk .pencil{fill:var(--lavender);stroke:#8d84c4}.desk .pencil-tip{fill:#e8d6b2;stroke:#b29c6d}.desk .eraser{fill:#e0a59b}.desk .paper{fill:#fff;stroke:var(--rule)}.desk .lens{fill:color-mix(in srgb, var(--lavender) 30%, transparent)}.desk .rim{fill:none;stroke:var(--ink);stroke-width:10px}.desk .glint{fill:none;stroke:#fff;stroke-width:5px;stroke-linecap:round}.desk .handle{fill:var(--ink)}.desk :is(.ruler,.pencil,.paper){filter:drop-shadow(0 6px 6px #0000001f)}.not-found h1{font-size:var(--t-2xl);margin:clamp(32px,4vw,56px) 0 16px}.nf-links{flex-wrap:wrap;gap:8px 28px;margin-top:24px;display:flex}@media (width<=860px){.hero-text{grid-template-columns:minmax(0,1fr)}.montage canvas{aspect-ratio:4/5}.montage-bar{grid-template-columns:minmax(0,1fr) auto}.montage-title,.montage-note{grid-column:1/-1}}@media (width<=760px){.machine-badge,.machine-slot{display:none}.machine-panel{padding-inline:0}.machine-controls{flex:1;gap:12px}.fader{flex:1}.fader input{width:100%}.facts dl{grid-template-columns:1fr;gap:20px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}@media print{.header,.footer,.skip,.progress,.toc,.about-links a[download],.hero,.interlude{display:none!important}body{color:#000;background:#fff;font-size:11pt}.cv section{break-inside:avoid}.portrait img{max-width:160px}.prose a:after{content:" (" attr(href) ")";color:#555;font-size:.85em}}
