:root{
  --void:#04060A;
  --steel:#0B1017;
  --steel-2:#0F1620;
  --edge:#1A2330;
  --edge-hi:#28374A;
  --ice:#8AD8FF;
  --ice-dim:rgba(138,216,255,.14);
  --led:#3BE18F;
  --led-amber:#FFB65C;
  --text:#E7ECF2;
  --dim:#5E6B7A;
  --disp:'Saira Condensed',sans-serif;
  --body:'Saira',sans-serif;
  --mono:'JetBrains Mono',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{
  background:var(--void);color:var(--text);font-family:var(--body);
  overflow-x:hidden;-webkit-font-smoothing:antialiased;
}
::selection{background:var(--ice);color:var(--void)}
a{color:inherit}

/* ================= corridor canvas ================= */
#corridor{position:fixed;inset:0;z-index:0;pointer-events:none}

/* ================= HUD frame ================= */
.hud{position:fixed;inset:0;z-index:40;pointer-events:none;font-family:var(--mono)}
.hud .corner{position:absolute;width:22px;height:22px;border:1px solid var(--edge-hi)}
.hud .c-tl{top:14px;left:14px;border-right:0;border-bottom:0}
.hud .c-tr{top:14px;right:14px;border-left:0;border-bottom:0}
.hud .c-bl{bottom:14px;left:14px;border-right:0;border-top:0}
.hud .c-br{bottom:14px;right:14px;border-left:0;border-top:0}
.hud .read{
  position:absolute;font-size:10px;letter-spacing:.14em;color:var(--dim);
  text-transform:uppercase;display:flex;align-items:center;gap:8px;
}
.hud .read b{color:var(--text);font-weight:500}
.hud .r-tl{top:22px;left:48px}
.hud .r-tr{top:22px;right:48px;flex-direction:column;align-items:flex-end;gap:5px}
.hud .r-bl{bottom:22px;left:48px}
.hud .r-br{bottom:22px;right:48px}
.led{width:6px;height:6px;border-radius:50%;background:var(--led);box-shadow:0 0 8px var(--led)}
.led.amber{background:var(--led-amber);box-shadow:0 0 8px var(--led-amber)}
.hud .track{width:110px;height:2px;background:var(--edge);position:relative;overflow:hidden}
.hud .track i{position:absolute;inset:0;width:0;background:var(--ice)}
@media(max-width:820px){.hud .r-br,.hud .r-bl{display:none}}

/* ================= doors intro ================= */
#doors{position:fixed;inset:0;z-index:90;display:flex}
.door{
  flex:1;background:
    repeating-linear-gradient(0deg,transparent 0 26px,rgba(255,255,255,.025) 26px 27px),
    linear-gradient(180deg,var(--steel-2),var(--steel));
  position:relative;border-right:1px solid var(--edge);
}
.door:last-child{border-right:0;border-left:1px solid var(--edge)}
.door::after{
  content:'';position:absolute;top:0;bottom:0;width:8px;
  background:linear-gradient(90deg,transparent,rgba(138,216,255,.06));
}
.door.l::after{right:0}
.door.r::after{left:0;transform:scaleX(-1)}
.latch{
  position:absolute;top:50%;transform:translateY(-50%);
  font-family:var(--mono);font-size:10px;letter-spacing:.22em;color:var(--dim);
  text-transform:uppercase;white-space:nowrap;
}
.door.l .latch{right:26px;text-align:right}
.door.r .latch{left:26px}
.latch .big{display:block;color:var(--text);font-size:12px;margin-top:6px}
#doors .seam{
  position:absolute;left:50%;top:0;bottom:0;width:1px;
  background:var(--ice);box-shadow:0 0 24px rgba(138,216,255,.65);
  transform:scaleY(0);transform-origin:center;
}

