:root{
  --bg:#07080a; --bg2:#0c0e11; --panel:#0f1215; --line:#1c2026; --line2:#2a3038;
  --ink:#eceff2; --dim:#8b939e; --faint:#737b86;
  --acc:#c6ff3d; --acc-d:rgba(198,255,61,.12); --blue:#6aa8ff;
  --sans:"Geist",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --w:1120px; --gut:24px; --ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:72px}
body{background:var(--bg);color:var(--ink);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden;min-height:100vh}
::selection{background:var(--acc);color:#000}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px;border-radius:6px}
.mono{font-family:var(--mono)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.wrap{max-width:var(--w);margin:0 auto;padding:0 max(var(--gut),env(safe-area-inset-left)) 0 max(var(--gut),env(safe-area-inset-right));position:relative}
.skip{position:absolute;left:12px;top:-60px;z-index:99;background:var(--acc);color:#000;padding:8px 14px;border-radius:8px;font-size:14px;text-decoration:none}
.skip:focus{top:12px}

/* background */
#field{position:fixed;inset:0;z-index:0;pointer-events:none}
.glow{position:fixed;inset:0;z-index:0;pointer-events:none;background:
  radial-gradient(900px 500px at 85% -10%,rgba(198,255,61,.08),transparent 60%),
  radial-gradient(700px 500px at -10% 30%,rgba(106,168,255,.06),transparent 60%)}
.page{position:relative;z-index:1}

/* bar */
.bar{position:sticky;top:0;z-index:30;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);background:rgba(7,8,10,.72);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}
.bar .wrap{display:flex;align-items:center;justify-content:space-between;height:56px;gap:16px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:var(--mono);font-size:13px}
.brand b{display:grid;place-items:center;width:28px;height:28px;border:1px solid var(--line2);border-radius:7px;color:var(--acc);font-weight:500;font-size:11px;transition:transform .5s var(--ease),border-color .3s}
.brand:hover b{transform:rotate(-8deg) scale(1.06);border-color:var(--acc)}
.status{display:flex;gap:18px;font-family:var(--mono);font-size:12px;color:var(--dim);white-space:nowrap}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--acc);margin-right:7px;animation:ping 2.4s infinite}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(198,255,61,.5)}70%{box-shadow:0 0 0 7px rgba(198,255,61,0)}100%{box-shadow:0 0 0 0 rgba(198,255,61,0)}}
.bar nav{display:flex;gap:2px;align-items:center}
.bar nav a{font-family:var(--mono);font-size:12px;color:var(--dim);text-decoration:none;padding:6px 10px;border-radius:6px;transition:color .2s,background .2s}
.bar nav a:hover,.bar nav a.on{color:var(--ink);background:var(--panel)}
.bar nav a.on{color:var(--acc)}
.kbd{font-family:var(--mono);font-size:11px;color:var(--dim);border:1px solid var(--line2);border-radius:6px;padding:5px 9px;background:var(--bg2);margin-left:6px}
.kbd:hover{color:var(--ink);border-color:var(--faint)}
.burger{display:none;width:40px;height:40px;border:1px solid var(--line2);border-radius:10px;place-items:center;background:var(--bg2)}
.burger i{display:block;width:16px;height:1.5px;background:var(--ink);position:relative;transition:transform .3s var(--ease),background .2s}
.burger i::before,.burger i::after{content:"";position:absolute;left:0;width:16px;height:1.5px;background:var(--ink);transition:transform .3s var(--ease),top .3s var(--ease)}
.burger i::before{top:-5px}.burger i::after{top:5px}
.menu-open .burger i{background:transparent}
.menu-open .burger i::before{top:0;transform:rotate(45deg)}
.menu-open .burger i::after{top:0;transform:rotate(-45deg)}
#progress{position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--acc);transform-origin:0 50%;transform:scaleX(0)}

/* mobile menu */
.mnav{position:fixed;inset:0;z-index:25;background:rgba(7,8,10,.96);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:calc(90px + env(safe-area-inset-top)) var(--gut) 32px;display:flex;flex-direction:column;opacity:0;visibility:hidden;transition:opacity .35s var(--ease),visibility .35s}
.menu-open .mnav{opacity:1;visibility:visible}
.mnav a{display:flex;align-items:baseline;gap:14px;font-size:clamp(34px,10vw,48px);font-weight:600;letter-spacing:-.035em;text-decoration:none;padding:6px 0;border-bottom:1px solid var(--line);transform:translateY(24px);opacity:0;transition:transform .5s var(--ease),opacity .5s var(--ease)}
.mnav a span{font-family:var(--mono);font-size:12px;color:var(--acc);font-weight:400;letter-spacing:0}
.menu-open .mnav a{transform:none;opacity:1}
.mnav a:nth-child(2){transition-delay:.04s}.mnav a:nth-child(3){transition-delay:.08s}.mnav a:nth-child(4){transition-delay:.12s}.mnav a:nth-child(5){transition-delay:.16s}
.mnav .foot{margin-top:auto;display:grid;gap:10px;font-family:var(--mono);font-size:13px;color:var(--dim)}

