/* artyomita.github.io · tema scuro di base, chiaro dal selettore. Un solo foglio, nessuna libreria. */
@font-face{font-family:"Geist";font-style:normal;font-weight:400 700;font-display:swap;src:url(../fonts/geist-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2070-209F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+2248,U+2264-2265,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-weight:400 600;font-display:swap;src:url(../fonts/jetbrains-mono-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2070-209F,U+20AC,U+2122,U+2190-2193,U+2212,U+2215,U+2248,U+2264-2265,U+FEFF,U+FFFD}

@font-face{font-family:"Geist Fallback";src:local("Arial");size-adjust:109.05%;ascent-override:92.16%;descent-override:27.05%;line-gap-override:0.00%}
/* palette: base grafite, due accenti (menta e corallo). La hero, la barra e la scena FlyToLLM restano scure anche nel tema chiaro. */
:root,.hero,.bar,.stage{
  color-scheme:dark;
  --bg:#0d0f13;--bg-2:#12151b;--surf:#151922;--surf-2:#1a1f29;--card:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.02));
  --line:rgba(255,255,255,.09);--line-2:rgba(255,255,255,.18);
  --ink:#eceff4;--ink-2:#aeb7c4;--ink-3:#8b95a5;
  --mint:#2ef2b0;--mint-t:#2ef2b0;--mint-s:rgba(46,242,176,.12);--mint-l:rgba(46,242,176,.42);
  --coral:#ff6a57;--coral-t:#ff8272;--coral-s:rgba(255,106,87,.13);--coral-l:rgba(255,106,87,.5);
  --on-mint:#04130d;--shadow:0 1px 0 rgba(255,255,255,.04) inset;
}
:root[data-theme=light]{
  color-scheme:light;
  --bg:#f3f5f8;--bg-2:#e9edf2;--surf:#fff;--surf-2:#f6f8fa;--card:#fff;
  --line:rgba(16,21,32,.1);--line-2:rgba(16,21,32,.22);
  --ink:#0f1319;--ink-2:#3b4452;--ink-3:#586173;
  --mint:#00b37d;--mint-t:#00704a;--mint-s:rgba(0,179,125,.1);--mint-l:rgba(0,150,105,.5);
  --coral:#f0553f;--coral-t:#b7311f;--coral-s:rgba(240,85,63,.1);--coral-l:rgba(220,70,50,.5);
  --on-mint:#04130d;--shadow:0 1px 2px rgba(16,21,32,.05),0 8px 28px -14px rgba(16,21,32,.16);
}
:root{--f-sans:"Geist","Geist Fallback",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--f-mono:"JetBrains Mono",ui-monospace,"Cascadia Mono",Consolas,monospace}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1rem/1.62 var(--f-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"kern","liga";min-width:320px}
img{max-width:100%;height:auto}
a{color:inherit}
p{margin:0 0 1em}
::selection{background:var(--mint);color:var(--on-mint)}
:focus-visible{outline:2px solid var(--mint);outline-offset:3px;border-radius:6px}
.skip{position:absolute;left:12px;top:-60px;z-index:100;background:var(--mint);color:var(--on-mint);padding:10px 16px;border-radius:999px;font-weight:600;text-decoration:none}
.skip:focus{top:12px}
.wrap{width:100%;max-width:1280px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.nb{white-space:nowrap}
.m{font-family:var(--f-mono);font-size:.9em;font-weight:500;color:var(--mint-t);white-space:nowrap;letter-spacing:-.01em}
code{font-family:var(--f-mono);font-size:.88em}
b{font-weight:600}
sup.n{font-family:var(--f-mono);font-size:.7em;color:var(--mint-t);margin-left:1px}

/* sfondo della pagina: due aloni molto bassi, fissi */
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(900px 520px at 88% -8%,rgba(46,242,176,.07),transparent 62%),radial-gradient(760px 520px at -6% 46%,rgba(255,106,87,.045),transparent 64%)}
:root[data-theme=light] body::before{background:radial-gradient(900px 520px at 88% -8%,rgba(0,179,125,.07),transparent 62%),radial-gradient(760px 520px at -6% 46%,rgba(240,85,63,.05),transparent 64%)}

/* barra flottante */
.bar{position:fixed;z-index:60;top:12px;left:50%;transform:translateX(-50%);width:min(1240px,calc(100% - 24px));height:54px;border-radius:999px;
  background:rgba(14,17,22,.88);border:1px solid rgba(255,255,255,.11);-webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);color:var(--ink);box-shadow:0 12px 40px -16px rgba(0,0,0,.6)}
.bar-in{height:100%;display:flex;align-items:center;gap:14px;padding:0 10px 0 20px}
.brand{font-feature-settings:"ss05";font-weight:620;font-size:.95rem;letter-spacing:-.01em;text-decoration:none;white-space:nowrap;display:flex;align-items:center;gap:10px}
.brand::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--mint);box-shadow:0 0 0 4px var(--mint-s),0 0 14px var(--mint)}
.nav{display:flex;gap:2px;margin:0 auto}
.nav a{font-size:.84rem;color:var(--ink-2);text-decoration:none;padding:7px 11px;border-radius:999px;white-space:nowrap;transition:color .2s,background .2s}
.nav a:hover{color:var(--ink);background:rgba(255,255,255,.07)}
.nav a[aria-current]{color:var(--mint-t);background:var(--mint-s)}
.toc{display:none;position:relative;margin-left:auto}
.toc summary{list-style:none;cursor:pointer;font-size:.86rem;font-weight:550;padding:8px 14px;border-radius:999px;border:1px solid var(--line-2);display:flex;align-items:center;gap:8px}
.toc summary::-webkit-details-marker{display:none}
.toc summary::after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translate(-2px,-2px)}
.toc[open] summary::after{transform:rotate(-135deg) translate(-1px,-1px)}
.toc-panel{position:absolute;right:0;top:calc(100% + 14px);width:min(300px,calc(100vw - 24px));padding:12px;border-radius:20px;background:rgba(14,17,22,.96);border:1px solid var(--line-2);box-shadow:0 24px 60px -20px rgba(0,0,0,.7)}
.toc ol{list-style:none;margin:0;padding:0}
.toc ol a{display:block;padding:10px 12px;border-radius:12px;text-decoration:none;color:var(--ink);font-size:.95rem}
.toc ol a:hover,.toc ol a[aria-current]{background:rgba(255,255,255,.07)}
.toc-tools{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding:12px 8px 4px;border-top:1px solid var(--line)}
.bar-tools{display:flex;align-items:center;gap:10px}
.lang{display:flex;align-items:center;font-size:.8rem;font-family:var(--f-mono);color:var(--ink-3);gap:2px}
.lang a{text-decoration:none;padding:6px 8px;border-radius:999px;color:var(--ink-2)}
.lang a[aria-current]{background:rgba(255,255,255,.1);color:var(--ink)}
.lang span{display:none}
.theme{display:flex;gap:2px;padding:3px;border-radius:999px;background:rgba(255,255,255,.06);border:1px solid var(--line)}
.theme span{display:none}
.theme button{font:500 .76rem/1 var(--f-sans);color:var(--ink-2);background:none;border:0;border-radius:999px;padding:7px 11px;cursor:pointer;min-height:30px;transition:background .2s,color .2s}
.theme button:hover{color:var(--ink)}
.theme button[aria-pressed=true]{background:var(--mint);color:var(--on-mint);font-weight:600}
@media (max-width:1080px){.nav,.bar-tools{display:none}.toc{display:block}}
@media (min-width:1600px){.wrap{max-width:1480px}.bar{width:min(1480px,calc(100% - 24px))}}
@media (min-width:1900px){.wrap{max-width:1600px}.bar{width:min(1600px,calc(100% - 24px))}}