/* ================= nav ================= */
nav{
  position:fixed;top:0;left:0;right:0;z-index:50;
  display:flex;justify-content:center;padding:48px 0 0;
}
nav .pill{
  pointer-events:auto;display:flex;align-items:center;gap:26px;
  background:rgba(11,16,23,.72);backdrop-filter:blur(14px);
  border:1px solid var(--edge);border-radius:99px;padding:10px 22px;
}
nav .logo{display:inline-flex;align-items:center;gap:9px;font-family:var(--disp);font-weight:800;font-size:16px;letter-spacing:.06em}
nav .logo .logo-mark{width:20px;height:20px;display:block}
nav .logo i{font-style:normal;color:var(--ice)}
nav a{font-family:var(--mono);font-size:11px;color:var(--dim);text-decoration:none;letter-spacing:.08em;transition:color .25s}
nav a:hover,nav a:focus-visible{color:var(--text)}
nav a:focus-visible{outline:1px solid var(--ice);outline-offset:4px}
@media(max-width:760px){nav a{display:none}nav .pill{gap:0}}

/* ================= sections ================= */
main{position:relative;z-index:10}
section{position:relative;padding:clamp(100px,16vh,190px) clamp(22px,5vw,72px)}
.rack-tag{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;color:var(--ice);
  text-transform:uppercase;display:inline-flex;align-items:center;gap:10px;
  border:1px solid var(--edge);border-radius:4px;padding:7px 12px;
  background:rgba(11,16,23,.6);margin-bottom:40px;
}
.rack-tag .led{width:5px;height:5px}

/* hero */
.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding-top:120px}
.hero-inner{display:flex;flex-direction:column;align-items:center;will-change:transform,filter}

/* control room — la scena si accende come un monitor (CRT power-on) */
.cr{height:100svh;position:relative}
.cr-stage{position:sticky;top:0;height:100svh;overflow:hidden;display:grid;place-items:center;background:var(--void)}
.cr-screen{
  position:absolute;inset:0;overflow:hidden;
  transform:scaleY(.004);will-change:transform;
}
.cr-screen .inner{
  position:absolute;inset:0;will-change:transform;
}
.cr-screen img{
  position:relative;z-index:1;
  width:100%;height:100%;object-fit:contain;object-position:center;
  filter:saturate(.9);
}
/* ambient glow: copia sfocata della stessa foto che riempie i lati (stile TV ambilight) */
.cr-screen img.ambient{
  position:absolute;inset:0;z-index:0;
  object-fit:cover;object-position:center 30%;
  filter:blur(44px) brightness(.5) saturate(1.15);
  transform:scale(1.15);
}
.cr-screen .shade{position:absolute;inset:0;z-index:2;background:var(--void);opacity:.75}
.cr-screen .bloom{
  position:absolute;inset:0;z-index:2;opacity:0;
  background:radial-gradient(ellipse 80% 40% at 50% 18%, rgba(124,77,255,.5), transparent 60%),
             radial-gradient(ellipse 60% 30% at 50% 85%, rgba(255,190,110,.25), transparent 65%);
  mix-blend-mode:screen;
}
.cr-screen .scan{
  position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,rgba(4,6,10,.35),transparent 30%,transparent 65%,rgba(4,6,10,.7)),
             repeating-linear-gradient(0deg,rgba(255,255,255,.02) 0 1px,transparent 1px 3px);
}
.cr-standby{
  position:absolute;z-index:2;left:50%;top:56%;transform:translate(-50%,-50%);
  display:flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--dim);white-space:nowrap;
}
.cr-standby .led{animation:standbyBlink 1.5s steps(1) infinite}
@keyframes standbyBlink{0%,55%{opacity:1}56%,100%{opacity:.12}}
@media(max-width:520px){.cr-standby{font-size:9.5px;letter-spacing:.16em}}

