/* ==========================================================================
   Simone Marotti — interfaccia di bordo
   ========================================================================== */

:root{
  --void:#02030a;
  --hull:rgba(10,16,34,0.58);
  --ink-100:#eaf2ff;
  --ink-300:#a8b6da;
  --ink-400:#7c88ad;
  --ink-600:#4c5578;
  --cyan:#5fe1ff;
  --violet:#8b7dfb;
  --magenta:#ff5fd2;
  --line:rgba(120,190,255,0.14);
  --line-strong:rgba(120,190,255,0.3);
  --glow:rgba(95,225,255,0.5);
  --container:1180px;
  --font-display:'Orbitron','Space Grotesk',sans-serif;
  --font-body:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
  --font-mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --ease:cubic-bezier(.16,.8,.24,1);
  --expo:cubic-bezier(.19,1,.22,1);
}

*,*::before,*::after{box-sizing:border-box;}
/* MAI overflow sull'html: lo trasforma in contenitore di scorrimento e
   disattiva position:sticky su tutti i discendenti, spinnando le scene.
   Per il trascinamento laterale su mobile basta touch-action sull'hero. */
body{
  margin:0;background:var(--void);color:var(--ink-100);
  font-family:var(--font-body);font-size:16px;line-height:1.65;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img,svg{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
ul{list-style:none;margin:0;padding:0;}
h1,h2,h3,p{margin:0;}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;}
.container{max-width:var(--container);margin:0 auto;padding:0 clamp(20px,4vw,48px);}
::selection{background:var(--cyan);color:var(--void);}
:focus-visible{outline:1px solid var(--cyan);outline-offset:4px;}

/* ==========================================================================
   Sfondo spaziale + atmosfera
   ========================================================================== */

#space{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;display:block;}
.atmos{position:fixed;inset:0;z-index:1;pointer-events:none;}
.atmos::before{
  content:'';position:absolute;inset:0;
  background:repeating-linear-gradient(0deg,rgba(120,200,255,0.026) 0px,rgba(120,200,255,0.026) 1px,transparent 1px,transparent 3px);
}
.atmos::after{
  content:'';position:absolute;inset:0;
  background:radial-gradient(ellipse 90% 70% at 50% 50%,transparent 38%,rgba(2,3,10,0.78) 100%);
}
.grain{
  position:fixed;inset:-50%;z-index:2;pointer-events:none;opacity:0.04;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 7s steps(6) infinite;
}
@keyframes grain{
  0%{transform:translate(0,0);}20%{transform:translate(-3%,2%);}
  40%{transform:translate(2%,-3%);}60%{transform:translate(-2%,-2%);}
  80%{transform:translate(3%,1%);}100%{transform:translate(0,0);}
}


/* ==========================================================================
   HUD
   ========================================================================== */

.hud{position:fixed;inset:0;z-index:60;pointer-events:none;font-family:var(--font-mono);}
.hud__corner{position:absolute;width:32px;height:32px;border-color:var(--line-strong);border-style:solid;border-width:0;}
.hud__corner--tl{top:14px;left:14px;border-top-width:1px;border-left-width:1px;}
.hud__corner--tr{top:14px;right:14px;border-top-width:1px;border-right-width:1px;}
.hud__corner--bl{bottom:14px;left:14px;border-bottom-width:1px;border-left-width:1px;}
.hud__corner--br{bottom:14px;right:14px;border-bottom-width:1px;border-right-width:1px;}
.hud__rail{
  position:absolute;left:16px;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:10px;align-items:flex-start;
  font-size:9.5px;letter-spacing:0.14em;color:var(--ink-600);text-transform:uppercase;
}
.hud__rail span{writing-mode:vertical-rl;}
.hud__tick{width:1px;height:40px;background:linear-gradient(var(--cyan),transparent);}
.hud__telemetry{
  position:absolute;right:18px;top:50%;transform:translateY(-50%);
  display:flex;flex-direction:column;gap:7px;align-items:flex-end;
  font-size:9.5px;letter-spacing:0.1em;color:var(--ink-600);
}
.hud__telemetry b{color:var(--cyan);font-weight:400;}
.hud__status{
  position:absolute;bottom:18px;left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:14px;
  font-size:9.5px;letter-spacing:0.14em;color:var(--ink-600);text-transform:uppercase;white-space:nowrap;
}
.hud__dot{
  width:5px;height:5px;border-radius:50%;background:var(--cyan);
  box-shadow:0 0 8px var(--glow);animation:pulse 2s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.25;}}
.hud__progress{
  position:fixed;top:0;left:0;height:2px;z-index:120;width:0%;
  background:linear-gradient(90deg,var(--cyan),var(--violet),var(--magenta));
  box-shadow:0 0 12px var(--glow);
}

/* ==========================================================================
   Avvio
   ========================================================================== */

.boot{
  position:fixed;inset:0;z-index:500;background:var(--void);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:13px;
  transition:opacity .8s ease,visibility .8s;
}
.boot.is-done{opacity:0;visibility:hidden;}
.boot__win{width:min(560px,86vw);}
.boot__line{color:var(--ink-400);margin-bottom:6px;}
.boot__line b{color:var(--cyan);font-weight:400;}
.boot__line i{color:#ffb45f;font-style:normal;}
.boot__bar{margin-top:18px;height:2px;background:rgba(120,190,255,0.12);overflow:hidden;}
.boot__bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--cyan),var(--violet));transition:width .2s linear;}
.boot__skip{margin-top:20px;font-size:10px;letter-spacing:0.14em;color:var(--ink-600);text-transform:uppercase;}

/* ==========================================================================
   Cursore mirino
   ========================================================================== */