/* hero */
.hero{position:relative;min-height:max(100svh,700px);display:flex;align-items:center;padding:112px 0 48px;overflow:clip;isolation:isolate;background:var(--bg);color:var(--ink)}
.hero-bg{position:absolute;inset:0;z-index:-3;pointer-events:none;transition:opacity 1.4s ease;
  background:radial-gradient(60% 55% at 78% 62%,rgba(46,242,176,.13),transparent 70%),radial-gradient(40% 40% at 94% 20%,rgba(255,106,87,.10),transparent 70%)}
.hero-bg::before{content:"";position:absolute;right:-8%;bottom:-16%;width:78%;height:86%;
  background-image:linear-gradient(rgba(46,242,176,.34) 1px,transparent 1px),linear-gradient(90deg,rgba(46,242,176,.34) 1px,transparent 1px);background-size:54px 54px;
  transform:perspective(620px) rotateX(64deg) rotateZ(-16deg);transform-origin:50% 100%;
  -webkit-mask-image:radial-gradient(closest-side,#000 25%,transparent 100%);mask-image:radial-gradient(closest-side,#000 25%,transparent 100%)}
.hero-bg::after{content:"";position:absolute;right:16%;bottom:30%;width:8px;height:8px;border-radius:50%;background:var(--coral);box-shadow:0 0 22px 6px var(--coral-l),-120px 60px 0 -2px var(--mint),-220px 20px 0 -3px var(--mint),-60px -50px 0 -3px var(--mint)}
.hero.gl .hero-bg{opacity:0}
.hero-cv{position:absolute;inset:0;width:100%;height:100%;z-index:-2;display:block;opacity:0;transition:opacity 1.6s ease;pointer-events:none}
.hero.gl .hero-cv{opacity:1}
.hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,var(--bg) 0%,rgba(13,15,19,.94) 22%,rgba(13,15,19,.78) 40%,rgba(13,15,19,.4) 56%,rgba(13,15,19,.12) 68%,rgba(13,15,19,0) 80%)}
.hero-in>*{animation:rise .9s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0)*80ms)}
@keyframes rise{from{transform:translateY(18px)}to{transform:none}}
.hero-in{position:relative;display:flex;flex-direction:column;align-self:stretch;min-height:calc(max(100svh,700px) - 192px)}
.hero-in>.stats{margin-top:auto;padding-top:44px}
.folio{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;margin:0 0 28px;padding:7px 14px 7px 12px;border-radius:999px;border:1px solid var(--line-2);background:rgba(255,255,255,.04);font:500 .78rem/1 var(--f-mono);color:var(--ink-2)}
.folio::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--mint);animation:pulse 2.4s ease-in-out infinite}
h1{margin:0;font-weight:640;font-size:clamp(3rem,6.8vw,7.4rem);line-height:.95;letter-spacing:-.05em;font-feature-settings:"ss05"}
h1 span:last-child{display:block}
@media (max-width:700px){h1 span{display:block}}
h1 span:last-child{background:linear-gradient(100deg,var(--mint) 10%,#b8ffe6 90%);-webkit-background-clip:text;background-clip:text;color:transparent;padding-bottom:.08em}
.role{margin:30px 0 0;max-width:30em;font-size:clamp(1.1rem,1.7vw,1.4rem);line-height:1.4;color:var(--ink);letter-spacing:-.012em}
.role b{color:var(--mint-t);font-weight:600}
.abs{margin:16px 0 0;max-width:41em;color:var(--ink-2);font-size:1.02rem}
.abs b{color:var(--ink);font-weight:550}
.links{align-self:flex-start;display:flex;flex-wrap:wrap;gap:10px;margin:28px 0 0}
.btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 20px;border-radius:999px;border:1px solid var(--line-2);color:var(--ink);text-decoration:none;font-weight:550;font-size:.92rem;background:rgba(255,255,255,.04);transition:border-color .2s,background .2s,transform .2s,color .2s}
.btn:hover{border-color:var(--mint-l);background:var(--mint-s);color:var(--mint-t)}
.btn-main{background:var(--mint);color:var(--on-mint);border-color:transparent}
.btn-main:hover{background:#6bffcb;color:var(--on-mint);border-color:transparent}
.btn::after{content:"";width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg);opacity:.7}
.stats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.stat{display:flex;flex-direction:column;height:100%;padding:20px 20px 18px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.035);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);text-decoration:none;position:relative}
.stat .num{display:block;font:500 clamp(1.9rem,3.1vw,2.7rem)/1 var(--f-mono);letter-spacing:-.05em;color:var(--ink);white-space:nowrap}
.stat .lab{display:block;margin-top:12px;font-size:.88rem;line-height:1.38;color:var(--ink-2)}
.stat .src{display:block;margin-top:auto;padding-top:12px;font:500 .74rem/1.2 var(--f-mono);color:var(--ink-3);transition:color .2s}
.stat:hover .src{color:var(--mint-t)}

