:root{
  --navy:#0b1426; --navy-2:#111c33; --char:#1b2438; --line:#26324c;
  --ink:#e8edf7; --mute:#9aa7c0; --paper:#f5f7fb;
  --accent:#2ee6c5; --accent-2:#ffb454;
  --r:16px; --ease:cubic-bezier(.2,.7,.2,1);
  --display:"Space Grotesk",system-ui,sans-serif; --body:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:72px}
body{background:var(--navy);color:var(--ink);font:400 16px/1.7 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
img{display:block;max-width:100%}
.wrap{width:min(1120px,100% - 40px);margin-inline:auto}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}

/* nav */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;display:flex;align-items:center;gap:24px;padding:14px max(20px,calc((100% - 1120px)/2));transition:background .3s,box-shadow .3s}
.nav.scrolled{background:rgba(11,20,38,.85);backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--line)}
.logo{font:700 22px var(--display);letter-spacing:.02em;margin-right:auto}
.logo span{color:var(--accent)}
.links{display:flex;gap:26px;font-size:14px;font-weight:500;color:var(--mute)}
.links a{position:relative;padding:4px 0;transition:color .2s}
.links a::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.links a:hover,.links a.active{color:var(--ink)}
.links a:hover::after,.links a.active::after{transform:scaleX(1)}
.lang{display:flex;background:var(--char);border:1px solid var(--line);border-radius:999px;padding:3px}
.lang button{font:600 12px var(--body);letter-spacing:.06em;color:var(--mute);background:none;border:0;border-radius:999px;padding:6px 12px;cursor:pointer;transition:all .25s var(--ease)}
.lang button[aria-pressed="true"]{background:var(--accent);color:var(--navy)}
.lang button:not([aria-pressed="true"]):hover{color:var(--ink)}
.burger{display:none;background:none;border:0;width:32px;height:32px;cursor:pointer;position:relative}
.burger i{position:absolute;left:5px;right:5px;height:2px;background:var(--ink);transition:transform .3s var(--ease)}
.burger i:first-child{top:12px}.burger i:last-child{top:19px}
.burger[aria-expanded="true"] i:first-child{transform:translateY(3.5px) rotate(45deg)}
.burger[aria-expanded="true"] i:last-child{transform:translateY(-3.5px) rotate(-45deg)}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;padding:110px 0 70px;overflow:hidden}
.hero-bg{position:absolute;inset:0;background:
  radial-gradient(600px 400px at 85% 25%,rgba(46,230,197,.14),transparent 70%),
  radial-gradient(500px 400px at 10% 90%,rgba(255,180,84,.08),transparent 70%),
  linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px) 0 0/48px 48px,
  linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px) 0 0/48px 48px;
  mask-image:linear-gradient(#000 60%,transparent)}
.hero-grid{position:relative;display:grid;grid-template-columns:1.25fr .75fr;gap:56px;align-items:center}
.eyebrow{color:var(--accent);font:600 13px var(--body);letter-spacing:.18em;text-transform:uppercase;margin-bottom:14px}
h1{font:700 clamp(40px,6.4vw,76px)/1.04 var(--display);letter-spacing:-.025em}
h1 em{font-style:normal;color:var(--accent)}
.role{font:500 clamp(18px,2.2vw,24px) var(--display);margin-top:18px;color:var(--ink)}
.tagline{color:var(--mute);max-width:560px;margin-top:14px;font-size:17px}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:13px 24px;border-radius:999px;font:600 15px var(--body);transition:transform .25s var(--ease),box-shadow .25s,background .25s,border-color .25s}
.btn.primary{background:var(--accent);color:var(--navy)}
.btn.primary:hover{transform:translateY(-2px);box-shadow:0 10px 28px -8px rgba(46,230,197,.6)}
.btn.ghost{border:1px solid var(--line);color:var(--ink)}
.btn.ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}
.stats{display:flex;gap:36px;margin-top:44px;padding-top:26px;border-top:1px solid var(--line);max-width:520px}
.stats li{display:flex;flex-direction:column}
.stats b{font:700 30px var(--display);color:var(--ink)}
.stats span{font-size:13px;color:var(--mute);line-height:1.4}
.photo{position:relative;justify-self:center;width:min(100%,360px)}
.photo-frame{aspect-ratio:1;border-radius:28px;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:0 30px 60px -20px rgba(0,0,0,.6);transform:rotate(2deg);transition:transform .5s var(--ease)}
.photo:hover .photo-frame{transform:rotate(0)}
.photo-frame img{width:100%;height:100%;object-fit:cover}
.photo::before{content:"";position:absolute;inset:18px -18px -18px 18px;border:2px solid var(--accent);border-radius:28px;opacity:.55;z-index:-1;transition:transform .5s var(--ease)}
.photo:hover::before{transform:translate(-6px,-6px)}
.chip{position:absolute;background:var(--char);border:1px solid var(--line);border-radius:999px;padding:7px 14px;font:600 12px var(--body);box-shadow:0 10px 24px -8px rgba(0,0,0,.5);animation:float 5s ease-in-out infinite}
.chip.c1{left:-26px;top:14%}
.chip.c2{right:-18px;bottom:12%;animation-delay:-2.5s;color:var(--accent-2)}
@keyframes float{50%{transform:translateY(-8px)}}