.cursor-core,.cursor-reticle{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;will-change:transform;}
.cursor-core{width:5px;height:5px;border-radius:50%;background:var(--cyan);margin:-2.5px 0 0 -2.5px;box-shadow:0 0 10px var(--glow);}
.cursor-reticle{
  width:42px;height:42px;margin:-21px 0 0 -21px;
  transition:width .35s var(--ease),height .35s var(--ease),margin .35s var(--ease);
}
.cursor-reticle svg{width:100%;height:100%;stroke:var(--cyan);fill:none;stroke-width:1;opacity:0.6;}
.cursor-reticle .spin{transform-origin:50% 50%;animation:spin 9s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
body.cursor-lock .cursor-reticle{width:74px;height:74px;margin:-37px 0 0 -37px;}
body.cursor-lock .cursor-reticle svg{opacity:1;stroke:var(--magenta);}

/* ==========================================================================
   Tipografia comune
   ========================================================================== */

.wd{display:inline-block;white-space:nowrap;}
.ch{display:inline-block;will-change:transform,opacity,filter;}
.split-anim .ch{
  transform:translate3d(var(--tx,0px),var(--ty,0px),0) rotate(var(--rot,0deg)) scale(var(--sc,1));
  opacity:var(--op,1);filter:blur(var(--bl,0px));
  transition:transform 1.15s var(--expo),opacity .85s ease,filter .85s ease;
  transition-delay:var(--d,0ms);
}
.split-pre .ch{
  transform:translate3d(var(--tx,0px),var(--ty,0px),0) rotate(var(--rot,0deg)) scale(var(--sc,1));
  opacity:var(--op,1);filter:blur(var(--bl,0px));
}
.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:0.22em;
  text-transform:uppercase;color:var(--cyan);
}
.eyebrow::before{content:'';width:22px;height:1px;background:var(--cyan);box-shadow:0 0 8px var(--glow);}
.eyebrow--center{justify-content:center;}
.glitch{position:relative;}
.glitch.is-glitching::before,.glitch.is-glitching::after{
  content:attr(data-text);position:absolute;top:0;left:0;width:100%;
}
.glitch.is-glitching::before{color:var(--magenta);transform:translate(-2px,-1px);clip-path:inset(0 0 60% 0);opacity:0.85;}
.glitch.is-glitching::after{color:var(--cyan);transform:translate(2px,1px);clip-path:inset(55% 0 0 0);opacity:0.85;}

/* ==========================================================================
   Bottoni
   ========================================================================== */

.magnetic{display:inline-block;will-change:transform;}
.btn{
  position:relative;display:inline-flex;align-items:center;gap:10px;
  padding:15px 30px;font-family:var(--font-mono);font-size:12px;
  letter-spacing:0.14em;text-transform:uppercase;font-weight:500;
  white-space:nowrap;overflow:hidden;
  clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);
  transition:box-shadow .35s var(--ease),color .3s ease,border-color .3s ease;
}
.btn__label{position:relative;z-index:3;display:inline-flex;align-items:center;gap:10px;}
.btn--primary{background:linear-gradient(120deg,var(--cyan),var(--violet));color:#02030a;}
.btn--primary::before{
  content:'';position:absolute;inset:0;z-index:1;
  background:linear-gradient(120deg,var(--violet),var(--magenta));
  opacity:0;transition:opacity .5s var(--ease);
}
.btn--primary:hover::before{opacity:1;}
.btn--primary:hover{box-shadow:0 0 34px -4px var(--glow);}
.btn--ghost{border:1px solid var(--line-strong);color:var(--ink-100);}
.btn--ghost::before{
  content:'';position:absolute;inset:0;z-index:1;background:rgba(95,225,255,0.1);
  transform:translateX(-101%);transition:transform .5s var(--ease);
}
.btn--ghost:hover::before{transform:translateX(0);}
.btn--ghost:hover{border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 24px -6px var(--glow);}
.btn svg{width:15px;height:15px;transition:transform .3s var(--ease);}
.btn:hover svg{transform:translateX(4px);}

/* ==========================================================================
   Nav
   ========================================================================== */

.nav{
  position:fixed;top:0;left:0;right:0;z-index:100;padding:20px 0;
  border-bottom:1px solid transparent;
  transition:padding .35s var(--ease),background .35s var(--ease),border-color .35s var(--ease);
}
.nav.is-scrolled{
  padding:12px 0;background:rgba(4,7,20,0.8);
  backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);
  border-bottom-color:var(--line);
}
.nav__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;}
.brand{display:flex;align-items:center;gap:12px;}
.brand__mark{width:32px;height:32px;flex-shrink:0;}
.brand__mark .ring{transform-origin:50% 50%;animation:spin 14s linear infinite;}
.brand__mark .ring-rev{transform-origin:50% 50%;animation:spin 9s linear infinite reverse;}
.brand__mark path{transition:filter .35s ease;}
.brand:hover .brand__mark path{filter:drop-shadow(0 0 6px var(--glow));}
.brand__txt{display:flex;flex-direction:column;line-height:1.2;}

/* Nome e cognome resi identici: stesso corpo, peso, spaziatura e colore. */
.brand__name{
  display:flex;align-items:baseline;gap:8px;
  font-family:var(--font-display);text-transform:uppercase;line-height:1;
  white-space:nowrap;
}
.brand__given,
.brand__family{
  font-size:15px;font-weight:600;letter-spacing:0.07em;
  color:var(--ink-100);transition:color .3s ease;
}
.brand:hover .brand__given,
.brand:hover .brand__family{color:var(--cyan);}
.brand__tag{font-family:var(--font-mono);font-size:9px;letter-spacing:0.16em;color:var(--ink-600);text-transform:uppercase;margin-top:5px;}
.nav__right{display:flex;align-items:center;gap:34px;}
.nav__menu{display:flex;align-items:center;gap:28px;}
.nav__link{
  position:relative;display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:0.1em;text-transform:uppercase;
  color:var(--ink-300);padding:6px 0;transition:color .25s ease,text-shadow .25s ease;
}
.nav__link::after{
  content:'';position:absolute;left:0;bottom:0;width:0;height:1px;
  background:var(--cyan);box-shadow:0 0 8px var(--glow);transition:width .35s var(--ease);
}
.nav__link:hover{color:var(--cyan);text-shadow:0 0 12px var(--glow);}
.nav__link:hover::after{width:100%;}
.nav__link svg{width:11px;height:11px;transition:transform .25s var(--ease);}
.has-submenu:hover .nav__link svg,.has-submenu.is-open .nav__link svg{transform:rotate(180deg);}
.has-submenu{position:relative;}
.submenu{
  position:absolute;top:calc(100% + 16px);left:50%;transform:translateX(-50%) translateY(8px);
  min-width:250px;padding:8px;background:rgba(8,14,32,0.94);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--line);
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
  opacity:0;visibility:hidden;
  transition:opacity .25s var(--ease),transform .25s var(--ease),visibility .25s;
  box-shadow:0 24px 60px -20px rgba(0,0,0,0.9),0 0 30px -12px var(--glow);
}
.has-submenu:hover .submenu,.has-submenu.is-open .submenu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
.submenu a{
  display:flex;align-items:center;gap:10px;padding:11px 14px;
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:0.05em;color:var(--ink-300);
  transition:background .2s ease,color .2s ease,padding-left .25s var(--ease);
}
.submenu a::before{content:'';width:4px;height:4px;background:var(--ink-600);transition:background .2s ease,box-shadow .2s ease;}
.submenu a:hover{background:rgba(95,225,255,0.07);color:var(--cyan);padding-left:20px;}
.submenu a:hover::before{background:var(--cyan);box-shadow:0 0 8px var(--glow);}
.nav__socials{display:flex;align-items:center;gap:12px;}
.nav__socials a{
  width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line);color:var(--ink-400);
  clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);
  transition:color .25s ease,border-color .25s ease,transform .3s var(--ease),box-shadow .3s ease;
}
.nav__socials a:hover{color:var(--cyan);border-color:var(--cyan);transform:translateY(-3px);box-shadow:0 0 18px -4px var(--glow);}
.nav__socials svg{width:14px;height:14px;}
.nav__burger{display:none;width:38px;height:38px;align-items:center;justify-content:center;border:1px solid var(--line);color:var(--ink-300);}
.nav__burger svg{width:18px;height:18px;}