.cr-beam{
  position:absolute;left:6%;right:6%;top:50%;height:2px;transform:translateY(-50%) scaleX(0);
  background:var(--ice);box-shadow:0 0 26px rgba(138,216,255,.9),0 0 80px rgba(138,216,255,.5);
  will-change:transform,opacity;
}
.cr-title{
  position:relative;z-index:2;text-align:center;opacity:0;transform:translateY(26px);
  will-change:transform,opacity;
}
.cr-title .m{
  font-family:var(--mono);font-size:11px;letter-spacing:.26em;color:var(--ice);
  text-transform:uppercase;margin-bottom:18px;display:flex;align-items:center;gap:10px;justify-content:center;
}
.cr-title h3{
  font-family:var(--disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(38px,5.8vw,86px);line-height:.98;letter-spacing:.02em;
  text-shadow:0 8px 60px rgba(4,6,10,.85);
}
.cr-title p{margin-top:20px;color:rgba(231,236,242,.78);font-size:15px;max-width:460px;line-height:1.7;margin-left:auto;margin-right:auto}
.cr-hud{
  position:absolute;z-index:2;bottom:40px;left:50%;transform:translateX(-50%);
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:rgba(231,236,242,.6);
  text-transform:uppercase;opacity:0;white-space:nowrap;
}




/* form di contatto — nuova-richiesta.msg */
.contact-grid{
  max-width:1100px;margin:56px auto 0;display:grid;grid-template-columns:1fr 1.3fr;
  gap:clamp(24px,4vw,56px);text-align:left;
}
.contact-info{display:flex;flex-direction:column;gap:18px;justify-content:center}
.contact-info .row{display:flex;gap:12px;align-items:flex-start;color:var(--dim);font-size:14.5px;line-height:1.6}
.contact-info .row b{color:var(--ice);font-family:var(--mono);font-size:12px;margin-top:3px}
.contact-info .row strong{color:var(--text);font-weight:600}
.msgwin{
  border:1px solid var(--edge);border-radius:12px;background:rgba(11,16,23,.72);
  backdrop-filter:blur(8px);overflow:hidden;
  box-shadow:0 30px 80px rgba(0,0,0,.5);
}
.msgwin .head{
  display:flex;align-items:center;gap:8px;padding:12px 18px;
  border-bottom:1px solid var(--edge);
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--dim);text-transform:lowercase;
}
.msgwin .head .dots{display:flex;gap:6px;margin-right:6px}
.msgwin .head .dots i{width:9px;height:9px;border-radius:50%;background:#26303D}
.msgwin .head .dots i:first-child{background:var(--ice)}
.msgwin form{padding:22px 24px;display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{display:flex;flex-direction:column;gap:7px}
.field.full{grid-column:1/-1}
.field label{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;color:var(--dim);text-transform:lowercase;
}
.field label b{color:var(--ice);font-weight:500}
.field input,.field textarea{
  background:var(--steel);border:1px solid var(--edge);border-radius:6px;
  padding:12px 14px;color:var(--text);font-family:var(--body);font-size:14px;
  outline:none;transition:border-color .25s, box-shadow .25s;resize:vertical;
}
.field input:focus,.field textarea:focus{
  border-color:var(--ice);box-shadow:0 0 0 3px rgba(138,216,255,.12);
}
.field textarea{min-height:120px}
.consent{
  grid-column:1/-1;display:flex;gap:10px;align-items:flex-start;
  color:var(--dim);font-size:12.5px;line-height:1.55;
}
.consent input{margin-top:3px;accent-color:var(--ice)}
.msgwin .send{
  grid-column:1/-1;justify-self:start;
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--void);background:var(--ice);border:none;border-radius:6px;
  padding:14px 26px;cursor:pointer;
  box-shadow:0 0 0 1px rgba(138,216,255,.4),0 0 30px rgba(138,216,255,.18);
  transition:transform .3s cubic-bezier(.2,.8,.2,1);
}
.msgwin .send:hover{transform:translateY(-2px)}
.form-note{grid-column:1/-1;font-family:var(--mono);font-size:10.5px;color:var(--led);letter-spacing:.1em;display:none}
@media(max-width:820px){
  .contact-grid{grid-template-columns:1fr}
  .msgwin form{grid-template-columns:1fr}
}

/* grain overlay — statica, leggerissima */
#grain{
  position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 220 220' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size:220px 220px;
}
.hero h1{
  font-family:var(--disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(40px,6.8vw,100px);line-height:.98;letter-spacing:.02em;
}
.hero h1 .row{display:block;overflow:hidden}
.hero h1 .row span{display:inline-block;transform:translateY(112%)}
.hero h1 .ice{color:var(--ice)}
/* la riga inglese è più lunga: su schermi stretti la riduco per tenerla su una riga */
@media(max-width:640px){.hero h1 .ice{font-size:.74em;letter-spacing:.03em}}
.hero .sub{
  margin-top:34px;max-width:560px;color:var(--dim);font-size:15.5px;line-height:1.7;
}
.hero .sub strong{color:var(--text);font-weight:600}
.hero .meta{
  margin-top:46px;display:flex;gap:34px;flex-wrap:wrap;justify-content:center;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase;
}
.hero .meta span{display:flex;align-items:center;gap:8px}
.scroll-hint{
  position:absolute;bottom:44px;left:50%;transform:translateX(-50%);
  font-family:var(--mono);font-size:10px;letter-spacing:.24em;color:var(--dim);text-transform:uppercase;
  display:flex;flex-direction:column;align-items:center;gap:10px;
}
.scroll-hint::after{
  content:'';width:1px;height:34px;background:linear-gradient(var(--ice),transparent);
  animation:drop 1.8s ease-in-out infinite;
}
@keyframes drop{0%{transform:scaleY(0);transform-origin:top}55%{transform:scaleY(1);transform-origin:top}56%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* statement */
.statement{max-width:1200px;margin:0 auto}
.statement p{
  font-family:var(--disp);font-weight:600;text-transform:uppercase;
  font-size:clamp(24px,3.5vw,50px);line-height:1.16;letter-spacing:.02em;
}
.statement .w{color:rgba(231,236,242,.13)}
.statement .w.on{color:var(--text)}
.statement .w.key.on{color:var(--ice)}



/* pipeline */
#metodo{padding-left:0;padding-right:0}
.pipe{position:relative}
.pipe-stage{position:sticky;top:0;height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden}
.pipe-hud{
  position:absolute;top:clamp(84px,12vh,120px);left:50%;transform:translateX(-50%);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase;
  display:flex;align-items:center;gap:16px;
}
.pipe-hud .seg{width:34px;height:2px;background:var(--edge)}
.pipe-hud .seg.on{background:var(--ice)}
.pstep{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 24px;opacity:0;visibility:hidden}
.pstep .n{font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--ice);text-transform:uppercase;margin-bottom:20px}
.pstep h3{
  font-family:var(--disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(36px,5.8vw,86px);line-height:.98;letter-spacing:.02em;max-width:1000px;
}
.pstep p{margin-top:22px;color:var(--dim);font-size:clamp(14px,1.3vw,17px);line-height:1.7;max-width:520px}

/* ai band */
.ai{max-width:1100px;margin:0 auto;border:1px solid var(--edge);border-radius:12px;background:rgba(11,16,23,.55);padding:clamp(36px,5vw,64px)}
.ai h2{
  font-family:var(--disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(28px,4.4vw,58px);line-height:1;max-width:850px;margin-bottom:36px;
}
.ai h2 i{font-style:normal;color:var(--ice)}
.ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.ai-grid .cell{border:1px solid var(--edge);border-radius:8px;padding:24px;background:var(--steel)}
.ai-grid .cell .m{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--ice);text-transform:uppercase;margin-bottom:12px;display:flex;align-items:center;gap:8px}
.ai-grid p{color:var(--dim);font-size:14px;line-height:1.7}
.ai-grid strong{color:var(--text);font-weight:600}
@media(max-width:760px){.ai-grid{grid-template-columns:1fr}}

/* cta */
.cta{text-align:center;padding-bottom:clamp(80px,12vh,140px)}
.cta h2{
  font-family:var(--disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(40px,6.8vw,100px);line-height:.98;letter-spacing:.02em;
}
.cta h2 .row{display:block;overflow:hidden}
.cta h2 .row span{display:inline-block;transform:translateY(112%)}
.btn{
  display:inline-flex;align-items:center;gap:12px;margin-top:48px;
  font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--void);background:var(--ice);text-decoration:none;
  padding:18px 34px;border-radius:6px;
  box-shadow:0 0 0 1px rgba(138,216,255,.4),0 0 42px rgba(138,216,255,.22);
  transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s;
}
.btn:hover{transform:translateY(-3px);box-shadow:0 0 0 1px rgba(138,216,255,.6),0 0 68px rgba(138,216,255,.35)}
.hero .btn{margin-top:44px}
footer{
  position:relative;z-index:10;
  padding:24px clamp(22px,5vw,72px);border-top:1px solid var(--edge);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--dim);
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important}
  .hero h1 .row span,.cta h2 .row span{transform:none}
  #doors{display:none}
  .pstep:first-of-type{opacity:1;visibility:visible}
}

