/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100% 125%;
  font-display: swap;
  src: url('/assets/fonts/archivo-latin-ext-400-800.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400 800;
  font-stretch: 100% 125%;
  font-display: swap;
  src: url('/assets/fonts/archivo-latin-400-800.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('/assets/fonts/montserrat-logo.woff2') format('woff2');
  unicode-range: U+41, U+43-45, U+4d-50, U+52, U+54-55, U+57;
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url('/assets/fonts/montserrat-logo.woff2') format('woff2');
  unicode-range: U+41, U+43-45, U+4d-50, U+52, U+54-55, U+57;
}

/* Direzione "laboratorio di precisione": blu notte con griglia da disegno tecnico per testata, apertura,
   PC esploso, rete e contatti; bianco per i contenuti da leggere (listini, passi, moduli).
   Rosso solo nel logo. Una famiglia (Archivo): larga per i titoli, normale per il testo.
   Due soli momenti animati: il PC che si smonta allo scorrimento e i dati che scorrono nella rete. */
:root{
  color-scheme: light;
  --night:#1A2438;
  --navy:#212D45;
  --navy-2:#28354F;
  --line-dark:#35435F;
  --grid:rgba(160,185,230,.055);
  --on-dark:#FFFFFF;
  --on-dark-muted:#AAB3C7;
  --glow:#62AAEE;
  --glow-soft:rgba(98,170,238,.18);
  --accent:#2F6BD0;
  --accent-hover:#285DB6;
  --signal:#E3262D;
  --paper:#FFFFFF;
  --sheet:#EEF1F6;
  --mist:#E3E8F0;
  --mist-hover:#D9E0EB;
  --ink:#0A1430;
  --slate:#55617E;
  --rule:#D5DBE5;
  --rule-strong:#C3CCDB;
  --brand:#2659B8;
  --brand-hover:#1146AA;
  --star:#F2A900;
  --ok:#22B565;
  --ok-glow:rgba(34,181,101,.45);
  --ok-glow-0:rgba(34,181,101,0);
  --part:#232F4A;
  --part-line:#586B92;
  --shadow:rgba(26,36,56,.45);
  --font:"Archivo","Helvetica Neue",Arial,sans-serif;
  --font-logo:"Montserrat","Archivo",Arial,sans-serif;
  --wide:122%;
  --header-h:76px;
  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-in-out:cubic-bezier(.645,.045,.355,1);
  --z-sheet:1;
  --z-header:100;
  --z-fab:200;
  --hairline:1px;
  --overlap:clamp(28px,4vw,56px);
}

*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
body{margin:0;background-color:var(--night);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:32px 32px;background-position:-1px -1px;color:var(--ink);font-family:var(--font);font-size:1.0625rem;line-height:1.6;-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
img{display:block;height:auto}
a{color:inherit}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:6px}
.dark :focus-visible,.site-header :focus-visible,.site-footer :focus-visible,.door-dark:focus-visible{outline-color:#FFFFFF}

.wrap{width:100%;max-width:1240px;margin-inline:auto;padding-inline:clamp(16px,4vw,40px)}

h1,h2,h3{margin:0;text-wrap:balance;font-stretch:var(--wide);letter-spacing:-.022em}
h1{font-size:clamp(2.6rem,5.6vw,4.8rem);font-weight:750;line-height:1.0}
h2{font-size:clamp(1.85rem,3.3vw,2.7rem);font-weight:700;line-height:1.08}
h3{font-size:1.2rem;font-weight:650;line-height:1.25;letter-spacing:-.01em;font-stretch:110%}
p{margin:0}
.muted{color:var(--slate)}
.lede{font-size:clamp(1.08rem,1.4vw,1.22rem);color:var(--slate);max-width:52ch}
.text-link{color:var(--brand);font-weight:600;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:4px}

/* Superfici scure con griglia da disegno tecnico */
.dark{background-color:var(--night);color:var(--on-dark);
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);
  background-size:32px 32px;background-position:-1px -1px}
.dark .muted,.dark .lede{color:var(--on-dark-muted)}
.dark .text-link{color:var(--on-dark)}

/* ---------- Logo (opzione 5, su fondo scuro) ---------- */
.logo{display:block;height:46px;width:auto;overflow:visible}
.logo text,.logo-word,.logo-sub{font-family:var(--font-logo)}
.logo-mark{filter:drop-shadow(0 0 10px rgba(98,170,238,.45))}
.logo-word{font-weight:800;font-size:46px}
.logo-sub{font-weight:600;font-size:17px;fill:#C9D6F5}
.logo-rule{stroke:var(--glow);stroke-width:1.6}

/* ---------- Bottoni ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:var(--font);font-weight:600;font-size:1rem;line-height:1.2;padding:15px 24px;border-radius:999px;text-decoration:none;border:0;cursor:pointer;transition:transform 160ms var(--ease-out),box-shadow 200ms ease,background-color 150ms ease,color 150ms ease;touch-action:manipulation}
.btn svg{width:18px;height:18px;flex-shrink:0}
.btn:active{transform:scale(.97)}
.btn-primary{color:var(--on-dark);background:linear-gradient(180deg,#5A93EE 0%,var(--accent) 55%,#285DB6 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 0 0 1px rgba(98,170,238,.45),0 10px 28px -10px rgba(47,107,208,.85)}
.btn-ghost{background:var(--paper);color:var(--ink);box-shadow:0 0 0 1px var(--rule-strong),0 6px 18px -12px rgba(26,36,56,.35)}
.btn-line{color:var(--on-dark);background:rgba(255,255,255,.05);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 0 0 1px rgba(170,195,235,.3)}
.btn-light{background:var(--on-dark);color:var(--night);box-shadow:0 0 0 1px rgba(255,255,255,.6),0 10px 28px -12px rgba(98,170,238,.7)}
.btn-sm{padding:11px 18px;font-size:.92rem}
.actions{display:flex;flex-wrap:wrap;gap:12px}

/* ---------- Header ---------- */
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:var(--z-header);background:rgba(26,36,56,.94);backdrop-filter:saturate(1.3) blur(10px);-webkit-backdrop-filter:saturate(1.3) blur(10px);border-bottom:1px solid var(--line-dark);color:var(--on-dark)}
.header-row{display:flex;align-items:center;gap:28px;height:var(--header-h)}
.brand{display:block;flex-shrink:0;border-radius:6px}
.nav{display:flex;gap:26px;margin-left:auto}
.nav a{text-decoration:none;font-weight:500;font-size:.97rem;color:var(--on-dark-muted);padding-block:6px;transition:color .2s ease}
.nav a[aria-current="page"]{color:var(--on-dark)}
.nav a[aria-current="page"]{text-decoration:underline;text-decoration-color:var(--glow);text-decoration-thickness:2px;text-underline-offset:8px}
.menu-btn{display:none;align-items:center;gap:8px;margin-left:auto;background:transparent;border:0;font:inherit;font-weight:600;color:var(--on-dark);padding:10px 4px;cursor:pointer}
.menu-btn svg{width:22px;height:22px}
.menu-panel{position:absolute;left:0;right:0;top:100%;background:var(--night);border-bottom:1px solid var(--line-dark);box-shadow:0 18px 30px -20px var(--shadow)}
.menu-panel nav{display:grid;padding-block:8px 20px}
.menu-panel a{display:block;padding:14px 0;border-bottom:1px solid var(--line-dark);text-decoration:none;font-weight:650;font-size:1.15rem;font-stretch:112%}
.menu-panel a:last-child{border-bottom:0}
.menu-panel a[aria-current="page"]{color:var(--glow)}

/* ---------- Pagine ---------- */
/* I contenuti chiari stanno su un foglio arrotondato che sale sopra la parte scura: niente taglio netto */
.sheet{position:relative;z-index:var(--z-sheet);isolation:isolate;background:var(--sheet);color:var(--ink);border-radius:clamp(20px,3vw,36px);margin-inline:clamp(8px,1.6vw,24px);margin-top:calc(-1 * var(--overlap));box-shadow:0 -40px 120px -40px rgba(98,170,238,.38),0 0 0 1px rgba(160,190,240,.18),0 30px 70px -40px rgba(0,0,0,.35)}
.page-head,.explode{padding-bottom:var(--overlap)}
.band{margin-top:clamp(16px,2vw,24px)}
.block{padding-block:clamp(64px,9vw,112px)}
.block + .block{padding-top:0}
.block-head{display:grid;gap:14px;max-width:62ch;margin-bottom:clamp(28px,4vw,48px)}

/* Home: apertura con foto */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line-dark)}
.hero-photo{position:absolute;inset:0 0 0 38%;}
.hero-photo img{width:100%;height:100%;object-fit:cover;object-position:60% 50%}
.hero-photo{box-shadow:inset 0 0 120px rgba(98,170,238,.25)}
.hero-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--night) 0%,rgba(26,36,56,.82) 22%,rgba(26,36,56,.25) 60%,rgba(26,36,56,.05) 100%)}
.hero-copy{position:relative;display:grid;gap:26px;justify-items:start;max-width:620px;padding-block:clamp(72px,10vw,140px)}
.hero h1{text-shadow:0 2px 30px rgba(26,36,56,.6)}
.status{display:inline-flex;align-items:center;gap:10px;padding:7px 14px 7px 12px;border-radius:999px;background:rgba(15,37,96,.85);border:1px solid var(--line-dark);font-size:.9rem;font-weight:500;color:var(--on-dark-muted);font-variant-numeric:tabular-nums}
.status .dot{width:8px;height:8px;border-radius:50%;background:var(--on-dark-muted);flex-shrink:0}
.status[data-open="true"]{color:var(--on-dark)}
.status[data-open="true"] .dot{background:var(--ok);animation:pulse 2.4s ease-out infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 var(--ok-glow)}70%{box-shadow:0 0 0 8px var(--ok-glow-0)}100%{box-shadow:0 0 0 0 var(--ok-glow-0)}}