/* ==========================================================================
   Hero
   ========================================================================== */

/* touch-action:pan-y dice al browser che da qui parte solo lo scorrimento
   verticale: un trascinamento laterale del dito non sposta più la pagina
   e resta a disposizione del buco che scopre il video. */
.hero{
  position:relative;z-index:10;min-height:100vh;
  display:flex;align-items:center;overflow:hidden;
  isolation:isolate;touch-action:pan-y;
}

/* Il video NON viene mai mostrato come elemento: serve solo da sorgente
   di immagine per il canvas, che lo disegna dentro ai poligoni toccati
   dal mouse. Resta quindi a piena dimensione (o il browser smetterebbe
   di decodificarlo) ma completamente trasparente. */
.hero__media{
  position:absolute;inset:0;z-index:0;overflow:hidden;
  opacity:0;
  pointer-events:none;
}


/* Riempie il contenitore senza deformarsi. Non si vede mai a schermo:
   il canvas lo legge come sorgente di immagine. */
.hero__video{
  position:absolute;inset:0;
  transform:translateZ(0);backface-visibility:hidden;
  width:100%;height:100%;
  object-fit:cover;object-position:center;
  border:0;
}
.hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:1;transform:translateZ(0);}
/* Solo padding verticale: dichiarare "padding" per intero azzererebbe
   quello orizzontale di .container, che sta sullo stesso elemento. */
.hero__inner{
  position:relative;z-index:3;max-width:880px;
  padding-top:110px;padding-bottom:90px;
  will-change:transform;
}
.hero__id{
  display:flex;align-items:center;gap:14px;margin-bottom:26px;
  font-family:var(--font-mono);font-size:10px;letter-spacing:0.2em;color:var(--ink-600);text-transform:uppercase;
}
.hero__id .bar{width:40px;height:1px;background:var(--line-strong);}
.hero h1{
  font-family:var(--font-display);font-size:clamp(26px,6.2vw,56px);
  font-weight:600;line-height:1.16;letter-spacing:0.005em;margin:0 0 28px;
  text-shadow:0 0 40px rgba(95,225,255,0.18);
}
/* Niente background-clip:text qui: lo split dell'animazione racchiude ogni
   lettera in uno span inline-block, e i discendenti inline-block non
   contribuiscono al ritaglio del genitore -> la parola sparirebbe.
   Il gradiente viene ricostruito colorando le lettere una a una (main.js).
   Questo colore resta come riserva quando lo split non avviene. */
.hero h1 em{font-style:normal;color:var(--cyan);}
.hero__lead{font-size:18.5px;color:var(--ink-300);max-width:520px;margin-bottom:40px;}
.hero__cta{display:flex;gap:16px;flex-wrap:wrap;}
.ship{position:absolute;z-index:2;pointer-events:none;will-change:transform;}
.ship--hero{top:14%;right:3%;width:min(340px,32vw);opacity:0.9;}
.ship__float{animation:float 7s ease-in-out infinite;}
@keyframes float{0%,100%{transform:translateY(0) rotate(0deg);}50%{transform:translateY(-18px) rotate(-1.2deg);}}
.ship__thrust{animation:thrust .45s ease-in-out infinite alternate;transform-origin:right center;}
@keyframes thrust{from{opacity:.45;transform:scaleX(.75);}to{opacity:1;transform:scaleX(1.15);}}
.hero__scroll{
  position:absolute;bottom:34px;left:50%;transform:translateX(-50%);z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:10px;
  color:var(--ink-600);font-family:var(--font-mono);font-size:9.5px;
  letter-spacing:0.2em;text-transform:uppercase;
}
.hero__scroll svg{width:14px;height:14px;animation:bob 2.2s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translateY(0);}50%{transform:translateY(7px);}}

/* ==========================================================================
   SCENE PINNATE — struttura base
   ========================================================================== */

.scene{position:relative;z-index:10;height:calc(var(--len,300) * 1vh);}
.scene__pin{
  position:sticky;top:0;height:100vh;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}

/* ==========================================================================
   SCENA — IL VARCO (frammenti che si assemblano)
   ========================================================================== */

.stage{
  position:relative;
  width:min(1120px,92vw);
  height:min(660px,76vh);
}
.shard-group{position:absolute;inset:0;}
.shard{
  position:absolute;
  left:var(--x);top:var(--y);width:var(--w);height:var(--h);
  border:1px solid var(--line-strong);
  background:var(--hull);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px);
  will-change:transform,opacity,filter;
  opacity:0;
}
.shard::before{
  content:'';position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--cyan),transparent);opacity:.6;
}
.shard::after{
  content:'';position:absolute;inset:8px;
  border:1px solid rgba(120,190,255,0.07);
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);
}
.shard__tag{
  position:absolute;bottom:12px;left:14px;
  font-family:var(--font-mono);font-size:9px;letter-spacing:0.18em;
  color:var(--ink-600);text-transform:uppercase;
}
.shard--lit{border-color:rgba(95,225,255,0.4);box-shadow:0 0 40px -18px var(--glow) inset;}
.shard--grid{
  background-image:
    linear-gradient(rgba(120,190,255,0.06) 1px,transparent 1px),
    linear-gradient(90deg,rgba(120,190,255,0.06) 1px,transparent 1px);
  background-size:26px 26px;
}