/* corpo */
.body{display:grid;grid-template-columns:minmax(210px,250px) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:start}
.hf{position:sticky;top:92px;margin-top:clamp(56px,8vw,104px);padding:22px 20px 18px;border-radius:20px;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow)}
.hf .kick{margin:0 0 14px}
.hf .kick a{text-decoration:none}
.hfl{list-style:none;margin:0;padding:0}
.hfl li{padding:10px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:baseline}
.hfl li:first-child{border-top:0;padding-top:0}
.hfl a{font-size:.88rem;line-height:1.3;text-decoration:none;color:var(--ink);overflow-wrap:anywhere}
.hfl a:hover{color:var(--mint-t)}
.hfl .m{font-size:.84rem}
.hfl .bar-t{grid-column:1/-1;margin-top:8px;height:3px;border-radius:3px;background:var(--line);overflow:hidden}
.hfl .bar-t i{display:block;height:100%;width:var(--p);min-width:2px;border-radius:3px;background:linear-gradient(90deg,var(--mint),var(--mint-t));transform-origin:left;transition:transform 1.1s cubic-bezier(.2,.7,.2,1) .2s}
.hfl li:nth-child(n+4) .bar-t i{background:var(--ink-3)}
html.rv-on .hf:not(.in) .bar-t i{transform:scaleX(0)}
.hft{display:flex;justify-content:space-between;align-items:baseline;margin:14px 0 0;padding-top:14px;border-top:1px solid var(--line-2);font-size:.86rem;color:var(--ink-2)}
.hft .m{font-size:1.45rem;color:var(--ink);letter-spacing:-.04em}
.hfd{margin:8px 0 0;font-size:.76rem;line-height:1.4;color:var(--ink-3)}
@media (max-width:1100px){.body{grid-template-columns:minmax(0,1fr)}.hf{position:static;margin-top:48px;order:0}}

.sec{padding-top:clamp(64px,9vw,120px);scroll-margin-top:72px}
.sec-sub{padding-top:clamp(56px,7vw,96px)}
.sec-h{margin:0 0 clamp(28px,4vw,44px)}
h2.kick{font-size:.8rem;max-width:none;font-weight:500}
.kick{display:flex;align-items:center;gap:12px;margin:0 0 18px;font:500 .8rem/1 var(--f-mono);color:var(--mint-t);letter-spacing:.02em}
.kick i{display:block;width:34px;height:1px;background:var(--mint-l)}
h2{margin:0;font-weight:630;font-size:clamp(1.8rem,3.5vw,2.85rem);line-height:1.08;letter-spacing:-.034em;max-width:20em}
.sec-sub h2{font-size:clamp(1.5rem,2.6vw,2.1rem)}
.lead{margin:18px 0 0;max-width:46em;color:var(--ink-2);font-size:1.06rem;line-height:1.62}
h3{margin:0;font-size:1.06rem;line-height:1.3;letter-spacing:-.012em;font-weight:600}
.sub{margin:56px 0 18px;font-size:1.3rem;letter-spacing:-.02em}