/* sections */
.sec{padding:100px 0}
.sec.alt{background:var(--navy-2)}
.sec-title{display:flex;align-items:baseline;gap:16px;margin-bottom:48px}
.sec-title span{font:600 14px var(--display);color:var(--accent)}
.sec-title b{font:700 clamp(30px,4vw,44px) var(--display);letter-spacing:-.02em}
.sec-title::after{content:"";flex:1;height:1px;background:var(--line);align-self:center}

.about-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:48px}
.about-text p{color:#c5cee1;margin-bottom:18px}
.about-text p:first-child{font-size:20px;line-height:1.55;color:var(--ink)}
.top-skills{background:var(--char);border:1px solid var(--line);border-radius:var(--r);padding:28px;align-self:start}
.top-skills h3{font:600 13px var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:16px}
.top-skills ol{counter-reset:s}
.top-skills li{counter-increment:s;display:flex;gap:14px;padding:11px 0;border-bottom:1px solid var(--line);font-weight:500;transition:transform .25s var(--ease),color .2s}
.top-skills li:hover{transform:translateX(6px);color:var(--accent)}
.top-skills li::before{content:"0" counter(s);font:600 13px var(--display);color:var(--mute);padding-top:2px}
.beyond{margin-top:18px;font-size:14px;color:var(--mute)}

/* timeline */
.timeline{position:relative;display:grid;gap:28px}
.timeline::before{content:"";position:absolute;left:218px;top:8px;bottom:8px;width:2px;background:linear-gradient(var(--accent),var(--line) 40%)}
.job{display:grid;grid-template-columns:200px 1fr;gap:38px;position:relative}
.job::before{content:"";position:absolute;left:211px;top:10px;width:16px;height:16px;border-radius:50%;background:var(--navy-2);border:3px solid var(--accent);transition:transform .3s var(--ease),background .3s}
.job:hover::before{transform:scale(1.3);background:var(--accent)}
.when{text-align:right;padding-top:4px}
.when span{display:block;font:600 15px var(--display)}
.when small{display:block;color:var(--mute);font-size:13px}
.card{background:var(--char);border:1px solid var(--line);border-radius:var(--r);padding:26px 28px;margin-left:12px;transition:transform .3s var(--ease),border-color .3s,box-shadow .3s}
.card:hover{transform:translateY(-4px);border-color:rgba(46,230,197,.5);box-shadow:0 18px 40px -20px rgba(0,0,0,.7)}
.card h3{font:600 20px/1.3 var(--display)}
.org{color:var(--accent);font-weight:500;font-size:15px;margin-top:2px}
.lead{color:#c5cee1;margin-top:12px;font-size:15px}
.card ul{margin-top:14px;display:grid;gap:9px}
.card li{position:relative;padding-left:20px;font-size:15px;color:#c5cee1}
.card li::before{content:"";position:absolute;left:0;top:.7em;width:8px;height:2px;background:var(--accent)}

/* skills */
.skill-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.skill-card{background:var(--char);border:1px solid var(--line);border-radius:var(--r);padding:28px;transition:transform .3s var(--ease),border-color .3s}
.skill-card:hover{transform:translateY(-4px);border-color:rgba(46,230,197,.5)}
.skill-card h3{font:600 18px var(--display);margin-bottom:18px}
.tags{display:flex;flex-wrap:wrap;gap:9px}
.tags li{padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--navy-2);font-size:14px;color:#c5cee1;transition:all .2s}
.tags li:hover{border-color:var(--accent);color:var(--accent);background:rgba(46,230,197,.08)}

/* education */
.edu-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:22px}
.edu{background:var(--char);border:1px solid var(--line);border-radius:var(--r);padding:30px;border-top:3px solid var(--accent);transition:transform .3s var(--ease)}
.edu:hover{transform:translateY(-4px)}
.edu:nth-child(2){border-top-color:var(--accent-2)}
.edu .when{text-align:left;color:var(--mute);font-size:13px;letter-spacing:.06em;padding:0}
.edu h3{font:600 21px/1.3 var(--display);margin:6px 0}
.deg{color:var(--accent);font-weight:500}
.edu:nth-child(2) .deg{color:var(--accent-2)}
.gpa{margin:8px 0;color:var(--mute)}.gpa b{color:var(--ink);font-size:18px}
.edu p:last-child{margin-top:10px;color:#c5cee1;font-size:15px}

/* contact */
.contact{display:grid;grid-template-columns:1.1fr 1fr;gap:48px;background:linear-gradient(135deg,var(--char),var(--navy-2));border:1px solid var(--line);border-radius:24px;padding:48px}
.contact h3{font:700 clamp(24px,3vw,32px)/1.2 var(--display);margin-bottom:12px}
.contact p{color:#c5cee1;margin-bottom:24px}
.ct-list{display:grid;gap:4px;align-content:center}
.ct-list li{display:flex;flex-direction:column;padding:14px 0;border-bottom:1px solid var(--line)}
.ct-list li:last-child{border:0}
.ct-list span{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute)}
.ct-list a,.ct-list em{font-style:normal;font-weight:500;word-break:break-word;transition:color .2s}
.ct-list a:hover{color:var(--accent)}
.foot{display:flex;justify-content:space-between;gap:12px;padding:28px max(20px,calc((100% - 1120px)/2));border-top:1px solid var(--line);color:var(--mute);font-size:14px}
.foot a:hover{color:var(--accent)}

/* reveal */
.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s var(--ease),transform .7s var(--ease);transition-delay:var(--d,0s)}
.js .reveal.in{opacity:1;transform:none}
.js .photo.reveal.in{transform:none}

/* responsive */
@media (max-width:900px){
  .hero-grid,.about-grid,.contact,.skill-grid,.edu-grid{grid-template-columns:1fr}
  .hero{padding-top:100px}
  .photo{order:-1;width:min(70%,260px);justify-self:start;margin-bottom:8px}
  .chip.c1{left:auto;right:-10px;top:6%}.chip.c2{right:auto;left:-6px;bottom:6%}
  .timeline::before{left:7px}
  .job{grid-template-columns:1fr;gap:8px;padding-left:34px}
  .job::before{left:0;top:6px}
  .when{text-align:left;display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
  .card{margin-left:0;padding:22px}
  .contact{padding:30px 24px;gap:28px}
  .sec{padding:72px 0}
  .burger{display:block}
  .links{position:fixed;inset:60px 0 auto 0;flex-direction:column;gap:0;background:rgba(11,20,38,.97);padding:8px 20px 18px;border-bottom:1px solid var(--line);transform:translateY(-130%);transition:transform .35s var(--ease)}
  .links.open{transform:none}
  .links a{padding:14px 0;border-bottom:1px solid var(--line);font-size:16px}
  .links a::after{display:none}
  .lang{margin-left:auto}.logo{margin-right:0}
}
@media (max-width:480px){
  .stats{gap:22px}.stats b{font-size:24px}
  .foot{flex-direction:column}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .js .reveal{opacity:1;transform:none}
}