/* Il pannello illuminato va dal 24% al 64% dello stage: il suo centro
   è al 44%, non al 50%. Il testo va ancorato lì o esce dal bordo basso. */
.stage__text{
  position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);
  width:min(500px,64%);text-align:center;z-index:5;
  opacity:0;will-change:transform,opacity;pointer-events:none;
}
.stage__text::before{
  content:'';position:absolute;inset:-46px -70px;z-index:-1;
  background:radial-gradient(58% 58% at 50% 50%,rgba(2,3,10,0.9) 0%,rgba(2,3,10,0.72) 55%,transparent 78%);
}
.stage__text h2{
  font-family:var(--font-display);
  font-size:clamp(21px,2.7vw,33px);
  font-weight:600;line-height:1.3;letter-spacing:0.01em;margin:14px 0 14px;
}
.stage__text p{color:var(--ink-300);font-size:15.5px;max-width:430px;margin:0 auto;}
.stage__meta{
  font-family:var(--font-mono);font-size:10px;letter-spacing:0.2em;
  color:var(--ink-600);text-transform:uppercase;
}

/* ==========================================================================
   SCENA — SEMPLIFICAZIONE (sciame che collassa in una barra)
   ========================================================================== */

.simplify{
  position:relative;
  width:min(880px,88vw);
  display:flex;flex-direction:column;
  align-items:flex-start;   /* allineato a sinistra: rompe col varco centrato */
  gap:0;
}
.simplify__readout{
  display:flex;align-items:baseline;gap:12px;
  font-family:var(--font-mono);text-transform:uppercase;
  margin-bottom:26px;
}
.simplify__label{
  font-size:10px;letter-spacing:0.24em;color:var(--ink-600);
  min-width:104px;
}
.simplify__count{
  font-family:var(--font-display);font-size:clamp(30px,4.4vw,50px);
  font-weight:600;line-height:1;
  color:var(--cyan);text-shadow:0 0 26px rgba(95,225,255,0.4);
  font-variant-numeric:tabular-nums;
}
.simplify__unit{font-size:10px;letter-spacing:0.18em;color:var(--ink-600);}

/* la barra è il contenitore: i frammenti la compongono da dentro */
.simplify__bar{
  position:relative;
  width:100%;height:20px;
  margin-bottom:44px;
}
.bit{
  position:absolute;top:0;height:100%;
  background:linear-gradient(180deg,rgba(95,225,255,0.5),rgba(139,125,251,0.32));
  border-left:1px solid rgba(140,235,255,0.5);
  will-change:transform,opacity;
  opacity:0;
}

.simplify__text{
  text-align:left;max-width:640px;
  opacity:0;will-change:transform,opacity;
}
.simplify__text h2{
  font-family:var(--font-display);
  font-size:clamp(23px,3.3vw,38px);
  font-weight:600;line-height:1.3;letter-spacing:0.01em;margin:16px 0 18px;
}
.simplify__text p{color:var(--ink-300);font-size:16.5px;max-width:560px;}

/* ==========================================================================
   SCENA — TRANSITO
   ========================================================================== */

.transit__back,.transit__front{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  will-change:transform,opacity,filter;
}
.transit__back{z-index:2;}
.transit__front{z-index:3;opacity:0;}
.transit__title{
  font-family:var(--font-display);
  font-size:clamp(34px,8.5vw,110px);
  font-weight:600;line-height:1;letter-spacing:0.02em;text-align:center;
  color:rgba(234,242,255,0.9);
}
.transit__panel{
  width:min(900px,90vw);padding:clamp(32px,5vw,58px);text-align:center;
  border:1px solid var(--line-strong);background:var(--hull);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  clip-path:polygon(20px 0,100% 0,100% calc(100% - 20px),calc(100% - 20px) 100%,0 100%,0 20px);
}
.transit__panel h2{
  font-family:var(--font-display);font-size:clamp(21px,3.2vw,36px);
  font-weight:600;line-height:1.3;margin:18px 0 18px;letter-spacing:0.01em;
}
.transit__panel p{color:var(--ink-300);max-width:580px;margin:0 auto;font-size:16.5px;}
.transit__chips{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:30px;}
.chip{
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:0.1em;
  color:var(--ink-300);padding:10px 20px;
  border:1px solid var(--line);background:rgba(10,16,34,0.5);
  clip-path:polygon(9px 0,100% 0,100% calc(100% - 9px),calc(100% - 9px) 100%,0 100%,0 9px);
  transition:border-color .3s ease,color .3s ease,box-shadow .3s ease;
}
.chip:hover{border-color:var(--cyan);color:var(--cyan);box-shadow:0 0 22px -6px var(--glow);}

/* ==========================================================================
   SCENA — MAZZO OPERATIVO
   ========================================================================== */

.deck{position:relative;width:min(1120px,92vw);height:min(720px,84vh);}
/* Le lettere stanno nella fascia libera fra il titolo e la griglia:
   il suo centro cade al 29% del contenitore su tutte le altezze utili. */