/* schede */
.card{position:relative;border-radius:20px;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow)}
.card::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;pointer-events:none;opacity:0;transition:opacity .3s;
  background:radial-gradient(280px circle at var(--mx,50%) var(--my,0%),var(--mint),transparent 65%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(340px circle at var(--mx,50%) var(--my,0%),var(--mint-s),transparent 70%)}
.card:hover::before,.card:hover::after,.stat:hover::before{opacity:1}
.stat::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(220px circle at var(--mx,50%) var(--my,0%),var(--mint),transparent 65%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.card>*{position:relative;z-index:1}
.feat{padding:clamp(22px,3.2vw,36px);margin:0 0 20px}
.feat h3{font-size:clamp(1.15rem,2vw,1.5rem);letter-spacing:-.025em}
.feat h3 a,.bn a{text-decoration:none;font-family:var(--f-mono);font-weight:500;letter-spacing:-.02em;overflow-wrap:anywhere}
.feat h3 a:hover,.bn a:hover{color:var(--mint-t)}
.feat h3 a::after,.bn a::after{content:" \2197";font-family:var(--f-sans);color:var(--mint-t);opacity:.8}
.dateline{margin:6px 0 16px;font:500 .78rem/1.3 var(--f-mono);color:var(--ink-3)}
.feat p:not(.dateline):not(.cmd):not(.go):not(.meth):not(.fn){max-width:50em;color:var(--ink-2)}
.meta{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}
.meta div{display:flex;gap:8px;align-items:baseline;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.03);font-size:.82rem}
.meta dt{font:500 .72rem var(--f-mono);color:var(--ink-3)}
.meta dd{margin:0;color:var(--ink)}
.pts{margin:0 0 1em;padding-left:1.2em;max-width:50em;color:var(--ink-2)}
.pts li{margin:.4em 0;padding-left:.2em}
.pts li::marker{color:var(--mint-t)}
.meth{margin:14px 0 0;font:400 .8rem/1.5 var(--f-mono);color:var(--ink-3)}
.go{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 0}
.go a{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--line-2);font-size:.88rem;font-weight:550;text-decoration:none;transition:border-color .2s,background .2s,color .2s}
.go a::after{content:"";width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg);opacity:.7}
.go a:hover{border-color:var(--mint-l);background:var(--mint-s);color:var(--mint-t)}
.cmd{display:grid;gap:8px;margin:18px 0 0}
.cmd code{display:block;padding:12px 16px;border-radius:12px;background:#0b0d11;border:1px solid rgba(255,255,255,.1);color:#d7dde7;overflow-wrap:anywhere;font-size:.84rem;line-height:1.5}
.cmd code::before{content:"$ ";color:#2ef2b0}
.fn{margin:16px 0 22px;padding:2px 0 2px 14px;border-left:2px solid var(--line-2);font-size:.84rem;line-height:1.55;color:var(--ink-3)}
.fn a{color:var(--mint-t)}
.grid3{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,262px),1fr));gap:16px;margin:0 0 20px}
.grid3>.rv:nth-child(3n+2){--d:90}.grid3>.rv:nth-child(3n+3){--d:180}
.brief{padding:22px 22px 20px;display:flex;flex-direction:column}
.bn{margin:0 0 10px;font-size:1rem}
.brief p{color:var(--ink-2);font-size:.94rem;line-height:1.58;margin:0 0 14px}
.brief .bf{margin:auto 0 0;padding-top:4px}
.bf{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{padding:4px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.03);font:500 .72rem/1.3 var(--f-mono);color:var(--ink-2)}
:root[data-theme=light] .chip,:root[data-theme=light] .meta div,:root[data-theme=light] .btn:not(.btn-main),:root[data-theme=light] .go a{background:rgba(16,21,32,.03)}
.rel{font:400 .74rem/1.3 var(--f-mono);color:var(--ink-3)}
.hfm .brief .bn a{font-size:.88rem}

/* contributi: linea del tempo */
.tl{list-style:none;margin:0 0 28px;padding:0 0 0 34px;position:relative}
.tl::before{content:"";position:absolute;left:9px;top:10px;bottom:10px;width:1px;background:linear-gradient(var(--mint-l),var(--line-2) 80%,transparent)}
.tl>li{position:relative;margin:0 0 14px}
.tl>li::before{content:"";position:absolute;left:-34px;top:25px;width:19px;height:19px;border-radius:50%;background:var(--bg);border:2px solid var(--mint);box-shadow:0 0 0 5px var(--mint-s)}
.tl>li.st-ok-i::before{background:var(--mint)}
.tl>li.st-open-i::before{border-color:var(--coral);box-shadow:0 0 0 5px var(--coral-s);animation:ring 2.6s ease-out infinite}
.tl>li.st-adopt-i::before{border-style:dashed}
.pr{padding:20px 22px}
.pr-h{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;justify-content:space-between;margin:0 0 10px}
.pj{font:500 .98rem/1.3 var(--f-mono);letter-spacing:-.02em;overflow-wrap:anywhere}
.pr p{margin:0;color:var(--ink-2);max-width:56em}
.pr p a{color:var(--ink);font-weight:550;text-underline-offset:3px;text-decoration-color:var(--mint-l)}
.pr p a:hover{color:var(--mint-t)}
.st{display:inline-flex;align-items:center;gap:8px;padding:5px 12px 5px 10px;border-radius:999px;border:1px solid;font:500 .76rem/1.2 var(--f-mono);white-space:nowrap}
.st::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.st-ok{color:var(--mint-t);border-color:var(--mint-l);background:var(--mint-s)}
.st-adopt{color:var(--mint-t);border-color:var(--mint-l);border-style:dashed}
.st-adopt::before{background:none;border:1.5px solid currentColor}
.st-open{color:var(--coral-t);border-color:var(--coral-l);background:var(--coral-s)}
.st-open::before{animation:pulse 2.2s ease-in-out infinite}

