@font-face{font-family:Plex Sans;src:url(/fonts/plex-sans-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Plex Sans;src:url(/fonts/plex-sans-400i.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Plex Sans;src:url(/fonts/plex-sans-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Plex Sans;src:url(/fonts/plex-sans-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Plex Mono;src:url(/fonts/plex-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Plex Mono;src:url(/fonts/plex-mono-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{color-scheme:light dark;--bg:#f3f5f7;--surface:#e6eaee;--panel:#fff;--line:#cdd3da;--ink:#0d1117;--muted:#4d5763;--accent:#0b6bcb;--accent-ink:#fff;--accent-text:#0b5fb4;--ok:#1a7f37;--sev:#c2362f;--step-small:clamp(.875rem, .85rem + .1vw, .9375rem);--step-body:clamp(1.0625rem, 1rem + .25vw, 1.1875rem);--step-lead:clamp(1.25rem, 1.05rem + .8vw, 1.75rem);--step-head:clamp(2.5rem, 1.4rem + 4.2vw, 5rem);--step-display:clamp(3.4rem, .9rem + 8.6vw, 9rem);--margin:clamp(16px, 2.6vw, 40px);--gap-section:clamp(96px, 11vw, 192px);--ease-out:cubic-bezier(.16, 1, .3, 1);--sans:"Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace}@media (prefers-color-scheme:dark){:root{--bg:#0c0f13;--surface:#141920;--panel:#11161c;--line:#26303b;--ink:#e7ebef;--muted:#96a1ad;--accent:#3d9bff;--accent-ink:#04111f;--accent-text:#6cb4ff;--ok:#56d364;--sev:#ff7b72}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:var(--step-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}img{max-width:100%;height:auto;display:block}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:.07em}h1,h2,h3,p,ul,ol,dl,dd,figure,blockquote,pre{margin:0}ul,ol{padding:0;list-style:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:var(--accent);color:var(--accent-ink)}.vh{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.skip{left:var(--margin);z-index:10;background:var(--accent);color:var(--accent-ink);padding:10px 16px;position:absolute;top:-100px}.skip:focus{top:12px}.wrap{padding-inline:var(--margin)}.tnum{font-variant-numeric:tabular-nums}.btn{background:var(--accent);color:var(--accent-ink);font:500 var(--step-small)/1 var(--sans);cursor:pointer;transition:transform .16s var(--ease-out), background-color .16s;border:0;border-radius:3px;align-items:center;gap:.6em;padding:.95em 1.25em;text-decoration:none;display:inline-flex}.btn:hover{background:color-mix(in srgb, var(--accent) 85%, var(--ink))}.btn:active{transform:scale(.97)}.btn--quiet{background:var(--surface);color:var(--ink)}.btn--quiet:hover{background:color-mix(in srgb, var(--surface) 82%, var(--ink))}.bar{z-index:3;padding:22px var(--margin);font-size:var(--step-small);justify-content:space-between;align-items:center;gap:16px;display:flex;position:absolute;inset:0 0 auto}.bar a{text-decoration:none}.wordmark{font-family:var(--mono);font-size:1rem;font-weight:500}.bar nav{align-items:center;gap:clamp(14px,2vw,28px);display:flex}.bar nav a:not(.btn){padding-block:6px;text-decoration:underline #0000;transition:text-decoration-color .2s}.bar nav a:not(.btn):hover{text-decoration-color:currentColor}.hero{min-height:100svh;padding:128px var(--margin) clamp(40px, 6vh, 72px);grid-template-columns:repeat(12,minmax(0,1fr));align-content:end;column-gap:24px;display:grid;position:relative}.hero__text{grid-column:1/8;align-self:end}.hero__name{font-size:var(--step-display);letter-spacing:-.045em;font-weight:600;line-height:.9}.hero__name .line{padding-bottom:.06em;display:block;overflow:hidden}.hero__name .line>span{display:block}.hero__role{font-size:var(--step-lead);margin-top:28px;font-weight:500;line-height:1.25}.hero__lead{max-width:34em;color:var(--muted);margin-top:14px}.hero__actions{flex-wrap:wrap;gap:12px;margin-top:32px;display:flex}.hero__req{grid-column:8/13;align-self:end}.ui{background:var(--panel);border:1px solid var(--line);font-family:var(--mono);border-radius:6px;font-size:13px;line-height:1.65;overflow:hidden}.ui__head{border-bottom:1px solid var(--line);font-family:var(--sans);color:var(--muted);background:var(--surface);justify-content:space-between;gap:12px;padding:10px 14px;font-size:13px;display:flex}.ui__head strong{color:var(--ink);font-weight:500}.ui__live{align-items:center;gap:7px;display:inline-flex}.ui__live:before{content:"";background:var(--ok);border-radius:50%;width:7px;height:7px}.ui__body{padding:14px;overflow-x:auto}.ui__body+.ui__body{border-top:1px solid var(--line)}.ui dl{grid-template-columns:max-content minmax(0,1fr);column-gap:1ch;display:grid}.ui dt{color:var(--muted)}.ui dt:after{content:":"}.ui dd{overflow-wrap:anywhere}.ui .start{color:var(--accent-text);margin-bottom:4px;font-weight:500}.ui .ok{color:var(--ok)}.ui .sev{color:var(--sev)}.ui__note{font-size:var(--step-small);color:var(--muted);max-width:46ch;margin-top:14px}.ui__note strong{color:var(--ink);font-weight:500}.ui__prose{font-family:var(--sans);color:var(--ink);font-size:15px;line-height:1.5}.ui__badge{font-family:var(--sans);align-items:center;gap:10px;font-size:15px;display:flex}.ui__badge:before{content:"";background:var(--accent);border-radius:2px;flex:none;width:10px;height:10px}.ui__badge--link{color:var(--ink);width:fit-content;text-decoration:none}.ui__badge--link span{color:var(--accent-text);transition:transform .2s var(--ease-out)}.ui__badge--link:hover{color:var(--accent-text);text-decoration:underline}.ui__badge--link:hover span{transform:translate(2px,-2px)}.section{padding-block:var(--gap-section)}.section-head{font-size:var(--step-lead);letter-spacing:-.015em;font-weight:600;line-height:1.15}.tone{background:var(--surface);--panel:var(--bg)}.work{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;display:grid}.work__list{grid-column:1/7}.work__list .section-head{margin-bottom:40px}.work__item a{color:var(--muted);padding-block:14px;text-decoration:none;transition:color .2s;display:block}.work__item a[aria-current=true],.work__item a:hover,.work__item a:focus-visible{color:var(--ink)}.work__name{letter-spacing:-.04em;transition:transform .3s var(--ease-out);font-size:clamp(2.5rem,1rem + 3.6vw,4.5rem);font-weight:600;line-height:1;display:block}.work__item a:hover .work__name{transform:translate(6px)}.work__meta{font-family:var(--mono);color:var(--accent-text);margin-top:10px;font-size:13px;display:block}.work__summary{max-width:40ch;font-size:var(--step-body);color:var(--muted);margin-top:6px;display:block}.work__frame{grid-column:7/13;align-self:start;margin-top:64px;display:grid;position:sticky;top:12vh}.work__frame>*{opacity:0;visibility:hidden;grid-area:1/1;transition:opacity .22s,visibility 0s .22s}.work__frame>.is-on{opacity:1;visibility:visible;transition:opacity .22s}.work__thumb{display:none}.visual-img{aspect-ratio:4/3;object-fit:cover;object-position:left top;background:var(--surface);border-radius:6px;width:100%}.plate{background:var(--surface);height:min(84svh,64vw);position:relative;overflow:hidden}.plate picture{will-change:transform;height:112%;display:block}.plate img{object-fit:cover;object-position:center 55%;width:100%;height:100%}.plate figcaption{left:var(--margin);background:var(--bg);color:var(--ink);font-size:var(--step-small);border-radius:3px;padding:7px 12px;position:absolute;bottom:18px}.lineup{letter-spacing:-.015em;font-size:clamp(1.25rem,.6rem + 2.2vw,2.5rem);line-height:1.45}.lineup h2{font-size:inherit;color:var(--accent-text);margin:72px 0 16px;font-weight:600}.lineup h2:first-child{margin-top:0}.lineup__row{grid-template-columns:42% 1fr auto;align-items:baseline;column-gap:24px;padding-block:.1em;display:grid}.lineup__row>*{min-width:0}.lineup__org{color:var(--muted)}.lineup__when{text-align:right;white-space:nowrap;font-family:var(--mono);color:var(--muted);font-size:.55em}.lineup__more{font-size:var(--step-body);margin-top:56px}.skills{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;display:grid}.skills h2{grid-column:1/5}.skills dl{grid-column:5/13;gap:28px;display:grid}.skills dt{font-family:var(--mono);color:var(--accent-text);margin-bottom:4px;font-size:13px}.skills dd{letter-spacing:-.02em;font-size:clamp(1.5rem,.9rem + 1.6vw,2.25rem);font-weight:500;line-height:1.2}.about__row{grid-template-columns:34% 1fr;column-gap:24px;display:grid}.about__row+.about__row{margin-top:112px}.facts{align-content:start;gap:20px;max-width:260px;display:grid}.facts dt{font-family:var(--mono);color:var(--muted);font-size:13px}.facts dd{font-size:var(--step-body)}.about__text{max-width:36em;font-size:clamp(1.25rem,.95rem + .9vw,1.625rem);line-height:1.45}.about__text h2{margin-bottom:18px}.about__label{font-size:var(--step-lead);font-weight:600;line-height:1.15}.record{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px 48px;max-width:900px;display:grid}.record h3{font-family:var(--mono);color:var(--muted);margin-bottom:12px;font-size:13px;font-weight:400}.record li{justify-content:space-between;gap:16px;display:flex}.record li+li{margin-top:14px}.record li>span:first-child{font-weight:500}.record li>span:last-child{color:var(--muted);white-space:nowrap;font-family:var(--mono);font-size:14px}.record small{color:var(--muted);font-size:var(--step-small);font-weight:400;display:block}.contact{padding-block:var(--gap-section) 0}.rows{font-size:var(--step-head);letter-spacing:-.035em;font-weight:500;line-height:1}.rows>*{min-height:1.75em;padding:0 var(--margin) .28em;align-items:flex-end;display:flex}.rows>:nth-child(2n){background:var(--surface)}.rows a{overflow-wrap:anywhere;text-decoration:none;transition:color .16s}.rows a:hover{color:var(--accent-text)}.rows h2{font:inherit}.rows .greet{background:var(--accent);color:var(--accent-ink);justify-content:space-between;align-items:center;gap:.4em;padding-block:.3em;transition:background-color .16s}.rows a.greet:hover{color:var(--accent-ink);background:color-mix(in srgb, var(--accent) 85%, var(--ink))}.round{background:var(--accent-ink);width:.9em;height:.9em;color:var(--accent);transition:transform .22s var(--ease-out);border-radius:50%;flex:none;place-items:center;display:inline-grid}.greet:hover .round{transform:rotate(45deg)}.round svg{width:42%;height:42%}.footer{min-height:92svh;padding:var(--gap-section) var(--margin) 0;flex-direction:column;display:flex;position:relative;overflow:hidden}.footer__top{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:24px;display:grid}.footer__invite{grid-column:1/8}.footer__invite p{font-size:var(--step-head);letter-spacing:-.04em;max-width:9em;margin-bottom:32px;font-weight:600;line-height:1}.footer__links{grid-column:9/13;align-content:start;gap:10px;display:grid}.footer__links a{text-decoration:none}.footer__links a:hover{text-decoration:underline}.footer__legal{color:var(--muted);z-index:1;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:auto;padding-bottom:12px;font-size:13px;display:flex;position:relative}.footer__legal p{max-width:90ch}.footer__mark{font-family:var(--mono);letter-spacing:-.06em;white-space:nowrap;margin:-.1em calc(var(--margin) * -1) 0 -.06em;color:var(--surface);user-select:none;font-size:21vw;font-weight:500;line-height:.8;transform:translateY(22%)}.page-top{height:96px;position:relative}.case{padding-top:clamp(48px,7vw,112px)}.case__head{grid-template-columns:repeat(12,minmax(0,1fr));align-items:end;gap:20px 24px;display:grid}.case__head h1{font-size:var(--step-display);letter-spacing:-.045em;grid-column:1/9;font-weight:600;line-height:.92}.case__meta{font-family:var(--mono);color:var(--accent-text);grid-column:10/13;padding-bottom:1em;font-size:13px}.case__summary{font-size:var(--step-lead);grid-column:1/8;line-height:1.35}.case__grid{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;column-gap:24px;margin-top:clamp(48px,7vw,112px);display:grid}.case__fig{grid-column:1/8}.case__fig figcaption{font-size:var(--step-small);color:var(--muted);padding-top:10px}.case__body{grid-column:9/13}.prose>*+*{margin-top:1em}.prose h2,.prose h3{font-size:var(--step-lead);margin-top:1.6em;font-weight:600;line-height:1.2}.prose ul{padding-left:1.2em;list-style:outside}.prose ol{padding-left:1.4em;list-style:decimal}.prose code{font-family:var(--mono);background:var(--surface);border-radius:3px;padding:.1em .3em;font-size:.88em}.prose pre{background:var(--surface);border-radius:6px;padding:16px;overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose blockquote{color:var(--muted);padding-left:1em;font-style:italic}.case__next{margin-top:var(--gap-section);flex-wrap:wrap;justify-content:space-between;align-items:end;gap:24px;display:flex}.case__nextlink{text-align:right;text-decoration:none}.case__nextlink span{font-size:var(--step-small);color:var(--muted);display:block}.case__nextlink strong{font-size:var(--step-head);letter-spacing:-.04em;font-weight:600;line-height:1;transition:color .16s;display:block}.case__nextlink:hover strong{color:var(--accent-text)}.cv{padding-top:clamp(48px,7vw,112px);padding-bottom:var(--gap-section)}.cv__head{grid-template-columns:34% 1fr;gap:18px 24px;margin-bottom:clamp(56px,8vw,128px);display:grid}.cv__head h1{font-size:var(--step-display);letter-spacing:-.045em;grid-column:1/-1;font-weight:600;line-height:.92}.cv__role{font-size:var(--step-lead);grid-column:2;font-weight:500;line-height:1.3}.cv__contact{color:var(--muted);flex-wrap:wrap;grid-column:2;gap:6px 24px;display:flex}.cv__contact a{color:var(--ink)}.cv__print{grid-column:2;justify-self:start;margin-top:8px}.cv__sec{grid-template-columns:34% minmax(0,40em);column-gap:24px;padding-block:44px;display:grid}.cv__sec:nth-of-type(2n){background:var(--surface);margin-inline:calc(var(--margin) * -1);padding-inline:var(--margin)}.cv__sec h2{font-size:var(--step-lead);font-weight:600;line-height:1.2}.cv__intro{font-size:var(--step-lead);line-height:1.4}.cv__entry+.cv__entry{margin-top:32px}.cv__entry h3{font-size:var(--step-body);font-weight:600;line-height:1.35}.cv__when{font-family:var(--mono);color:var(--muted);margin:3px 0 8px;font-size:13px}.cv__skills{gap:16px;display:grid}.cv__skills dt{font-weight:600}@media (prefers-reduced-motion:no-preference){.js .hero__name .line>span{animation:rise .9s var(--ease-out) forwards;transform:translateY(105%)}.js .hero__name .line:nth-child(2)>span{animation-delay:.11s}.js .hero__role,.js .hero__lead,.js .hero__actions{opacity:0;animation:fade .7s var(--ease-out) .45s forwards}.js .hero__req{opacity:0;animation:fade .7s var(--ease-out) .65s forwards}.js .bar{opacity:0;animation:fade .6s var(--ease-out) .2s forwards}.js [data-reveal]>*{opacity:0;transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);transition-delay:calc(var(--i,0) * 75ms);transform:translateY(24px)}.js [data-reveal].is-in>*{opacity:1;transform:none}.ui__live:before{animation:2.4s ease-in-out infinite blink}}@keyframes rise{to{transform:none}}@keyframes fade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes blink{50%{opacity:.35}}@media (width<=860px){.hero{min-height:0;padding-top:104px;display:block}.hero__name{font-size:15vw}.hero__req{margin-top:48px}.bar{padding-block:18px}.bar nav{gap:14px}.bar .btn{padding:.8em .9em}.work{display:block}.work__frame{display:none}.work__item+.work__item{margin-top:48px}.work__item a{color:var(--ink);padding:0}.work__thumb{margin-bottom:16px;display:block}.work__name{font-size:11vw}.lineup{font-size:1.375rem}.lineup__row{grid-template-columns:1fr auto;row-gap:2px;margin-bottom:18px;line-height:1.25}.lineup__role{grid-column:1/-1}.lineup__org{font-size:var(--step-small)}.lineup__when{font-size:12.5px}.skills{display:block}.skills dl{margin-top:32px}.about__row{grid-template-columns:1fr;row-gap:40px}.about__row+.about__row{margin-top:64px}.about__row:first-child .facts{order:2;grid-template-columns:1fr 1fr;max-width:none}.record{grid-template-columns:1fr}.rows{font-size:9vw}.rows>*{min-height:84px;padding-inline:16px}.rows .greet .round{width:56px;height:56px}.footer__top{display:block}.footer__invite p{font-size:12vw}.footer__invite .btn{justify-content:center;width:100%}.footer__links{flex-wrap:wrap;gap:8px 20px;margin-top:32px;display:flex}.footer__mark{font-size:30vw}.case__head,.cv__head{display:block}.case__head h1,.cv__head h1{font-size:13vw}.case__meta{padding:12px 0 0}.case__summary,.cv__role{margin-top:20px}.case__grid{display:block}.case__body{margin-top:40px}.cv__contact{margin-top:16px}.cv__print{margin-top:24px}.cv__sec{grid-template-columns:1fr;row-gap:20px}}@media print{@page{size:A4;margin:16mm 18mm}:root{--bg:#fff;--surface:#fff;--ink:#000;--muted:#444;--accent-text:#000}body{color:#000;background:#fff;font-size:10pt;line-height:1.4}.page-top,.cv__print,.skip{display:none!important}.js [data-reveal]>*{opacity:1!important;transform:none!important}.cv{padding:0}.cv__head{margin-bottom:9mm;display:block}.cv__head h1{font-size:28pt}.cv__role{margin-top:2mm;font-size:12pt}.cv__contact{margin-top:2mm;font-size:9pt}.cv__contact a{text-decoration:none}.cv__sec{break-inside:avoid;grid-template-columns:30mm 1fr;padding-block:4mm;margin:0!important;padding-inline:0!important}.cv__sec h2{font-size:11pt}.cv__intro{font-size:10pt}.cv__entry+.cv__entry{margin-top:3mm}.cv__entry{break-inside:avoid}}