.deck__letters{
  position:absolute;left:50%;top:29%;transform:translate(-50%,-50%);
  display:flex;gap:clamp(6px,1.6vw,22px);z-index:1;pointer-events:none;
}
.deck__letters span{
  font-family:var(--font-display);
  font-size:clamp(42px,11vw,150px);font-weight:600;line-height:1;
  color:rgba(120,190,255,0.09);opacity:0;will-change:transform,opacity;
}
.deck__head{
  position:absolute;left:0;top:0;z-index:4;max-width:560px;
  will-change:transform,opacity;
}
.deck__head h2{
  font-family:var(--font-display);font-size:clamp(20px,2.7vw,31px);
  font-weight:600;line-height:1.32;margin-top:16px;letter-spacing:0.01em;
}
.deck__grid{
  position:absolute;left:0;right:0;bottom:0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;
  z-index:3;perspective:1500px;
}
.deck-card{
  position:relative;padding:30px 26px 26px;
  border:1px solid var(--line);background:var(--hull);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  clip-path:polygon(16px 0,100% 0,100% calc(100% - 16px),calc(100% - 16px) 100%,0 100%,0 16px);
  opacity:0;will-change:transform,opacity,filter;
  transform-style:preserve-3d;
  transition:border-color .4s ease,box-shadow .4s ease;
}
.deck-card::before{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(320px circle at var(--mx,50%) var(--my,50%),rgba(95,225,255,0.15),transparent 65%);
  opacity:0;transition:opacity .4s ease;
}
.deck-card:hover::before{opacity:1;}
.deck-card:hover{border-color:rgba(95,225,255,0.42);box-shadow:0 0 44px -14px var(--glow);}
.deck-card__head{display:flex;align-items:center;justify-content:space-between;position:relative;z-index:2;}
.deck-card__index{font-family:var(--font-mono);font-size:11px;letter-spacing:0.14em;color:var(--ink-600);transition:color .35s ease;}
.deck-card:hover .deck-card__index{color:var(--cyan);}
.deck-card__icon{width:21px;height:21px;color:var(--ink-600);transition:color .35s ease,transform .5s var(--ease);}
.deck-card:hover .deck-card__icon{color:var(--cyan);transform:rotate(90deg);}
.deck-card h3{
  position:relative;z-index:2;font-family:var(--font-display);
  font-size:17px;font-weight:600;margin:22px 0 10px;line-height:1.38;letter-spacing:0.01em;
}
.deck-card p{position:relative;z-index:2;font-size:15px;color:var(--ink-400);}
.deck-card__bar{position:relative;z-index:2;margin-top:22px;height:1px;background:var(--line);overflow:hidden;}
.deck-card__bar::after{
  content:'';position:absolute;inset:0;
  background:linear-gradient(90deg,var(--cyan),var(--magenta));
  transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease);
}
.deck-card:hover .deck-card__bar::after{transform:scaleX(1);}

/* Schermi bassi: la griglia occupa quasi tutto il mazzo, quindi le lettere
   vanno rimpicciolite e alzate o finirebbero comunque dietro le card. */
@media (max-height:820px){
  .deck__letters span{font-size:clamp(34px,7.5vw,108px);}
  .deck-card{padding:24px 22px 22px;}
  .deck-card h3{margin:16px 0 8px;font-size:15px;}
  .deck-card p{font-size:13px;}
  .deck-card__bar{margin-top:16px;}
}


/* ==========================================================================
   PROGETTI
   ========================================================================== */

.progetti__head{margin-bottom:clamp(32px,4vw,52px);}
.progetti__title{
  font-family:var(--font-display);
  font-size:clamp(30px,5.6vw,68px);
  font-weight:600;line-height:1;letter-spacing:0.06em;
  text-transform:uppercase;margin-top:18px;
}
.progetti__grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(12px,1.4vw,18px);
}
.progetto{
  position:relative;margin:0;overflow:hidden;cursor:pointer;
  aspect-ratio:4/3;
  border:1px solid var(--line);
  clip-path:polygon(16px 0,100% 0,100% calc(100% - 16px),calc(100% - 16px) 100%,0 100%,0 16px);
  /* fondo di riserva: si vede finché non carichi le immagini */
  background:
    radial-gradient(120% 90% at 20% 10%,rgba(95,225,255,0.12),transparent 60%),
    radial-gradient(110% 90% at 85% 85%,rgba(139,125,251,0.14),transparent 62%),
    var(--hull);
  transition:border-color .4s ease,box-shadow .4s ease,transform .5s var(--ease);
}
.progetto img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .8s var(--ease),opacity .5s ease,filter .5s ease;
  filter:saturate(0.85) brightness(0.9);
}
.progetto.senza-img img{opacity:0;}
.progetto:hover{border-color:rgba(95,225,255,0.42);box-shadow:0 0 40px -14px var(--glow);}
.progetto:hover img{transform:scale(1.06);filter:saturate(1) brightness(1);}
.progetto figcaption{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  display:flex;align-items:baseline;gap:12px;
  padding:16px 18px;
  background:linear-gradient(0deg,rgba(2,3,10,0.9),transparent);
  font-family:var(--font-mono);
}
.progetto__n{font-size:11px;letter-spacing:0.18em;color:var(--cyan);}
.progetto__nome{font-size:13px;letter-spacing:0.06em;color:var(--ink-300);}
.progetto__lente{
  position:absolute;top:14px;right:14px;z-index:2;
  width:34px;height:34px;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line-strong);color:var(--ink-300);
  background:rgba(2,3,10,0.55);
  clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);
  opacity:0;transform:translateY(-6px);
  transition:opacity .35s ease,transform .35s var(--ease),color .3s ease,border-color .3s ease;
}
.progetto__lente svg{width:16px;height:16px;}
.progetto:hover .progetto__lente{opacity:1;transform:translateY(0);color:var(--cyan);border-color:var(--cyan);}
.progetto:focus-visible{outline:2px solid var(--cyan);outline-offset:3px;}

/* ==========================================================================
   INGRANDITORE
   ========================================================================== */

.lente{
  position:fixed;inset:0;z-index:600;
  display:flex;align-items:center;justify-content:center;
  background:rgba(2,3,10,0.94);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  opacity:0;transition:opacity .3s ease;
}
.lente[hidden]{display:none;}
.lente.is-aperta{opacity:1;}
.lente__palco{
  margin:0;max-width:min(1100px,92vw);max-height:82vh;
  display:flex;flex-direction:column;gap:14px;align-items:center;
  transform:scale(0.96);transition:transform .35s var(--expo);
}
.lente.is-aperta .lente__palco{transform:scale(1);}
.lente__palco img{
  max-width:100%;max-height:74vh;object-fit:contain;display:block;
  border:1px solid var(--line-strong);
}
.lente__palco figcaption{
  font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;
  color:var(--ink-400);text-transform:uppercase;
}
.lente button{
  position:absolute;z-index:2;
  width:46px;height:46px;
  display:flex;align-items:center;justify-content:center;
  border:1px solid var(--line-strong);color:var(--ink-300);
  background:rgba(8,13,30,0.7);
  clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
  transition:color .25s ease,border-color .25s ease,box-shadow .25s ease;
}
.lente button:hover{color:var(--cyan);border-color:var(--cyan);box-shadow:0 0 22px -6px var(--glow);}
.lente button svg{width:20px;height:20px;}
.lente__chiudi{top:22px;right:22px;}
.lente__prec{left:22px;top:50%;transform:translateY(-50%);}
.lente__succ{right:22px;top:50%;transform:translateY(-50%);}