/* ============================================================
   ENHANCEMENTS v8 — transizioni "on-brand": CLI · rack · DevOps
   (coerenti col mondo software house / infrastruttura)
   ============================================================ */

/* caret da terminale nel logo — l'underscore lampeggia come un prompt */
nav .logo i{animation:caret 1.15s steps(1) infinite}
@keyframes caret{0%,49%{opacity:1}50%,100%{opacity:0}}

/* nav = indice di sistema: il link della sezione corrente = "unità selezionata" */
nav a{position:relative}
nav a::after{
  content:'';position:absolute;left:0;right:100%;bottom:-4px;height:1px;
  background:var(--ice);box-shadow:0 0 8px rgba(138,216,255,.7);
  transition:right .4s cubic-bezier(.2,.8,.2,1);
}
nav a.active{color:var(--text)}
nav a.active::after{right:0}
nav a.active::before{
  content:'';position:absolute;left:-13px;top:50%;transform:translateY(-50%);
  width:5px;height:5px;border-radius:50%;background:var(--led);
  box-shadow:0 0 8px var(--led);animation:ledPulse 1.4s ease-in-out infinite;
}

/* rack-tag: "unità in linea" — uno scan luminoso attraversa la targhetta
   quando la sezione entra, e la spia inizia a pulsare */
