:root{--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-head:"Space Grotesk", "Inter", -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--max:1100px;--narrow:760px;--radius:16px;--accent:#ff7a3d;--accent-2:#38bdf8;--grad:linear-gradient(120deg, var(--accent) 0%, #ffb347 45%, var(--accent-2) 100%);--ease:cubic-bezier(.2,.7,.2,1)}:root,[data-theme=light]{color-scheme:light;--bg:#f6f6fa;--bg-2:#fff;--bg-glass:#ffffffb8;--text:#0f1220;--muted:#5b6070;--line:#0f12201a;--line-strong:#0f12202e;--chip:#0f12200d;--glow-1:#ff7a3d38;--glow-2:#38bdf833;--grid:#0f12200f;--shadow:0 20px 50px -20px #0f122040}[data-theme=dark]{color-scheme:dark;--bg:#0a0d16;--bg-2:#10141f;--bg-glass:#0a0d16a6;--text:#eef0f6;--muted:#9aa1b4;--line:#ffffff14;--line-strong:#ffffff29;--chip:#ffffff0f;--glow-1:#ff7a3d47;--glow-2:#38bdf838;--grid:#ffffff0b;--shadow:0 30px 60px -25px #000000b3}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:17px;line-height:1.65;transition:background .3s,color .3s;overflow-x:hidden}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}h1,h2,h3{font-family:var(--font-head);letter-spacing:-.02em;margin:0 0 .5rem;line-height:1.15}h1{font-size:2.6rem}h2{margin-top:2.5rem;font-size:1.9rem}h3{font-size:1.15rem}p{margin:0 0 1rem}ul{padding-left:1.2rem}li{margin-bottom:.4rem}.muted{color:var(--muted)}.small{font-size:.9rem}.grad-text{background:var(--grad);color:#0000;-webkit-background-clip:text;background-clip:text}.skip{background:var(--accent);color:#fff;z-index:50;padding:.5rem 1rem;position:absolute;top:0;left:-999px}.skip:focus{left:1rem}.wrap{max-width:var(--narrow);margin:0 auto;padding:0 1.25rem}.wrap.wide{max-width:var(--max)}.bg{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bg:before{content:"";background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 60% at 50% 0,#000 30%,#0000 100%);mask-image:radial-gradient(80% 60% at 50% 0,#000 30%,#0000 100%)}.blob{filter:blur(70px);opacity:.9;will-change:transform;border-radius:50%;position:absolute}.blob.a{background:var(--glow-1);width:520px;height:520px;animation:drift 18s var(--ease) infinite alternate;top:-160px;right:-120px}.blob.b{background:var(--glow-2);width:460px;height:460px;animation:drift 22s var(--ease) infinite alternate-reverse;top:30vh;left:-200px}@keyframes drift{0%{transform:translate(0)scale(1)}to{transform:translate(60px,80px)scale(1.15)}}header.site{z-index:20;background:var(--bg-glass);-webkit-backdrop-filter:blur(14px)saturate(1.4);border-bottom:1px solid var(--line);position:sticky;top:0}header.site .wrap{justify-content:space-between;align-items:center;gap:1rem;height:64px;display:flex}.brand{font-family:var(--font-head);color:var(--text);letter-spacing:-.01em;align-items:center;gap:.55rem;font-size:1.1rem;font-weight:700;display:flex}.brand:hover{text-decoration:none}.brand .dot{background:var(--grad);width:10px;height:10px;box-shadow:0 0 14px var(--accent);border-radius:50%}.nav-right{align-items:center;gap:.75rem;display:flex}nav ul{gap:.15rem;margin:0;padding:0;list-style:none;display:flex}nav li{margin:0}nav a{color:var(--muted);border-radius:8px;padding:.45rem .7rem;font-size:.92rem;font-weight:500;transition:color .2s,background .2s;position:relative}nav a:hover{color:var(--text);background:var(--chip);text-decoration:none}nav a[aria-current=page]{color:var(--text)}nav a[aria-current=page]:after{content:"";background:var(--grad);border-radius:2px;height:2px;position:absolute;bottom:.2rem;left:.7rem;right:.7rem}.icon-btn{border:1px solid var(--line);background:var(--chip);width:38px;height:38px;color:var(--text);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;transition:transform .2s,border-color .2s;display:inline-flex}.icon-btn:hover{border-color:var(--line-strong);transform:translateY(-1px)}.icon-btn svg{width:18px;height:18px}[data-theme=dark] .sun,[data-theme=light] .moon,.burger{display:none}@media (width<=860px){.burger{display:inline-flex}nav{background:var(--bg-glass);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;position:absolute;top:64px;left:0;right:0;transform:translateY(-8px)}nav.open{opacity:1;pointer-events:auto;transform:none}nav ul{flex-direction:column;gap:.2rem;padding:.75rem 1.25rem 1rem}nav a{padding:.7rem .8rem;font-size:1.05rem;display:block}nav a[aria-current=page]:after{display:none}nav a[aria-current=page]{background:var(--chip)}}main{padding:2.5rem 0 5rem}footer.site{border-top:1px solid var(--line);color:var(--muted);padding:2rem 0 3rem;font-size:.9rem}footer.site .wrap{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}footer.site a{color:var(--muted);margin-left:1.1rem}footer.site a:hover{color:var(--text);text-decoration:none}.reveal{opacity:0;transition:opacity .7s var(--ease), transform .7s var(--ease);transform:translateY(22px)}.reveal.in{opacity:1;transform:none}.reveal[data-delay="1"]{transition-delay:.1s}.reveal[data-delay="2"]{transition-delay:.2s}.reveal[data-delay="3"]{transition-delay:.3s}.reveal[data-delay="4"]{transition-delay:.4s}.reveal[data-delay="5"]{transition-delay:.5s}.page-head{margin-bottom:2rem}.page-head h1{font-size:clamp(2.2rem,5vw,3rem)}.page-head .kicker{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:.6rem;font-size:.8rem}.hero{grid-template-columns:1.15fr 1fr;align-items:center;gap:3rem;min-height:min(72vh,640px);padding:2.5rem 0 3rem;display:grid}.hero .eyebrow{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);border:1px solid var(--line-strong);background:var(--bg-glass);border-radius:999px;align-items:center;gap:.5rem;padding:.4rem .8rem;font-size:.78rem;display:inline-flex}.hero .eyebrow:before{content:"";background:#22c55e;border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 10px #22c55e}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.hero h1{margin:1rem 0;font-size:clamp(2.8rem,6.5vw,4.6rem);line-height:1.05}.hero .tagline{color:var(--muted);max-width:36ch;margin-bottom:.5rem;font-size:1.3rem}.hero .loc{font-family:var(--font-mono);color:var(--muted);font-size:.85rem}.cta{flex-wrap:wrap;gap:.75rem;margin-top:1.75rem;display:flex}.btn{border:1px solid var(--line-strong);color:var(--text);background:var(--bg-glass);transition:transform .2s var(--ease), box-shadow .2s, border-color .2s;border-radius:12px;align-items:center;gap:.4rem;padding:.75rem 1.3rem;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-2px)}.btn.primary{background:var(--grad);color:#0a0d16;box-shadow:0 10px 30px -10px var(--accent);border:none}.btn.primary:hover{box-shadow:0 14px 34px -10px var(--accent)}.socials{gap:.6rem;margin-top:1.6rem;display:flex}.socials a{border:1px solid var(--line);background:var(--chip);width:40px;height:40px;color:var(--muted);border-radius:10px;justify-content:center;align-items:center;transition:all .2s;display:inline-flex}.socials a:hover{color:var(--text);border-color:var(--accent);text-decoration:none;transform:translateY(-2px)}.socials svg{width:18px;height:18px}.photo-wrap{aspect-ratio:4/5;justify-self:end;width:min(100%,400px);animation:7s ease-in-out infinite float;position:relative}.photo-wrap:before{content:"";background:conic-gradient(from var(--angle,0deg), var(--accent), var(--accent-2), #ffb347, var(--accent));z-index:0;border-radius:22px;animation:9s linear infinite spin;position:absolute;inset:-3px}.photo-wrap:after{content:"";background:var(--glow-1);filter:blur(50px);z-index:-1;border-radius:50%;position:absolute;inset:-40px}.photo-wrap img{z-index:1;object-fit:cover;width:100%;height:100%;box-shadow:var(--shadow);border-radius:20px;position:relative}@property --angle{syntax:"<angle>";inherits:false;initial-value:0deg}@keyframes spin{to{--angle:360deg}}@keyframes float{0%,to{transform:translateY(0)rotate(1.2deg)}50%{transform:translateY(-12px)rotate(-.6deg)}}@media (width<=800px){.hero{text-align:center;grid-template-columns:1fr;gap:2.5rem;min-height:0;padding-top:2rem}.photo-wrap{order:-1;justify-self:center;width:min(75%,280px)}.hero .tagline{margin-inline:auto}.cta,.socials{justify-content:center}}.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);transition:transform .25s var(--ease), box-shadow .25s, border-color .25s;margin-bottom:1.25rem;padding:1.5rem 1.6rem;position:relative;overflow:hidden}.card:before{content:"";pointer-events:none;opacity:0;background:radial-gradient(380px circle at var(--mx,50%) var(--my,50%), var(--glow-1), transparent 60%);transition:opacity .3s;position:absolute;inset:0}.card:hover{box-shadow:var(--shadow);border-color:var(--line-strong);transform:translateY(-4px)}.card:hover:before{opacity:1}.card>*{position:relative}.card.featured{background:linear-gradient(var(--bg-2), var(--bg-2)) padding-box, var(--grad) border-box;border-color:#0000}.card h3{margin-bottom:.15rem;font-size:1.35rem}.card .sub{color:var(--muted);font-family:var(--font-mono);margin-bottom:.9rem;font-size:.85rem}.badge{text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;font-weight:700;font-family:var(--font-mono);color:#0a0d16;background:var(--grad);vertical-align:middle;border-radius:999px;margin-left:.5rem;padding:.2rem .55rem;display:inline-block}.badge.soft{background:var(--chip);color:var(--muted)}.chips{flex-wrap:wrap;gap:.45rem;margin:.9rem 0 0;padding:0;list-style:none;display:flex}.chips li{background:var(--chip);border:1px solid var(--line);border-radius:999px;margin:0;padding:.25rem .7rem;font-size:.83rem;transition:border-color .2s,transform .2s}.chips li:hover{border-color:var(--accent);transform:translateY(-1px)}.metrics{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;margin:1.1rem 0 .4rem;display:grid}.metric{border-left:2px solid var(--accent);padding:.2rem .8rem}.metric .v{font-size:1.5rem;font-weight:700;font-family:var(--font-mono);letter-spacing:-.02em}.metric .l{color:var(--muted);font-size:.82rem;line-height:1.3}.links{gap:1.2rem;margin-top:1rem;font-weight:600;display:flex}.links a{align-items:center;gap:.35rem;display:inline-flex}.links a:after{content:"→";transition:transform .2s}.links a:hover{text-decoration:none}.links a:hover:after{transform:translate(4px)}.timeline{margin:0;padding:0;list-style:none;position:relative}.timeline:before{content:"";background:linear-gradient(var(--accent), var(--accent-2), transparent);width:2px;position:absolute;top:8px;bottom:8px;left:7px}.timeline>li{margin:0;padding:0 0 2.2rem 2.2rem;position:relative}.timeline>li:before{content:"";background:var(--bg);border:3px solid var(--accent);width:16px;height:16px;box-shadow:0 0 0 4px var(--bg), 0 0 18px var(--glow-1);border-radius:50%;transition:transform .2s;position:absolute;top:.5rem;left:0}.timeline>li:hover:before{transform:scale(1.25)}.timeline .period{color:var(--accent);font-size:.8rem;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.timeline h3{margin:.2rem 0 .1rem;font-size:1.25rem}.timeline .org{color:var(--muted)}.timeline ul{margin-top:.6rem}.skills{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem;display:grid}.skills .card{margin:0;padding:1.25rem 1.4rem}.skills h3{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin-bottom:.2rem;font-size:.78rem}.skills .chips{margin-top:.6rem}.cv-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.25rem;display:grid}.cv-card{color:var(--text);flex-direction:column;gap:.5rem;min-height:190px;padding:1.75rem;display:flex}.cv-card:hover{text-decoration:none}.cv-card .ico{background:var(--grad);color:#0a0d16;border-radius:12px;place-items:center;width:42px;height:42px;margin-bottom:.5rem;display:grid}.cv-card .ico svg{width:22px;height:22px}.cv-card strong{font-family:var(--font-head);font-size:1.3rem}.cv-card .small{color:var(--muted);flex:1}.cv-card .dl{color:var(--accent);font-weight:600}.contact{gap:1rem;padding:0;list-style:none;display:grid}.contact li{margin:0}.contact a.card{color:var(--text);align-items:center;gap:1.2rem;margin:0;display:flex}.contact a.card:hover{text-decoration:none}.contact .ico{background:var(--chip);border:1px solid var(--line);width:48px;height:48px;color:var(--accent);border-radius:12px;flex-shrink:0;place-items:center;display:grid}.contact .ico svg{width:22px;height:22px}.contact .lbl{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:.75rem}.contact .val{font-size:1.05rem;font-weight:600}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}