/* ==========================================================================
   PAGINA LEGALE (privacy e cookie)
   ========================================================================== */

.pagina-legale .nav{position:fixed;}
.legale{position:relative;z-index:10;padding:calc(96px + 4vw) 0 clamp(60px,7vw,110px);}
.legale__testata{max-width:760px;margin-bottom:clamp(36px,4vw,56px);}
.legale__testata h1{
  font-family:var(--font-display);
  font-size:clamp(28px,4.6vw,48px);
  font-weight:600;line-height:1.2;letter-spacing:0.01em;margin:18px 0 18px;
}
.legale__sommario{color:var(--ink-300);font-size:17px;max-width:620px;}

.legale__testo{
  max-width:820px;
  border-top:1px solid var(--line);
  padding-top:clamp(28px,3vw,44px);
}
.legale__testo h2{
  font-family:var(--font-display);
  font-size:clamp(19px,2.2vw,25px);
  font-weight:600;line-height:1.35;letter-spacing:0.01em;
  margin:clamp(34px,4vw,52px) 0 14px;
}
.legale__testo h2:first-child{margin-top:0;}
.legale__testo h3{
  font-family:var(--font-display);
  font-size:clamp(16px,1.8vw,19px);
  font-weight:600;line-height:1.4;margin:28px 0 10px;color:var(--ink-100);
}
.legale__testo h4{
  font-family:var(--font-mono);
  font-size:12.5px;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--cyan);margin:24px 0 8px;font-weight:500;
}
.legale__testo p{color:var(--ink-300);font-size:16px;line-height:1.75;margin-bottom:16px;}
.legale__testo a{color:var(--cyan);text-decoration:underline;text-underline-offset:3px;}
.legale__testo a:hover{color:var(--ink-100);}
.legale__testo ul{margin:0 0 18px;padding-left:0;}
.legale__testo li{
  position:relative;padding-left:20px;margin-bottom:8px;
  color:var(--ink-300);font-size:16px;line-height:1.7;
}
.legale__testo li::before{
  content:'';position:absolute;left:0;top:0.62em;
  width:6px;height:6px;background:var(--cyan);transform:rotate(45deg);
}
.legale__link{display:flex;flex-wrap:wrap;gap:8px 26px;}
.legale__link li{margin-bottom:0;}

.legale__tabella{
  overflow-x:auto;margin:20px 0 24px;
  border:1px solid var(--line);
  background:var(--hull);
}
.legale__tabella table{border-collapse:collapse;width:100%;min-width:560px;}
.legale__tabella th,.legale__tabella td{
  text-align:left;padding:14px 16px;
  border-bottom:1px solid var(--line);
  font-size:14.5px;line-height:1.65;color:var(--ink-300);
  vertical-align:top;
}
.legale__tabella th{
  font-family:var(--font-mono);font-size:11px;letter-spacing:0.14em;
  text-transform:uppercase;color:var(--cyan);font-weight:500;
}
.legale__tabella tr:last-child td{border-bottom:none;}

.legale__nota{
  margin-top:32px;padding-top:22px;
  border-top:1px solid var(--line);
  font-size:13.5px;color:var(--ink-600);line-height:1.7;
}
.legale__ritorno{margin-top:clamp(36px,4vw,56px);}

@media (max-width:880px){
  .legale{padding:104px 0 64px;}
  .legale__testo p,.legale__testo li{font-size:15.5px;}
}

/* ==========================================================================
   BANNER COOKIE
   ========================================================================== */

.cookie{
  position:fixed;left:0;right:0;bottom:0;z-index:400;
  display:flex;align-items:center;justify-content:space-between;
  gap:clamp(14px,2vw,32px);
  padding:18px clamp(20px,4vw,48px);
  background:rgba(6,10,24,0.94);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-top:1px solid var(--line-strong);
  transform:translateY(100%);
  transition:transform .5s var(--expo);
}
.cookie[hidden]{display:none;}
.cookie.is-visibile{transform:translateY(0);}
.cookie__testo{
  font-size:13.5px;line-height:1.6;color:var(--ink-300);max-width:760px;
}
.cookie__testo strong{color:var(--ink-100);font-weight:600;}
.cookie__testo a{color:var(--cyan);text-decoration:underline;text-underline-offset:3px;}
.cookie__scelte{display:flex;gap:12px;flex-shrink:0;}
.cookie__scelte .btn{padding:12px 22px;font-size:11px;}

/* ==========================================================================
   TORNA IN CIMA
   ========================================================================== */

.su{
  position:fixed;right:22px;bottom:22px;z-index:120;
  width:52px;height:52px;padding:0;
  color:var(--cyan);
  background:rgba(8,13,30,0.72);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border:1px solid var(--line-strong);
  clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);
  opacity:0;transform:translateY(12px);pointer-events:none;
  transition:opacity .4s ease,transform .4s var(--ease),box-shadow .3s ease,border-color .3s ease;
}
.su[hidden]{display:none;}
.su.is-visibile{opacity:1;transform:translateY(0);pointer-events:auto;}
/* col banner aperto la freccia sale, altrimenti si accavallano */
body.cookie-aperto .su{bottom:calc(22px + var(--h-cookie,120px));}
.su:hover{border-color:var(--cyan);box-shadow:0 0 26px -6px var(--glow);}
.su svg{width:26px;height:26px;}
.su__anello{transform-origin:50% 50%;animation:spin 12s linear infinite;}

/* ==========================================================================
   TRASMISSIONE
   ========================================================================== */

.transmission__inner{position:relative;text-align:center;width:min(920px,92vw);}
.transmission__label{
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:0.24em;
  color:var(--ink-600);text-transform:uppercase;margin-bottom:36px;
  display:flex;align-items:center;justify-content:center;gap:12px;
}
/* NB: il contenitore è .transmission__inner, non .transmission —
   con il selettore sbagliato questa regola non si applicava affatto. */
