@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/91bd2e40df15814e-s.19s5evoqhirey.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/a63431c4ac64ea8b-s.386o_ri1vb0yv.woff2)format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/8b4ed0a90d903ab5-s.44dak0sams9f0.woff2)format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../media/c47649aa31f9e140-s.p.3lxpqujs87tck.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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/91bd2e40df15814e-s.19s5evoqhirey.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a63431c4ac64ea8b-s.386o_ri1vb0yv.woff2)format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/8b4ed0a90d903ab5-s.44dak0sams9f0.woff2)format("woff2");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:Hanken Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../media/c47649aa31f9e140-s.p.3lxpqujs87tck.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:Hanken Grotesk Fallback;src:local(Arial);ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.0%;size-adjust:100.94%}.hanken_grotesk_d2f8631e-module__ogsVUW__className{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.hanken_grotesk_d2f8631e-module__ogsVUW__variable{--font-hanken:"Hanken Grotesk", "Hanken Grotesk Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.29yke99gs9qpn.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.1i-sca43-qwng.woff2)format("woff2");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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.0oace-s_gkfks.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_ad0edeba-module__MIkpna__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_ad0edeba-module__MIkpna__variable{--font-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
@property --accent{syntax:"<color>";inherits:true;initial-value:#006d6d}@property --vt-r-now{syntax:"<length>";inherits:false;initial-value:0}:root{--paper:#f5f3ec;--raise:#faf8f1;--sunk:#f0ede2;--ink:#1d1e1a;--ink-2:#42433c;--ink-3:#68695f;--rule-3:#e6e1d2;--rule:#cfc9b6;--rule-2:#98937f;--dither-dot:#1d1e1a0e;--art-dot:#1d1e1a38;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--paper:#131417;--raise:#191b1f;--sunk:#15171b;--ink:#e8e9e4;--ink-2:#b6b9bd;--ink-3:#8e9299;--rule-3:#23262b;--rule:#2e3238;--rule-2:#4c525c;--dither-dot:#e8e9e40f;--art-dot:#e8e9e43d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--accent:#006c6c}@supports (color:lab(0% 0 0)){:root{--accent:lab(40.6296% -29.4569 -8.81502)}}[data-theme=dark]{--accent:#6bc3bd}@supports (color:lab(0% 0 0)){[data-theme=dark]{--accent:lab(73.1283% -28.5766 -5.76215)}}:root{--accent-soft:color-mix(in oklab, var(--accent) 10%, transparent);--accent-line:color-mix(in oklab, var(--accent) 45%, transparent);transition:--accent var(--dur-theme) var(--ease-out)}:root[data-repapering]{transition:none}:root{--f-sans:var(--font-hanken), "Helvetica Neue", Helvetica, Arial, sans-serif;--f-mono:var(--font-plex-mono), ui-monospace, Menlo, monospace;--press:.94;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--s-10:144px;--r-rule:0;--r-chip:2px;--r-point:50%;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-hover:cubic-bezier(.33, 0, .2, 1);--ease-iris:cubic-bezier(.22, .61, .36, 1);--vt-feather:160px;--dur-hover-in:.11s;--dur-hover-out:.28s;--dur-fast:.14s;--dur-base:.26s;--dur-theme:.34s;--dur-iris:.46s;--w-sheet:1040px;--w-essay:760px;--page-top:36px;--sheet-margin:24px;--gutter:32px;--wrap-pad:64px;--hd-h:63px;--ptray-h:46px;--z-dither:0;--z-raise:1;--z-header:70;--z-progress:75;--z-phonebar:80;--z-ask:85;--z-lightbox:90;--z-hints:95;--z-sheet:96;--z-skiplink:100;interpolate-size:allow-keywords;--hex-url:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15.59' height='27'%3E%3Cpath d='M0 4.5 L7.795 0 L15.59 4.5 M0 4.5 V13.5 M0 13.5 L7.795 18 L15.59 13.5 M7.795 18 V27' fill='none' stroke='%23b5ae97' stroke-width='1'/%3E%3C/svg%3E")}[data-theme=dark]{--hex-url:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='15.59' height='27'%3E%3Cpath d='M0 4.5 L7.795 0 L15.59 4.5 M0 4.5 V13.5 M0 13.5 L7.795 18 L15.59 13.5 M7.795 18 V27' fill='none' stroke='%23414854' stroke-width='1'/%3E%3C/svg%3E")}
*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;tab-size:4;-webkit-tap-highlight-color:transparent;background:var(--paper);overflow-x:clip}:where([id]){scroll-margin-top:calc(var(--hd-h) + var(--s-4))}body{background:var(--paper);color:var(--ink);font-family:var(--f-sans);font-synthesis-weight:none;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:1.55}h1,h2,h3,h4,h5,h6{font-size:inherit;text-wrap:balance;font-weight:500;line-height:1.2}ul,ol{list-style:none}a{color:inherit;text-decoration:none}a:where(:not([class])){color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line);text-underline-offset:3px;transition:text-decoration-color var(--dur-hover-out) var(--ease-hover)}a:where(:not([class])):hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);transition-duration:var(--dur-hover-in)}button{font:inherit;color:inherit;cursor:pointer;opacity:1;background:0 0;border:0}input,textarea,select{font:inherit;color:inherit;opacity:1}img,svg,video,canvas{max-width:100%;display:block}img,video{height:auto}::selection{background:var(--accent-soft)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-chip)}hr{border:0;border-top:1px solid var(--rule);height:0}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.dim{color:var(--ink-3)}.accent{color:var(--accent)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--s-2);left:var(--s-2);z-index:var(--z-skiplink);padding:var(--s-2) var(--s-3);background:var(--raise);border:1px solid var(--rule-2);border-radius:var(--r-chip);font-family:var(--f-mono);transition:transform var(--dur-fast) var(--ease-out);font-size:12px;position:fixed;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.sheet{max-width:calc(var(--w-sheet) + var(--sheet-margin) * 2);padding-inline:var(--sheet-margin);flex-direction:column;min-height:100dvh;margin-inline:auto;display:flex;position:relative}.wrap{border-left:1px solid var(--rule);border-right:1px solid var(--rule);padding-inline:var(--wrap-pad);flex-direction:column;flex:1;display:flex}main{padding-top:var(--page-top);padding-bottom:var(--s-9);flex:1}.dither{z-index:var(--z-dither);pointer-events:none;position:fixed;inset:0}:root.vt-iris .dither{display:none}.doc-head{margin-bottom:var(--s-7)}.doc-head h1{letter-spacing:-.015em;font-size:clamp(30px,23px + 1.5vw,42px);line-height:1.08}.doc-lede{margin-top:var(--s-3);color:var(--ink-2);font-size:1.19rem;line-height:1.46}.meta{font-family:var(--f-mono);font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--ink-3);font-size:11.5px}.meta a{color:var(--accent)}.meta a:hover{text-underline-offset:3px;text-decoration:underline}.sk{height:1em;display:block}.sk,.sk-mask :is(h1,h2,h3,p,li,b,dt,dd,.row-sub,.cv-role),.sk-mask :is(.chip,.socials a){background-image:linear-gradient(90deg, var(--rule-3) 0%, var(--rule-2) 50%, var(--rule-3) 100%);animation:sk-sweep 1.5s var(--ease-out) infinite;background-size:220% 100%}.sk-mask :is(a,span,time,strong,em,code,button):not(:has(*),.sk){background-image:linear-gradient(90deg, var(--rule-3) 0%, var(--rule-2) 50%, var(--rule-3) 100%);animation:sk-sweep 1.5s var(--ease-out) infinite;background-size:220% 100%}@keyframes sk-sweep{0%{background-position:110% 0}to{background-position:-110% 0}}.sk-mask *{pointer-events:none;color:#0000!important;text-decoration-color:#0000!important}.sk-mask :is(h1,h2,h3,p,li,b,dt,dd,.row-sub,.cv-role){width:fit-content}.sk-mask :is(a,span,time,strong,em,code,button):not(:has(*),.sk){width:fit-content}.sk-mask :is(h1,h2,h3,p,li,b,dt,dd,.row-sub,.cv-role){-webkit-mask-image:linear-gradient(#0000 calc(50% - .42em),#000 0 calc(50% + .42em),#0000 0);mask-image:linear-gradient(#0000 calc(50% - .42em),#000 0 calc(50% + .42em),#0000 0);-webkit-mask-size:100% 1lh;-webkit-mask-size:100% 1lh;mask-size:100% 1lh;-webkit-mask-clip:content-box;mask-clip:content-box;-webkit-mask-origin:content-box;mask-origin:content-box}.sk-mask :is(h1,h2,h3,p,li,b,dt,dd,.row-sub,.cv-role) :is(a,span,time,strong,em,code):not(.sk){background:0 0;animation:none}.sk-mask :is(.chip,.socials a){border-color:#0000}.sk-mask .fold:not([data-sec]):before{content:"";top:0;left:var(--wrap-pad);border-inline:var(--s-3) solid var(--paper);background:var(--rule-3) padding-box;width:15ch;height:11px;font-size:11px;position:absolute;translate:0 -50%}.sk-mask svg,.sk-mask img,.sk-mask canvas{visibility:hidden}.sk-mask :is(.fig,.career-fig) svg,.sk-mask .portrait{visibility:visible;background:var(--rule-3)}.sk-mask :is(.fig,.career-fig) svg *{visibility:hidden}.sk-lines{gap:var(--s-2);max-width:68ch;display:grid}.sk-lines .sk:nth-child(2){width:88%}.sk-lines .sk:last-child{width:54%}@media (prefers-reduced-motion:reduce){.sk{background-image:none;background-color:var(--rule-3);animation:none}}.panel{position:relative}.p-fig{font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:var(--s-2);font-size:11px;display:block}.chip{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border:1px solid var(--rule-2);border-radius:var(--r-chip);background:var(--raise);font-family:var(--f-mono);color:var(--ink-2);transition:border-color var(--dur-hover-out) var(--ease-hover), color var(--dur-hover-out) var(--ease-hover), background-color var(--dur-hover-out) var(--ease-hover), scale var(--dur-hover-out) var(--ease-hover);font-size:12px;display:inline-flex}.chip:hover{border-color:var(--accent);color:var(--accent);background-color:var(--accent-soft);transition-duration:var(--dur-hover-in)}.chip:active{scale:var(--press);transition-duration:0s}.chip[data-copied]{border-color:var(--accent);color:var(--accent)}.chip[data-copied] svg{animation:tick var(--dur-base) var(--ease-out)}@keyframes tick{0%{opacity:0;scale:.6}}.more{align-items:center;gap:var(--s-2);margin-top:var(--s-4);font-family:var(--f-mono);letter-spacing:.04em;color:var(--accent);font-size:12px;display:inline-flex;position:relative}.more:before{content:"";position:absolute;inset:-3px 0}.more svg{transition:translate var(--dur-hover-out) var(--ease-hover)}.more:hover svg{transition-duration:var(--dur-hover-in);translate:3px}@keyframes vt-iris-open{0%{--vt-r-now:0px}to{--vt-r-now:var(--vt-r,100vmax)}}:root.vt-iris::view-transition-group(root){animation:none}:root.vt-iris::view-transition-image-pair(root){animation:none}:root.vt-iris::view-transition-old(root){opacity:1;animation:none;display:block}:root.vt-iris::view-transition-new(root){--iris-solid:max(0px, calc(var(--vt-r-now,0px) - var(--vt-feather)));--iris-mid:max(0px, calc(var(--vt-r-now,0px) - 48px));-webkit-mask-image:radial-gradient(circle at var(--vt-x,50%) var(--vt-y,50%), #000 0, #000 var(--iris-solid), #00000073 var(--iris-mid), transparent var(--vt-r-now,0px));-webkit-mask-image:radial-gradient(circle at var(--vt-x,50%) var(--vt-y,50%), #000 0, #000 var(--iris-solid), #00000073 var(--iris-mid), transparent var(--vt-r-now,0px));mask-image:radial-gradient(circle at var(--vt-x,50%) var(--vt-y,50%), #000 0, #000 var(--iris-solid), #00000073 var(--iris-mid), transparent var(--vt-r-now,0px));animation:vt-iris-open var(--dur-iris) var(--ease-iris) both;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}:root.vt-iris,:root.vt-iris body,:root.vt-iris body :where(*){transition:none!important}::view-transition-group(root){animation-duration:0s}::view-transition-group(.vt-route){animation-duration:0s}::view-transition-old(.vt-route){display:none}::view-transition-new(.vt-route){animation:route-fade var(--dur-base) var(--ease-out) both}@keyframes route-fade{0%{opacity:0;translate:0 6px}to{opacity:1;translate:0}}.vt-arrive{animation:route-fade var(--dur-base) var(--ease-out) both}.hd{view-transition-name:hd}.ruler-prog{view-transition-name:prog}.ask-chip{view-transition-name:ask-chip}.ask{view-transition-name:ask}::view-transition-group(hd){z-index:var(--z-header);animation-duration:0s}::view-transition-group(prog){z-index:var(--z-header);animation-duration:0s}::view-transition-group(ask-chip){z-index:var(--z-header);animation-duration:0s}::view-transition-group(ask){z-index:var(--z-header);animation-duration:0s}:root.vt-iris :is(.hd,.ruler-prog,.ask-chip,.ask){view-transition-name:none}@media (max-width:1100px){:root{--wrap-pad:var(--s-6)}}@media (max-width:640px){::view-transition-new(.vt-route){animation-duration:0s}:root{--wrap-pad:var(--s-4)}.sheet{padding-inline:var(--s-3)}main{padding-bottom:var(--s-10)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}::view-transition-old(root){animation-duration:1ms!important;animation-delay:0s!important}::view-transition-new(root){animation-duration:1ms!important;animation-delay:0s!important}::view-transition-old(.vt-route){animation-duration:1ms!important;animation-delay:0s!important}::view-transition-new(.vt-route){animation-duration:1ms!important;animation-delay:0s!important}}
.hd{z-index:var(--z-header);height:var(--hd-h);--hd-pad:var(--wrap-pad);margin-inline:calc(var(--hd-pad) * -1);pointer-events:none;position:sticky;top:0}.hd>*{pointer-events:auto}.hd-strip{padding:var(--s-4) var(--hd-pad);background:var(--paper);position:relative}.hd-row{align-items:center;gap:var(--s-4);flex-wrap:nowrap;display:flex}.hd-row>*{flex:none}.hd-brand{align-items:center;gap:var(--s-3);margin-right:auto;display:flex}.hd-mark{width:30px;height:30px}.hd-name{letter-spacing:-.01em;white-space:nowrap;transition:opacity var(--dur-base) var(--ease-out);font-size:20px;font-weight:500}.hd-nav{align-items:center;gap:var(--s-4);display:flex}.hd-nav a{color:var(--ink-2);white-space:nowrap;transition:color var(--dur-hover-out) var(--ease-hover);margin-block:-5px;padding-block:5px;font-size:14px;text-decoration:none;position:relative}.hd-nav a:hover,.hd-nav a[aria-current=page]{color:var(--accent);transition-duration:var(--dur-hover-in)}.hd-nav a:after{content:"";inset-inline:0;background:var(--accent);transform-origin:0;height:1px;transition:scale var(--dur-hover-out) var(--ease-hover);position:absolute;bottom:0;scale:0 1}.hd-nav a:hover:after,.hd-nav a[aria-current=page]:after{transition-duration:var(--dur-hover-in);scale:1}.hd-ctls{align-items:center;gap:var(--s-2);display:flex}.ctl{border:1px solid var(--rule);border-radius:var(--r-chip);width:30px;height:30px;color:var(--ink-2);transition:border-color var(--dur-hover-out) var(--ease-hover), color var(--dur-hover-out) var(--ease-hover), background-color var(--dur-hover-out) var(--ease-hover), scale var(--dur-hover-out) var(--ease-hover);place-items:center;display:grid}.ctl:hover{border-color:var(--accent);color:var(--accent);background-color:var(--accent-soft);transition-duration:var(--dur-hover-in)}.ctl:active{scale:var(--press);transition-duration:0s}.ctl svg{width:15px;height:15px}.hd-rule{inset-inline:0;pointer-events:none;align-items:center;display:flex;position:absolute;bottom:0;translate:0 50%}.hd-title,.hd-year{padding-inline:var(--s-3);background:var(--paper);border-radius:0 0 8px 8px}.hd-title{font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;max-width:30ch;font-size:11px;overflow:hidden}.hd-hair{background:var(--rule);flex:12px;height:1px}.hd-cap{width:var(--hd-pad);flex:none}.hd-year{font-family:var(--f-mono);color:var(--ink-3);white-space:nowrap;font-size:11px}.hd[data-fit~=compact] .hd-row{gap:var(--s-3)}.hd[data-fit~=compact] .hd-name{font-size:18px}.hd[data-fit~=compact] .hd-mark{width:26px;height:26px}.hd[data-fit~=compact] .hd-year,.hd[data-fit~=resume] .hd-nav a[data-fit-drop=resume],.hd[data-fit~=name] .hd-name{display:none}.ptray{z-index:var(--z-phonebar);left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + var(--s-3));height:var(--ptray-h);width:max-content;max-width:calc(100vw - var(--s-6));background:var(--raise);border:1px solid var(--rule-2);border-radius:var(--r-chip);will-change:transform;transition:opacity var(--dur-base) var(--ease-out), translate var(--dur-base) var(--ease-out);align-items:center;gap:7px;padding-inline:15px;display:none;position:fixed;translate:-50%}.ptray[data-hidden=true]{opacity:0;pointer-events:none;translate:-50% 12px}.ptray .hd-ctls{gap:7px}.pt-mark{width:30px;height:30px;color:var(--ink-2);place-items:center;display:grid;position:relative}.pt-mark[aria-current=page]{color:var(--accent)}.pt-mark:after{content:"";background:var(--rule-2);height:1px;position:absolute;bottom:-2px;left:4px;right:4px}.pt-mark[aria-current=page]:after{background:var(--accent)}.pt-nav{justify-content:center;gap:var(--s-3);flex:1;display:flex}.pt-nav a{white-space:nowrap;color:var(--ink-2);margin-block:-8px;padding:8px 0;font-size:13px;text-decoration:none}.pt-nav a[aria-current=page]{color:var(--accent)}@media (max-width:640px){.hd-nav,.hd .hd-ctls{display:none}.hd[data-phone=false] .hd-ctls,.ptray{display:flex}.hd{--hd-pad:var(--s-4)}}.ruler-prog{z-index:var(--z-progress);background:var(--accent);transform-origin:0;height:2px;position:fixed;inset:0 0 auto;scale:0 1}@supports (animation-timeline:scroll()){.ruler-prog{will-change:transform;animation:linear both ruler-progress;animation-timeline:scroll(root)}}@keyframes ruler-progress{0%{scale:0 1}to{scale:1}}.tb-wrap{margin-inline:calc(var(--wrap-pad) * -1);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.tb{border-bottom:1px solid var(--rule-3);grid-template-columns:repeat(2,1fr);display:grid}.tb-cell{padding:var(--s-3) var(--s-4);border-left:1px solid var(--rule-3);min-height:56px}.tb-cell:first-child{padding-left:var(--wrap-pad);border-left:0}.tb-k{font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:11px;display:block}.tb-v{color:var(--ink-2);margin-top:3px;font-size:13px;display:block}.tb-v.mono{font-size:12.5px}.tb-sk{width:11ch;height:13px;margin-top:6px}.tb-foot{justify-content:space-between;align-items:center;gap:var(--s-4);padding:var(--s-4) var(--wrap-pad);flex-wrap:wrap;display:flex}@media (max-width:640px){.tb-foot,.tb-foot .intro-actions{justify-content:center}}.tb-links{align-items:center;gap:var(--s-4);font-family:var(--f-mono);letter-spacing:.04em;color:var(--ink-3);font-size:11.5px;display:flex}.tb-links a{color:inherit;transition:color var(--dur-hover-out) var(--ease-hover);margin-block:-5px;padding-block:5px;text-decoration:none;position:relative}.tb-links a:after{content:"";inset-inline:0;background:var(--accent);transform-origin:0;height:1px;transition:scale var(--dur-hover-out) var(--ease-hover);position:absolute;bottom:0;scale:0 1}.tb-links a:hover{color:var(--accent);transition-duration:var(--dur-hover-in)}.tb-links a:hover:after{transition-duration:var(--dur-hover-in);scale:1}.land{position:relative}.gutter{width:calc((100% - var(--w-sheet)) / 2);display:none;position:absolute;inset-block:0}.gutter[data-side=left]{left:0}.gutter[data-side=right]{right:0}.gutter canvas{width:100%;height:100dvh;position:sticky;top:0}@media (min-width:1200px){.gutter{display:block}}.horizon{height:clamp(240px,55vh,560px);position:relative;overflow:hidden}.horizon canvas{width:100%;height:100%;display:block}.horizon-mark{pointer-events:none;width:44px;height:44px;position:absolute;translate:-50% -88%}.horizon-mark svg{width:100%;height:100%}.socials{align-items:center;gap:var(--s-1);display:flex}.socials a{width:30px;height:30px;color:var(--ink-3);border-radius:var(--r-chip);transition:color var(--dur-hover-out) var(--ease-hover), background-color var(--dur-hover-out) var(--ease-hover), scale var(--dur-hover-out) var(--ease-hover);place-items:center;display:grid}.socials a:hover{color:var(--accent);background-color:var(--accent-soft);transition-duration:var(--dur-hover-in)}.socials a:active{scale:var(--press);transition-duration:0s}.socials svg{width:16px;height:16px}.ask-chip,.ask{z-index:var(--z-ask);right:var(--s-5);bottom:var(--s-5);position:fixed}.ask{width:min(400px, calc(100vw - var(--s-5) * 2));height:min(600px, calc(100dvh - var(--s-5) * 2));background:var(--raise);border:1px solid var(--rule-2);transition:opacity var(--dur-base) var(--ease-out), translate var(--dur-base) var(--ease-out), display var(--dur-base) allow-discrete;flex-direction:column;display:flex}@starting-style{.ask{opacity:0;translate:0 6px}}.ask[hidden]{opacity:0;transition-duration:var(--dur-fast);display:none;translate:0 6px}.ask-head{align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-3) var(--s-3) var(--s-4);border-bottom:1px solid var(--rule);display:flex}.ask-head .p-fig{margin:0 auto 0 0}.ask-clear{font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);transition:color var(--dur-hover-out) var(--ease-hover);padding-block:5px;font-size:11px}.ask-clear:hover{color:var(--accent);transition-duration:var(--dur-hover-in)}.ask-body{overscroll-behavior:contain;padding:var(--s-4);flex:1;overflow-y:auto;container-type:size}.ask-lede{color:var(--ink-2);font-size:15px;line-height:1.6}.ask-seeds{gap:var(--s-2);margin-top:var(--s-4);flex-wrap:wrap;display:flex}.ask-seeds .chip{text-align:left}.ask-turn{scroll-margin-top:var(--s-4)}.ask-turn:last-child{min-height:100cqh}.ask-turn+.ask-turn{margin-top:var(--s-5);padding-top:var(--s-5);border-top:1px solid var(--rule-3)}.ask-q{padding-left:var(--s-3);border-left:1.5px solid var(--accent-line);color:var(--ink);overflow-wrap:anywhere;font-size:15px;font-weight:500}.ask-a{margin-top:var(--s-3);color:var(--ink-2);overflow-wrap:anywhere;font-size:15px;line-height:1.6}.ask-a>*+*{margin-top:var(--s-3)}.ask-a ul{gap:var(--s-2);display:grid}.ask-a li{padding-left:var(--s-5);position:relative}.ask-a li:before{content:"";background:var(--accent-line);width:5px;height:5px;position:absolute;top:calc(.5lh - 2.5px);left:2px;rotate:45deg}.ask-a strong{color:var(--ink);font-weight:500}.ask-a code{font-family:var(--f-mono);background:var(--sunk);border:1px solid var(--rule-3);border-radius:var(--r-chip);padding:1px 5px;font-size:.88em}.ask-wait{font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);font-size:11px}.ask-dock{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3) var(--s-2) var(--s-4);border-top:1px solid var(--rule);transition:border-color var(--dur-hover-out) var(--ease-hover);display:flex}.ask-dock:focus-within{border-top-color:var(--accent);transition-duration:var(--dur-hover-in)}.ask-dock input{min-width:0;padding-block:var(--s-2);background:0 0;border:0;flex:1;font-size:16px}.ask-dock input:focus-visible{outline:none}.ask-dock input::placeholder{color:var(--ink-3)}.ask-send{color:var(--accent);border-color:var(--accent-line);flex:none}.ask-send:disabled{color:var(--ink-3);border-color:var(--rule);pointer-events:none}@media (max-width:640px){.ask-chip{right:var(--s-3);bottom:calc(env(safe-area-inset-bottom,0px) + var(--s-3) + var(--ptray-h) + var(--s-2))}.ask{inset:auto var(--s-3) calc(env(safe-area-inset-bottom,0px) + var(--s-3));width:auto;height:calc(100dvh - var(--s-3) * 2 - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))}}
.fold{margin-inline:calc(var(--wrap-pad) * -1);padding:var(--s-8) var(--wrap-pad);border-top:1px solid var(--rule);position:relative}.fold:last-child{padding-bottom:0}.fold[data-sec]:before{content:attr(data-sec);top:0;left:var(--wrap-pad);padding-inline:var(--s-3);background:var(--paper);font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);max-width:calc(100% - var(--wrap-pad) * 2);text-overflow:ellipsis;white-space:nowrap;font-size:11px;position:absolute;overflow:hidden;translate:0 -50%}.fold[data-count]:before{content:attr(data-sec) " · " attr(data-count)}.fold>.more{margin-top:var(--s-6)}.subject{padding-bottom:var(--s-8)}@media (max-width:640px){.fold{padding-block:var(--s-7)}.subject{padding-bottom:var(--s-7)}}.intro h1{letter-spacing:-.02em;font-size:clamp(30px,23px + 1.5vw,42px);line-height:1.08}.intro-lede{margin-top:var(--s-4);color:var(--ink-2);font-size:1.19rem;line-height:1.46}.intro p+p{margin-top:var(--s-3)}.intro p{color:var(--ink-2)}.intro strong{color:var(--ink);font-weight:500}.intro-ask{padding-left:var(--s-3);border-left:1.5px solid var(--accent-line);color:var(--ink-2);margin-top:var(--s-4)!important}.intro-actions{align-items:center;gap:var(--s-4);margin-top:var(--s-5);flex-wrap:wrap;display:flex}.portrait{aspect-ratio:4/5;position:relative}@media (min-width:901px){.subject{column-gap:var(--s-7);grid-template-columns:minmax(0,1fr) clamp(200px,22vw,248px);align-items:start;display:grid}}@media (max-width:900px){.subject .portrait{display:none}}.portrait canvas{cursor:crosshair;width:100%;height:100%}.career{position:relative}.career-fig{overscroll-behavior-x:contain;overflow-x:auto}.career svg{width:100%;min-width:740px;height:auto;overflow:visible}.career text{font-family:var(--f-mono);letter-spacing:.06em;fill:var(--ink-3);font-size:11px}.career .axis{stroke:var(--rule-2);stroke-width:1px;fill:none}.career .guide{stroke:var(--rule-3);stroke-width:1px;stroke-dasharray:2 4;fill:none}.career .org{font-family:var(--f-sans);letter-spacing:0;fill:var(--ink-2);transition:fill var(--dur-hover-out) var(--ease-hover);font-size:13px}.career .band[data-active=true] .org{fill:var(--ink);transition-duration:var(--dur-hover-in)}.career .bar{stroke:var(--rule-2);stroke-width:2px;fill:none;transition:stroke var(--dur-hover-out) var(--ease-hover)}.career .pt{fill:var(--paper);stroke:var(--rule-2);stroke-width:1.5px;transition:fill var(--dur-hover-out) var(--ease-hover), stroke var(--dur-hover-out) var(--ease-hover)}.career .arrow{fill:var(--rule-2);transition:fill var(--dur-hover-out) var(--ease-hover)}.career .part{text-transform:uppercase;transition:fill var(--dur-hover-out) var(--ease-hover)}.career .station{cursor:pointer}.career .station:focus-visible{outline:none}.career .station[data-active=true] .bar,.career .station:hover .bar{stroke:var(--accent);transition-duration:var(--dur-hover-in)}.career .station[data-active=true] .pt,.career .station:hover .pt{fill:var(--accent);stroke:var(--accent);transition-duration:var(--dur-hover-in)}.career .station[data-active=true] .arrow,.career .station:hover .arrow,.career .station[data-active=true] .part,.career .station:hover .part{fill:var(--accent);transition-duration:var(--dur-hover-in)}.tl-cap{margin-top:var(--s-5);overflow:hidden}.cap-in{animation:cap-fade var(--dur-base) var(--ease-out)}.cap-head{justify-content:space-between;align-items:baseline;column-gap:var(--s-4);margin-bottom:var(--s-3);flex-wrap:wrap;display:flex}.cap-head b{font-weight:500}.cap-period{font-family:var(--f-mono);font-variant-numeric:tabular-nums;color:var(--ink-3);font-size:12px}.cap-in ul{gap:var(--s-2);list-style:none;display:grid}.cap-in li{padding-left:var(--s-5);color:var(--ink-2);font-size:15px;line-height:1.6;position:relative}.cap-in li:before{content:"";background:var(--accent-line);width:5px;height:5px;position:absolute;top:calc(.5lh - 2.5px);left:2px;rotate:45deg}@keyframes cap-fade{0%{opacity:0}to{opacity:1}}.work-list{column-gap:var(--s-5);border-bottom:1px solid var(--rule-3);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid}.work-item{padding:var(--s-3) 0 var(--s-4);text-align:left;cursor:pointer;background:0 0;display:block;position:relative}.work-item:before{content:"";background:var(--accent);transform-origin:0;height:2px;transition:scale var(--dur-hover-out) var(--ease-hover);position:absolute;bottom:-1px;left:0;right:0;scale:0 1}.work-item[aria-selected=true]:before{transition-duration:var(--dur-hover-in);scale:1}.work-title{color:var(--ink-2);transition:color var(--dur-hover-out) var(--ease-hover);font-size:15px;font-weight:500;display:block}.work-item:hover .work-title,.work-item[aria-selected=true] .work-title{color:var(--ink);transition-duration:var(--dur-hover-in)}.work-meta{font-family:var(--f-mono);color:var(--ink-3);margin-top:2px;font-size:12px;display:block}.work-panels{margin-top:var(--s-6);grid-template-columns:minmax(0,1fr);display:grid}.work-panel{min-width:0;animation:cap-fade var(--dur-base) var(--ease-out);grid-area:1/1}.work-panel[data-hidden]{visibility:hidden;animation:none}.mech-body{color:var(--ink-2);font-size:15px;line-height:1.6}.work-site{margin-top:var(--s-4);font-family:var(--f-mono);color:var(--accent);align-items:center;gap:4px;font-size:12px;display:inline-flex;position:relative}.mech-stack{margin-top:var(--s-2);font-family:var(--f-mono);color:var(--ink-3);font-size:12px}@media (min-width:980px){.work-panel{column-gap:var(--s-7);grid-template-rows:auto auto 1fr;grid-template-columns:minmax(0,4fr) minmax(0,7fr);display:grid}.work-text{padding-bottom:var(--s-5);grid-area:1/1/3/2}.work-panel>.fig{display:contents}.work-panel .p-fig{grid-area:1/2}.work-panel .fig-svg{grid-area:2/2/4/3}.work-panel .xp-note{grid-area:3/1}}.fig{margin-top:var(--s-5)}.fig svg{width:100%;height:auto;overflow:visible}.xp .slab .lift{fill:var(--raise);stroke:var(--rule-2);stroke-width:1px;transition:fill var(--dur-hover-out) var(--ease-hover), stroke var(--dur-hover-out) var(--ease-hover)}.xp .slab .side{fill:var(--sunk);stroke:var(--rule-2);stroke-width:1px}.xp .slab{cursor:pointer}.xp .slab .hit{fill:#0000}.xp .slab[data-active=true] .lift{fill:color-mix(in oklab, var(--accent) 10%, var(--raise));stroke:var(--accent);transition-duration:var(--dur-hover-in)}.xp .slab .glyph{fill:none;stroke:var(--ink-3);stroke-width:1.1px;stroke-linecap:round;transition:stroke var(--dur-hover-out) var(--ease-hover)}.xp .slab .glyph.solid{fill:var(--ink-3);stroke:none}.xp .slab[data-active=true] .glyph{stroke:var(--accent);transition-duration:var(--dur-hover-in)}.xp .slab[data-active=true] .glyph.solid{fill:var(--accent);stroke:none}.xp .leader{stroke:var(--rule);stroke-width:1px;fill:none}.xp .dot{fill:var(--rule-2)}.xp text{font-family:var(--f-mono);letter-spacing:.04em;fill:var(--ink-3);font-size:11.5px}.xp .slab[data-active=true] :is(text,.dot){fill:var(--accent)}.xp .slab[data-active=true] .leader{stroke:var(--accent-line)}.xp-note{padding-top:var(--s-3);border-top:1px solid var(--rule-3);color:var(--ink-2);margin-top:auto;font-size:14px;display:grid}.xp-note>*{grid-area:1/1}.xp-note>:not(.xp-ghost){animation:cap-fade var(--dur-base) var(--ease-out)}.xp-ghost{visibility:hidden;pointer-events:none}.xp-note b{color:var(--ink);margin-bottom:3px;font-weight:500;display:block}.wd text{font-family:var(--f-mono);letter-spacing:.02em;text-anchor:middle;fill:var(--ink-2);font-size:12px}.wd text.sub{fill:var(--ink-3);font-size:11px}.wd .tag{fill:var(--ink-3);stroke:var(--paper);stroke-width:6px;stroke-linejoin:round;paint-order:stroke;font-size:11px}.wd .box{fill:var(--raise);stroke:var(--rule-2);stroke-width:1px;transition:fill var(--dur-hover-out) var(--ease-hover), stroke var(--dur-hover-out) var(--ease-hover)}.wd .lid{stroke:var(--rule-2);transition:stroke var(--dur-hover-out) var(--ease-hover)}.wd .off .box{fill:none;stroke-dasharray:4 3}.wd .off text{fill:var(--ink-3);text-decoration:line-through}.wd .part{cursor:pointer}.wd .part[data-active=true] :is(.box,.lid){stroke:var(--accent);transition-duration:var(--dur-hover-in)}.wd .part[data-active=true] .box{fill:var(--accent-soft)}.wd .part[data-active=true] text{fill:var(--accent)}.wd .flow{stroke:var(--rule-2);stroke-width:1px;fill:none}.wd .flow.live{stroke:var(--accent)}.wd .flow.back{stroke-dasharray:4 3}.wd .tip path,.wd .join{fill:var(--rule-2)}.wd .tip.live path{fill:var(--accent)}.rows{position:relative}.hoverbar{left:calc(var(--s-3) * -1);right:calc(var(--s-3) * -1);background-color:var(--accent-soft);opacity:0;pointer-events:none;will-change:transform;height:0;transition:transform var(--dur-base) var(--ease-out), height var(--dur-base) var(--ease-out), opacity var(--dur-hover-in) var(--ease-hover);position:absolute;top:0}.row{gap:var(--s-5);padding:var(--s-4) 0;border-bottom:1px solid var(--rule-3);grid-template-columns:11ch minmax(0,1fr) auto;align-items:baseline;display:grid;position:relative}.row:last-child{border-bottom:0}.row-lead,.row-trail{font-family:var(--f-mono);font-variant-numeric:tabular-nums;color:var(--ink-3);font-size:12px}.row-trail{align-items:baseline;gap:var(--s-2);text-align:right;display:inline-flex}.row-main{color:var(--ink);text-wrap:pretty;font-size:15px}.row-main>a:first-child:after{content:"";position:absolute;inset:0}.row-main>a:first-child{color:inherit;transition:color var(--dur-hover-out) var(--ease-hover);text-decoration:none}.row-main>a:first-child:hover{color:var(--accent);transition-duration:var(--dur-hover-in)}.row-sub{max-width:72ch;color:var(--ink-3);margin-top:3px;font-size:13px;line-height:1.5;display:block}.part-live{z-index:var(--z-raise);margin-left:var(--s-2);font-family:var(--f-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);vertical-align:1px;transition:opacity var(--dur-hover-out) var(--ease-hover);opacity:.8;align-items:center;gap:3px;font-size:11px;display:inline-flex;position:relative}.part-live svg{width:10px;height:10px}.part-live:hover{opacity:1;transition-duration:var(--dur-hover-in)}.part-live:before,.work-site:before{content:"";position:absolute;inset:-4px -2px}.part-stars{align-items:center;gap:4px;display:inline-flex}.rev-tags{align-items:center;gap:var(--s-2);font-family:var(--f-mono);font-size:12px;display:flex}.rev-chip{padding:0 var(--s-1);border:1px solid var(--rule);border-radius:var(--r-chip);color:var(--ink-2)}@media (max-width:640px){.row{row-gap:var(--s-1);column-gap:var(--s-4);grid-template-columns:auto minmax(0,1fr)}.row-main{order:-1;grid-column:1/-1}}.panel:after{content:"";pointer-events:none;background-image:var(--hex-url);opacity:0;transition:opacity var(--dur-base) var(--ease-out);-webkit-mask-image:radial-gradient(120px circle at var(--mx,-999px) var(--my,-999px), #000 0%, transparent 70%);-webkit-mask-image:radial-gradient(120px circle at var(--mx,-999px) var(--my,-999px), #000 0%, transparent 70%);mask-image:radial-gradient(120px circle at var(--mx,-999px) var(--my,-999px), #000 0%, transparent 70%);position:absolute;inset:0}.panel[data-hover=true]:after{opacity:.5}@media (max-width:979px){.work{flex-direction:column;align-items:stretch;display:flex}.work-list,.work-panels{display:contents}.work-item{padding:var(--s-4) 0;border-top:1px solid var(--rule-3)}.work-item:first-child{border-top:0}.work-item:before{top:0;bottom:0;left:calc(var(--s-3) * -1);transform-origin:top;width:2px;height:auto;right:auto;scale:1 0}.work-panel{padding-bottom:var(--s-5)}.work-panel[data-hidden]{display:none}.work-text{margin-bottom:var(--s-2)}}@media (max-width:640px){.fig-svg{overscroll-behavior-x:contain;overflow-x:auto}.fig-svg svg{min-width:520px}}
.essay{max-width:var(--w-essay);margin-inline:auto}.essay-head{margin-bottom:var(--s-7)}.essay-head h1{letter-spacing:-.02em;font-size:clamp(30px,23px + 1.5vw,42px);line-height:1.08}.essay-head .meta{margin-top:var(--s-3)}.prose{color:var(--ink-2);font-size:16.5px;line-height:1.72}.prose>*+*{margin-top:var(--s-4)}.prose h2,.prose h3,.prose h4{color:var(--ink);margin-top:var(--s-7);letter-spacing:-.01em}.prose h2{padding-bottom:var(--s-2);border-bottom:1px solid var(--rule-3);font-size:24px}.prose h3{font-size:19px}.prose a{color:var(--accent);text-decoration:underline;-webkit-text-decoration-color:var(--accent-line);text-decoration-color:var(--accent-line);text-underline-offset:3px}.prose a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.prose ul,.prose ol{padding-left:var(--s-5)}.prose li+li{margin-top:var(--s-2)}.prose blockquote{padding-left:var(--s-4);border-left:1.5px solid var(--accent-line);color:var(--ink-3)}.prose code{font-family:var(--f-mono);background:var(--sunk);border:1px solid var(--rule-3);border-radius:var(--r-chip);padding:1px 5px;font-size:.88em}.prose pre{background:var(--sunk);border:1px solid var(--rule);padding:var(--s-4);font-size:13.5px;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose .highlight__panel{display:none}.prose img{box-shadow:0 0 0 1px var(--rule);margin-inline:auto}.prose .table-wrapper-paragraph{overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:14px}.prose th,.prose td{padding:var(--s-2) var(--s-3);border:1px solid var(--rule-3);text-align:left}.prose th{font-family:var(--f-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);font-size:11px}.prose hr{border-top:1px solid var(--rule)}.essay-back{align-items:center;gap:var(--s-2);margin-top:var(--s-8);padding-top:var(--s-5);border-top:1px solid var(--rule-3);font-family:var(--f-mono);color:var(--accent);font-size:12px;display:inline-flex}.essay-back svg{transition:translate var(--dur-hover-out) var(--ease-hover)}.essay-back:hover svg{transition-duration:var(--dur-hover-in);translate:-3px}.cv{gap:var(--s-8);grid-template-columns:minmax(0,1fr) 264px;align-items:start;display:grid}.cv-head{justify-content:space-between;align-items:flex-start;gap:var(--s-5);flex-wrap:wrap;display:flex}.cv-name{letter-spacing:-.02em;font-size:clamp(28px,22px + 1.2vw,36px)}.cv-sec{margin-top:var(--s-7)}.cv-sec>h2,.cv-side-block>h2,.cf summary>h2{align-items:center;gap:var(--s-3);font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:var(--s-4);font-size:11px;font-weight:400;display:flex}.cv-sec>h2:before,.cv-sec>h2:after,.cv-side-block>h2:before,.cv-side-block>h2:after,.cf summary>h2:before,.cf summary>h2:after{content:"";background:var(--rule);height:1px}.cv-sec>h2:before,.cv-side-block>h2:before,.cf summary>h2:before{width:var(--s-3)}.cv-sec>h2:after,.cv-side-block>h2:after,.cf summary>h2:after{flex:1}.cv-item+.cv-item{margin-top:var(--s-5)}.cv-item-head{justify-content:space-between;align-items:baseline;gap:var(--s-3);flex-wrap:wrap;display:flex}.cv-role{font-size:16px;font-weight:500}.cv-org{color:var(--accent)}.cv-period{font-family:var(--f-mono);font-variant-numeric:tabular-nums;color:var(--ink-3);white-space:nowrap;font-size:12px}.cv-item ul{margin-top:var(--s-3);gap:6px;list-style:none;display:grid}.cv-item li{padding-left:var(--s-5);color:var(--ink-2);font-size:15px;line-height:1.6;position:relative}.cv-item li:before{content:"";background:var(--accent-line);width:5px;height:5px;position:absolute;top:calc(.5lh - 2.5px);left:2px;rotate:45deg}.cv-note{margin-top:var(--s-2);color:var(--ink-3);font-size:13px}.cv-tech{margin-top:var(--s-2);font-family:var(--f-mono);letter-spacing:.02em;color:var(--ink-3);font-size:11px;line-height:1.6}.cv-side{top:calc(var(--hd-h) + var(--s-5));position:sticky}.cv-side+.cv-side,.cv-side-block+.cv-side-block{margin-top:var(--s-6)}.cv-kv{gap:var(--s-2);font-size:13.5px;display:grid}.cv-kv a{color:var(--accent)}.cv-cluster{padding:var(--s-3) 0;border-bottom:1px solid var(--rule-3)}.cv-cluster:last-child{border-bottom:0}.cv-skill+.cv-skill{margin-top:var(--s-3)}.cv-skill b{font-family:var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);font-size:11px;font-weight:400;display:block}.cv-skill span,.cv-avail{color:var(--ink-2);font-size:13.5px}.cf summary{cursor:pointer;list-style:none;display:block}.cf summary::-webkit-details-marker{display:none}.cf summary>h2{margin-bottom:var(--s-3);transition:color var(--dur-hover-out) var(--ease-hover)}.cf summary:hover>h2{color:var(--accent);transition-duration:var(--dur-hover-in)}.cf summary>h2 svg{transition:rotate var(--dur-base) var(--ease-out);flex:none;order:1}.cf details[open] summary>h2 svg{rotate:45deg}@supports (interpolate-size:allow-keywords) and (overflow-clip-margin:1px){.cf details::details-content{overflow-clip-margin:var(--s-1);block-size:0;transition:block-size var(--dur-base) var(--ease-out), content-visibility var(--dur-base) allow-discrete;overflow:clip}.cf details[open]::details-content{block-size:auto}}.cf-lede{color:var(--ink-2);font-size:15px;line-height:1.6;display:block}.cf-form{gap:var(--s-5);margin-top:var(--s-5);display:grid}.cf-pair{gap:var(--s-5);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.cf-field{gap:var(--s-1);align-content:start;display:grid}.cf-field label{font-family:var(--f-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);transition:color var(--dur-hover-out) var(--ease-hover);font-size:11px}.cf-field:focus-within label{color:var(--accent);transition-duration:var(--dur-hover-in)}.cf-field :is(input,textarea){width:100%;padding:var(--s-2) 0;border:0;border-bottom:1px solid var(--rule-2);color:var(--ink);transition:border-color var(--dur-hover-out) var(--ease-hover), box-shadow var(--dur-hover-out) var(--ease-hover);background:0 0;border-radius:0;font-size:16px;line-height:1.6}.cf-field[data-invalid] :is(input,textarea){border-bottom-color:var(--ink);box-shadow:0 1px 0 var(--ink)}.cf-field :is(input,textarea):focus-visible{border-bottom-color:var(--accent);box-shadow:0 1px 0 var(--accent);transition-duration:var(--dur-hover-in);outline:none}.cf-field input:-webkit-any(:autofill,:-webkit-autofill){transition:background-color 0s 600000s,color 0s 600000s}.cf-field input:is(:autofill,:autofill){transition:background-color 0s 600000s,color 0s 600000s}.cf-field textarea{field-sizing:content;min-height:calc(1lh + 2 * var(--s-2));max-height:calc(12lh + 2 * var(--s-2));resize:none;font-family:inherit}.cf-help,.cf-err{color:var(--ink-3);font-size:13px;line-height:1.5}.cf-err{color:var(--ink);animation:cap-fade var(--dur-fast) var(--ease-hover)}.cf-foot{align-items:center;gap:var(--s-4);flex-wrap:wrap;display:flex}.cf-send{border-color:var(--accent);color:var(--accent)}.cf-send svg{transition:translate var(--dur-hover-out) var(--ease-hover)}.cf-send:hover svg{transition-duration:var(--dur-hover-in);translate:3px}.cf-msg{font-family:var(--f-mono);color:var(--ink-3);font-size:12px}.cf-msg[data-kind=error]{color:var(--ink);border-left:1.5px solid var(--accent);padding-left:var(--s-3)}@media (max-width:640px){.cf-pair{grid-template-columns:minmax(0,1fr)}}@media (max-width:860px){.cv{gap:var(--s-6);grid-template-columns:1fr}.cv-side{position:static}}.gal{columns:3;column-gap:var(--s-4)}.gal-fig{break-inside:avoid;margin-bottom:var(--s-4);border:1px solid var(--rule);background:var(--raise);cursor:zoom-in}.gal-fig img{width:100%;height:auto}.gal-cap{justify-content:space-between;gap:var(--s-3);padding:6px var(--s-2);border-top:1px solid var(--rule-3);font-family:var(--f-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-size:11px;display:flex}:root:has(.gal-view){overflow:hidden}.gal-view{z-index:var(--z-lightbox);padding:var(--s-6);background:var(--paper);overscroll-behavior:contain;view-transition-name:gal-ground;grid-template-columns:100%;place-items:center;display:grid;position:fixed;inset:0}::view-transition-group(gal-photo){z-index:var(--z-lightbox);animation-duration:var(--dur-base);animation-timing-function:var(--ease-out)}::view-transition-group(gal-ground){z-index:var(--z-lightbox);animation-duration:var(--dur-base);animation-timing-function:var(--ease-out)}::view-transition-group(gal-photo){z-index:calc(var(--z-lightbox) + 1)}.gal-view img{width:min(100%, 88dvh * var(--ar));aspect-ratio:var(--ar);border:1px solid var(--rule);background:50%/cover no-repeat}.gal-close{top:var(--s-4);right:var(--s-4);position:absolute}@media (max-width:900px){.gal{columns:2}}@media (max-width:560px){.gal{columns:1}}.crumb{display:inline}.crumb button{letter-spacing:inherit;color:var(--accent);margin-block:-5px;padding-block:5px}.crumb button:hover{text-underline-offset:3px;text-decoration:underline}.fold[data-dir]>.rows{animation:drill var(--dur-base) var(--ease-out)}.fold[data-dir=out]>.rows{--drill:calc(var(--s-3) * -1)}@keyframes drill{0%{opacity:0;translate:var(--drill,var(--s-3)) 0}}.res-row{column-gap:var(--s-3);text-align:left;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;width:100%}.res-row .row-main{transition:color var(--dur-hover-out) var(--ease-hover)}.res-row svg{width:14px;height:14px;color:var(--ink-3);transition:color var(--dur-hover-out) var(--ease-hover), scale var(--dur-hover-out) var(--ease-hover)}.res-row:is(:hover,:focus-visible) :is(.row-main,svg){color:var(--accent);transition-duration:var(--dur-hover-in)}.res-row:active svg{scale:var(--press);transition-duration:0s}.res-row .row-trail{text-overflow:ellipsis;white-space:nowrap;max-width:24ch;display:block;overflow:hidden}@media (max-width:640px){.res-row .row-main{order:0;grid-column:auto}a.res-row .row-trail{display:none}}.oops-mark{width:88px;height:88px;margin-bottom:var(--s-5)}.oops{max-width:52ch;padding-block:var(--s-8)}.oops h1{letter-spacing:-.02em;font-size:clamp(30px,23px + 1.5vw,42px)}.oops p{margin-top:var(--s-4);color:var(--ink-2)}.oops .more{margin-top:var(--s-5)}@media print{.hd,.ruler-prog,.dither,.horizon,.gutter,.ptray,.ask-chip,.ask,.tb-wrap,.skip-link,.cf,.cv-file{display:none!important}html,body{color:#000;background:#fff}.wrap{border:0;padding:0}main{padding:0}.cv{grid-template-columns:minmax(0,1fr) 220px;gap:24px}.cv-item,.cv-sec{break-inside:avoid}a{color:#000}}
.kbd{border:1px solid var(--rule-2);border-radius:var(--r-chip);background:var(--raise);min-width:20px;height:20px;font-family:var(--f-mono);color:var(--ink-2);place-items:center;padding-inline:5px;font-size:11px;line-height:1;display:inline-grid}.hint-layer{z-index:var(--z-hints);pointer-events:none;position:fixed;inset:0}.kbd.hint{border-color:var(--accent);color:var(--accent);background:var(--raise);box-shadow:0 0 0 2px var(--paper);position:absolute;translate:-50% -100%}.kbd.hint[data-below=true]{translate:-50%}.sc-scrim{z-index:var(--z-sheet);padding:var(--s-5);background:color-mix(in oklab, var(--paper) 72%, transparent);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition:opacity var(--dur-base) var(--ease-out);place-items:center;display:grid;position:fixed;inset:0}.sc-sheet{background:var(--raise);border:1px solid var(--rule-2);width:min(420px,100%);padding:var(--s-5);transition:translate var(--dur-base) var(--ease-out)}@starting-style{.sc-scrim{opacity:0}.sc-sheet{translate:0 6px}}.sc-head{margin-bottom:var(--s-4);justify-content:space-between;align-items:center;display:flex}.sc-head .p-fig{margin:0}.sc-list{border-top:1px solid var(--rule-3);gap:0;display:grid}.sc-row{gap:var(--s-3);padding:var(--s-2) 0;border-bottom:1px solid var(--rule-3);color:var(--ink-2);grid-template-columns:56px minmax(0,1fr);align-items:center;font-size:14px;display:grid}

