*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0}img,svg{max-width:100%;display:block}img{height:auto}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,p,ul,figure{margin:0}ul{padding:0;list-style:none}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--focus,#2563eb);outline-offset:2px}
.skip{position:absolute;left:-999px;top:8px;background:#fff;color:#000;padding:8px 12px;z-index:100}.skip:focus{left:8px}
.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .reveal{opacity:1;transform:none;transition:none}*{animation:none!important;transition:none!important}}
:root{--bg:#ecebe6;--ink:#0d0d0d;--mut:#5f5f5a;--acc:#2f3bff;--line:#cfcdc4;--focus:#2f3bff}
body{font:17px/1.65 "Helvetica Neue",Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink)}h1,h2,h3,.name,.huge,.big{letter-spacing:-.03em}
.layout{display:grid;grid-template-columns:280px minmax(0,1fr);min-height:100vh}.rail{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;justify-content:space-between;padding:36px 30px;border-right:1px solid var(--line)}.name{font:800 40px/.95 Helvetica,Arial,sans-serif;text-decoration:none;display:block}.role{margin:14px 0 0;font-size:14px;color:var(--mut)}.nav{display:grid;gap:4px}.nav a{text-decoration:none;font-size:20px;font-weight:600;padding:4px 0;color:var(--mut);transition:color .2s,padding .2s}.nav a:hover{color:var(--acc);padding-left:8px}.nav .res{color:var(--ink)}.avail{display:flex;align-items:center;gap:8px;font-size:13px;margin:0}.avail i{width:9px;height:9px;border-radius:50%;background:#16a34a;box-shadow:0 0 0 4px rgba(22,163,74,.2)}
main{padding:0 clamp(20px,5vw,72px)}.intro{padding:12vh 0 90px;max-width:900px}.tag{font:600 13px/1 Helvetica,Arial,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--acc)}h1{font-size:clamp(44px,6.6vw,92px);line-height:.98;margin:20px 0 28px;font-weight:800}.lead{font-size:21px;color:var(--mut);max-width:30em}.cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:32px}
.btn{display:inline-block;background:var(--ink);color:#fff;padding:14px 26px;border-radius:999px;font-weight:700;text-decoration:none;border:2px solid var(--ink);cursor:pointer;transition:background .2s,border-color .2s,transform .2s}.btn:hover{background:var(--acc);border-color:var(--acc);transform:translateY(-2px)}.btn.ghost{background:transparent;color:var(--ink)}.btn.ghost:hover{color:#fff}
.sec{padding:70px 0;border-top:1px solid var(--line)}.sh{font:700 14px/1 Helvetica,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;margin-bottom:34px;color:var(--mut)}.sh span{color:var(--acc)}
.works li{border-bottom:1px solid var(--line)}.works a{position:relative;display:grid;grid-template-columns:50px 1fr 200px 60px;gap:18px;align-items:center;padding:26px 0;text-decoration:none;transition:padding .3s,color .3s}.works a:hover{padding-left:16px;color:var(--acc)}.num{font-size:14px;color:var(--mut)}.wt b{display:block;font:800 clamp(28px,3.6vw,48px)/1.05 Helvetica,Arial,sans-serif;letter-spacing:-.03em}.wt span{font-size:15px;color:var(--mut)}.wtag{font-size:14px;color:var(--mut)}.yr{font-size:14px;text-align:right}
.thumb{position:absolute;right:120px;top:50%;width:230px;aspect-ratio:4/3;transform:translateY(-50%) scale(.92);opacity:0;pointer-events:none;border-radius:10px;overflow:hidden;transition:opacity .3s,transform .3s;z-index:5;box-shadow:0 24px 40px -20px rgba(0,0,0,.4)}.works a:hover .thumb,.works a:focus-visible .thumb{opacity:1;transform:translateY(-50%) scale(1)}.thumb svg{width:100%;height:100%}
.two .big{font-size:clamp(26px,3vw,38px);line-height:1.2;font-weight:700;max-width:22em;margin-bottom:24px}.two p{max-width:38em;color:var(--mut)}.two .big{color:var(--ink)}.two h3{font-size:14px;letter-spacing:.14em;text-transform:uppercase;margin:34px 0 12px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips li{border:1px solid var(--ink);border-radius:999px;padding:6px 16px;font-size:15px;transition:background .2s,color .2s}.chips li:hover{background:var(--ink);color:#fff}
.exp li{display:grid;grid-template-columns:170px 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--line)}.y{color:var(--mut);font-size:14px;padding-top:3px}.exp p{margin:4px 0 0;color:var(--mut)}
.huge{font:800 clamp(30px,5.4vw,76px)/1.05 Helvetica,Arial,sans-serif;margin:0 0 20px;word-break:break-word}.huge a{text-decoration:none;background:linear-gradient(var(--acc),var(--acc)) 0 100%/0 4px no-repeat;transition:background-size .4s}.huge a:hover{background-size:100% 4px;color:var(--acc)}.links{display:flex;gap:22px;flex-wrap:wrap;margin:0 0 40px}.links a{font-weight:600}
.form{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:760px}label{display:grid;gap:6px;font-size:13px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--mut)}.full{grid-column:1/-1}input,textarea{padding:14px;border:1px solid #b9b6ab;border-radius:10px;background:#fff;font-size:16px;text-transform:none;letter-spacing:0;color:var(--ink)}input:focus,textarea:focus{border-color:var(--acc)}.form .btn{justify-self:start}
.ft{padding:40px 0;border-top:1px solid var(--line);font-size:13px;color:var(--mut)}
@media (max-width:900px){.layout{grid-template-columns:1fr}.rail{position:static;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;gap:12px 24px;padding:18px 20px;border:0;border-bottom:1px solid var(--line)}.name{font-size:26px}.name br{display:none}.role,.avail{display:none}.nav{display:flex;flex-wrap:wrap;gap:4px 18px}.nav a{font-size:15px}.works a{grid-template-columns:34px 1fr 50px}.wtag,.thumb{display:none}.exp li{grid-template-columns:1fr;gap:2px}.intro{padding-top:60px}}
@media (max-width:560px){.form{grid-template-columns:1fr}}
/* resume */
.resumepage{background:#d9d7cf}.rbar{max-width:860px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:20px}.rbar a{font-weight:600}.paper{max-width:860px;margin:0 auto 50px;background:#fff;padding:clamp(24px,6vw,56px);box-shadow:0 20px 50px -30px rgba(0,0,0,.4);font-size:15px}.rh{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-bottom:3px solid var(--ink);padding-bottom:20px;margin-bottom:24px}.rh h1{font-size:44px;margin:0}.rh p{margin:4px 0 0;color:var(--acc);font-weight:700}.rc{font-size:14px;text-align:right;color:var(--mut)}.rg{display:grid;grid-template-columns:1.8fr 1fr;gap:36px}.paper h2{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--acc);margin:0 0 10px}.paper section{margin-bottom:24px}.paper p{margin:0}.rt{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}.rt h3{font-size:16px;letter-spacing:0}.rt span{font-size:13px;color:var(--mut)}.paper article{margin-bottom:16px}.paper article ul{list-style:disc;padding-left:18px;margin-top:4px}.paper article li{margin:2px 0}.sk{display:grid;gap:5px}.sk li{padding-left:14px;position:relative}.sk li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;background:var(--acc)}
@media (max-width:640px){.rg{grid-template-columns:1fr}.rc{text-align:left}.rh h1{font-size:34px}}
@media print{@page{size:A4;margin:12mm}.resumepage{background:#fff}.rbar{display:none}.paper{box-shadow:none;margin:0;max-width:none;padding:0;font-size:12.5px}.rh h1{font-size:34px}.rg{grid-template-columns:1.8fr 1fr}.paper section,.paper article{break-inside:avoid}a{text-decoration:none}-webkit-print-color-adjust:exact}