.transmission__inner p{
  font-family:var(--font-display);font-size:clamp(23px,3.8vw,44px);
  font-weight:500;line-height:1.42;letter-spacing:0.005em;margin:0 auto;
}
.qw{
  display:inline-block;color:rgba(168,182,218,0.13);
  transition:color .5s ease,filter .5s ease,text-shadow .5s ease;filter:blur(4px);
}
.qw.lit{color:var(--ink-100);filter:blur(0);text-shadow:0 0 30px rgba(95,225,255,0.25);}
.qw.accent.lit{
  background:linear-gradient(100deg,var(--cyan),var(--magenta));
  -webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;
}
.planet{position:absolute;pointer-events:none;will-change:transform;opacity:0.5;}
.planet--t{right:-14%;top:-32%;width:min(420px,44vw);}
.planet .rot{transform-origin:50% 50%;animation:spin 60s linear infinite;}

/* ==========================================================================
   Sezioni normali
   ========================================================================== */

.section{position:relative;z-index:10;padding:clamp(80px,10vw,130px) 0;}
.partners__head{text-align:center;margin-bottom:48px;}
.partners__head h2{font-family:var(--font-display);font-size:clamp(20px,2.5vw,28px);font-weight:500;margin-top:16px;}
.marquee{
  overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
}
.marquee__track{display:flex;align-items:center;gap:64px;width:max-content;will-change:transform;}
.marquee__item{
  display:flex;align-items:center;gap:12px;
  font-family:var(--font-mono);font-size:15.5px;letter-spacing:0.1em;
  color:var(--ink-600);white-space:nowrap;transition:color .25s ease;
}
.marquee__item::before{
  content:'';width:5px;height:5px;background:var(--ink-600);transform:rotate(45deg);
  transition:background .25s ease,box-shadow .25s ease;
}
.marquee__item:hover{color:var(--cyan);}
.marquee__item:hover::before{background:var(--cyan);box-shadow:0 0 10px var(--glow);}

.cta{
  position:relative;text-align:center;overflow:hidden;
  padding:clamp(64px,9vw,120px) clamp(24px,5vw,48px);
  border:1px solid var(--line);background:var(--hull);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  clip-path:polygon(22px 0,100% 0,100% calc(100% - 22px),calc(100% - 22px) 100%,0 100%,0 22px);
}
.cta::before{
  content:'';position:absolute;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(560px circle at var(--mx,50%) var(--my,10%),rgba(139,125,251,0.2),transparent 65%);
}
.cta__content{position:relative;z-index:3;}
.cta h2{
  display:block;text-align:center;
  font-family:var(--font-display);font-size:clamp(23px,4vw,42px);
  font-weight:600;line-height:1.25;max-width:720px;margin:20px auto 18px;letter-spacing:0.008em;
}
.cta p{color:var(--ink-400);max-width:500px;margin:0 auto 40px;font-size:16.5px;}
.cta__radar{position:absolute;left:50%;top:50%;width:520px;height:520px;margin:-260px 0 0 -260px;z-index:2;pointer-events:none;opacity:0.35;}
.cta__radar .sweep{transform-origin:50% 50%;animation:spin 4.5s linear infinite;}

.site-footer{position:relative;z-index:10;border-top:1px solid var(--line);padding:32px 0;}
.footer__bottom{
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:0.08em;color:var(--ink-600);
}
.footer__bottom a{color:var(--ink-600);transition:color .2s ease;}
.footer__bottom a:hover{color:var(--cyan);}

.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease);}
.reveal.is-visible{opacity:1;transform:translateY(0);}

/* ==========================================================================
   Mobile
   ========================================================================== */

/* Sotto i 740px di altezza la fascia libera fra titolo e griglia si
   riduce a nulla: le lettere sono decorative, meglio toglierle che
   farle finire sopra alle card. */
@media (max-height:740px){
  .deck__letters{display:none;}
}

/* Fra la soglia del menu a scomparsa (880px) e i 1080px la barra e'
   stretta e la voce "Perche' scegliermi" e' lunga: senza questa regola
   il menu sborda o si accavalla ai social. */
@media (min-width:881px) and (max-width:1080px){
  .nav__menu{gap:18px;}
  .nav__link{font-size:11px;letter-spacing:0.06em;}
  .nav__right{gap:24px;}
  .nav__socials{gap:9px;}
  .brand__tag{display:none;}
}