/* Numeri veri */
.proof{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line-dark)}
.proof div{padding:28px 24px 30px;border-left:1px solid var(--line-dark);display:grid;gap:4px;align-content:start}
.proof div:first-child{border-left:0;padding-left:0}
.proof strong{font-size:clamp(1.7rem,3vw,2.4rem);font-weight:750;font-stretch:125%;line-height:1.05;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.proof span{color:var(--on-dark-muted);font-size:.95rem;max-width:26ch}

/* Esploratori: disegni tecnici dove ogni pezzo si tocca */
.explode{position:relative}
.explode-stage{padding-block:clamp(64px,8vw,104px)}
.explode.is-scroll{height:340vh}
.explode.is-scroll .explode-stage{position:sticky;top:var(--header-h);height:calc(100vh - var(--header-h));min-height:600px;padding-block:28px;display:grid;align-items:center}
.ex{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(32px,5vw,72px);align-items:center}
.ex-copy{display:grid;gap:18px;align-content:center}
.ex-copy h2{font-size:clamp(1.8rem,3vw,2.5rem)}
.ex-list{list-style:none;margin:4px 0 0;padding:0;display:grid}
.ex-list li{border-top:1px solid var(--line-dark)}
.ex-list li:last-child{border-bottom:1px solid var(--line-dark)}
.ex-btn{appearance:none;background:none;border:0;margin:0;font:inherit;color:inherit;text-align:left;cursor:pointer;width:100%;display:grid;grid-template-columns:22px minmax(0,1fr);gap:1px 12px;padding:10px 0;min-height:44px;opacity:.55;transition:opacity 150ms ease;touch-action:manipulation}
.ex-btn[aria-pressed="true"]{opacity:1}
.ex-btn .tick{grid-row:1 / span 2;width:10px;height:10px;margin-top:8px;border-radius:3px;box-shadow:inset 0 0 0 1.5px var(--part-line);transition:background-color 200ms ease,box-shadow 200ms ease}
.ex-btn[aria-pressed="true"] .tick{background:var(--glow);box-shadow:0 0 0 1.5px var(--glow),0 0 12px var(--glow)}
.ex-btn b{font-weight:650;font-stretch:110%}
.ex-btn span{color:var(--on-dark-muted);font-size:.94rem;line-height:1.45}
.ex-cta{justify-self:start;margin-top:4px}
.ex-fig{min-width:0}
.ex-fig svg{display:block;width:100%;height:auto;overflow:visible;user-select:none;-webkit-user-select:none}
.explode.is-scroll .ex-fig svg{max-height:calc(100vh - var(--header-h) - 56px)}
.ex-fig .part{cursor:pointer;transition:transform 240ms var(--ease-out),filter 200ms ease;outline:none}
.ex-fig .part.on{filter:drop-shadow(0 0 10px rgba(98,170,238,.85)) drop-shadow(0 0 2px rgba(190,225,255,.9)) brightness(1.2)}
.ex-fig .tag{transition:transform 240ms var(--ease-out)}
.ex-fig .tag text{font-family:var(--font);font-size:17px;font-weight:600;fill:var(--on-dark-muted);transition:fill 200ms ease}
.ex-fig .tag line{stroke:#5E6F92;stroke-width:1.2;transition:stroke 200ms ease}
.ex-fig .tag circle{fill:#5E6F92;transition:fill 200ms ease}
.ex-fig .tag.on text{fill:#FFFFFF}
.ex-fig .tag.on line{stroke:var(--glow)}
.ex-fig .tag.on circle{fill:var(--glow)}
.ex-fig .case{fill:none;stroke:#3E4E70;stroke-width:2;stroke-dasharray:6 7}
.ex-detail{display:grid;gap:6px;padding:18px 20px;border-radius:14px;background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px rgba(170,195,235,.18)}
.ex-detail b{font-size:1.15rem;font-weight:700;font-stretch:112%}
.ex-detail p{color:var(--on-dark-muted)}
.ex-detail .btn{justify-self:start;margin-top:8px}
.seg{display:inline-flex;padding:4px;border-radius:999px;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(170,195,235,.22);gap:4px;margin-bottom:clamp(24px,3vw,36px)}
.seg button{appearance:none;border:0;background:none;color:var(--on-dark-muted);font:inherit;font-weight:600;padding:10px 20px;border-radius:999px;cursor:pointer;min-height:44px;transition:background-color 150ms ease,color 150ms ease,box-shadow 200ms ease;touch-action:manipulation}
.seg button[aria-selected="true"]{background:var(--accent);color:#FFFFFF;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 0 22px -4px rgba(98,170,238,.75)}
.ex-sec{padding-block:clamp(48px,6vw,80px) calc(clamp(48px,6vw,80px) + var(--overlap))}
.page-head + .ex-sec{padding-top:0}

/* Home: due porte */
.doors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.door{display:grid;grid-template-rows:auto auto 1fr auto;gap:14px;padding:clamp(28px,3.5vw,44px);border-radius:16px;text-decoration:none;color:var(--ink);background:var(--mist);transition:background-color .2s ease}
.door h2{font-size:clamp(1.9rem,3.4vw,2.7rem)}
.door ul{list-style:none;margin:8px 0 0;padding:0;display:grid;align-content:start}
.door li{padding:11px 0;border-top:1px solid var(--rule-strong)}
.door li:last-child{border-bottom:1px solid var(--rule-strong)}
.door-go{font-weight:650;color:var(--brand);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:4px;margin-top:10px}
.door-dark{background:var(--night);color:var(--on-dark)}
.door-dark .muted{color:var(--on-dark-muted)}
.door-dark li,.door-dark li:last-child{border-color:var(--line-dark)}
.door-dark .door-go{color:var(--on-dark);text-decoration-color:var(--glow)}

/* Home: problemi */
.split{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(32px,5vw,80px);align-items:start}
.split-head{display:grid;gap:14px}
.chips{display:flex;flex-wrap:wrap;gap:10px;padding-top:4px}
.chip{display:inline-flex;align-items:center;padding:13px 18px;border-radius:999px;border:1px solid var(--rule-strong);background:var(--paper);color:var(--ink);text-decoration:none;font-weight:500;line-height:1.2;transition:border-color .2s ease,background-color .2s ease,color .2s ease}
.chip{border:0;box-shadow:0 0 0 1px var(--rule-strong),0 4px 14px -10px rgba(26,36,56,.35);transition:color 150ms ease,box-shadow 200ms ease,transform 160ms var(--ease-out);touch-action:manipulation}
.chip:active{transform:scale(.97)}
.chip-other{box-shadow:0 0 0 1px var(--rule-strong) inset,0 4px 14px -10px rgba(26,36,56,.35);outline:1px dashed var(--rule-strong);outline-offset:-1px}
.chip-other{border-style:dashed}

/* Recensioni */
.stars{color:var(--star);letter-spacing:2px;line-height:1}
.hero-rating{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;font-size:.95rem;color:var(--on-dark-muted)}
.hero-rating b{color:var(--on-dark);font-weight:650}
.rating{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin-bottom:clamp(28px,4vw,44px)}
.rating-score{font-size:clamp(3rem,6vw,4.6rem);font-weight:750;font-stretch:125%;line-height:1;letter-spacing:-.03em}
.rating-meta{display:grid;gap:6px}
.rating-meta .stars{font-size:1.3rem}
.reviews{columns:3 280px;column-gap:20px}
.review{break-inside:avoid;margin:0 0 20px;background:var(--mist);border-radius:14px;padding:24px;display:grid;gap:12px}
.review blockquote{margin:0}
.review blockquote p{font-size:1.02rem;line-height:1.55}
.review figcaption{font-weight:600;font-size:.92rem}
.review figcaption span{display:block;font-weight:400;color:var(--slate)}

/* Marchi */
.brands{display:flex;flex-wrap:wrap;gap:14px 36px;align-items:baseline}
.brands li{list-style:none;font-weight:750;font-stretch:125%;font-size:clamp(1.05rem,1.8vw,1.35rem);letter-spacing:-.01em;color:#8C97B2}
.brands{margin:0;padding:0}

/* Foto */
.photo{margin:0;display:grid;gap:10px}
.photo img{width:100%;border-radius:14px;object-fit:cover;
  box-shadow:0 0 0 1px rgba(130,180,240,.35),0 0 34px -6px rgba(98,170,238,.45),0 18px 40px -20px rgba(18,27,47,.6);transition:box-shadow .35s ease}
.dark .photo img{box-shadow:0 0 0 1px rgba(130,180,240,.4),0 0 60px -6px rgba(98,170,238,.55)}
.photo figcaption{font-size:.92rem;color:var(--slate)}
.dark .photo figcaption{color:var(--on-dark-muted)}
.gallery{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}
.gallery .photo:nth-child(1){grid-column:span 7;grid-row:span 2}
.gallery .photo:nth-child(1) img{height:100%;min-height:420px}
.gallery .photo:nth-child(n+2){grid-column:span 5}
.gallery .photo:nth-child(n+2) img{aspect-ratio:16/10}
.gallery-4 .photo:nth-child(4){grid-column:span 12}
.gallery-4 .photo:nth-child(4) img{aspect-ratio:21/8}

/* Home: su misura + storia */
.feature{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,5vw,72px);align-items:center}
.feature-copy{display:grid;gap:16px;justify-items:start}
.feature-copy p{max-width:46ch}
.feature .photo img{aspect-ratio:4/3}

/* Testata pagine interne */
.page-head{}
.page-head-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:center;padding-block:clamp(48px,7vw,96px)}
.page-head-copy{display:grid;gap:22px;justify-items:start}
.page-head .photo img{aspect-ratio:4/3}
.page-head-solo .page-head-grid{grid-template-columns:minmax(0,1fr)}

/* Listino interventi */
.listino{border-bottom:1px solid var(--rule-strong)}
.listino-cols,.voce{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.6fr) minmax(130px,auto);gap:8px 32px;align-items:baseline}
.listino-cols{padding-bottom:12px;font-size:.88rem;font-weight:600;color:var(--slate)}
.voce{padding-block:20px 22px;border-top:1px solid var(--rule-strong)}
.voce p{color:var(--slate);max-width:62ch}
.dove{justify-self:start;font-size:.86rem;font-weight:600;padding:4px 10px;border-radius:6px;background:var(--mist);color:var(--brand);white-space:nowrap}

/* Passi (sequenze reali) */
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(20px,3vw,36px);counter-reset:step}
.steps li{counter-increment:step;display:grid;gap:8px;align-content:start;padding-top:18px;border-top:1.5px solid var(--ink)}
.steps li::before{content:counter(step);font-size:2rem;font-weight:750;font-stretch:var(--wide);line-height:1;color:var(--brand);font-variant-numeric:tabular-nums}
.steps p{color:var(--slate)}

/* Citazione */
.pull{margin:0;max-width:30ch;font-size:clamp(1.5rem,2.8vw,2.1rem);font-weight:600;font-stretch:112%;line-height:1.25;letter-spacing:-.015em}
.pull-src{margin-top:16px;color:var(--slate);font-size:.95rem}

.makers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.maker{padding-top:18px;border-top:1.5px solid var(--ink);display:grid;gap:6px}
.maker b{font-size:1.5rem;font-weight:750;font-stretch:125%;letter-spacing:-.02em}
.maker span{color:var(--slate)}

/* Rete aziendale */
.net-wrap{overflow-x:auto;margin-top:8px}
.net{display:block;width:100%;min-width:640px;height:auto}
.net .wire{fill:none;stroke:#46608F;stroke-width:2;filter:drop-shadow(0 0 4px rgba(98,170,238,.6))}
.ex-net{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);gap:clamp(20px,3vw,40px);align-items:center}
.net .node{cursor:pointer}
.net .node.on rect{stroke:#FFFFFF}
.net .node rect{fill:var(--navy);stroke:#7194CC;stroke-width:1.5;filter:drop-shadow(0 0 12px rgba(98,170,238,.5))}
.net .node .ico{fill:none;stroke:var(--glow);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgba(98,170,238,.9))}
.net .node text{font-family:var(--font);font-size:14px;font-weight:600;fill:var(--on-dark)}
.net .node .sub{font-size:12px;font-weight:400;fill:var(--on-dark-muted)}
.net-hint{display:none}
@media (max-width:700px){.net-hint{display:inline}}
.net .packet{fill:#BFE0FF;filter:drop-shadow(0 0 6px var(--glow)) drop-shadow(0 0 2px #fff)}
.net .packet-red{fill:var(--signal);filter:drop-shadow(0 0 4px var(--signal))}

/* Su misura */
.catalog{list-style:none;margin:0;padding:0;border-bottom:1px solid var(--rule-strong)}
.catalog a{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto;align-items:center;gap:10px 32px;padding-block:clamp(22px,3vw,32px);border-top:1px solid var(--rule-strong);text-decoration:none;color:var(--ink)}
.cat-name{font-weight:750;font-stretch:125%;font-size:clamp(1.6rem,3.4vw,2.5rem);letter-spacing:-.025em;line-height:1;transition:color .2s ease}
.cat-desc{color:var(--slate);max-width:42ch}
.cat-go{font-weight:600;font-size:.95rem;color:var(--brand);white-space:nowrap;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:4px}
.builds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.builds .photo img{aspect-ratio:4/3}
.builds .photo:first-child{grid-column:span 2;grid-row:span 2}
.builds .photo:first-child img{aspect-ratio:auto;height:100%}
.parts{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.parts li{padding:8px 14px;border-radius:8px;background:var(--mist);font-size:.95rem}

/* Chi siamo: linea del tempo */
.timeline{list-style:none;margin:0;padding:0;border-left:1.5px solid var(--rule-strong)}
.timeline li{position:relative;display:grid;grid-template-columns:minmax(120px,170px) minmax(0,1fr);gap:8px 32px;padding:0 0 34px 32px}
.timeline li:last-child{padding-bottom:0}
.timeline li::before{content:"";position:absolute;left:-6.5px;top:9px;width:11px;height:11px;border-radius:50%;background:var(--paper);border:2px solid var(--brand)}
.timeline li:last-child::before{background:var(--brand)}
.when{font-weight:750;font-stretch:var(--wide);font-size:1.15rem;line-height:1.4;font-variant-numeric:tabular-nums}
.timeline p{color:var(--slate);max-width:60ch}
.timeline h3{margin-bottom:6px}

/* Contatti */
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(36px,5vw,80px);align-items:start}
.info{margin:0}
.info div{display:grid;grid-template-columns:minmax(110px,160px) minmax(0,1fr);gap:4px 20px;padding-block:14px;border-top:1px solid var(--rule)}
.info div:last-child{border-bottom:1px solid var(--rule)}
.info dt{color:var(--slate)}
.info dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.info dd small{display:block;font-weight:400;color:var(--slate);font-size:.9rem}
.form{display:grid;gap:18px;padding:clamp(24px,3vw,36px);border-radius:16px;background:var(--mist)}
.form h2{font-size:clamp(1.5rem,2.4vw,1.9rem)}
.field{display:grid;gap:6px}
.field label,.field legend{font-weight:600;font-size:.95rem;padding:0}
.field input[type="text"],.field select,.field textarea{width:100%;font:inherit;color:var(--ink);background:var(--paper);border:0;box-shadow:0 0 0 1px var(--rule-strong);border-radius:10px;padding:12px 14px;font-size:max(16px,1em)}
.field textarea{min-height:120px;resize:vertical}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
fieldset.field{border:0;margin:0;padding:0}
.radios{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}
.radios label{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;background:var(--paper);border:0;box-shadow:0 0 0 1px var(--rule-strong);font-weight:500;cursor:pointer;min-height:44px}
.radios input{accent-color:var(--brand)}
.form-note{font-size:.9rem;color:var(--slate)}

/* Privacy */
.note{border:1px dashed var(--rule-strong);border-radius:12px;padding:18px 20px;color:var(--slate);max-width:70ch}
.prose{display:grid;gap:16px;max-width:68ch}
.prose h2{font-size:1.3rem;margin-top:18px}
.prose p{max-width:68ch}
.prose .note b{color:var(--ink)}

/* Fascia contatti comune */
.band{padding-block:clamp(64px,9vw,100px)}
.band-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,64px);align-items:start}
.band h2{margin-bottom:28px}
.band-title{font-weight:600;color:var(--glow);margin:6px 0 12px}
.band .info div{display:flex;justify-content:space-between;align-items:baseline;gap:16px;border-color:var(--line-dark)}
.band .info dt{color:var(--on-dark-muted);display:flex;align-items:center;gap:10px}
.band .info dd{text-align:right;white-space:nowrap}
.band .is-today dt{color:var(--on-dark)}
.band .is-today dt::after{content:"Oggi";font-size:.75rem;font-weight:600;padding:2px 8px;border-radius:999px;background:var(--line-dark);color:var(--on-dark)}

/* Footer */
.site-footer{background:transparent;color:var(--on-dark-muted);padding-block:48px 32px;font-size:.92rem;border-top:1px solid var(--line-dark)}
.footer-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;padding-bottom:28px;border-bottom:1px solid var(--line-dark)}
.site-footer .logo{height:42px}
.footer-nav{display:flex;flex-wrap:wrap;gap:8px 26px}
.footer-nav a,.footer-bottom a{color:var(--on-dark);text-decoration:none}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 24px;padding-top:24px}
.footer-links{display:flex;flex-wrap:wrap;gap:6px 20px}

/* WhatsApp fisso su telefono */
.fab{background:linear-gradient(180deg,#5A93EE 0%,var(--accent) 60%,#285DB6 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 0 0 1px rgba(98,170,238,.5),0 12px 30px -8px rgba(18,27,47,.6),0 0 28px -6px rgba(98,170,238,.6)!important}
.fab{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:var(--z-fab);display:none;align-items:center;gap:10px;padding:14px 18px;border-radius:999px;background:var(--accent);color:var(--on-dark);text-decoration:none;font-weight:600;box-shadow:0 10px 24px -8px var(--shadow);transition:opacity .25s ease,transform .25s ease}
.fab svg{width:20px;height:20px}
.fab.is-away{opacity:0;transform:translateY(12px);pointer-events:none}

/* ---------- Responsive ---------- */
@media (max-width:900px){
  .ex,.ex-net{grid-template-columns:minmax(0,1fr)}
  .ex-fig{order:-1}
  .ex-net .ex-fig{order:0}
}
@media (max-width:1040px){
  .nav{gap:18px}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .band-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .band-grid > :first-child{grid-column:1 / -1}
  .proof{grid-template-columns:repeat(2,minmax(0,1fr))}
  .proof div:nth-child(3){border-left:0;padding-left:0}
  .proof div:nth-child(n+3){border-top:1px solid var(--line-dark)}
}
@media (max-width:900px){
  :root{--header-h:64px}
  .nav,.header-cta{display:none}
  .menu-btn{display:inline-flex}
  .header-row{gap:12px}
  .site-header .logo{height:38px}
  .hero-photo{inset:0}
  .hero-photo::after{background:linear-gradient(180deg,rgba(26,36,56,.55) 0%,rgba(26,36,56,.8) 45%,var(--night) 100%)}
  .explode-stage,.split,.doors,.makers,.contact-grid,.feature,.page-head-grid{grid-template-columns:minmax(0,1fr)}
  .pc{order:-1}
  .pc svg{max-height:none}
  .gallery,.builds{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .gallery .photo:nth-child(1),.builds .photo:first-child{grid-column:1 / -1;grid-row:auto}
  .gallery .photo:nth-child(1) img{min-height:0;aspect-ratio:4/3}
  .builds .photo:first-child img{aspect-ratio:4/3;height:auto}
  .gallery .photo:nth-child(n+2){grid-column:auto}
  .gallery-4 .photo:nth-child(4){grid-column:1 / -1}
  .listino-cols{display:none}
  .voce{grid-template-columns:minmax(0,1fr) auto}
  .voce p{grid-column:1 / -1}
  .catalog a{grid-template-columns:minmax(0,1fr) auto}
  .cat-desc{grid-column:1 / -1;grid-row:2}
  .fab{display:inline-flex}
  .site-footer{padding-bottom:104px}
}
@media (max-width:600px){
  .steps,.band-grid,.proof{grid-template-columns:minmax(0,1fr)}
  .proof div{border-left:0;padding-left:0;border-top:1px solid var(--line-dark)}
  .proof div:first-child{border-top:0}
  .gallery,.builds{grid-template-columns:minmax(0,1fr)}
  .gallery-4 .photo:nth-child(4) img{aspect-ratio:16/10}
  .timeline li{grid-template-columns:minmax(0,1fr);padding-left:24px}
  .info div{grid-template-columns:minmax(0,1fr)}
  .catalog a{grid-template-columns:minmax(0,1fr)}
  .cat-desc{grid-row:auto}
  .actions .btn{flex:1 1 100%}
}

/* Movimento: un solo ingresso per visita, cambio pagina breve, menu che si apre dall'alto */
@keyframes rise{from{opacity:0;transform:translateY(10px);filter:blur(6px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes settle{from{opacity:0;transform:scale(1.04)}to{opacity:1;transform:none}}
@keyframes page-in{from{opacity:0}to{opacity:1}}
@keyframes menu-in{from{opacity:0;transform:translateY(-6px) scale(.98)}to{opacity:1;transform:none}}
.intro .hero-copy > *{animation:rise 560ms var(--ease-out) both}
.intro .hero-copy > :nth-child(2){animation-delay:70ms}
.intro .hero-copy > :nth-child(3){animation-delay:140ms}
.intro .hero-copy > :nth-child(4){animation-delay:210ms}
.intro .hero-copy > :nth-child(5){animation-delay:280ms}
.intro .hero-photo img{animation:settle 1100ms var(--ease-out) both}
.page.is-entering{animation:page-in 240ms var(--ease-out)}
.menu-panel:not([hidden]){animation:menu-in 200ms var(--ease-out);transform-origin:top center}
@media only screen and (min-resolution:192dpi){:root{--hairline:.5px}}
.voce,.listino-cols + .voce{border-top-width:var(--hairline)}
a,button{touch-action:manipulation}

@media (hover:hover) and (pointer:fine){
  .text-link:hover{color:var(--brand-hover)}
  .btn-primary:hover{box-shadow:inset 0 1px 0 rgba(255,255,255,.32),0 0 0 1px rgba(130,190,245,.7),0 14px 36px -10px rgba(47,107,208,.95),0 0 34px -2px rgba(98,170,238,.75)}
  .btn-ghost:hover{color:var(--brand);box-shadow:0 0 0 1px var(--brand),0 10px 24px -12px rgba(38,89,184,.45),0 0 26px -4px rgba(98,170,238,.6)}
  .btn-line:hover{background:rgba(255,255,255,.09);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 0 0 1px rgba(150,195,245,.75),0 0 30px -4px rgba(98,170,238,.7)}
  .btn-light:hover{box-shadow:0 0 0 1px #fff,0 14px 34px -10px rgba(98,170,238,.85),0 0 30px -4px rgba(98,170,238,.7)}
  .nav a:hover{color:var(--on-dark)}
  .door:hover{background:var(--mist-hover)}
  .door-dark:hover{background:var(--navy-2)}
  .chip:hover{color:var(--brand);box-shadow:0 0 0 1px var(--brand),0 10px 22px -12px rgba(38,89,184,.55),0 0 22px -4px rgba(98,170,238,.6)}
  .photo:hover img{box-shadow:0 0 0 1px rgba(150,200,250,.55),0 0 48px -4px rgba(98,170,238,.6),0 22px 46px -20px rgba(18,27,47,.6)}
  .catalog a:hover .cat-name{color:var(--brand)}
  .footer-nav a:hover,.footer-bottom a:hover{text-decoration:underline;text-underline-offset:3px}
  .ex-btn:hover{opacity:1}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .intro .hero-copy > *,.intro .hero-photo img,.page.is-entering,.menu-panel:not([hidden]),.status[data-open="true"] .dot{animation:none}
  .btn,.chip,.ex-btn,.ex-fig .part,.ex-fig .tag,.photo img,.fab,.door,.tick,.seg button{transition:none}
  .net .packet,.net .packet-red{display:none}
}