.rack-tag{position:relative;overflow:hidden}
.rack-tag::before{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(100deg,transparent 20%,rgba(138,216,255,.3),transparent 80%);
  transform:translateX(-130%);
}
.rack-tag.online::before{animation:tagScan .9s ease-out forwards}
.rack-tag.online .led{animation:ledPulse 1.5s ease-in-out infinite}
@keyframes tagScan{to{transform:translateX(130%)}}
@keyframes ledPulse{0%,100%{box-shadow:0 0 8px var(--led)}50%{box-shadow:0 0 16px var(--led),0 0 4px var(--led)}}

/* stato progetto: sequenza di deploy (amber ▸ verde) */
.wstatus .st{font-weight:500;transition:color .35s}
.wstatus.deploying .led{
  background:var(--led-amber);box-shadow:0 0 8px var(--led-amber);
  animation:ledPulse 1s ease-in-out infinite;
}

/* separatore di sezione "bus dati": una linea sottile si disegna tra i blocchi */
.busline{
  position:relative;height:1px;max-width:1100px;margin:0 auto;
  background:linear-gradient(90deg,transparent,var(--edge) 12%,var(--edge) 88%,transparent);
  transform:scaleX(0);transform-origin:left;
}
.busline i{
  position:absolute;top:-2px;left:0;width:5px;height:5px;border-radius:50%;
  background:var(--ice);box-shadow:0 0 10px rgba(138,216,255,.9);opacity:0;
}

/* ============================================================
   OVERHAUL v8 — spatial · decrypt · interactive · deploy-green
   (fondato su: UI-UX Pro Max OLED + run-green · 21st spatial-logic)
   ============================================================ */