@media (max-width:980px){
  .deck__grid{grid-template-columns:repeat(2,1fr);}
  .ship--hero{opacity:0.4;top:8%;}
}
@media (max-width:880px){
  .nav__menu,.nav__socials{display:none;}
  .nav__burger{display:flex;}
  .cursor-core,.cursor-reticle{display:none;}
  .hud__rail,.hud__telemetry{display:none;}

  /* Le scene restano AGGANCIATE anche su mobile, solo più corte.
     Con height:auto lo scrubbing non avrebbe corsa e tutto scatterebbe. */
  .scene{height:calc(var(--len,300) * 0.62vh);}
  .scene__pin{height:100vh;height:100svh;}

  /* backdrop-filter è troppo pesante sui telefoni: fondo pieno */
  .shard,.deck-card,.transit__panel,.cta{
    backdrop-filter:none;-webkit-backdrop-filter:none;
    background:rgba(9,14,32,0.9);
  }

  /* VARCO — in verticale resta la sola colonna centrale */
  .stage{width:92vw;height:72vh;height:72svh;}
  .shard-group .shard:nth-child(1),
  .shard-group .shard:nth-child(2),
  .shard-group .shard:nth-child(6),
  .shard-group .shard:nth-child(7){display:none;}
  .shard-group .shard:nth-child(3){--x:1%!important;--y:3%!important;--w:98%!important;--h:17%!important;}
  .shard-group .shard:nth-child(4){--x:1%!important;--y:24%!important;--w:98%!important;--h:52%!important;}
  .shard-group .shard:nth-child(5){--x:1%!important;--y:83%!important;--w:98%!important;--h:14%!important;}
  .stage__text{top:50%;width:86%;}
  .stage__text::before{inset:-30px -26px;}

  /* SEMPLIFICAZIONE */
  .simplify{width:90vw;}
  .simplify__bar{height:16px;margin-bottom:34px;}
  .simplify__readout{margin-bottom:20px;}

  /* MAZZO — le card si sfogliano una alla volta invece di formare una griglia */
  .deck{width:92vw;height:78vh;height:78svh;}
  .deck__letters{display:none;}
  .deck__head{position:absolute;top:0;left:0;right:0;max-width:none;}
  .deck__grid{position:absolute;left:0;right:0;bottom:6%;top:auto;height:0;display:block;perspective:none;}
  .deck-card{position:absolute;left:0;right:0;bottom:0;padding:26px 22px 22px;}
  .deck-card h3{font-size:16px;margin:18px 0 8px;}
  .deck-card p{font-size:14px;}
  .deck-card__bar{margin-top:18px;}

  /* PROGETTI: una colonna, sei righe */
  .progetti__grid{grid-template-columns:1fr;}
  .progetto{aspect-ratio:16/10;}
  /* su tocco non esiste il passaggio del mouse: lente e didascalia sempre visibili */
  .progetto__lente{opacity:1;transform:none;}

  /* INGRANDITORE: i comandi vanno portati dentro lo schermo */
  .lente__palco{max-width:94vw;}
  .lente__palco img{max-height:66vh;}
  .lente button{width:42px;height:42px;}
  .lente__chiudi{top:14px;right:14px;}
  .lente__prec{left:10px;}
  .lente__succ{right:10px;}

  /* BANNER COOKIE: in colonna, i bottoni a piena larghezza */
  .cookie{flex-direction:column;align-items:stretch;padding:16px 20px 18px;}
  .cookie__testo{font-size:13px;}
  .cookie__scelte{width:100%;}
  .cookie__scelte .btn{flex:1;justify-content:center;}

  /* TORNA IN CIMA */
  .su{right:14px;bottom:16px;width:46px;height:46px;}
  .su svg{width:23px;height:23px;}

  /* FOOTER: la barra di stato dell'interfaccia è fissata in basso al
     centro e finiva addosso alle righe del footer. Su schermi stretti
     si toglie: è decorativa, e lì lo spazio non c'è. */
  .hud__status{display:none;}
  .site-footer{padding:36px 0 34px;}
  .footer__bottom{
    flex-direction:column;align-items:flex-start;gap:12px;
    line-height:1.7;
  }

  /* TRANSITO */
  .transit__panel{width:92vw;padding:30px 22px;}
  .transit__title{font-size:clamp(30px,11vw,58px);}
}
@media (max-width:560px){
  .ship--hero{display:none;}
  .progetti__title{letter-spacing:0.04em;}
  .hud__corner{width:22px;height:22px;}
  .cta__radar{width:340px;height:340px;margin:-170px 0 0 -170px;}
}

/* ==========================================================================
   Riduzione movimento
   ========================================================================== */

@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1;transform:none;transition:none;}
  .grain,.hero__scroll svg,.ship__float,.ship__thrust,
  .brand__mark .ring,.brand__mark .ring-rev,.hero__media,
  .planet .rot,.cta__radar .sweep,.cursor-reticle .spin,.hud__dot{animation:none;}
  .qw{color:var(--ink-100);filter:none;}
  .cursor-core,.cursor-reticle{display:none;}
  .boot{display:none;}

  /* Niente aggancio: le scene tornano sezioni normali in flusso. */
  .scene{height:auto !important;}
  .scene__pin{position:relative;height:auto;padding:80px 0;}

  /* I pannelli del varco sono decorativi e si reggono su altezze in %
     che senza un contenitore alto collasserebbero: meglio toglierli. */
  .stage{height:auto;width:100%;}
  .shard-group{display:none;}
  .stage__text{
    position:relative;left:auto;top:auto;transform:none !important;
    opacity:1 !important;width:100%;max-width:620px;margin:0 auto;
  }
  .stage__text::before{display:none;}

  .simplify__text{opacity:1 !important;transform:none !important;}
  .bit{opacity:1 !important;transform:none !important;}

  /* Il mazzo torna una griglia leggibile invece di card sovrapposte. */
  .deck{height:auto;width:100%;}
  .deck__letters{display:none;}
  .deck__head{position:relative;max-width:none;}
  .deck__grid{
    position:relative;top:auto;bottom:auto;height:auto;
    display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
    gap:14px;margin-top:34px;
  }
  .deck-card{
    position:relative;left:auto;right:auto;bottom:auto;
    opacity:1 !important;transform:none !important;filter:none !important;
  }

  .transit__back{display:none;}
  .su__anello{animation:none;}
  .cookie{transition:none;}
  .progetto img{transition:none;}
  .transit__front{
    position:relative;opacity:1 !important;
    transform:none !important;filter:none !important;
  }
}

/* ==========================================================================
   Menu mobile
   ========================================================================== */

.mobile-menu{
  position:fixed;inset:0;z-index:200;background:rgba(2,3,10,0.97);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  padding:24px;display:flex;flex-direction:column;
  transform:translateY(-100%);transition:transform .5s var(--expo);
}
.mobile-menu.is-open{transform:translateY(0);}
.mobile-menu__top{display:flex;justify-content:space-between;align-items:center;}
.mobile-menu__close{width:38px;height:38px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink-300);}
.mobile-menu__close svg{width:16px;height:16px;}
.mobile-menu__list{margin-top:44px;display:flex;flex-direction:column;}
.mobile-menu__list > li > a,.mobile-menu__sub-toggle{
  display:flex;align-items:center;justify-content:space-between;width:100%;padding:17px 4px;
  font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:0.02em;
  border-bottom:1px solid var(--line);text-align:left;
}
.mobile-menu__sub-toggle svg{width:16px;height:16px;transition:transform .3s ease;}
.mobile-submenu{max-height:0;overflow:hidden;transition:max-height .4s var(--ease);display:flex;flex-direction:column;}
.mobile-has-submenu.is-open .mobile-submenu{max-height:320px;}
.mobile-has-submenu.is-open .mobile-menu__sub-toggle svg{transform:rotate(180deg);}
.mobile-submenu a{padding:13px 4px;color:var(--ink-400);font-family:var(--font-mono);font-size:13px;}
.mobile-menu__socials{display:flex;gap:14px;margin-top:auto;padding-top:24px;}
.mobile-menu__socials a{width:38px;height:38px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;color:var(--ink-400);}
.mobile-menu__socials svg{width:15px;height:15px;}