/* grafici: barre, cellette, scala */
.viz{padding:clamp(20px,3vw,30px);margin:0 0 20px}
.viz-h{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 28px;align-items:flex-end;margin:0 0 22px}
.viz-t{font:500 .86rem/1.4 var(--f-mono);color:var(--ink-2);max-width:34em}
.big{display:flex;gap:26px}
.big div{display:flex;flex-direction:column;gap:4px}
.big b{font:500 clamp(1.7rem,3.4vw,2.6rem)/1 var(--f-mono);letter-spacing:-.05em;color:var(--mint-t)}
.big div>span{font:400 .78rem var(--f-mono);color:var(--ink-3)}
.viz figcaption{margin:20px 0 0;font-size:.86rem;line-height:1.55;color:var(--ink-3);max-width:60em}
.vz-g{margin:0 0 22px}
.vz-lab{margin:0 0 10px;font:500 .8rem/1.3 var(--f-mono);color:var(--ink-3)}
.hb{display:grid;grid-template-columns:minmax(96px,170px) minmax(0,1fr) auto;gap:6px 14px;align-items:center;margin:0 0 8px}
.hb-l{font-size:.86rem;color:var(--ink-2);line-height:1.3}
.hb-t{position:relative;height:22px;border-radius:7px;background:var(--surf-2);border:1px solid var(--line);overflow:hidden}
.hb-t>i{position:absolute;left:calc(var(--l,0)*100%);top:0;bottom:0;width:calc(var(--w,1)*100%);min-width:2px;border-radius:6px;background:var(--c,var(--mint));transform-origin:left;transition:transform 1.05s cubic-bezier(.2,.7,.2,1) calc(var(--d,0)*1ms)}
.hb-t>i.seg{background:repeating-linear-gradient(90deg,var(--c,var(--mint)) 0 15px,transparent 15px 18px)}
.hb-t>u{position:absolute;top:3px;bottom:3px;left:calc(var(--p)*100%);width:2px;margin-left:-1px;background:var(--ink);border-radius:2px;text-decoration:none;z-index:2}
.hb-t>u.mean{background:var(--coral);width:8px;height:8px;top:50%;margin:-4px 0 0 -4px;border-radius:50%}
.hb-v{font:500 .84rem var(--f-mono);color:var(--ink);white-space:nowrap}
.hb-n{--c:var(--ink-3)}
.hb-soft{--c:var(--mint-l)}
.hb-s .hb-t{height:20px}
.sc{display:flex;justify-content:space-between;margin:2px 0 0;font:400 .72rem var(--f-mono);color:var(--ink-3)}
.hb+.sc{margin-left:0}
.hb-c{--c:var(--coral)}
.hb-s{grid-template-columns:minmax(0,1fr)}
.hb-s .hb-v{color:var(--ink-3);font-weight:400;font-size:.76rem;white-space:normal}
html.rv-on .viz:not(.in) .hb-t>i{transform:scaleX(0)}
.ls{position:relative;margin:34px 0 4px;height:132px}
.ls-t{position:absolute;left:0;right:0;top:70px;height:2px;background:var(--line-2)}
.ls-t i{position:absolute;left:calc(var(--a)*100%);right:calc(100% - var(--b)*100%);top:-1px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--coral),var(--mint));transform-origin:left;transition:transform 1.3s cubic-bezier(.2,.7,.2,1) .15s}
.ls-t u{position:absolute;top:50%;left:calc(var(--p)*100%);width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--bg);border:3px solid var(--c);text-decoration:none;transition:left 1.3s cubic-bezier(.2,.7,.2,1) .15s}
.ls-t u.a{--c:var(--coral)}
.ls-t u.b{--c:var(--mint);box-shadow:0 0 18px var(--mint-l)}
html.rv-on .viz:not(.in) .ls-t i{transform:scaleX(0)}
html.rv-on .viz:not(.in) .ls-t u.b{left:calc(var(--a)*100%)}
.ls-n{position:absolute;top:0;font-size:.8rem;line-height:1.4;color:var(--ink-2)}
.ls-n b{display:block;font:500 .84rem var(--f-mono);color:var(--ink)}
.ls-n.a{left:calc(var(--p)*100%);transform:translateX(-14%)}
.ls-n.b{right:calc(100% - var(--p)*100%);text-align:right;transform:translateX(14%)}
.ls-ax{position:absolute;left:0;right:0;top:84px;height:20px;font:400 .72rem var(--f-mono);color:var(--ink-3);pointer-events:none}
.ls-ax span{position:absolute;left:calc(var(--p)*100%);transform:translateX(-50%)}
.ls-ax span:first-child{transform:none}
.ls-ax span:last-child{transform:translateX(-100%)}
.ls-ax span::before{content:"";position:absolute;left:50%;top:-12px;height:7px;width:1px;background:var(--line-2)}
.ls-ax span:first-child::before{left:0}
.ls-ax span:last-child::before{left:auto;right:0}
.ls-ax sup{font-size:.8em}
.ls-u{margin:6px 0 0;font:400 .76rem var(--f-mono);color:var(--ink-3)}
@media (max-width:640px){.ls{height:196px}.ls-n.a{left:0;transform:none}.ls-n.b{right:0;transform:none;top:46px;text-align:right}.ls-t{top:112px}.ls-ax{top:126px}}
.wf{display:grid;grid-template-columns:repeat(var(--cols,50),minmax(0,1fr));gap:4px;max-width:var(--mw,100%)}
.wf-250{--cols:50}.wf-44{--cols:22;--mw:560px}
@media (max-width:640px){.wf-250{--cols:25}.wf-44{--cols:11}}
.wf i{aspect-ratio:1;border-radius:3px;background:var(--mint-s);border:1px solid var(--mint-l);transition:transform .5s cubic-bezier(.2,.7,.2,1),opacity .5s;transition-delay:min(calc(var(--i)*4ms),900ms)}
.wf i.x{background:var(--coral);border-color:var(--coral)}
.wf i.o{background:none;border-style:dashed;border-color:var(--coral)}
html.rv-on .viz:not(.in) .wf i{transform:scale(.2);opacity:0}
.pairs{display:flex;flex-wrap:wrap;align-items:flex-end;gap:18px 26px}
.pairs>div{flex:0 1 190px}
.pairs .arr{flex:0 0 auto;width:34px;height:34px;margin-bottom:14px;position:relative;max-width:34px}
.pairs .arr::before{content:"";position:absolute;left:0;right:4px;top:50%;height:1.5px;background:var(--ink-3)}
.pairs .arr::after{content:"";position:absolute;right:4px;top:50%;width:8px;height:8px;border-top:1.5px solid var(--ink-3);border-right:1.5px solid var(--ink-3);transform:translateY(-50%) rotate(45deg)}
.pairs .v{display:block;margin:0 0 8px;font:500 1.05rem var(--f-mono);color:var(--ink)}
.viz-tag{display:inline-flex;margin:4px 0 0;padding:5px 12px;border-radius:999px;border:1px solid var(--mint-l);background:var(--mint-s);font:500 .74rem var(--f-mono);color:var(--mint-t)}
.cols2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 44px}
@media (max-width:760px){.cols2{grid-template-columns:minmax(0,1fr)}.hb{grid-template-columns:minmax(0,1fr) auto}.hb-l{grid-column:1/-1}.hb-t{grid-column:1}}