:root{ --run:#22C55E; }

/* hero: contenitore per spotlight e decrypt */
.hero{position:relative}
.hero-inner{position:relative;z-index:1}

/* spotlight che segue il cursore (ice → verde run) */
.hero .spot{
  position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(460px circle at var(--mx,50%) var(--my,34%),
    rgba(138,216,255,.12), rgba(34,197,94,.05) 42%, transparent 64%);
  mix-blend-mode:screen;opacity:0;transition:opacity 1.2s ease;
}
.hero .spot.on{opacity:1}

/* boot log digitato dentro l'intro porte */
#bootlog{
  position:absolute;left:50%;top:63%;transform:translate(-50%,-50%);
  width:min(460px,84vw);z-index:3;text-align:left;
  font-family:var(--mono);font-size:12.5px;line-height:2;color:var(--dim);letter-spacing:.03em;
}
#bootlog .ln{white-space:nowrap;overflow:hidden;opacity:0;transition:opacity .18s}
#bootlog .ln.show{opacity:1}
#bootlog .ln .ok{color:var(--run)}
#bootlog .ln .gr{color:var(--ice)}
#bootlog .cur{display:inline-block;color:var(--ice);animation:caret 1s steps(1) infinite}

/* headline dopo il decrypt */
.hero h1 .ice.lit{text-shadow:0 0 28px rgba(138,216,255,.5)}

/* card progetto: glare che segue il mouse (tilt gestito da GSAP) */
.wcard .glare{
  position:absolute;inset:0;z-index:4;pointer-events:none;opacity:0;
  background:radial-gradient(320px circle at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.16),transparent 55%);
  mix-blend-mode:screen;transition:opacity .35s;
}

/* ---- belle transition v8.1 ---- */

/* reveal a tendina: linea di scansione che accompagna l'apertura della card */
.wcard .shot .wipeline{
  position:absolute;left:0;right:0;top:100%;height:2px;z-index:5;pointer-events:none;
  background:var(--ice);box-shadow:0 0 18px rgba(138,216,255,.95),0 0 50px rgba(138,216,255,.4);
}

/* pipeline: crossfade cinematico (blur gestito da GSAP) */
.pstep{will-change:opacity,transform,filter}

/* celle AI: pronte per il reveal a circuito */
.ai-grid .cell{will-change:clip-path}

/* nav che si compatta quando lasci l'hero */
nav .pill{transition:padding .45s cubic-bezier(.2,.8,.2,1),gap .45s cubic-bezier(.2,.8,.2,1),background .45s,box-shadow .45s}
nav.scrolled .pill{
  padding:7px 16px;gap:18px;background:rgba(11,16,23,.92);
  box-shadow:0 10px 34px rgba(0,0,0,.5),0 0 0 1px rgba(138,216,255,.05);
}


/* ============================================================
   TEMA CHIARO — attivato da html.light (toggle nella nav)
   ============================================================ */
html.light{
  /* palette allineata al blu del logo (#2A8BF6), contrasti WCAG verificati */
  --void:#F5F7FB;
  --steel:#FFFFFF;
  --steel-2:#EAEFF6;
  --edge:#D9E1EC;
  --edge-hi:#BCC9DA;
  --ice:#1B6FD4;
  --ice-dim:rgba(27,111,212,.12);
  --led:#0B8552;
  --led-amber:#B27414;
  --text:#101B2C;
  --dim:#57657A;
  --run:#0B8552;
}
html.light nav .pill{background:rgba(255,255,255,.78)}
html.light nav.scrolled .pill{background:rgba(255,255,255,.94);box-shadow:0 10px 34px rgba(16,27,44,.12),0 0 0 1px rgba(27,111,212,.06)}
html.light .rack-tag{background:rgba(255,255,255,.65)}
html.light .statement .w{color:rgba(15,24,38,.14)}
html.light .wcard{background:rgba(255,255,255,.82);box-shadow:0 18px 50px rgba(16,27,44,.08)}
html.light .wtags span{background:rgba(255,255,255,.72)}
html.light .msgwin{background:rgba(255,255,255,.86);box-shadow:0 30px 80px rgba(15,24,38,.16)}
html.light .ai{background:rgba(255,255,255,.6)}
html.light .btn{box-shadow:0 0 0 1px rgba(27,111,212,.45),0 0 30px rgba(27,111,212,.14)}
html.light .btn:hover{box-shadow:0 0 0 1px rgba(27,111,212,.6),0 0 48px rgba(27,111,212,.22)}
html.light #grain{opacity:.05;filter:invert(1)}
html.light .hero .spot{
  background:radial-gradient(460px circle at var(--mx,50%) var(--my,34%),
    rgba(27,111,212,.09), rgba(11,133,82,.04) 42%, transparent 64%);
  mix-blend-mode:multiply;
}

