:root{--bg:#efeeea;--fg:#000;--mute:#6f6e6a;--line:#cfcdc7;--acc:#e0312b;--serif:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;--sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;--pad:clamp(20px,5vw,72px);--ease:cubic-bezier(.2,.7,.2,1)}
:root[data-theme=dark]{--bg:#000;--fg:#ecebe6;--mute:#8d8c87;--line:#2c2c2b}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#000;--fg:#ecebe6;--mute:#8d8c87;--line:#2c2c2b}}
*{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;scroll-padding-top:70px}
body{background:var(--bg);color:var(--fg);font:17px/1.6 var(--sans);-webkit-font-smoothing:antialiased;transition:background .3s,color .3s}
a{color:inherit;text-decoration:none}img{max-width:100%;display:block}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px}
.skip{position:absolute;left:-999px}.skip:focus{left:10px;top:10px;background:var(--fg);color:var(--bg);padding:8px 12px;z-index:99}
.intro{position:fixed;inset:0;background:var(--bg);z-index:100;display:grid;place-items:center;animation:out .5s var(--ease) 1.1s forwards}
.tc-intro{font:14px var(--mono);color:var(--mute);animation:blink .5s steps(2) 2}
@keyframes out{to{opacity:0;visibility:hidden}}@keyframes blink{50%{opacity:.2}}
.site-header{position:fixed;inset:0 0 auto;z-index:50;display:flex;align-items:center;gap:28px;padding:26px var(--pad);transition:padding .35s var(--ease),background .3s,border-color .3s;border-bottom:1px solid transparent}
.site-header.compact{padding-block:12px;background:color-mix(in srgb,var(--bg) 92%,transparent);border-color:var(--line)}
.brand{font:600 18px var(--serif);margin-right:auto}
.timecode{font:12px var(--mono);color:var(--mute);display:flex;align-items:center;gap:8px}
.timecode i{width:7px;height:7px;border-radius:50%;background:var(--acc);animation:rec 1.6s steps(2) infinite}@keyframes rec{50%{opacity:.15}}
#nav{display:flex;gap:30px;font-size:15px}
#nav a{position:relative;padding:4px 0}
#nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--fg);transition:right .35s var(--ease)}
#nav a:hover::after,#nav a.on::after{right:0}
#nav a.on::before{content:"";position:absolute;left:-12px;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:var(--acc)}
.icon-btn,.menu-btn{background:none;border:0;color:inherit;cursor:pointer;width:32px;height:32px}
.icon-btn span{display:block;width:16px;height:16px;margin:auto;border-radius:50%;border:1.5px solid var(--fg);background:linear-gradient(90deg,var(--fg) 50%,transparent 50%);transition:transform .5s var(--ease)}
.icon-btn:hover span{transform:rotate(180deg)}
.menu-btn{display:none;position:relative}
.menu-btn span{position:absolute;left:6px;right:6px;height:1.5px;background:var(--fg);transition:transform .3s}
.menu-btn span:first-child{top:12px}.menu-btn span:last-child{top:19px}
.menu-btn[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu-btn[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
.hero{min-height:100svh;padding:140px var(--pad) 40px;display:flex;flex-direction:column;justify-content:flex-end;gap:36px}
.meta{font-size:14px;color:var(--mute)}
.hero-name{font:400 clamp(64px,15.5vw,250px)/.86 var(--serif);letter-spacing:-.04em}
.hero-name span{display:block;padding-bottom:.06em;animation:rise .9s var(--ease) 1.2s both}
.hero-name span:nth-child(2){padding-left:.9em;animation-delay:1.32s}
@keyframes rise{from{transform:translateY(30%);opacity:0}}
.hero-row{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;flex-wrap:wrap}
.statement{font:clamp(22px,2.6vw,34px)/1.2 var(--serif);max-width:20em}
.sub{color:var(--mute);margin-top:12px;max-width:34em}
.hero-links{display:flex;gap:28px;flex-wrap:wrap}
.link{border-bottom:1px solid var(--fg);padding-bottom:3px;transition:color .2s,border-color .2s,letter-spacing .35s var(--ease)}
.link:hover{color:var(--acc);border-color:var(--acc);letter-spacing:.02em}
.frame-line{height:1px;background:var(--line);position:relative;transform-origin:left;animation:draw 1.4s var(--ease) 1.4s both}
.frame-line::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;background:var(--acc)}
@keyframes draw{from{transform:scaleX(0)}}
.sec{padding:clamp(80px,12vw,160px) var(--pad) 0}
.sec-title{font:400 clamp(30px,4.5vw,60px)/1 var(--serif);letter-spacing:-.02em;display:flex;align-items:baseline;gap:18px;padding-top:18px;border-top:1px solid var(--line);margin-bottom:clamp(36px,6vw,80px)}
.sec-title small{font:12px var(--mono);color:var(--mute);letter-spacing:0}
.sub-title{font:400 24px var(--serif);margin:80px 0 24px}
.about{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,7fr);gap:var(--pad)}
.photo{aspect-ratio:4/5;background:repeating-linear-gradient(135deg,transparent 0 11px,var(--line) 11px 12px);position:relative;overflow:hidden}
.photo img{width:100%;height:100%;object-fit:cover;filter:grayscale(1);transition:filter .6s}.photo:hover img{filter:none}
.photo figcaption{position:absolute;inset:auto 14px 14px;font-size:13px;color:var(--mute)}
.prose{max-width:38em;font-family:var(--serif);font-size:19px;line-height:1.7}.prose p+p{margin-top:1.2em}
.prose .lead{font-size:clamp(24px,2.8vw,36px);line-height:1.25}.prose p:not(.lead){color:var(--mute)}
.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(40px,6vw,80px) 24px;align-items:start}
.item{grid-column:span 6;text-align:left;background:none;border:0;color:inherit;cursor:pointer;font:inherit;padding:0}
.item.wide{grid-column:span 12}.item.small{grid-column:span 5}.item.off{grid-column-start:7}
.thumb{position:relative;overflow:hidden;aspect-ratio:16/9;background:#1a1a19;display:block}
.item.tall .thumb{aspect-ratio:4/5}
.thumb .img{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform 1s var(--ease)}
.item:hover .img,.item:focus-visible .img{transform:scale(1.04)}
.thumb::before,.thumb::after{content:"";position:absolute;width:22px;height:22px;border:solid #fff;opacity:0;transition:.4s var(--ease);z-index:2}
.thumb::before{left:24px;top:24px;border-width:1.5px 0 0 1.5px}.thumb::after{right:24px;bottom:24px;border-width:0 1.5px 1.5px 0}
.item:hover .thumb::before,.item:focus-visible .thumb::before{opacity:1;left:14px;top:14px}
.item:hover .thumb::after,.item:focus-visible .thumb::after{opacity:1;right:14px;bottom:14px}
.play{position:absolute;left:50%;top:50%;width:64px;height:64px;margin:-32px;border-radius:50%;background:var(--acc);z-index:2;transform:scale(0);transition:transform .4s var(--ease)}
.play::after{content:"";position:absolute;left:26px;top:20px;border:12px solid transparent;border-left:18px solid #fff;border-right:0}
.item:hover .play,.item:focus-visible .play{transform:scale(1)}
.info{display:flex;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--line);margin-top:16px}
.info h3{font:400 clamp(22px,2.4vw,32px)/1.15 var(--serif);transition:transform .4s var(--ease)}
.item:hover h3{transform:translateX(10px)}
.info span{color:var(--mute);font-size:14px;white-space:nowrap}
.item p{color:var(--mute);font-size:15px;margin-top:6px;max-width:32em}
.timeline{list-style:none;padding:0}
.timeline li{display:grid;grid-template-columns:minmax(120px,2fr) minmax(0,7fr);gap:24px;padding:28px 0;border-top:1px solid var(--line);transition:padding .35s var(--ease),opacity .9s var(--ease)}
.timeline li:last-child{border-bottom:1px solid var(--line)}
.timeline li:hover{padding-left:12px}
.timeline time{font:13px var(--mono);color:var(--mute);padding-top:6px}
.timeline h3{font:400 26px/1.2 var(--serif)}.timeline h3 em{font-style:normal;color:var(--mute)}
.timeline p{color:var(--mute);margin-top:6px;max-width:38em}
.cv{margin-top:36px}
.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:40px}
.skills h4{font:600 15px var(--sans);padding-bottom:10px;border-bottom:1px solid var(--line);margin-bottom:12px}
.skills ul{padding:0}.skills li{list-style:none;color:var(--mute);font-size:15px;padding:3px 0;transition:color .2s,transform .3s var(--ease)}.skills li:hover{color:var(--fg);transform:translateX(6px)}
.big{font:400 clamp(40px,8vw,128px)/.95 var(--serif);letter-spacing:-.03em;max-width:11em}
.mail{display:inline-block;margin-top:48px;font:clamp(20px,3vw,40px) var(--serif);border-bottom:1px solid var(--fg);transition:color .2s,border-color .2s}.mail:hover{color:var(--acc);border-color:var(--acc)}
.socials{display:flex;gap:24px;flex-wrap:wrap;margin-top:32px}.socials a{color:var(--mute);transition:color .2s,transform .3s var(--ease)}.socials a:hover{color:var(--fg);transform:translateY(-2px)}
.footer{margin-top:clamp(80px,12vw,160px);padding:28px var(--pad);border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:14px;color:var(--mute)}
.footer .socials{margin:0}.sig i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--acc);margin-left:6px;animation:rec 1.6s steps(2) infinite}
dialog{border:0;padding:0;background:#000;color:#fff;width:min(1100px,94vw);max-height:92vh;overflow:auto;margin:auto}
dialog::backdrop{background:rgba(0,0,0,.85)}
dialog[open]{animation:pop .35s var(--ease)}@keyframes pop{from{opacity:0;transform:scale(.97)}}
.stage{aspect-ratio:16/9;background:#111;display:grid;place-items:center}.stage iframe,.stage video{width:100%;height:100%;border:0}.stage p{color:#999;padding:20px;text-align:center}
.cap{padding:20px 24px}.cap h3{font:400 24px var(--serif)}.cap p{color:#aaa;font-size:15px}
.close{position:absolute;right:12px;top:12px;z-index:3;background:rgba(0,0,0,.6);color:#fff;border:1px solid #555;padding:6px 14px;cursor:pointer;font:inherit;font-size:14px}.close:hover{background:var(--acc);border-color:var(--acc)}
.rv{opacity:0;transition:opacity .9s var(--ease)}.rv.in{opacity:1}
@media(max-width:820px){
 .menu-btn{display:block}.timecode{display:none}
 #nav{position:fixed;inset:0;background:var(--bg);flex-direction:column;justify-content:center;gap:22px;padding:var(--pad);font:400 38px var(--serif);transform:translateY(-100%);visibility:hidden;transition:transform .5s var(--ease),visibility .5s;z-index:-1}
 #nav.open{transform:none;visibility:visible}#nav a.on::before{display:none}
 .site-header{gap:8px}.about{grid-template-columns:1fr}.photo{max-width:320px}
 .item,.item.small,.item.off{grid-column:span 12}.item.off{grid-column-start:auto}.item.tall .thumb{aspect-ratio:4/3}
 .timeline li{grid-template-columns:1fr;gap:6px}.hero-name span:nth-child(2){padding-left:.4em}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.rv{opacity:1}}