/* ricerca: prove */
.trials{list-style:none;margin:0 0 24px;padding:clamp(20px,3vw,30px)}
.trials li{padding:16px 0;border-top:1px solid var(--line)}
.trials li:first-child{border-top:0;padding-top:0}
.trials li:last-child{padding-bottom:0}
.trials p{margin:0 0 12px;color:var(--ink);font-size:.95rem;line-height:1.45}
.trials .hb{margin:0 0 6px;grid-template-columns:70px minmax(0,1fr) 78px}
.trials .hb-v{text-align:right}
.trials .hb-l{font:500 .78rem var(--f-mono);color:var(--ink-3)}
@media (max-width:760px){.trials .hb{grid-template-columns:52px minmax(0,1fr) 64px}.trials .hb-l,.trials .hb-t{grid-column:auto}}
.proj{margin:0 0 20px}
.proj p{max-width:52em;color:var(--ink-2)}

/* FlyToLLM */
.fly{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:clamp(28px,5vw,64px);align-items:center;margin:0 0 20px}
.stage-w{margin:0}
.stage{position:relative;border-radius:22px;overflow:hidden;border:1px solid var(--line);background:radial-gradient(70% 60% at 50% 38%,rgba(46,242,176,.09),transparent 72%),#0b0d11;padding:0}
.stage canvas{display:block;width:100%;aspect-ratio:400/570}
.legend{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.8rem;color:var(--ink-2)}
.legend li{display:flex;align-items:center;gap:8px}
.legend i{width:9px;height:9px;border-radius:50%;background:var(--mint)}
.legend i.g{background:var(--coral);box-shadow:0 0 10px var(--coral-l)}
.legend i.r{border-radius:2px;background:#d9fff1}
.stage-w figcaption{margin:12px 0 0;font-size:.84rem;line-height:1.55;color:var(--ink-3)}
.fly .feat{margin:0}
@media (max-width:900px){.fly{grid-template-columns:minmax(0,1fr)}.stage-w{max-width:420px}}

/* indice */
.idx-g{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:16px}
.idx-c{padding:22px 22px 14px}
.idx-c h3 a{text-decoration:none}
.idx-c h3 a:hover{color:var(--mint-t)}
.idx-c ul{list-style:none;margin:14px 0 0;padding:0}
.idx-c li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;padding:11px 0;border-top:1px solid var(--line);align-items:baseline}
.idx-c .nm{font:500 .88rem/1.35 var(--f-mono);letter-spacing:-.02em;text-decoration:none;overflow-wrap:anywhere}
.idx-c .nm:hover{color:var(--mint-t)}
.fk{font:400 .74rem var(--f-mono);color:var(--ink-3)}
.sk{grid-column:1;font-size:.8rem;color:var(--ink-3);line-height:1.4}
.lsh{grid-column:2;grid-row:1/3;display:flex;flex-direction:column;align-items:flex-end;gap:5px;font:400 .72rem var(--f-mono);color:var(--ink-3);white-space:nowrap}
.lsh i{display:block;width:48px;height:4px;border-radius:4px;background:var(--line-2);position:relative;overflow:hidden}
.lsh i::after{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--p);background:var(--mint);border-radius:4px}
.nt{grid-column:1/-1;font-size:.78rem;color:var(--mint-t);font-family:var(--f-mono)}
.nt:empty{display:none}
.notetext{max-width:56em;color:var(--ink-3);font-size:.9rem;line-height:1.65}
.notetext a{color:var(--mint-t)}
.author{display:flex;gap:clamp(18px,3vw,32px);align-items:center;padding:clamp(22px,3.4vw,38px)}
.author img{width:96px;height:96px;border-radius:50%;flex:none;border:2px solid var(--mint-l);box-shadow:0 0 0 6px var(--mint-s),0 0 40px -6px var(--mint-l);object-fit:cover}
.aname{font-feature-settings:"ss05";margin:0;font-size:clamp(1.3rem,2.4vw,1.7rem);font-weight:620;letter-spacing:-.03em}
.arole{margin:6px 0 0;color:var(--ink-2);max-width:40em}
.arole b{color:var(--ink)}
.kw{margin:16px 0 0;display:flex;flex-wrap:wrap;gap:6px}
.author .go{margin-top:16px}
@media (max-width:600px){.author{flex-direction:column;align-items:flex-start}}
.foot{padding-top:72px;padding-bottom:48px;color:var(--ink-3);font-size:.84rem}
.foot p{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0;padding-top:20px;border-top:1px solid var(--line)}