/* tastino "scendi": appare solo se l'utente resta fermo in una scena pinnata */
.downbtn{
  position:fixed;bottom:24px;left:50%;z-index:46;
  width:42px;height:42px;border-radius:50%;
  transform:translate(-50%,10px);opacity:0;pointer-events:none;
  display:flex;align-items:center;justify-content:center;
  background:rgba(11,16,23,.78);backdrop-filter:blur(10px);
  border:1px solid var(--edge);cursor:pointer;padding:0;
  transition:opacity .4s ease,transform .4s ease,border-color .25s;
}
.downbtn.on{opacity:1;transform:translate(-50%,0);pointer-events:auto;animation:btnGlow 1.7s ease-in-out infinite}
/* anello sonar che si espande: impossibile non vederlo */
.downbtn::after{
  content:'';position:absolute;inset:-1px;border-radius:50%;
  border:1px solid var(--ice);opacity:0;pointer-events:none;
}
.downbtn.on::after{animation:ping 1.7s ease-out infinite}
@keyframes ping{0%{transform:scale(1);opacity:.75}75%,100%{transform:scale(1.9);opacity:0}}
@keyframes btnGlow{
  0%,100%{box-shadow:0 0 0 0 rgba(138,216,255,0);border-color:var(--edge)}
  50%{box-shadow:0 0 20px rgba(138,216,255,.4);border-color:var(--ice)}
}
html.light .downbtn.on{animation-name:btnGlowLight}
@keyframes btnGlowLight{
  0%,100%{box-shadow:0 0 0 0 rgba(27,111,212,0);border-color:var(--edge)}
  50%{box-shadow:0 0 18px rgba(27,111,212,.35);border-color:var(--ice)}
}
.downbtn:hover,.downbtn:focus-visible{border-color:var(--ice)}
.downbtn:focus-visible{outline:1px solid var(--ice);outline-offset:3px}
.downbtn svg{width:16px;height:16px;color:var(--ice);animation:nudge 1.4s ease-in-out infinite}
@keyframes nudge{0%,100%{transform:translateY(-1px)}50%{transform:translateY(3px)}}
html.light .downbtn{background:rgba(255,255,255,.88)}

/* bottone cambio tema nella nav */
.theme-btn{
  pointer-events:auto;display:flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:50%;border:1px solid var(--edge);
  background:transparent;color:var(--dim);cursor:pointer;
  transition:color .25s,border-color .25s;
}
.theme-btn:hover{color:var(--text);border-color:var(--edge-hi)}
.theme-btn:focus-visible{outline:1px solid var(--ice);outline-offset:3px}
.theme-btn svg{width:14px;height:14px;display:block}
.theme-btn .i-sun{display:none}
html.light .theme-btn .i-sun{display:block}
html.light .theme-btn .i-moon{display:none}
@media(max-width:760px){.theme-btn{margin-left:10px}}

/* transizione morbida durante il cambio tema */
html.theming,html.theming *,html.theming *::before,html.theming *::after{
  transition:background-color .45s ease,color .45s ease,border-color .45s ease,box-shadow .45s ease!important;
}