/* hero */
.hero{min-height:calc(100vh - 56px);min-height:calc(100svh - 56px);display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:56px;align-items:center;padding:64px 0}
.hero-l{container-type:inline-size}
.eyebrow{font-family:var(--mono);font-size:12px;color:var(--acc);letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:24px;height:1px;background:var(--acc);transform-origin:0 50%}
.hero h1{margin-top:22px;font-weight:600;font-size:clamp(38px,12vw,96px);font-size:clamp(36px,15cqi,108px);line-height:.94;letter-spacing:-.045em}
.hero h1 .w{display:block;white-space:nowrap}
.hero h1 .w2{color:#aab1ba}
.ch{display:inline-block;will-change:transform}
.js .hero h1 .ch{opacity:0;transform:translateY(.55em) rotate(4deg);filter:blur(8px)}
.js .hero.go h1 .ch{animation:chIn .9s var(--ease) forwards;animation-delay:calc(var(--i) * 32ms + 120ms)}
@keyframes chIn{to{opacity:1;transform:none;filter:blur(0)}}
.lede{margin-top:28px;font-size:clamp(16px,1.6vw,18px);line-height:1.6;color:var(--dim);max-width:540px}
.lede strong{color:var(--ink);font-weight:500}
.typed-l{display:block;margin-top:6px;min-height:1.6em}
.typed{font-family:var(--mono);color:var(--acc)}
.caret{display:inline-block;width:.55em;height:1.05em;background:var(--acc);vertical-align:-2px;margin-left:2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.cta{margin-top:36px;display:flex;flex-wrap:wrap;gap:12px}
.btn{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:0 18px;border-radius:10px;font-size:14px;font-weight:500;text-decoration:none;border:1px solid var(--line2);background:var(--panel);transition:border-color .2s,background .2s,box-shadow .3s;position:relative;will-change:transform}
.btn:hover{border-color:var(--faint)}
.btn.p{background:var(--acc);color:#0a0c00;border-color:var(--acc)}
.btn.p:hover{box-shadow:0 10px 40px -8px rgba(198,255,61,.55)}
.btn .mono{font-size:11px;opacity:.6}
.btn .ar{display:inline-block;transition:transform .3s var(--ease)}
.btn:hover .ar{transform:translate(2px,-2px)}

/* terminal */
.term{border:1px solid var(--line2);border-radius:14px;background:linear-gradient(180deg,rgba(15,18,21,.94),rgba(10,12,14,.94));box-shadow:0 30px 80px -30px rgba(0,0,0,.8);overflow:hidden;font-family:var(--mono);font-size:13px;position:relative;will-change:transform}
.term::before{content:"";position:absolute;inset:-1px;border-radius:14px;padding:1px;background:conic-gradient(from var(--a,0deg),transparent 0 70%,rgba(198,255,61,.55) 85%,transparent);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:spin 6s linear infinite;pointer-events:none}
@property --a{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes spin{to{--a:360deg}}
.term-h{display:flex;align-items:center;gap:7px;padding:12px 14px;border-bottom:1px solid var(--line)}
.term-h i{width:10px;height:10px;border-radius:50%;background:var(--line2)}
.term-h i:nth-child(1){background:#3a2a2a}.term-h i:nth-child(2){background:#3a372a}.term-h i:nth-child(3){background:#2d3a2a}
.term-h span{margin-left:10px;color:var(--faint);font-size:12px}
.term-b{padding:18px 18px 20px;line-height:1.75}
.term-b .c{color:var(--acc)}
.term-b .k{color:var(--blue)}
.term-b .d{color:var(--dim)}
.term-b .r{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px}
.js .term-b .r,.js .term-b .end{opacity:0;transform:translateX(-6px);transition:opacity .35s,transform .35s var(--ease)}
.js .term-b .r.on,.js .term-b .end.on{opacity:1;transform:none}

/* metrics */
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--bg2)}
.metric{padding:28px 24px;border-right:1px solid var(--line);position:relative;overflow:hidden}
.metric:last-child{border-right:0}
.metric::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;background:var(--acc);transform:scaleX(0);transform-origin:0 50%;transition:transform 1.4s var(--ease)}
.metrics.in .metric::after{transform:scaleX(1)}
.metric:nth-child(2)::after{transition-delay:.12s}.metric:nth-child(3)::after{transition-delay:.24s}.metric:nth-child(4)::after{transition-delay:.36s}
.metric .n{font-size:clamp(34px,4vw,44px);font-weight:600;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.metric .n small{font-size:.5em;color:var(--acc);margin-left:2px}
.metric .l{margin-top:10px;font-family:var(--mono);font-size:11.5px;color:var(--dim);text-transform:uppercase;letter-spacing:.05em;line-height:1.5}

/* marquee */
.marq{margin-top:88px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;padding:18px 0;-webkit-mask:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.marq-t{display:flex;gap:0;width:max-content;animation:mq 42s linear infinite}
.marq-t.rev{animation-direction:reverse;animation-duration:50s;margin-top:10px}
.marq:hover .marq-t{animation-play-state:paused}
.marq-t span{font-size:clamp(20px,3vw,34px);font-weight:600;letter-spacing:-.03em;color:var(--line2);padding:0 22px;white-space:nowrap;transition:color .3s}
.marq-t span:hover{color:var(--ink)}
.marq-t span.a{color:var(--faint)}
.marq-t span::after{content:"✦";font-size:.45em;color:var(--acc);margin-left:44px;vertical-align:.35em;opacity:.6}
@keyframes mq{to{transform:translateX(-50%)}}

/* sections */
section{padding:112px 0;border-top:1px solid var(--line)}
.sh{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;margin-bottom:56px;align-items:end}
.idx{font-family:var(--mono);font-size:12px;color:var(--faint)}
.idx b{color:var(--acc);font-weight:500}
.sh h2{font-size:clamp(32px,4.4vw,52px);font-weight:600;letter-spacing:-.035em;line-height:1.05;overflow:hidden;padding-bottom:.08em}
.sh h2 .m{display:inline-block}
.js .sh h2 .m{transform:translateY(105%);transition:transform 1s var(--ease)}
.js .sh.in h2 .m{transform:none}
.sh p{grid-column:2;color:var(--dim);max-width:560px;margin-top:-8px}

/* timeline */
.tl{position:relative;padding-left:0}
.tl-track{position:absolute;left:196px;top:8px;bottom:8px;width:1px;background:var(--line)}
.tl-fill{position:absolute;left:0;top:0;width:1px;height:100%;background:linear-gradient(var(--acc),rgba(198,255,61,.2));transform-origin:0 0;transform:scaleY(0)}
.job{display:grid;grid-template-columns:220px minmax(0,1fr);gap:24px;padding:36px 0;border-top:1px solid var(--line);position:relative}
.job:first-of-type{border-top:0;padding-top:0}
.job::before{content:"";position:absolute;left:192px;top:43px;width:9px;height:9px;border-radius:50%;background:var(--bg);border:1px solid var(--line2);transition:background .4s,border-color .4s,box-shadow .4s;z-index:1}
.job:first-of-type::before{top:7px}
.job.lit::before{background:var(--acc);border-color:var(--acc);box-shadow:0 0 0 5px rgba(198,255,61,.12)}
.job .when{font-family:var(--mono);font-size:12.5px;color:var(--dim);padding-top:5px;padding-right:40px}
.job .when .now{display:inline-flex;align-items:center;margin-top:10px;font-size:11px;color:var(--acc);border:1px solid rgba(198,255,61,.3);background:var(--acc-d);border-radius:999px;padding:2px 9px}
.job h3{font-size:clamp(19px,2vw,22px);font-weight:600;letter-spacing:-.02em;line-height:1.25}
.job .org{color:var(--dim);margin-top:4px}
.job ul{list-style:none;margin-top:18px;display:grid;gap:10px}
.job li{position:relative;padding-left:22px;color:#c9ced5;font-size:15.5px}
.job li::before{content:"→";position:absolute;left:0;color:var(--faint);font-family:var(--mono);font-size:13px;top:1px}
.tags{margin-top:18px;display:flex;flex-wrap:wrap;gap:6px}
.tags span{font-family:var(--mono);font-size:11.5px;color:var(--dim);border:1px solid var(--line2);border-radius:6px;padding:3px 9px;background:var(--bg2)}
.markets{margin-top:18px;display:flex;flex-wrap:wrap;gap:6px}
.markets span{font-family:var(--mono);font-size:11px;width:36px;height:28px;display:grid;place-items:center;border:1px solid var(--line2);border-radius:6px;color:var(--ink);background:var(--bg2);transition:border-color .25s,color .25s,transform .25s var(--ease)}
.markets span:hover{border-color:var(--acc);color:var(--acc);transform:translateY(-2px)}
.js .markets span{opacity:0;transform:scale(.6)}
.js .job.in .markets span{animation:pop .5s var(--ease) forwards;animation-delay:calc(var(--i) * 45ms + 300ms)}
@keyframes pop{to{opacity:1;transform:none}}

/* stack */
.stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.mod{background:var(--bg2);padding:26px 24px;position:relative;overflow:hidden;transition:background .3s}
.mod:hover{background:var(--panel)}
.mod::after{content:"";position:absolute;inset:0;background:radial-gradient(320px 180px at var(--mx,50%) var(--my,0%),rgba(198,255,61,.09),transparent 70%);opacity:0;transition:opacity .3s;pointer-events:none}
.mod:hover::after{opacity:1}
.mod .h{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.mod h3{margin-top:14px;font-size:18px;font-weight:600;letter-spacing:-.015em}
.mod p{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px}
.mod p span{font-size:13.5px;color:#c9ced5;border:1px solid var(--line2);border-radius:6px;padding:3px 9px;transition:border-color .2s,color .2s}
.mod p span:hover{border-color:var(--faint);color:var(--ink)}
.mod p span.core{border-color:rgba(198,255,61,.4);color:var(--acc);background:var(--acc-d)}

/* research */
.papers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;perspective:1000px}
.paper{border:1px solid var(--line);border-radius:14px;background:var(--bg2);padding:28px;display:flex;flex-direction:column;transition:border-color .25s,transform .5s var(--ease);transform-style:preserve-3d;position:relative;overflow:hidden}
.paper::before{content:"";position:absolute;inset:0;background:radial-gradient(400px 200px at var(--mx,50%) var(--my,0%),rgba(255,255,255,.05),transparent 70%);opacity:0;transition:opacity .3s;pointer-events:none}
.paper:hover{border-color:var(--line2)}
.paper:hover::before{opacity:1}
.paper .j{font-family:var(--mono);font-size:11.5px;color:var(--dim);display:flex;justify-content:space-between;gap:12px;text-transform:uppercase;letter-spacing:.04em}
.paper .j b{color:var(--acc);font-weight:500;white-space:nowrap}
.paper h3{margin-top:18px;font-size:clamp(19px,2vw,21px);font-weight:600;letter-spacing:-.02em;line-height:1.25}
.paper p{margin-top:10px;color:var(--dim);font-size:15px}
.paper .big{margin-top:auto;padding-top:26px;display:flex;align-items:baseline;gap:12px}
.paper .big .n{font-size:clamp(40px,5vw,52px);font-weight:600;letter-spacing:-.04em;line-height:1;color:var(--acc);font-variant-numeric:tabular-nums}
.paper .big .l{font-family:var(--mono);font-size:11.5px;color:var(--dim);line-height:1.4}
.talks{margin-top:16px;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.talk{display:grid;grid-template-columns:200px minmax(0,1fr) auto;gap:20px;padding:20px 24px;align-items:center;background:var(--bg2);transition:background .25s}
.talk:hover{background:var(--panel)}
.talk + .talk{border-top:1px solid var(--line)}
.talk .w{font-family:var(--mono);font-size:12px;color:var(--dim)}
.talk h3{font-size:16px;font-weight:500;line-height:1.4}
.talk .t{font-family:var(--mono);font-size:11px;color:var(--blue);border:1px solid rgba(106,168,255,.3);border-radius:999px;padding:2px 10px;white-space:nowrap}

/* edu */
.edu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.edu > div{border:1px solid var(--line);border-radius:14px;padding:24px;background:var(--bg2)}
.edu .y{font-family:var(--mono);font-size:12px;color:var(--dim)}
.edu h3{margin-top:10px;font-size:18px;font-weight:600;letter-spacing:-.015em;line-height:1.3}
.edu p{margin-top:4px;color:var(--dim);font-size:14.5px}

/* contact */
.contact{padding:140px 0 120px;overflow:hidden}
.contact h2{font-size:clamp(40px,8vw,96px);font-weight:600;letter-spacing:-.045em;line-height:.98;max-width:960px}
.contact h2 .ln{display:block;overflow:hidden;padding-bottom:.06em}
.contact h2 .ln > span{display:inline-block}
.js .contact h2 .ln > span{transform:translateY(105%);transition:transform 1.1s var(--ease)}
.js .contact h2.in .ln > span{transform:none}
.js .contact h2.in .ln:nth-child(2) > span{transition-delay:.12s}
.contact h2 em{font-style:normal;color:var(--acc)}
.contact .line{margin-top:44px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.copy{display:inline-flex;align-items:center;gap:14px;min-height:56px;padding:0 10px 0 20px;border:1px solid var(--line2);border-radius:12px;background:var(--bg2);font-family:var(--mono);font-size:15px;max-width:100%;transition:border-color .2s}
.copy:hover{border-color:var(--acc)}
.copy .em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.copy .pill{font-size:11px;color:var(--dim);border:1px solid var(--line2);border-radius:7px;padding:6px 10px;flex-shrink:0;transition:all .2s}
.copy.ok .pill{color:#0a0c00;background:var(--acc);border-color:var(--acc)}
.contact .btn{min-height:56px;border-radius:12px}

footer{border-top:1px solid var(--line);padding:28px 0 calc(40px + env(safe-area-inset-bottom))}
footer .wrap{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-family:var(--mono);font-size:12px;color:var(--faint)}
footer a{text-decoration:none}
footer a:hover{color:var(--acc)}

/* reveal */
.js .rv{opacity:0;transform:translateY(22px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.js .rv.in{opacity:1;transform:none}

/* palette + toast */
.pal{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:14vh 16px 16px;background:rgba(0,0,0,.55);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .2s,visibility .2s}
.pal.open{opacity:1;visibility:visible}
.pal-box{width:100%;max-width:560px;border:1px solid var(--line2);border-radius:14px;background:var(--panel);box-shadow:0 40px 120px rgba(0,0,0,.7);overflow:hidden;transform:translateY(-8px) scale(.98);transition:transform .25s var(--ease)}
.pal.open .pal-box{transform:none}
.pal input{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);padding:18px 20px;color:var(--ink);font:15px var(--mono);outline:none}
.pal ul{list-style:none;max-height:340px;overflow:auto;padding:8px}
.pal li{display:flex;justify-content:space-between;align-items:center;padding:11px 12px;border-radius:8px;cursor:pointer;font-size:14.5px}
.pal li span{font-family:var(--mono);font-size:11px;color:var(--faint)}
.pal li.sel{background:var(--acc-d);color:var(--acc)}
.pal li.sel span{color:var(--acc)}
.toast{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom));transform:translate(-50%,20px);opacity:0;z-index:60;font-family:var(--mono);font-size:12.5px;background:var(--acc);color:#0a0c00;padding:10px 16px;border-radius:10px;transition:all .3s var(--ease);pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- responsive ---------- */
@media (max-width:1080px){
  .status .hide-t{display:none}
}
@media (max-width:960px){
  .hero{grid-template-columns:minmax(0,1fr);gap:48px;min-height:auto;padding:72px 0 80px}
  .term{max-width:560px}
  .stack{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .metric:nth-child(2){border-right:0}
  .metric:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .sh,.job{grid-template-columns:170px minmax(0,1fr)}
  .tl-track{left:146px}
  .job::before{left:142px}
  .talk{grid-template-columns:160px minmax(0,1fr) auto}
}
@media (max-width:760px){
  :root{--gut:18px}
  .bar nav a,.kbd,.status{display:none}
  .burger{display:grid}
  section{padding:84px 0}
  .sh{grid-template-columns:minmax(0,1fr);gap:10px;margin-bottom:40px}
  .sh p{grid-column:1;margin-top:4px}
  .tl{padding-left:26px}
  .tl-track{left:4px;top:6px}
  .job{grid-template-columns:minmax(0,1fr);gap:8px}
  .job::before{left:-26px;top:43px}
  .job:first-of-type::before{top:5px}
  .job .when{padding:0}
  .job .when br{display:none}
  .job .when .now{margin:0 0 0 10px}
  .papers,.edu{grid-template-columns:minmax(0,1fr)}
  .talk{grid-template-columns:minmax(0,1fr);gap:6px}
  .talk .t{justify-self:start}
  .contact{padding:100px 0 88px}
  .marq{margin-top:64px;padding:14px 0}
}
@media (max-width:520px){
  .hero{padding:48px 0 64px;gap:40px}
  .stack{grid-template-columns:minmax(0,1fr)}
  .metric{padding:22px 16px}
  .metric .l{font-size:10.5px}
  .term{font-size:12px}
  .term-b{padding:16px 14px 18px}
  .term-b .r{grid-template-columns:74px minmax(0,1fr);gap:8px}
  .cta .btn{flex:1 1 auto;justify-content:center}
  .contact .line > *{width:100%;justify-content:space-between}
  .contact .btn{justify-content:center}
  .copy{font-size:13px}
  .paper{padding:22px}
}
@media (max-height:520px) and (orientation:landscape){
  .hero{min-height:auto;padding:40px 0}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .rv,.js .hero h1 .ch,.js .sh h2 .m,.js .contact h2 .ln > span,.js .markets span,.js .term-b .r,.js .term-b .end{opacity:1!important;transform:none!important;filter:none!important}
  html{scroll-behavior:auto}
}
@media print{
  #field,.glow,.bar,.cta,.pal,.toast,.term,.marq,.mnav{display:none!important}
  body{background:#fff;color:#000}
  .js .rv,.js .hero h1 .ch,.js .sh h2 .m{opacity:1;transform:none;filter:none}
}

/* lang switch */
.lang{display:inline-flex;align-items:center;border:1px solid var(--line2);border-radius:7px;overflow:hidden;font-family:var(--mono);font-size:11px;margin-left:6px;background:var(--bg2)}
.lang a{padding:5px 8px!important;border-radius:0!important;color:var(--faint)!important;text-decoration:none;background:none!important}
.lang a[aria-current]{color:#0a0c00!important;background:var(--acc)!important}
.lang a:not([aria-current]):hover{color:var(--ink)!important}
.mnav .lang{margin:22px 0 0;align-self:flex-start;font-size:13px}
.mnav .lang a{font-size:13px;font-weight:500;letter-spacing:0;border:0;padding:8px 14px!important;opacity:1;transform:none}

/* sub roles */
.roles{list-style:none;margin-top:16px;display:grid;gap:0;border-left:1px solid var(--line2);padding-left:0!important}
.roles li{padding:6px 0 6px 18px!important;color:var(--ink)!important;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.roles li::before{content:""!important;position:absolute;left:-4px!important;top:14px!important;width:7px;height:7px;border-radius:50%;background:var(--line2)}
.roles li:first-child::before{background:var(--acc)}
.roles li span{font-family:var(--mono);font-size:12px;color:var(--dim)}

/* publications */
.paper .au{margin-top:12px;font-size:13px;color:var(--faint)}
.paper .au b{color:var(--dim);font-weight:500}
.plinks{margin-top:18px;display:flex;flex-wrap:wrap;gap:8px}
.plinks a{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;text-decoration:none;color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:6px 10px;background:var(--bg);transition:border-color .2s,color .2s}
.plinks a:hover{border-color:var(--acc);color:var(--acc)}
.plinks a span{color:var(--faint)}
.paper .big{padding-top:22px}

/* edu 3 + cert */
.edu{grid-template-columns:repeat(3,minmax(0,1fr))}
.edu .now{display:inline-flex;margin-left:8px;font-size:10.5px;color:var(--acc);border:1px solid rgba(198,255,61,.3);background:var(--acc-d);border-radius:999px;padding:1px 8px;vertical-align:1px}
.cert{margin-top:16px;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:28px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:24px;background:var(--bg2)}
.cert .y{font-family:var(--mono);font-size:12px;color:var(--dim)}
.cert h3{margin-top:10px;font-size:18px;font-weight:600;letter-spacing:-.015em;line-height:1.3}
.cert p{margin-top:4px;color:var(--dim);font-size:14.5px}
.cert .tags{margin-top:14px}
.thumb{position:relative;display:block;border-radius:10px;overflow:hidden;border:1px solid var(--line2);cursor:zoom-in;padding:0;transition:border-color .25s,transform .4s var(--ease)}
.thumb img{display:block;width:100%;height:auto;filter:saturate(.85);transition:transform .6s var(--ease),filter .3s}
.thumb::after{content:"⤢";position:absolute;right:10px;bottom:10px;width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:rgba(7,8,10,.8);color:var(--acc);font-size:14px;border:1px solid var(--line2)}
.thumb:hover{border-color:var(--acc)}
.thumb:hover img{transform:scale(1.04);filter:none}
.lb{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.85);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.lb.open{opacity:1;visibility:visible}
.lb figure{max-width:min(900px,100%);transform:scale(.96);transition:transform .35s var(--ease)}
.lb.open figure{transform:none}
.lb img{display:block;width:100%;height:auto;border-radius:12px;box-shadow:0 40px 120px rgba(0,0,0,.7)}
.lb figcaption{margin-top:12px;font-family:var(--mono);font-size:12px;color:var(--dim);display:flex;justify-content:space-between;gap:12px}
.lb button{position:absolute;top:calc(16px + env(safe-area-inset-top));right:16px;width:44px;height:44px;border-radius:10px;border:1px solid var(--line2);background:var(--panel);font-size:18px}
@media (max-width:960px){ .edu{grid-template-columns:repeat(2,minmax(0,1fr))} .cert{grid-template-columns:minmax(0,1fr) 240px} }
@media (max-width:760px){ .edu,.cert{grid-template-columns:minmax(0,1fr)} .cert .thumb{max-width:360px} .roles li{flex-direction:column;gap:0} }
@media (max-width:760px){.bar .lang{display:none}}

/* profile */
.about{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px;align-items:start}
.portrait{position:relative;border:1px solid var(--line2);border-radius:16px;overflow:hidden;background:var(--bg2)}
.portrait img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;filter:grayscale(.35) contrast(1.05);transition:filter .6s var(--ease),transform 1.2s var(--ease)}
.portrait:hover img{filter:none;transform:scale(1.02)}
.portrait::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(7,8,10,.85));pointer-events:none}
.portrait figcaption{position:absolute;left:14px;right:14px;bottom:12px;z-index:1;display:flex;justify-content:space-between;font-size:11.5px;color:var(--dim)}
.portrait figcaption span:first-child{color:var(--acc)}
.portrait picture{display:block}
.js .portrait picture{clip-path:inset(0 0 100% 0);transition:clip-path 1.3s var(--ease) .15s}
.js .portrait.in picture{clip-path:inset(0 0 0 0)}
.about-t .big-p{font-size:clamp(21px,2.4vw,28px);line-height:1.35;letter-spacing:-.02em;font-weight:500;color:var(--ink)}
.about-t p{color:#c9ced5;margin-top:18px;font-size:16px}
.facts{margin-top:28px;border-top:1px solid var(--line)}
.facts > div{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}
.facts span{font-size:11.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;padding-top:3px}
.facts p{margin:0!important;font-size:14.5px}

/* bars */
.bars{margin-top:18px;display:grid;gap:8px}
.bars .bl{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.05em}
.bars .br{display:grid;grid-template-columns:44px minmax(0,1fr) 40px;gap:10px;align-items:center;font-size:11.5px;color:var(--dim)}
.bars i{display:block;height:6px;border-radius:99px;background:var(--line);overflow:hidden}
.bars b{display:block;height:100%;width:var(--v);background:var(--acc);border-radius:99px;transform-origin:0 50%;transition:transform 1.4s var(--ease) .3s}
.bars b.au2{background:var(--blue)}
.js .paper:not(.in) .bars b{transform:scaleX(0)}

/* talks */
.talks2{margin-top:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tcard{border:1px solid var(--line);border-radius:14px;background:var(--bg2);overflow:hidden;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.tcard .media{position:relative;display:block;padding:0;border:0;background:#000;overflow:hidden;cursor:zoom-in;min-height:100%}
.tcard .media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.tcard .media:hover img{transform:scale(1.04)}
.tcard .media::after{content:"⤢";position:absolute;right:10px;bottom:10px;width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:rgba(7,8,10,.8);color:var(--acc);font-size:14px;border:1px solid var(--line2)}
.tcard .media.vid{cursor:auto}
.tcard .media.vid::after{display:none}
.tcard video{display:block;width:100%;height:100%;object-fit:cover;background:#000}
.tbody{padding:22px;display:flex;flex-direction:column}
.tbody .j{font-family:var(--mono);font-size:11.5px;color:var(--dim);display:flex;justify-content:space-between;gap:10px;text-transform:uppercase;letter-spacing:.04em}
.tbody .j b{color:var(--blue);font-weight:500}
.tbody h3{margin-top:14px;font-size:17px;font-weight:600;letter-spacing:-.015em;line-height:1.3}
.tbody p{margin-top:10px;color:var(--dim);font-size:14.5px}
.mini{margin-top:16px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.mini div{border:1px solid var(--line2);border-radius:8px;padding:8px 10px}
.mini b{display:block;font-size:18px;font-weight:600;color:var(--acc);letter-spacing:-.02em}
.mini span{font-family:var(--mono);font-size:10.5px;color:var(--dim);line-height:1.3;display:block}
.tbody .plinks{margin-top:auto;padding-top:16px}
.plinks button{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;color:var(--ink);border:1px solid var(--line2);border-radius:8px;padding:6px 10px;background:var(--bg);transition:border-color .2s,color .2s}
.plinks button:hover{border-color:var(--acc);color:var(--acc)}
.plinks button span:last-child{color:var(--faint)}

/* services */
.srv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.sv{background:var(--bg2);padding:24px;transition:background .3s}
.sv:hover{background:var(--panel)}
.sv span{font-size:11.5px;color:var(--acc)}
.sv h3{margin-top:10px;font-size:18px;font-weight:600;letter-spacing:-.015em}
.sv p{margin-top:8px;color:var(--dim);font-size:14.5px}
.srv-cta{margin-top:24px;display:flex;flex-wrap:wrap;gap:12px}

/* lightbox generic */
.lb img{max-height:82vh;width:auto;max-width:100%;margin:0 auto}
.lb figure{display:flex;flex-direction:column;align-items:center}
.lb figcaption{width:100%}

@media (max-width:960px){
  .about{grid-template-columns:minmax(0,2fr) minmax(0,3fr);gap:32px}
  .talks2{grid-template-columns:minmax(0,1fr)}
  .srv{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:760px){
  .about{grid-template-columns:minmax(0,1fr)}
  .portrait{max-width:380px}
  .facts > div{grid-template-columns:minmax(0,1fr);gap:4px}
  .tcard{grid-template-columns:minmax(0,1fr)}
  .tcard .media{max-height:420px}
  .tcard .media.vid{max-height:none}
  .tcard video{height:auto;max-height:70vh}
  .srv{grid-template-columns:minmax(0,1fr)}
  .srv-cta .btn{flex:1 1 auto;justify-content:center}
}
@media (prefers-reduced-motion:reduce){ .js .portrait picture{clip-path:none!important} .js .paper .bars b{transform:none!important} }

.sv .svp{display:block;margin-top:12px;font-size:13px;font-weight:500;color:var(--acc)}

/* brief embed */
.brief{margin-top:28px;border:1px solid var(--line2);border-radius:16px;background:var(--bg2);padding:28px 28px 8px}
.brief-h h3{font-size:clamp(22px,2.6vw,28px);font-weight:600;letter-spacing:-.025em}
.brief-h p{margin-top:6px;color:var(--dim);max-width:620px}
.brief iframe{display:block;width:100%;border:0;margin-top:18px;background:transparent;color-scheme:dark;transition:height .3s var(--ease)}
@media (max-width:640px){.brief{padding:20px 16px 4px;margin-left:-4px;margin-right:-4px}}

.srv-more{margin-top:20px}

/* ===== freelance (ex preventivi) ===== */
.fl-lead{font-size:clamp(17px,1.7vw,20px);color:#c9ced5;max-width:760px;line-height:1.55}
.fwhy{margin-top:28px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.fwhy div{border:1px solid var(--line);border-radius:12px;background:var(--bg2);padding:16px;display:grid;gap:8px}
.fwhy i{font-style:normal;font-family:var(--mono);font-size:11px;color:var(--acc)}
.fwhy p{font-size:14px;color:var(--dim);line-height:1.5}
.fwhy b{color:var(--ink);font-weight:500}
.ftabs{margin-top:36px;display:inline-flex;flex-wrap:wrap;border:1px solid var(--line2);border-radius:10px;padding:4px;background:var(--bg2)}
.ftabs button{font-family:var(--mono);font-size:12.5px;color:var(--dim);padding:8px 14px;border-radius:7px;transition:all .2s}
.ftabs button[aria-selected="true"]{background:var(--acc);color:#0a0c00}
.fcards{margin-top:18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.fcard{position:relative;border:1px solid var(--line);border-radius:14px;background:var(--bg2);padding:22px 20px;display:flex;flex-direction:column;transition:border-color .25s,transform .35s var(--ease)}
.fcard[hidden]{display:none}
.fcard:hover{border-color:var(--line2);transform:translateY(-3px)}
.fcard.best{border-color:rgba(198,255,61,.45);background:linear-gradient(180deg,rgba(198,255,61,.06),var(--bg2) 40%)}
.ftag{position:absolute;top:-10px;left:18px;font-family:var(--mono);font-size:10.5px;background:var(--acc);color:#0a0c00;border-radius:999px;padding:2px 9px}
.fcard h3{font-size:18px;font-weight:600;letter-spacing:-.015em}
.fld{margin-top:6px;color:var(--dim);font-size:14px}
.ft{margin-top:12px;font-size:11.5px;color:var(--faint)}
.fcard ul{list-style:none;margin:16px 0 20px;display:grid;gap:7px;font-size:14px;color:#c9ced5}
.fcard li{position:relative;padding-left:20px}
.fcard li::before{content:"✓";position:absolute;left:0;color:var(--acc);font-size:12px;top:1px}
.fcard .btn{margin-top:auto;justify-content:center;min-height:42px}
.ftwo{margin-top:24px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.fbox{border:1px solid var(--line);border-radius:14px;background:var(--bg2);overflow:hidden}
.fbox h4{font-size:15px;font-weight:600;padding:16px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px}
.fbox h4 span{font-family:var(--mono);font-size:11px;color:var(--faint);font-weight:400}
.frow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:11px 20px;border-bottom:1px solid var(--line);font-size:14px}
.frow:last-child{border-bottom:0}
.frow small{display:block;color:var(--faint);font-size:12.5px}
.frow b{font-weight:400;font-size:11.5px;color:var(--dim)}
.fsub{margin-top:56px;font-size:clamp(22px,2.6vw,30px);font-weight:600;letter-spacing:-.025em}
.fsteps{margin-top:18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.fsteps div{border:1px solid var(--line);border-radius:14px;background:var(--bg2);padding:20px}
.fsteps span{font-size:12px;color:var(--acc)}
.fsteps h4{margin-top:8px;font-size:16px;font-weight:600}
.fsteps p{margin-top:6px;font-size:14px;color:var(--dim)}
.ffaq{margin-top:12px;border-top:1px solid var(--line)}
.ffaq details{border-bottom:1px solid var(--line)}
.ffaq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:16px;padding:18px 0;font-size:16.5px;font-weight:500}
.ffaq summary::-webkit-details-marker{display:none}
.ffaq summary::after{content:"+";font-family:var(--mono);color:var(--acc);font-size:20px;transition:transform .3s var(--ease)}
.ffaq details[open] summary::after{transform:rotate(45deg)}
.ffaq details p{padding:0 0 18px;color:var(--dim);max-width:780px}
#servizi .brief{margin-top:56px}
@media (max-width:1060px){.fcards{grid-template-columns:repeat(2,minmax(0,1fr))}.fwhy,.fsteps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.fcards,.fwhy,.fsteps,.ftwo{grid-template-columns:minmax(0,1fr)}.ftabs{display:flex}.ftabs button{flex:1;padding:8px 6px}}

/* ===== colore d'azione riservato: il lime resta solo su pulsanti primari, stati selezionati/feedback e 2 numeri chiave ===== */
:root{--mark:#eceff2}
.glow{background:radial-gradient(900px 500px at 85% -10%,rgba(236,239,242,.05),transparent 60%),radial-gradient(700px 500px at -10% 30%,rgba(106,168,255,.06),transparent 60%)}
.brand b,.bar nav a.on,.idx b,.metric .n small,.mini b,.ffaq summary::after,.thumb::after,.tcard .media::after{color:var(--mark)}
#progress{background:var(--mark)}
.mnav a span,.eyebrow,.term-b .c,.marq-t span::after,.paper .j b,.portrait figcaption span:first-child,.sv span,.fwhy i,.fcard li::before,.fsteps span{color:var(--dim)}
.eyebrow::before{background:var(--dim)}
.typed{color:#c9ced5}
.caret{background:var(--mark)}
.metric::after{background:rgba(236,239,242,.35)}
.tl-fill{background:linear-gradient(var(--mark),rgba(236,239,242,.15))}
.job.lit::before,.roles li:first-child::before{background:var(--mark);border-color:var(--mark);box-shadow:0 0 0 5px rgba(236,239,242,.1)}
.job .when .now,.edu .now{color:var(--ink);border-color:var(--line2);background:var(--panel)}
.mod p span.core{border-color:var(--faint);color:var(--ink);background:var(--panel)}
.mod::after{background:radial-gradient(320px 180px at var(--mx,50%) var(--my,0%),rgba(236,239,242,.06),transparent 70%)}
.bars b{background:var(--mark)}
.contact h2 em{color:#9aa2ac}
.ftabs button[aria-selected="true"]{background:var(--ink);color:#07080a}
.term::before{background:conic-gradient(from var(--a,0deg),transparent 0 70%,rgba(236,239,242,.35) 85%,transparent)}