/* panoramica: un riquadro per sezione */
.ov{padding-top:clamp(40px,5vw,64px);scroll-margin-top:72px}
.ov .kick{margin:0 0 18px}
.bento{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.bento>li{grid-column:span 2}
.bento>li:nth-child(-n+2){grid-column:span 3}
.tile{display:flex;flex-direction:column;height:100%;min-height:136px;padding:18px 20px 18px;text-decoration:none;color:inherit}
.tile::before{z-index:2}
.tile .tn{font:500 .76rem/1 var(--f-mono);color:var(--mint-t)}
.tile h3{margin:16px 0 6px;font-size:1.1rem;letter-spacing:-.02em;font-weight:620}
.tile p{margin:0;color:var(--ink-2);font-size:.88rem;line-height:1.45}
.tile::after{content:"";position:absolute;right:18px;top:18px;width:9px;height:9px;border-top:1.5px solid var(--ink-3);border-right:1.5px solid var(--ink-3);transform:rotate(45deg);transition:transform .25s,border-color .25s;opacity:1;background:none;left:auto;bottom:auto;border-radius:0;pointer-events:none}
.tile:hover::after{border-color:var(--mint-t);transform:rotate(45deg) translate(3px,-3px)}
.tile-pin{background:linear-gradient(135deg,var(--mint-s),transparent 70%),var(--card);border-color:var(--mint-l)}
.tile-pin .tn{display:inline-flex;align-self:flex-start;padding:4px 10px;border-radius:999px;background:var(--mint);color:var(--on-mint);font-weight:600}
.tile-pin h3{font-size:1.4rem}
@media (max-width:900px){.bento{grid-template-columns:repeat(2,minmax(0,1fr))}.bento>li,.bento>li:nth-child(-n+2){grid-column:span 1}.bento>li:nth-child(-n+2){grid-column:span 2}}
@media (max-width:420px){.tile{padding:16px 16px 16px;min-height:0}.tile h3{font-size:1rem}.tile p{font-size:.82rem}}

/* Vergilius fissato in alto */
.pins{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;padding-top:clamp(28px,4vw,48px)}
.pin{scroll-margin-top:72px;min-width:0}
.pin-c{position:relative;display:flex;flex-direction:column;height:100%;padding:clamp(22px,3vw,40px);border-color:var(--mint-l);
  background:radial-gradient(70% 60% at 100% 0%,var(--mint-s),transparent 70%),var(--card)}
.pin-b{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}
.badge{display:inline-flex;align-items:center;gap:8px;padding:6px 13px;border-radius:999px;border:1px solid var(--line-2);font:500 .74rem/1 var(--f-mono);color:var(--ink-2)}
.b-pin{background:var(--mint);color:var(--on-mint);border-color:transparent;font-weight:600}
.b-pin::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--on-mint)}
.pin h2{font-size:clamp(2.2rem,4.4vw,3.4rem);letter-spacing:-.045em;line-height:1;font-feature-settings:"ss05"}
#guida h2{font-size:clamp(1.7rem,3vw,2.3rem);letter-spacing:-.035em;line-height:1.1;max-width:14em}
.pin-s{margin:12px 0 22px;font:500 1rem/1.3 var(--f-mono);color:var(--mint-t)}
.pin .go a{background:var(--mint);color:var(--on-mint);border-color:transparent;font-weight:600}
.pin .go a:hover{background:#6bffcb;color:var(--on-mint)}
.pin-c>p:not(.pin-b):not(.pin-s):not(.go):not(.fn):not(.pin-lab):not(.lb-ax):not(.bf){max-width:46em;color:var(--ink-2)}
.pin-lab{margin:28px 0 0;font:500 .78rem/1.3 var(--f-mono);color:var(--mint-t)}
.pin-st{list-style:none;margin:12px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.pin-st li{padding:14px 0 0;border-top:1px solid var(--line-2)}
.pn{display:block;font:500 clamp(1.25rem,2vw,1.7rem)/1 var(--f-mono);letter-spacing:-.05em;color:var(--ink);white-space:nowrap}
.pl{display:block;margin-top:8px;font-size:.8rem;line-height:1.35;color:var(--ink-3)}
.radar{position:absolute;top:clamp(20px,3vw,36px);right:clamp(20px,3vw,36px);width:clamp(104px,13vw,160px);aspect-ratio:1;border-radius:50%;overflow:hidden;border:1px solid var(--mint-l);box-shadow:0 0 70px -24px var(--mint-l);
  background:radial-gradient(circle,var(--mint-l) 0 3px,transparent 4px),radial-gradient(circle,transparent 0 31%,var(--mint-l) 31.4% 32.2%,transparent 32.6%),radial-gradient(circle,transparent 0 63%,var(--mint-l) 63.4% 64.2%,transparent 64.6%),
  linear-gradient(var(--mint-l),var(--mint-l)) center/1px 100% no-repeat,linear-gradient(var(--mint-l),var(--mint-l)) center/100% 1px no-repeat,radial-gradient(circle,var(--mint-s),transparent 72%)}
.radar::before{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,transparent 0 70%,var(--mint-s) 90%,var(--mint-l) 100%);animation:sweep 7s linear infinite}
.bl{position:absolute;left:var(--x);top:var(--y);width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;background:var(--mint);box-shadow:0 0 12px var(--mint);opacity:.55;animation:blip 7s ease-out infinite;animation-delay:var(--d)}
.bl.c{background:var(--coral);box-shadow:0 0 12px var(--coral)}
@keyframes sweep{to{transform:rotate(360deg)}}
@keyframes blip{0%{opacity:1;transform:scale(1.7)}25%{opacity:.7;transform:scale(1)}100%{opacity:.4;transform:scale(1)}}
@media (max-width:1100px){.pins{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){.pin-st{grid-template-columns:repeat(2,minmax(0,1fr))}.radar{width:96px}}
/* guida: classifica a barre */
.lbs{list-style:none;margin:22px 0 0;padding:0;flex:1;display:flex;flex-direction:column;justify-content:space-around}
#guida .pin-s{font:400 1.02rem/1.5 var(--f-sans);color:var(--ink-2);max-width:34em}
.lb{margin:0 0 14px}
.lb-h{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 12px;margin:0 0 6px}
.lb-l{font-size:.88rem;color:var(--ink)}
.lb-v{font:400 .8rem var(--f-mono);color:var(--ink-3);white-space:nowrap}
.lb-v b{margin-left:6px;font-weight:600;color:var(--mint-t)}
.lb .hb-t{display:block;height:12px}
.lb-ax{margin:2px 0 18px;font:400 .72rem var(--f-mono);color:var(--ink-3)}
#guida .bf{margin:0 0 4px}
html.rv-on .pin-c:not(.in) .hb-t>i{transform:scaleX(0)}

/* comparsa allo scroll: solo con JS attivo e movimento ammesso (la classe rv-on la mette site.js) */
html.rv-on .rv{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.7,.2,1) calc(var(--d,0)*1ms),transform .8s cubic-bezier(.2,.7,.2,1) calc(var(--d,0)*1ms)}
html.rv-on .rv.in{opacity:1;transform:none}
html.rv-on .rv.in.done{transition:transform .2s ease-out,opacity .3s}
.tilt{will-change:transform}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.7)}}
@keyframes ring{0%{box-shadow:0 0 0 0 var(--coral-l)}70%,100%{box-shadow:0 0 0 12px transparent}}