/* rifinitura tema chiaro: bagliori e dettagli che restavano color ghiaccio */
html.light .hero h1 .ice{text-shadow:none}
html.light nav a.active::after{box-shadow:0 0 8px rgba(27,111,212,.5)}
html.light .rack-tag.online::before,
html.light .rack-tag::before{background:linear-gradient(100deg,transparent 20%,rgba(27,111,212,.22),transparent 80%)}
html.light .wcard .shot .wipeline{background:var(--ice);box-shadow:0 0 14px rgba(27,111,212,.6)}
html.light .field input:focus,html.light .field textarea:focus{border-color:var(--ice);box-shadow:0 0 0 3px rgba(27,111,212,.13)}
html.light .msgwin .send{box-shadow:0 0 0 1px rgba(27,111,212,.4),0 0 24px rgba(27,111,212,.14)}
html.light .busline i{box-shadow:0 0 10px rgba(27,111,212,.7)}
html.light .statement .w.on{color:var(--text)}
html.light .statement .w.key.on{color:var(--ice)}
html.light .cta h2{text-shadow:none}


/* ============================================================
   REALIZZAZIONI — griglia progetti (stile card + transizioni)
   ============================================================ */
.works-wrap{max-width:1200px;margin:0 auto}
.works-title{
  font-family:var(--disp);font-weight:700;text-transform:uppercase;
  font-size:clamp(30px,4.6vw,60px);line-height:1.02;max-width:900px;margin-top:6px;
}
.works-lead{margin-top:18px;color:var(--dim);font-size:15px;line-height:1.7;max-width:640px}
.works-grid{margin-top:48px;display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
@media(max-width:1080px){.works-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.works-grid{grid-template-columns:1fr}}
.wcard{
  position:relative;display:flex;flex-direction:column;overflow:hidden;border-radius:12px;
  border:1px solid var(--edge);background:rgba(11,16,23,.72);
  transform-style:preserve-3d;transition:border-color .3s;
}
.wcard:hover{border-color:var(--edge-hi)}
.wcard .shot{position:relative;aspect-ratio:16/10;overflow:hidden;border-bottom:1px solid var(--edge)}
.wcard .shot img{
  width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.92);
  transition:transform .6s cubic-bezier(.2,.8,.2,1);
}
.wcard:hover .shot img{transform:scale(1.04)}
.wcard .shot::after{
  content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(4,6,10,.12),transparent 30%),
             repeating-linear-gradient(0deg,rgba(255,255,255,.015) 0 1px,transparent 1px 3px);
}
.wbody{display:flex;flex-direction:column;gap:12px;padding:18px 18px 20px;flex:1}
.wmeta{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
}
.wcat{color:var(--ice)}
.wstatus{display:flex;align-items:center;gap:7px;color:var(--dim);white-space:nowrap}
.wstatus .led{width:5px;height:5px}
.wcard h3{font-weight:600;font-size:19px;letter-spacing:.01em}
.wcard .wbody > p{color:var(--dim);font-size:13.8px;line-height:1.65;flex:1}
.wtags{display:flex;flex-wrap:wrap;gap:7px}
.wtags span{
  font-family:var(--mono);font-size:10px;color:var(--text);letter-spacing:.06em;
  border:1px solid var(--edge);border-radius:3px;padding:4px 9px;background:rgba(11,16,23,.7);
}
.wmore{
  font-family:var(--mono);font-size:11.5px;color:var(--ice);text-decoration:none;
  letter-spacing:.08em;margin-top:2px;transition:letter-spacing .3s;align-self:flex-start;
}
.wmore:hover,.wmore:focus-visible{letter-spacing:.16em}
.wmore:focus-visible{outline:1px solid var(--ice);outline-offset:4px}
.works-note{
  margin:42px auto 0;max-width:900px;font-family:var(--mono);font-size:11.5px;
  line-height:1.8;color:var(--dim);letter-spacing:.04em;
}
.works-note b{color:var(--ice);font-weight:500}