@media (max-width:1000px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* telefono: la scena e' una fascia sopra il nome, col bordo sfumato; il testo sta su fondo pulito */
@media (max-width:759px){
  .hero{padding-top:0;align-items:flex-start}
  .hero-bg,.hero-cv{inset:0 0 auto 0;height:38svh;-webkit-mask-image:linear-gradient(#000 52%,transparent);mask-image:linear-gradient(#000 52%,transparent)}
  .hero-bg::before{right:-25%;width:150%;height:150%;bottom:-40%}
  .hero-bg::after{right:30%;bottom:34%}
  .hero::after{display:none}
  .hero-in{min-height:0;padding-top:calc(38svh - 28px)}
}
@media (max-width:560px){
  .hero{padding-bottom:56px}
  .stats{gap:10px;margin-top:40px}.stat{padding:16px 14px 14px}.stat .lab{font-size:.82rem}
  .pr,.brief,.idx-c{padding-left:18px;padding-right:18px}
  .tl{padding-left:26px}.tl>li::before{left:-26px;width:17px;height:17px}.tl::before{left:7px}
  .btn{padding:0 16px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition-duration:.01ms!important}
}
@media print{
  .bar,.hero-cv,.hero-bg,.hero::after{display:none}
  body,.hero{background:#fff;color:#000}.hero{min-height:0;padding:20px 0}
  html.rv-on .rv{opacity:1;transform:none}
}
