:root{
  --navy:#0C2448;
  --navy-800:#102A52;
  --navy-700:#16335f;
  --teal:#0C909C;
  --teal-deep:#0a7d88;
  --teal-bright:#19B9C6;
  --mint:#54B484;
  --mint-bright:#74D6A0;
  --slate:#60606C;
  --platinum:#F3F6FB;
  --platinum-2:#E8EEF6;
  --ink:#0C2448;
  --ink-soft:#46526E;
  --line:#DCE4F0;
  --white:#ffffff;
  --r:18px;
  --maxw:1320px;
  --measure:1000px;       /* larghezza massima dei blocchi di testo a bandiera */
  --measure-center:760px; /* larghezza massima dei blocchi di testo centrati */
  --shadow:0 24px 60px -28px rgba(12,36,72,.30);
  --shadow-sm:0 10px 30px -18px rgba(12,36,72,.35);
  --grad-brand:linear-gradient(120deg,var(--teal) 0%,var(--teal-bright) 55%,var(--mint) 100%);
  --diag:3vw;             /* profondita' del taglio diagonale delle bande */
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:"Spline Sans",-apple-system,sans-serif;
  color:var(--ink);
  background:var(--white);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
h1,h2,h3,h4{font-family:"Bricolage Grotesque",sans-serif;line-height:1.04;font-weight:700;letter-spacing:-.02em;color:var(--navy)}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
.mono{font-family:"JetBrains Mono",monospace;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;font-weight:500}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:.55em;font-family:"Spline Sans";font-weight:600;font-size:.98rem;
  padding:.82em 1.5em;border-radius:999px;border:1.5px solid transparent;cursor:pointer;transition:.25s ease;white-space:nowrap}
.btn-primary,.btn--primary{background:var(--navy);color:#fff}
.btn-primary:hover,.btn--primary:hover{background:var(--teal);transform:translateY(-2px);box-shadow:0 14px 30px -12px rgba(12,144,156,.6)}
.btn-ghost,.btn--ghost{background:transparent;color:var(--navy);border-color:var(--line)}
.btn-ghost:hover,.btn--ghost:hover{border-color:var(--teal);color:var(--teal)}
.btn-light{background:#fff;color:var(--navy)}
.btn-light:hover{background:var(--mint-bright);transform:translateY(-2px)}
.btn-outline-light{background:transparent;color:#fff;border-color:rgba(255,255,255,.3)}
.btn-outline-light:hover{border-color:var(--teal-bright);color:var(--teal-bright)}
.btn .arr{transition:transform .25s}
.btn:hover .arr{transform:translateX(3px)}

/* ---------- header ---------- */
/* `#hdr` e non `header`: da selettore di elemento questa regola ancorava in
   cima anche l'intestazione dell'articolo, che e' un <header> pure lei —
   titolo, sommario e firma restavano fissi per 563px di viewport. */
#hdr{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.82);backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;transition:.3s}
#hdr.scrolled{border-bottom-color:var(--line);box-shadow:0 6px 24px -20px rgba(12,36,72,.5)}
.nav{display:flex;align-items:center;justify-content:space-between;height:96px}
.brand img{height:66px;display:block}
.nav-links{display:flex;align-items:center;gap:28px}
.nav-links a{font-size:.95rem;font-weight:500;color:var(--ink-soft);transition:.2s;position:relative}
.nav-links a:hover{color:var(--navy)}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-6px;width:0;height:2px;background:var(--teal);transition:.25s}
.nav-links a:hover::after{width:100%}
.nav-cta{display:flex;align-items:center;gap:14px}
.menu-btn{display:none;background:none;border:none;cursor:pointer;flex-direction:column;gap:5px;padding:8px}
.menu-btn span{width:24px;height:2px;background:var(--navy);border-radius:2px;transition:.3s}

/* ---------- hero ---------- */
.hero{position:relative;padding:88px 0 48px;overflow:hidden}
.hero-bg{position:absolute;inset:0;z-index:-1;background:
  radial-gradient(900px 520px at 82% -10%,rgba(12,144,156,.16),transparent 60%),
  radial-gradient(700px 500px at 8% 110%,rgba(84,180,132,.13),transparent 60%),
  linear-gradient(180deg,#fff 0%,var(--platinum) 100%)}
.grid-lines{position:absolute;inset:0;z-index:-1;opacity:.5;
  background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:44px 44px;
  -webkit-mask-image:radial-gradient(700px 600px at 70% 30%,#000,transparent 75%);
  mask-image:radial-gradient(700px 600px at 70% 30%,#000,transparent 75%)}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:54px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:9px;color:var(--teal-deep);background:rgba(12,144,156,.09);
  border:1px solid rgba(12,144,156,.22);padding:.5em 1em;border-radius:999px;margin-bottom:26px}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px rgba(12,144,156,.18);animation:pulse 2.4s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 4px rgba(12,144,156,.18)}50%{box-shadow:0 0 0 8px rgba(12,144,156,.05)}}
.hero h1{font-size:clamp(2rem,5.6vw,3.55rem);font-weight:800;overflow-wrap:break-word}
.hero h1 .hl{color:var(--teal-deep);position:relative;white-space:nowrap}
.hero__sub,.hero p.lead{font-size:1.18rem;color:var(--ink-soft);margin:26px 0 34px;max-width:560px}
.hero-actions,.hero__actions{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:34px}
.trust-row{display:flex;gap:26px;flex-wrap:wrap}
.trust-item{display:flex;align-items:flex-start;gap:11px;max-width:240px}
.trust-item .ck{flex:none;width:26px;height:26px;border-radius:8px;background:rgba(84,180,132,.16);
  display:grid;place-items:center;color:var(--mint);margin-top:2px}
.trust-item b{display:block;font-family:"Bricolage Grotesque";font-weight:700;font-size:.96rem;color:var(--navy)}
.trust-item span{font-size:.85rem;color:var(--ink-soft);line-height:1.4}

/* hero panel */
.hero-panel{position:relative;background:var(--navy);border-radius:26px;padding:30px;color:#fff;box-shadow:var(--shadow);overflow:hidden}
.hero-panel::before{content:"";position:absolute;top:-40%;right:-30%;width:340px;height:340px;border-radius:50%;
  background:radial-gradient(circle,rgba(25,185,198,.35),transparent 70%);filter:blur(8px)}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;position:relative}
.panel-head .mono{color:var(--teal-bright)}
.panel-head .live{display:flex;align-items:center;gap:7px;font-size:.78rem;color:#9fb4d6}
.panel-head .live i{width:7px;height:7px;border-radius:50%;background:var(--mint-bright);animation:pulse 2s infinite}
.gauge{display:flex;align-items:center;gap:22px;margin-bottom:24px;position:relative}
.ring{--p:78;width:118px;height:118px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:conic-gradient(var(--teal-bright) calc(var(--p)*1%),rgba(255,255,255,.08) 0)}
.ring::after{content:"";position:absolute;width:90px;height:90px;border-radius:50%;background:var(--navy)}
.ring b{position:relative;z-index:1;font-family:"Bricolage Grotesque";font-size:1.7rem;font-weight:800}
.ring b small{font-size:.85rem;opacity:.7}
.gauge-txt b{font-family:"Bricolage Grotesque";font-size:1.05rem;display:block}
.gauge-txt span{font-size:.85rem;color:#9fb4d6}
.bars{display:flex;flex-direction:column;gap:13px;position:relative}
.bar-row{display:flex;align-items:center;gap:12px;font-size:.84rem}
.bar-row .lbl{width:96px;color:#c3d0e6;flex:none}
.bar-track{flex:1;height:8px;border-radius:99px;background:rgba(255,255,255,.09);overflow:hidden}
.bar-fill{height:100%;border-radius:99px;width:0;transition:width 1.3s cubic-bezier(.2,.8,.2,1)}
.bar-row .val{width:38px;text-align:right;font-family:"JetBrains Mono";color:#fff;font-size:.78rem}

/* ---------- dashboard-mockup (pannello hero) ---------- */
.dashboard-mockup{transform:perspective(1000px) rotateY(-5deg) rotateX(5deg);transition:transform .5s ease}
.dashboard-mockup:hover{transform:perspective(1000px) rotateY(0) rotateX(0)}
.mockup-header{display:flex;gap:.5rem;margin-bottom:1rem;position:relative}
.mockup-dot{width:12px;height:12px;border-radius:50%;background:rgba(255,255,255,.3)}
.mockup-dot:first-child{background:#ff6b6b}
.mockup-dot:nth-child(2){background:#ffd93d}
.mockup-dot:nth-child(3){background:#6bcb77}
.mockup-content{display:grid;gap:1rem;position:relative}
.mockup-row{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.mockup-card{background:rgba(255,255,255,.1);border-radius:12px;padding:1rem;animation:mockup-pulse 3s ease-in-out infinite}
.mockup-card:nth-child(2){animation-delay:.5s}
.mockup-card:nth-child(3){animation-delay:1s}
.mockup-stat{font-family:"Bricolage Grotesque";font-size:1.5rem;font-weight:700;color:var(--teal-bright)}
.mockup-label{font-size:.75rem;color:rgba(255,255,255,.6);margin-top:.25rem}
.mockup-chart{background:rgba(255,255,255,.05);border-radius:12px;padding:1rem;height:120px;display:flex;align-items:flex-end;gap:.5rem}
.chart-bar{flex:1;background:linear-gradient(to top,var(--teal),var(--teal-bright));border-radius:4px 4px 0 0;transform:scaleY(0);transform-origin:center bottom;animation:mockup-grow 2s ease-out forwards}
@keyframes mockup-grow{to{transform:scaleY(1)}}
@keyframes mockup-pulse{0%,100%{opacity:1}50%{opacity:.75}}
@media (prefers-reduced-motion:reduce){
  .dashboard-mockup,.dashboard-mockup:hover{transform:none}
  .mockup-card{animation:none}
  .chart-bar{animation:none;transform:scaleY(1)}
}

/* ---------- section primitives ---------- */
section{padding:64px 0}
/* Due sezioni "piene" (fondo chiaro, senza banda colorata) consecutive sommano
   il padding e lasciano un vuoto doppio: non c'è stacco di colore a giustificarlo.
   Le varianti colorate/speciali sono escluse, così la regola vale solo tra sezioni
   dello stesso sfondo (anche per pagine e sezioni future). */
.section:not(.problem):not(.chain):not(.security):not(.benefits):not(.faq):not(.cta):not(.section--alt):not(.section--dark):not(.section--tool-cta):not(.section--narrow)
  + .section:not(.problem):not(.chain):not(.security):not(.benefits):not(.faq):not(.cta):not(.section--alt):not(.section--dark):not(.section--tool-cta):not(.section--narrow){
  padding-top:0
}
/* Nelle sezioni di solo testo il .sec-head è l'unico contenuto del wrap: il suo
   margine inferiore (pensato per staccarlo da card/griglie sottostanti) diventa
   spazio morto sopra il padding di sezione. */
.section > .wrap > .sec-head:only-child{margin-bottom:0}
.section .wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
.sec-tag{display:inline-flex;align-items:center;gap:9px;color:var(--teal-deep);margin-bottom:18px}
.sec-tag::before{content:"";width:26px;height:1.5px;background:var(--teal)}
/* Il .wrap è largo (--maxw): griglie, card e header lo riempiono, mentre i
   blocchi di testo si fermano a --measure, la misura oltre la quale la riga
   diventa faticosa da leggere. I blocchi centrati stanno più stretti
   (--measure-center): il testo centrato regge righe ancora più corte. */
.sec-head{max-width:var(--measure);margin-bottom:54px}
.sec-head.center{max-width:var(--measure-center);margin-left:auto;margin-right:auto;text-align:center}
.sec-head.center .sec-tag{justify-content:center}
h2.sec-title{font-size:clamp(1.6rem,3.4vw,2.4rem);font-weight:800;overflow-wrap:break-word}
/* righe più lunghe: interlinea leggermente più ampia per non perdere il rigo */
.sec-head p{color:var(--ink-soft);font-size:1.12rem;line-height:1.7;margin-top:18px}
.section h2{font-size:clamp(1.6rem,3.4vw,2.4rem);font-weight:800;max-width:var(--measure);overflow-wrap:break-word}
.section>.wrap>p{color:var(--ink-soft);font-size:1.08rem;line-height:1.7;margin-top:18px;max-width:var(--measure)}

/* problem table */
.problem{background:var(--platinum)}
.prob-table{background:#fff;border-radius:var(--r);border:1px solid var(--line);overflow:hidden;box-shadow:var(--shadow-sm);margin-top:18px}
.prob-row{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:0;border-bottom:1px solid var(--line)}
.prob-row:last-child{border-bottom:none}
.prob-row.head{background:var(--navy);color:#fff}
.prob-row.head>div{padding:18px 24px;font-family:"Bricolage Grotesque";font-weight:700;font-size:.92rem}
.prob-row.head .ans{color:var(--teal-bright)}
.prob-row>div{padding:20px 24px;font-size:.95rem}
.prob-row:not(.head)>div:not(:last-child){color:var(--ink-soft)}
.prob-row .ans{border-left:3px solid var(--mint);font-weight:600;color:var(--navy);background:rgba(84,180,132,.05)}
.prob-row:not(.head):hover{background:rgba(12,144,156,.03)}

/* ---------- chain (DARK centerpiece) ---------- */
.chain{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.chain::before{content:"";position:absolute;inset:0;opacity:.4;
  background:radial-gradient(800px 400px at 15% 0%,rgba(12,144,156,.3),transparent 60%),
  radial-gradient(700px 500px at 90% 100%,rgba(84,180,132,.22),transparent 60%)}
.chain .wrap{position:relative}
.chain .sec-tag{color:var(--teal-bright)}
.chain .sec-tag::before{background:var(--teal-bright)}
.chain h2,.chain h2.sec-title{color:#fff}
.chain>.wrap>p,.chain .sec-head p{color:#aebbd6}
.chain-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:0;align-items:stretch;margin-top:28px;position:relative}
.node{position:relative;padding:30px 24px;border-radius:18px;background:rgba(255,255,255,.04);
  border:1px solid rgba(255,255,255,.08);margin:0 9px;transition:.3s}
.node:hover{background:rgba(25,185,198,.08);border-color:rgba(25,185,198,.4);transform:translateY(-5px)}
.node .step{font-family:"JetBrains Mono";font-size:.72rem;color:var(--teal-bright);letter-spacing:.1em;margin-bottom:14px}
.node .ico{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;margin-bottom:16px;
  background:rgba(25,185,198,.14);color:var(--teal-bright)}
.node:nth-child(4) .ico{background:rgba(116,214,160,.16);color:var(--mint-bright)}
.node h3{color:#fff;font-size:1.18rem;margin-bottom:8px}
.node p{font-size:.88rem;color:#9fb0cf;line-height:1.5}
.connector{position:absolute;top:50%;left:0;right:0;height:2px;z-index:0;
  background:linear-gradient(90deg,transparent 6%,rgba(255,255,255,.12) 6%,rgba(255,255,255,.12) 94%,transparent 94%)}
.pulse-dot{position:absolute;top:50%;left:0;width:10px;height:10px;border-radius:50%;margin-top:-4px;
  background:var(--teal-bright);box-shadow:0 0 14px 3px rgba(25,185,198,.7);animation:travel 4.5s linear infinite}
@keyframes travel{0%{left:8%;opacity:0}8%{opacity:1}92%{opacity:1}100%{left:92%;opacity:0}}
.chain-note{margin-top:40px;text-align:center;max-width:640px;margin-left:auto;margin-right:auto;color:#aebbd6;font-size:1.02rem}
.chain-note b{color:var(--mint-bright)}

/* ---------- benefits ---------- */
.benefits-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:20px;margin-top:18px}
.bcard{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:30px;transition:.3s;position:relative;overflow:hidden}
.bcard::after{content:"";position:absolute;top:0;left:0;width:100%;height:3px;background:var(--teal);transform:scaleX(0);transform-origin:left;transition:.35s}
.bcard:hover{transform:translateY(-6px);box-shadow:var(--shadow);border-color:transparent}
.bcard:hover::after{transform:scaleX(1)}
.bcard__head{display:flex;align-items:center;gap:16px;margin-bottom:14px}
.bcard .ico{width:50px;height:50px;flex:0 0 auto;border-radius:13px;display:grid;place-items:center;font-size:1.5rem;
  background:var(--grad-brand);color:var(--navy);font-family:"Bricolage Grotesque";font-weight:800}
.bcard h2{font-size:1.24rem;font-weight:700;max-width:none;margin:0}
.bcard p{color:var(--ink-soft);font-size:.96rem}

/* ---------- security (dark) ---------- */
.security{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.security::before{content:"";position:absolute;inset:0;opacity:.5;background:radial-gradient(700px 400px at 85% 10%,rgba(84,180,132,.18),transparent 60%)}
.security .wrap{position:relative}
.security .sec-tag{color:var(--mint-bright)}
.security .sec-tag::before{background:var(--mint-bright)}
.security h2,.security h2.sec-title{color:#fff}
.security>.wrap>p,.security .sec-head p{color:#aebbd6}
/* trust-row su fondo scuro: --ink-soft è pensato per fondi chiari e qui non si legge */
.security .trust-item span{color:var(--platinum-2)}
.security .trust-item b{color:#fff}
.security .trust-item .ck{background:rgba(116,214,160,.18);color:var(--mint-bright)}
.sec-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px;margin-top:18px}
.scard{padding:26px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09);transition:.3s}
.scard:hover{border-color:rgba(116,214,160,.4);background:rgba(116,214,160,.06)}
.scard .ico{width:44px;height:44px;border-radius:12px;background:rgba(116,214,160,.14);color:var(--mint-bright);display:grid;place-items:center;margin-bottom:16px;font-family:"Bricolage Grotesque";font-weight:800}
.scard h4{color:#fff;font-size:1.1rem;margin-bottom:8px}
.scard p{font-size:.88rem;color:#9fb0cf}

/* ---------- CTA ---------- */
.cta{background:linear-gradient(135deg,var(--navy) 0%,#0a3a52 100%);color:#fff;text-align:center;position:relative;overflow:hidden}
.cta::before{content:"";position:absolute;top:-50%;left:50%;transform:translateX(-50%);width:700px;height:700px;border-radius:50%;
  background:radial-gradient(circle,rgba(25,185,198,.18),transparent 65%)}
.cta .wrap{position:relative}
.cta h2{color:#fff;font-size:clamp(2rem,4.4vw,3.2rem);font-weight:800;max-width:740px;margin:0 auto 18px}
.section.cta .wrap p{color:#cdd9ee;font-size:1.15rem;max-width:520px;margin:0 auto 34px}
.cta-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}

/* ---------- FAQ ---------- */
.faq{background:var(--platinum)}
.faq__list{max-width:820px;margin:18px auto 0;display:flex;flex-direction:column;gap:12px}
.faq details{background:#fff;border:1px solid var(--line);border-radius:14px;padding:0;overflow:hidden;transition:.25s}
.faq details[open]{border-color:var(--teal);box-shadow:var(--shadow-sm)}
.faq summary{list-style:none;cursor:pointer;padding:20px 24px;font-family:"Bricolage Grotesque";font-weight:700;
  font-size:1.05rem;color:var(--navy);display:flex;align-items:center;justify-content:space-between;gap:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:1.4rem;color:var(--teal);font-family:"Spline Sans";line-height:1;transition:.25s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{padding:0 24px 22px;color:var(--ink-soft);font-size:.98rem;margin:0}

/* ---------- footer ---------- */
footer{background:#08182f;color:#9fb0cf;padding:62px 0 34px}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;padding-bottom:40px;border-bottom:1px solid rgba(255,255,255,.08)}
footer .brand img{height:42px;margin-bottom:18px}
.foot-about{font-size:.92rem;max-width:300px;line-height:1.6}
/* h2 e non h5: i titoli di colonna seguono l'ultimo heading della pagina, e
   saltare due livelli fa fallire l'audit heading-order. Line-height e
   letter-spacing tornano ai valori del corpo perche' la regola generale su
   h1..h4 e' tarata sui titoli grandi. */
.foot-col h2{font-family:"Bricolage Grotesque";color:#fff;font-size:.95rem;line-height:1.6;letter-spacing:normal;margin-bottom:16px}
.foot-col a{display:block;font-size:.9rem;margin-bottom:10px;transition:.2s}
.foot-col a:hover{color:var(--teal-bright)}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:26px;font-size:.84rem;flex-wrap:wrap;gap:14px}
.foot-bottom .tag{font-style:italic;color:#7488a8}
/* Sottolineati perche' nella riga in basso, fitta di testo, un link senza
   segno grafico non si distingue dalla nota di copyright che lo circonda. */
.foot-bottom a{text-decoration:underline;text-underline-offset:3px;transition:.2s}
.foot-bottom a:hover{color:var(--teal-bright)}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(26px);transition:.7s cubic-bezier(.2,.8,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}.reveal.d2{transition-delay:.16s}.reveal.d3{transition-delay:.24s}.reveal.d4{transition-delay:.32s}

/* ---------- accessibility ---------- */
:focus-visible{outline:3px solid var(--teal-bright);outline-offset:2px;border-radius:4px}

/* ---------- responsive ---------- */
@media(max-width:960px){
  :root{--diag:1.6vw}
  .nav-links,.nav-cta .btn-ghost,.nav-cta .btn--ghost{display:none}
  .menu-btn{display:flex}
  .nav{height:78px}
  .brand img{height:52px}
  .hero-grid{grid-template-columns:1fr;gap:40px}
  .hero-panel{max-width:480px}
  .norm-grid{grid-template-columns:1fr}
  .chain-flow{grid-template-columns:1fr 1fr}
  .connector,.pulse-dot{display:none}
  .node{margin:0}
  .foot-top{grid-template-columns:1fr 1fr}
}
@media(max-width:640px){
  section{padding:48px 0}
  .hero{padding:54px 0 40px}
  .prob-row,.prob-row.head{grid-template-columns:1fr}
  .prob-row .ans{border-left:none;border-top:3px solid var(--mint)}
  .prob-row.head{display:none}
  .chain-flow{grid-template-columns:1fr}
  .foot-top{grid-template-columns:1fr}
  .trust-row{flex-direction:column;gap:14px}
  /* Header: sotto i 640px la demo nell'header spingeva l'hamburger fuori schermo.
     La CTA resta a portata di tap nel menu (che la contiene già). Logo più compatto. */
  .nav-cta .btn-primary{display:none}
  .brand img{height:44px}
  /* Form contatti: campi a colonna singola; 16px evita lo zoom automatico su iOS. */
  .form-row{grid-template-columns:1fr}
  .contact-form input,.contact-form textarea{font-size:16px}
}
/* mobile menu */
.mobile-menu{position:fixed;inset:78px 0 auto 0;background:#fff;border-bottom:1px solid var(--line);
  padding:18px 28px 26px;display:none;flex-direction:column;gap:4px;z-index:99;box-shadow:var(--shadow)}
.mobile-menu.open{display:flex}
.mobile-menu a{padding:13px 0;font-weight:500;border-bottom:1px solid var(--line)}
.mobile-menu .btn{margin-top:14px;justify-content:center}

/* ---------- error pages ---------- */
.section--narrow{padding:120px 0 140px}
.section--narrow>.wrap{max-width:640px}
.error-page .eyebrow{margin-bottom:24px}
.error-page h1{font-size:clamp(2rem,4.5vw,3.2rem);font-weight:800;margin-bottom:20px}
.error-page>p:not(:last-child){color:var(--ink-soft);font-size:1.1rem;margin-bottom:32px}
.error-page>p:last-child{display:flex;gap:14px;flex-wrap:wrap;margin-top:36px}
.error-page .btn:not(.btn--primary){background:transparent;color:var(--navy);border:1.5px solid var(--line)}
.error-page .btn:not(.btn--primary):hover{border-color:var(--teal);color:var(--teal)}

/* ---------- gallery ---------- */
.gallery{display:grid;grid-template-columns:2fr 1fr;gap:12px}
.gallery--single{grid-template-columns:1fr}
.gallery__main{margin:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--platinum)}
.gallery__main img{display:block;width:100%;height:auto}
.gallery__main figcaption{padding:10px 14px;font-size:.85rem;color:var(--ink-soft)}
.gallery__thumbs{display:grid;grid-auto-rows:1fr;gap:12px}
.gallery__thumbs .gallery__zoom{height:100%}
.gallery__thumbs img{width:100%;height:100%;object-fit:cover;border:1px solid var(--line);border-radius:10px}
.gallery__zoom{display:block;width:100%;height:100%;padding:0;border:0;background:none;cursor:zoom-in}
/* <picture> è inline: senza questa regola introduce uno spazio sotto l'immagine
   e le miniature perdono il riferimento per height:100% / object-fit:cover. */
.gallery__zoom picture{display:block;width:100%;height:100%}
.gallery__zoom:focus-visible{outline:3px solid var(--teal-bright);outline-offset:2px}
.gallery__empty{grid-column:1/-1;min-height:200px;border:1.5px dashed var(--line);border-radius:14px;
  display:grid;place-items:center;color:var(--slate);
  background:linear-gradient(135deg,var(--platinum),var(--platinum-2))}

/* ---------- lightbox ---------- */
.lightbox[hidden]{display:none}
.lightbox{position:fixed;inset:0;z-index:300;display:grid;place-items:center;padding:32px}
.lightbox__backdrop{position:absolute;inset:0;background:rgba(12,36,72,.85)}
.lightbox__figure{position:relative;margin:0;display:flex;flex-direction:column;align-items:center;gap:14px}
.lightbox__img{display:block;max-width:92vw;max-height:min(80vh,calc(100vh - 190px));
  border-radius:12px;box-shadow:var(--shadow)}
.lightbox__caption{max-width:min(92vw,760px);text-align:center;color:var(--platinum);
  font-size:.95rem;line-height:1.5}
.lightbox__caption[hidden]{display:none}
.lightbox__close{position:absolute;top:18px;right:24px;z-index:1;background:none;border:0;
  color:#fff;font-size:2.6rem;line-height:1;cursor:pointer}
.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:1;
  width:52px;height:52px;display:grid;place-items:center;cursor:pointer;
  color:#fff;background:rgba(12,36,72,.55);border:1px solid rgba(243,246,251,.28);
  border-radius:50%;transition:background .18s ease,border-color .18s ease}
.lightbox__nav:hover{background:var(--teal-deep);border-color:var(--teal-bright)}
.lightbox__nav[hidden]{display:none}
.lightbox__nav svg{width:24px;height:24px}
.lightbox__nav--prev{left:16px}
.lightbox__nav--next{right:16px}
@media (max-width:720px){
  .lightbox__nav{width:44px;height:44px}
  .lightbox__nav--prev{left:6px}
  .lightbox__nav--next{right:6px}
  .lightbox__img{max-width:100%}
}

/* ---------- feature drawer ---------- */
.feature-drawer[hidden]{display:none}
.feature-drawer{position:fixed;inset:0;z-index:200}
.feature-drawer__backdrop{position:absolute;inset:0;background:rgba(12,36,72,.45)}
.feature-drawer__panel{position:absolute;top:0;right:0;height:100%;width:min(440px,92vw);
  background:#fff;box-shadow:-30px 0 60px -30px rgba(12,36,72,.5);padding:28px;overflow-y:auto}
/* Lo sticky qui arrivava dalla regola su `header`: ora e' dichiarato, cosi'
   con un elenco lungo il titolo e la X di chiusura restano a portata. */
.feature-drawer__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;
  position:sticky;top:0;z-index:1;background:#fff}
.feature-drawer__close{background:none;border:0;font-size:2rem;line-height:1;color:var(--ink-soft);cursor:pointer}
.feature-drawer__list{list-style:none;display:flex;flex-direction:column;gap:12px}
.feature-drawer__list li{display:flex;gap:10px;align-items:flex-start;font-size:.95rem;color:var(--ink-soft)}
.feature-drawer__list li::before{content:"›";color:var(--teal);font-weight:700;flex:none}

/* ---------- relation graph ---------- */
.relation-graph{margin:0;width:100%;border:1px solid var(--line);border-radius:16px;
  background:#fff;padding:10px;box-shadow:var(--shadow-sm)}
.relation-graph img{display:block;width:100%;height:auto;border-radius:8px}

/* ---------- macro cards + bande (funzionalita) ---------- */
.band{margin-top:48px}
.band__title{font-family:"JetBrains Mono";text-transform:uppercase;letter-spacing:.12em;
  font-size:.8rem;color:var(--teal-deep);margin-bottom:18px}
/* Etichette che sono anche il titolo della loro sezione: restano heading per
   l'ordine dei titoli, ma `h1..h4` e `.section h2` sono tarate sui titoli
   grandi e qui vanno neutralizzate (da cui la forma `h2.`, che prevale). */
h2.band__title{font-size:.8rem;line-height:1.6;font-weight:400;max-width:none}
h2.sec-tag{font-size:.74rem;line-height:1.6;font-weight:500;max-width:none}
.macro-card{display:grid;grid-template-columns:1fr 1.4fr;gap:28px;align-items:center;
  border:1px solid var(--line);border-radius:18px;padding:26px;margin-bottom:18px;background:#fff}
.macro-card:nth-child(even){grid-template-columns:1.4fr 1fr}
.macro-card:nth-child(even) .macro-card__text{order:2}
.macro-card__eyebrow{font-family:"JetBrains Mono";font-size:.72rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--teal-deep)}
.macro-card h3{font-size:1.4rem;margin:8px 0 10px}
.macro-card p{color:var(--ink-soft);font-size:1rem;margin-bottom:16px}
.macro-card .ai-badge{display:inline-block;margin-left:8px;font-family:"JetBrains Mono";font-size:.66rem;
  /* fondo tenue: a .12 il teal su questo tint dava 4.39:1, sotto il 4.5:1
     richiesto in AA per il testo piccolo. Il bordo tiene comunque il badge
     staccato dal titolo. */
  letter-spacing:.08em;padding:2px 8px;border-radius:999px;background:rgba(25,185,198,.07);
  color:var(--teal-deep);border:1px solid rgba(25,185,198,.3)}
.macro-see{display:inline-flex;align-items:center;gap:7px;background:var(--navy);color:#fff;
  border:0;border-radius:999px;padding:9px 17px;font-family:"Spline Sans";font-weight:600;
  font-size:.9rem;cursor:pointer}
.macro-see:hover{background:var(--teal)}
.macro-micro{margin-top:14px}
.macro-micro:not(:target){position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);visibility:hidden}

/* ---------- contact form ---------- */
.contatti-grid{display:grid;grid-template-columns:1.4fr .9fr;gap:26px;align-items:start}
.contact-form{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:var(--shadow-sm)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.form-row--full{grid-template-columns:1fr}
.form-row label{display:block;font-family:"Spline Sans";font-weight:600;font-size:.85rem;color:var(--navy);margin-bottom:6px}
.contact-form input,.contact-form textarea{width:100%;border:1.5px solid var(--line);border-radius:11px;
  padding:11px 13px;font-family:"Spline Sans";font-size:.98rem;color:var(--ink);background:#fcfdff}
.contact-form textarea{resize:vertical;min-height:110px}
.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--teal);
  box-shadow:0 0 0 3px rgba(12,144,156,.12);background:#fff}
.form-row--submit{grid-template-columns:1fr;margin-top:6px}
.contatti-side{display:flex;flex-direction:column;gap:16px}
.contatti-rassicurazioni{background:var(--platinum);border:1px solid var(--line);border-radius:16px;padding:22px}
.contatto-diretto{background:var(--navy);border-radius:16px;padding:22px;color:#fff}
.contatto-diretto .sec-tag{color:var(--teal-bright)}
.contatto-email{display:inline-block;color:var(--teal-bright);font-family:"Bricolage Grotesque";
  font-weight:700;font-size:1.2rem;margin-top:8px}
.contatto-note{color:#9fb0cf;font-size:.86rem;margin-top:10px}

@media(max-width:860px){
  .macro-card,.macro-card:nth-child(even){grid-template-columns:1fr}
  .macro-card:nth-child(even) .macro-card__text{order:0}
  .contatti-grid{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .gallery{grid-template-columns:1fr}
}

/* ---------- home: pilastri + anteprima prodotto ---------- */
.section--pilastri{padding-top:40px}
.pillars-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
/* auto-fit: con un solo screenshot caricato la griglia non lascia tre buchi. */
.preview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.preview-grid img{width:100%;border:1px solid var(--line);border-radius:12px}
.preview-empty{min-height:140px;border:1.5px dashed var(--line);border-radius:12px;
  display:grid;place-items:center;color:var(--slate);
  background:linear-gradient(135deg,var(--platinum),var(--platinum-2))}
/* Il salto bianco -> platino da solo e' quasi impercettibile: un filo di bordo
   rende visibile lo stacco tra due sezioni chiare consecutive. */
/* background-color, non lo shorthand background: stessa ragione di .section--dark
   sopra, per non azzerare l'immagine di sfondo di eventuali sezioni .band-mesh. */
.section--alt{background-color:var(--platinum);border-top:1px solid var(--line)}
@media(max-width:760px){
  .pillars-grid{grid-template-columns:1fr}
}

/* ---------- pagine normativa / consulenti ---------- */

/* hero--norma: variante hero per le landing normativa.
   La base .hero funziona già; questa classe consente piccoli override futuri
   senza toccare il default. Attualmente allinea il panel alla sommità su desktop. */
.hero--norma .hero-panel{align-self:start}

/* hero--funz: sottotitolo a sinistra e CTA nello spazio libero a destra */
.hero--funz .hero__lead-row{display:flex;align-items:flex-end;justify-content:space-between;
  gap:48px;flex-wrap:wrap}
.hero--funz .hero__lead-row .hero__sub{margin-bottom:0}
.hero--funz .hero__lead-row .hero__actions{margin-bottom:6px}
@media (max-width:720px){
  .hero--funz .hero__lead-row{align-items:flex-start}
  .hero--funz .hero__lead-row .hero__actions{margin-bottom:0}
}

/* chain-mini — mini-catena verticale dentro .hero-panel (fondo navy scuro) */
.chain-mini{display:flex;flex-direction:column;gap:0;position:relative}
.chain-step{
  display:flex;align-items:center;gap:12px;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.1);
  border-radius:10px;padding:10px 14px;
  color:#c3d0e6;font-size:.9rem;
  position:relative;z-index:1
}
.step-num{
  font-family:"JetBrains Mono",monospace;font-size:.7rem;letter-spacing:.1em;
  color:var(--teal-bright);flex:none;min-width:24px;font-weight:600
}
.chain-step--active{
  border-color:rgba(25,185,198,.55);
  background:rgba(25,185,198,.12);
  color:#fff
}
.chain-step--active .step-num{color:var(--teal-bright)}
.chain-step--done{
  border-color:rgba(84,180,132,.45);
  background:rgba(84,180,132,.12);
  color:var(--mint-bright)
}
.chain-step--done .step-num{color:var(--mint-bright)}
.chain-arrow{
  text-align:center;color:rgba(255,255,255,.25);
  font-size:.9rem;padding:2px 0;line-height:1;
  pointer-events:none;user-select:none
}

/* panel-note — nota piccola a piè di un hero-panel scuro */
.panel-note{
  margin-top:14px;color:#aebbd6;
  font-size:.75rem;line-height:1.4
}

/* incident-states — sequenza badge stato incidente (su sezione .security o altra scura) */
.incident-states{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin-top:28px
}
.incident-states .arr{color:rgba(255,255,255,.3);font-size:1.1rem}
.state-badge{
  display:inline-flex;align-items:center;
  padding:.5em 1.1em;border-radius:999px;
  font-family:"JetBrains Mono",monospace;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;
  font-weight:600;border:1.5px solid transparent
}
.state-badge--open{
  background:rgba(96,96,108,.18);
  border-color:rgba(96,96,108,.35);
  color:#c3d0e6
}
.state-badge--progress{
  background:rgba(25,185,198,.18);
  border-color:rgba(25,185,198,.4);
  color:var(--teal-bright)
}
.state-badge--done{
  background:rgba(84,180,132,.18);
  border-color:rgba(84,180,132,.4);
  color:var(--mint-bright)
}

/* cards-grid / card / card--benefit
   Griglia responsive di card benefit (sezioni chiare) */
.cards-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:18px;margin-top:18px
}
.card{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);
  padding:26px;transition:.3s;position:relative;overflow:hidden
}
.card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:transparent}
.card--benefit{
  display:flex;align-items:flex-start;gap:14px
}
.card--benefit .ck{
  flex:none;width:28px;height:28px;border-radius:8px;
  background:rgba(84,180,132,.14);
  display:grid;place-items:center;
  color:var(--mint);font-size:1rem;margin-top:3px
}
.card--benefit h3{font-size:1.08rem;margin-bottom:6px;color:var(--navy)}
.card--benefit p{color:var(--ink-soft);font-size:.92rem;line-height:1.5}

/* feature-grid / feature-item — lista di feature con checkmark (sezioni chiare) */
.feature-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:12px;margin-top:18px
}
.feature-item{
  display:flex;align-items:flex-start;gap:11px;
  background:var(--platinum);border:1px solid var(--line);
  border-radius:12px;padding:14px 16px;font-size:.94rem;color:var(--ink)
}
.feature-item .ck{
  flex:none;width:24px;height:24px;border-radius:7px;
  background:rgba(84,180,132,.16);
  display:grid;place-items:center;
  color:var(--mint);margin-top:1px;font-size:.9rem
}

/* lifecycle-row / lc-step — sequenza step lifecycle (es. audit ISO)
   Su sezione .chain (navy scuro) */
.lifecycle-row{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  margin-top:28px
}
.lifecycle-row .arr{color:rgba(255,255,255,.3);font-size:1.1rem}
.lc-step{
  display:inline-flex;align-items:center;
  padding:.55em 1.2em;border-radius:10px;
  background:rgba(255,255,255,.06);
  border:1.5px solid rgba(255,255,255,.1);
  color:#c3d0e6
}
.lc-step--active{
  border-color:rgba(25,185,198,.55);
  background:rgba(25,185,198,.14);
  color:#fff
}
.lc-step--done{
  border-color:rgba(84,180,132,.45);
  background:rgba(84,180,132,.12);
  color:var(--mint-bright)
}

/* badge pills colorati (usati nei panel scuri e nelle tenant-row) */
.badge{
  display:inline-flex;align-items:center;
  padding:.3em .8em;border-radius:999px;
  font-family:"JetBrains Mono",monospace;font-size:.7rem;letter-spacing:.06em;font-weight:600;
  line-height:1.3;white-space:nowrap
}
.badge--teal{background:rgba(12,144,156,.18);color:var(--teal-bright)}
.badge--navy{background:rgba(255,255,255,.12);color:#c3d0e6;border:1px solid rgba(255,255,255,.18)}
.badge--mint{background:rgba(84,180,132,.18);color:var(--mint-bright)}

/* tenant-list / tenant-row / tenant-dot — lista clienti/tenant nel panel hero */
.tenant-list{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.tenant-row{
  display:flex;align-items:center;gap:10px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.09);
  border-radius:10px;padding:9px 12px;font-size:.88rem;color:#c3d0e6
}
.tenant-row>span:nth-child(2){flex:1}
.tenant-dot{
  flex:none;width:10px;height:10px;border-radius:50%
}
.tenant-dot--a{background:var(--teal-bright);box-shadow:0 0 0 3px rgba(25,185,198,.25)}
.tenant-dot--b{background:var(--mint-bright);box-shadow:0 0 0 3px rgba(116,214,160,.25)}
.tenant-dot--c{background:#9fb4d6;box-shadow:0 0 0 3px rgba(159,180,214,.2)}

/* treat-list / treat-row / treat-code — lista trattamenti nel panel hero GDPR */
.treat-list{display:flex;flex-direction:column;gap:8px;margin-top:4px}
.treat-row{
  display:flex;align-items:center;gap:10px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);
  border-radius:10px;padding:9px 12px;font-size:.85rem;color:#c3d0e6;flex-wrap:wrap
}
.treat-row>span:nth-child(2){flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.treat-code{
  font-family:"JetBrains Mono",monospace;font-size:.68rem;letter-spacing:.06em;
  background:rgba(255,255,255,.1);color:var(--teal-bright);
  border-radius:6px;padding:2px 7px;white-space:nowrap
}

/* responsive: su mobile le lifecycle-row e incident-states si impilano ordinatamente */
@media(max-width:640px){
  .lifecycle-row,.incident-states{gap:8px}
  .lifecycle-row .arr,.incident-states .arr{transform:rotate(90deg)}
  .treat-row>span:nth-child(2){white-space:normal}
}

/* ---------- glossario + risorse ---------- */
.lead{
  font-size:1.18rem;color:var(--ink-soft);line-height:1.65;
  max-width:var(--measure);margin-bottom:40px
}

/* indice del glossario */
.gloss-index{
  display:flex;flex-wrap:wrap;gap:10px;margin-bottom:52px;
  padding-bottom:34px;border-bottom:1px solid var(--line)
}
.gloss-index a{
  color:var(--teal-deep);background:rgba(12,144,156,.08);
  border:1px solid var(--line);border-radius:999px;padding:9px 16px;
  transition:.25s
}
.gloss-index a:hover{border-color:var(--teal);background:rgba(12,144,156,.14)}

.gloss-group{margin-bottom:56px;scroll-margin-top:96px}
.gloss-group .sec-head{margin-bottom:26px}
.gloss-list{display:grid;gap:14px}
.gloss-term{
  background:#fff;border:1px solid var(--line);border-left:3px solid var(--teal);
  border-radius:14px;padding:22px 26px;scroll-margin-top:96px;transition:.25s
}
.gloss-term:hover{box-shadow:var(--shadow-sm);border-left-color:var(--teal-deep)}
.gloss-term:target{border-left-color:var(--mint);box-shadow:var(--shadow-sm)}
.gloss-term__head{
  font-family:"Bricolage Grotesque";font-weight:700;font-size:1.18rem;
  color:var(--navy);letter-spacing:-.01em;display:flex;align-items:baseline;gap:8px
}
.gloss-term__anchor{
  color:var(--line);font-weight:600;opacity:0;transition:.2s;text-decoration:none
}
.gloss-term:hover .gloss-term__anchor,.gloss-term__head:hover .gloss-term__anchor{opacity:1;color:var(--teal)}
.gloss-term__body{margin:8px 0 0}
.gloss-term__body p{color:var(--ink-soft);font-size:1rem;line-height:1.6}
.gloss-term__see{
  display:inline-flex;align-items:center;gap:.4em;margin-top:14px;
  color:var(--teal-deep);font-weight:600;font-size:.92rem
}
.gloss-term__see:hover{color:var(--teal)}
.gloss-term__see .arr{transition:transform .25s}
.gloss-term__see:hover .arr{transform:translateX(3px)}

/* gruppi e card delle risorse */
.res-group{margin-bottom:48px;scroll-margin-top:96px}
.res-group .sec-head{margin-bottom:22px}
.res-group .sec-head p{font-size:1rem;margin-top:8px;color:var(--ink-soft)}
.card--resource{
  display:flex;flex-direction:column;align-items:flex-start;
  background:var(--platinum);border:1px solid var(--platinum-2);
  border-radius:var(--r);padding:30px 28px 28px
}
.card--resource:hover{background:#fff;border-color:transparent;box-shadow:var(--shadow)}
.card--resource h3{
  font-size:1.32rem;color:var(--navy);margin:18px 0 10px;line-height:1.15
}
.card--resource p{color:var(--ink-soft);font-size:.96rem;line-height:1.55;flex:1}
.res-tag{
  display:inline-block;border-radius:999px;padding:6px 13px;
  font-size:.72rem;font-weight:600;letter-spacing:.09em;border:1px solid transparent
}
.res-tag--strumento{background:rgba(12,144,156,.12);color:var(--teal-deep);border-color:rgba(12,144,156,.28)}
.res-tag--riferimento{background:rgba(10,125,136,.12);color:var(--teal-deep);border-color:rgba(10,125,136,.28)}
.res-tag--guida{background:rgba(12,36,72,.08);color:var(--navy);border-color:rgba(12,36,72,.20)}
.res-tag--prodotto{background:rgba(22,51,95,.10);color:var(--navy-700);border-color:rgba(22,51,95,.22)}
.res-tag--glossario{background:rgba(84,180,132,.18);color:#2f8a5e;border-color:rgba(84,180,132,.34)}
.res-tag--blog{background:rgba(96,96,108,.12);color:var(--slate);border-color:rgba(96,96,108,.26)}
.res-cta{
  display:inline-flex;align-items:center;gap:.4em;margin-top:18px;
  color:var(--teal-deep);font-weight:600;font-size:.94rem
}
.card--resource:hover .res-cta{color:var(--teal)}
.res-cta .arr{transition:transform .25s}
.card--resource:hover .res-cta .arr{transform:translateX(3px)}

/* ---------- strumenti self-check ---------- */
.wrap--tool{max-width:780px}
.tool-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--r);
  padding:30px;box-shadow:var(--shadow-sm)
}
.tool-instr{color:var(--ink-soft);margin-bottom:18px}
.tool-step{margin-bottom:26px;border:0}
.tool-step__label{
  display:block;font-family:"Bricolage Grotesque";font-weight:700;
  color:var(--navy);font-size:1.08rem;margin-bottom:14px;padding:0
}
.tool-select{
  width:100%;font-family:"Spline Sans";font-size:1rem;color:var(--ink);
  background:var(--platinum);border:1px solid var(--line);border-radius:12px;
  padding:14px 16px;transition:.25s;cursor:pointer
}
.tool-select:focus{outline:none;border-color:var(--teal);background:#fff}
.tool-opts{display:grid;gap:10px}
.tool-opt{
  display:flex;align-items:flex-start;gap:12px;cursor:pointer;
  background:var(--platinum);border:1px solid var(--line);border-radius:12px;
  padding:14px 16px;transition:.2s
}
.tool-opt:hover{border-color:var(--teal)}
.tool-opt input{margin-top:3px;accent-color:var(--teal);flex:none}
.tool-opt:has(input:checked){border-color:var(--teal);background:#fff;box-shadow:var(--shadow-sm)}
.tool-opt__body{display:flex;flex-direction:column;gap:2px}
.tool-opt__body b{color:var(--navy);font-weight:600}
.tool-opt__body small{color:var(--slate);font-size:.84rem}

/* quiz gap analysis */
.tool-quiz{list-style:none;display:grid;gap:14px;counter-reset:q}
.tool-q{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:12px;padding:16px 0;border-bottom:1px solid var(--line)
}
.tool-q__text{flex:1 1 320px;color:var(--ink);font-size:.98rem}
.tool-q__opts{display:flex;gap:8px;flex:none}
.tool-pill{cursor:pointer}
.tool-pill input{position:absolute;opacity:0;width:0;height:0}
.tool-pill span{
  display:inline-block;font-size:.86rem;font-weight:600;color:var(--ink-soft);
  background:var(--platinum);border:1px solid var(--line);border-radius:999px;
  padding:7px 14px;transition:.2s
}
.tool-pill:hover span{border-color:var(--teal);color:var(--teal-deep)}
.tool-pill input:checked+span{background:var(--navy);color:#fff;border-color:var(--navy)}
.tool-pill input:focus-visible+span{outline:2px solid var(--teal);outline-offset:2px}

.tool-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:24px}
.tool-hint{color:#b4452f;font-size:.9rem;margin:0}

/* risultati */
.tool-results{margin-top:24px}
.tool-result{
  border:1px solid var(--line);border-left:4px solid var(--slate);
  border-radius:14px;padding:24px 26px;background:#fff;box-shadow:var(--shadow-sm)
}
.tool-result h2{color:var(--navy);font-size:1.3rem;font-weight:700;max-width:none;margin:10px 0 8px}
.tool-result p{color:var(--ink-soft);margin-bottom:18px}
.tool-result__tag{
  display:inline-block;border-radius:7px;padding:4px 10px;color:#fff
}
.tool-result--essenziale{border-left-color:var(--teal)}
.tool-result--essenziale .tool-result__tag{background:var(--teal-deep)}
.tool-result--importante{border-left-color:var(--mint)}
.tool-result--importante .tool-result__tag{background:var(--mint);color:var(--navy)}
.tool-result--neutro{border-left-color:var(--slate)}
.tool-result--neutro .tool-result__tag{background:var(--slate)}

.tool-score{margin-bottom:20px}
.tool-score__label{display:block;color:var(--teal-deep);margin-bottom:6px}
.tool-score__value{
  font-family:"Bricolage Grotesque";font-weight:800;font-size:2.6rem;
  color:var(--navy);line-height:1
}
.tool-score__bar{
  height:8px;border-radius:999px;background:var(--platinum-2);
  margin-top:12px;overflow:hidden
}
.tool-score__bar i{
  display:block;height:100%;width:0;border-radius:999px;
  background:linear-gradient(90deg,var(--teal),var(--mint));transition:width .6s ease
}

.tool-disclaimer{
  margin-top:22px;font-size:.85rem;color:var(--slate);line-height:1.55;
  border-top:1px solid var(--line);padding-top:18px
}

@media(max-width:560px){
  .tool-card{padding:22px}
  .tool-q{flex-direction:column;align-items:stretch}
  .tool-q__opts{justify-content:flex-start}
}

/* banner CTA contestuale verso uno strumento self-check */
.section--tool-cta{padding-top:0}
.tool-banner{
  display:flex;align-items:center;justify-content:space-between;gap:28px;
  flex-wrap:wrap;padding:30px 34px;border-radius:var(--r);
  background:linear-gradient(120deg,var(--platinum),var(--platinum-2));
  border:1px solid var(--line);transition:.3s
}
.tool-banner:hover{border-color:var(--teal);box-shadow:var(--shadow-sm);transform:translateY(-3px)}
.tool-banner__text{flex:1 1 340px}
.tool-banner__tag{display:inline-block;color:var(--teal-deep);margin-bottom:10px}
.tool-banner h3{color:var(--navy);font-size:1.45rem;margin-bottom:8px}
.tool-banner p{color:var(--ink-soft);font-size:1rem;max-width:560px;margin:0}
.tool-banner__cta{flex:none}

/* ---------- pagine di riferimento (tabelle + timeline) ---------- */
.ref-filter{margin-bottom:18px}
.ref-filter label{display:block;color:var(--teal-deep);margin-bottom:8px}
.ref-filter__input{
  width:100%;max-width:520px;font-family:"Spline Sans";font-size:1rem;color:var(--ink);
  background:var(--platinum);border:1px solid var(--line);border-radius:12px;padding:13px 16px;transition:.25s
}
.ref-filter__input:focus{outline:none;border-color:var(--teal);background:#fff}

.ref-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
.ref-table{width:100%;border-collapse:collapse;font-size:.95rem}
.ref-table thead th{
  text-align:left;background:var(--navy);color:#fff;font-family:"Spline Sans";font-weight:600;
  font-size:.9rem;padding:14px 18px;white-space:nowrap
}
.ref-table tbody td{padding:15px 18px;border-top:1px solid var(--line);color:var(--ink-soft);vertical-align:top}
.ref-table tbody tr:nth-child(even){background:var(--platinum)}
.ref-table tbody td b{color:var(--navy);font-weight:600}
.ref-link{color:var(--teal-deep);font-weight:600;white-space:nowrap}
.ref-link:hover{color:var(--teal)}
.ref-link .arr{transition:transform .25s;display:inline-block}
.ref-link:hover .arr{transform:translateX(3px)}
.ref-table--timeline td:first-child{white-space:nowrap}
.ref-empty{padding:22px;color:var(--slate);text-align:center;margin:0}

/* timeline degli adempimenti */
.timeline-steps{list-style:none;margin:8px 0 36px;padding:0;display:grid;gap:14px}
.timeline-step{display:grid;grid-template-columns:150px 1fr;gap:22px;align-items:start}
.timeline-step__when{
  display:inline-block;color:#fff;background:var(--navy);border-radius:999px;
  padding:8px 14px;text-align:center;margin-top:4px
}
.timeline-step--essenziale .timeline-step__when{background:var(--teal-deep)}
.timeline-step--importante .timeline-step__when{background:var(--mint);color:var(--navy)}
.timeline-step--neutro .timeline-step__when{background:var(--slate)}
.timeline-step__card{
  background:#fff;border:1px solid var(--line);border-left:4px solid var(--slate);
  border-radius:14px;padding:18px 22px
}
.timeline-step--essenziale .timeline-step__card{border-left-color:var(--teal)}
.timeline-step--importante .timeline-step__card{border-left-color:var(--mint)}
.timeline-step__card h2{color:var(--navy);font-size:1.15rem;font-weight:700;max-width:none;margin-bottom:6px}
.timeline-step__card p{color:var(--ink-soft);font-size:.96rem;margin:0}

/* callout (ponte GDPR) */
.ref-callout{
  display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
  margin-top:26px;padding:24px 28px;border-radius:var(--r);
  background:var(--platinum);border:1px solid var(--line);border-left:4px solid var(--teal)
}
.ref-callout__text{flex:1 1 360px}
.ref-callout h3{color:var(--navy);font-size:1.2rem;margin-bottom:6px}
.ref-callout p{color:var(--ink-soft);font-size:.96rem;margin:0}

@media(max-width:720px){
  .ref-table thead{display:none}
  .ref-table,.ref-table tbody,.ref-table tr,.ref-table td{display:block;width:100%}
  .ref-table tbody tr{border-top:8px solid var(--platinum)}
  .ref-table tbody tr:nth-child(even){background:#fff}
  .ref-table tbody td{border-top:0;padding:8px 16px}
  .ref-table tbody td:first-child{padding-top:16px}
  .ref-table tbody td:last-child{padding-bottom:16px}
  .ref-table tbody td::before{
    content:attr(data-label);display:block;font-size:.74rem;font-weight:600;
    color:var(--slate);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px
  }
  .timeline-step{grid-template-columns:1fr;gap:8px}
  .timeline-step__when{justify-self:start}
}

/* ---------- blog ---------- */
.post-grid{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:28px
}
.post-card{
  display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;transition:.3s
}
.post-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:transparent}
/* `contain` e non `cover`: le copertine sono spesso diagrammi o screenshot,
   e ritagliarli al centro ne taglia via i bordi con le etichette */
.post-card__cover{
  display:block;aspect-ratio:16/9;overflow:hidden;background:var(--platinum);
  padding:12px;border-bottom:1px solid var(--line)
}
.post-card__cover img{width:100%;height:100%;object-fit:contain}
.post-card__body{display:flex;flex-direction:column;align-items:flex-start;padding:24px;flex:1}
.post-card__tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.tag-chip{
  display:inline-block;font-family:"JetBrains Mono",monospace;font-size:.72rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--teal-deep);
  background:rgba(12,144,156,.10);border:1px solid rgba(12,144,156,.24);
  border-radius:999px;padding:4px 11px;transition:.2s
}
.tag-chip:hover{background:rgba(12,144,156,.18);color:var(--teal)}
/* `h2.` per prevalere su `.section h2`, che altrimenti gonfia il titolo di card */
h2.post-card__title{
  font-size:clamp(1.15rem,1.5vw,1.45rem);line-height:1.2;font-weight:700;
  max-width:none;color:var(--navy);margin-bottom:10px
}
.post-card__title a{transition:color .2s}
.post-card__title a:hover{color:var(--teal-deep)}
.post-card__summary{color:var(--ink-soft);font-size:.97rem;line-height:1.55;margin-bottom:16px}
.post-card__date{color:var(--slate);margin-top:auto}
@media(max-width:760px){
  .post-grid{grid-template-columns:1fr;gap:20px}
}

/* stato vuoto */
.blog-empty{
  text-align:center;max-width:560px;margin:0 auto;padding:48px 32px;
  background:var(--platinum);border:1px solid var(--platinum-2);border-radius:var(--r)
}
.blog-empty__mark{
  display:inline-grid;place-items:center;width:56px;height:56px;border-radius:50%;
  background:#fff;border:1px solid var(--line);color:var(--teal);font-size:1.5rem;margin-bottom:20px
}
.blog-empty h2{font-size:1.5rem;color:var(--navy);margin-bottom:12px}
.blog-empty p{color:var(--ink-soft);margin-bottom:26px}
.blog-empty .cta-actions{justify-content:center}

/* dettaglio articolo */
.wrap--article{max-width:760px}
.post__back{
  display:inline-flex;align-items:center;gap:.4em;color:var(--teal-deep);
  font-weight:600;font-size:.92rem;margin-bottom:22px
}
.post__back:hover{color:var(--teal)}
.post__back .arr{transition:transform .25s}
.post__back:hover .arr{transform:translateX(-3px)}
.post__header .post__tags{margin-bottom:18px}
.post__title{font-size:clamp(1.9rem,4vw,2.8rem);color:var(--navy);margin-bottom:18px}
/* Corsivo: il sommario anticipa l'articolo, non ne fa parte, e senza uno
   stacco visivo si legge come il primo capoverso del testo. */
.post__summary{font-size:1.18rem;color:var(--ink-soft);line-height:1.6;margin-bottom:20px;
  font-style:italic}
.post__meta{display:flex;align-items:center;gap:10px;color:var(--slate);margin-bottom:30px}
.post__author{color:var(--teal-deep)}
.post__cover{width:100%;border-radius:var(--r);margin-bottom:34px}
.post__body{color:var(--ink);font-size:1.06rem;line-height:1.75}
.post__body>*+*{margin-top:1.1em}
.post__body h2{font-size:1.7rem;color:var(--navy);margin-top:1.8em}
.post__body h3{font-size:1.32rem;color:var(--navy);margin-top:1.5em}
.post__body p{color:var(--ink-soft)}
.post__body a{color:var(--teal-deep);text-decoration:underline;text-underline-offset:3px}
.post__body a:hover{color:var(--teal)}
.post__body ul,.post__body ol{padding-left:1.4em;color:var(--ink-soft)}
.post__body li+li{margin-top:.4em}
.post__body img{max-width:100%;height:auto;border-radius:12px}
.post__body blockquote{
  border-left:4px solid var(--teal);background:var(--platinum);
  padding:14px 22px;border-radius:0 12px 12px 0;color:var(--ink)
}
.post__body code{
  background:var(--platinum-2);border-radius:6px;padding:.15em .45em;
  font-family:"JetBrains Mono",monospace;font-size:.9em
}
.post__body pre{background:var(--navy);color:#e7eefc;padding:18px 20px;border-radius:12px;overflow:auto}
.post__body pre code{background:transparent;padding:0;color:inherit}
.post__footer{margin-top:40px;padding-top:26px;border-top:1px solid var(--line)}

/* ---------- prezzi / chi siamo ---------- */
/* Il prezzo sta nella seconda colonna dell'hero, che su /prezzi era vuota: come
   badge occupa lo spazio libero senza competere con il claim, che resta la voce
   piu' forte della pagina. Vive solo sull'hero scuro, da qui i colori chiari. */
.price-badge{justify-self:end;display:inline-flex;flex-direction:column;gap:8px;margin:0;
  padding:22px 30px;border-radius:20px;
  /* Fondo navy e non bianco trasparente: il badge cade sul bagliore teal, la zona
     piu' chiara dell'hero, dove il testo bianco perderebbe contrasto. */
  background:rgba(10,28,58,.55);border:1px solid rgba(255,255,255,.22)}
.price-badge__value{font-family:"Bricolage Grotesque";font-weight:800;
  font-size:clamp(1.4rem,2.2vw,1.8rem);color:#fff;line-height:1}
.price-badge__note{font-size:.76rem;color:#aebbd6;letter-spacing:.09em;text-transform:uppercase}
/* A colonna singola il badge scende sotto i bottoni: allineato a sinistra resta sul
   filo del testo. La regola sta qui e non nella media query generale perche' quella
   precede questo blocco e perderebbe per ordine di sorgente. */
@media(max-width:960px){.price-badge{justify-self:start}}
.card--info h3{font-size:1.16rem;margin:0 0 10px}
.card--info p{color:var(--ink-soft);font-size:1rem;line-height:1.7}
.profilo-card__prezzo{margin-top:14px;color:var(--teal-deep);font-size:.9rem;letter-spacing:.06em}
.azienda-card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:34px;max-width:var(--measure)}
.azienda-card__logo{margin:14px 0 4px}
/* Il logo porta allo stesso sito del link testuale sotto: inline-block perche'
   il focus segua il contorno dell'immagine e non la riga di testo. */
.azienda-card__logo a{display:inline-block;transition:opacity .2s}
.azienda-card__logo a:hover{opacity:.78}
.azienda-card__logo img{display:block;width:auto;height:92px;max-width:100%;object-fit:contain}
.azienda-card__righe{list-style:none;margin:18px 0 20px;padding:0;color:var(--ink-soft);line-height:1.9}
.azienda-card__nota{margin-top:18px;font-size:.88rem;color:var(--ink-soft)}

/* ---------- restyling: bande, diagonali, mesh ---------- */
/* Le bande scure entrano e escono con un bordo obliquo. Le classi sono agganciate
   direttamente alle sezioni esistenti: il taglio e' una proprieta' del tipo di
   banda, non del singolo template. Il padding assorbe la profondita' del taglio,
   cosi' la diagonale non morde il testo. */
.band--diag,.chain,.security{
  clip-path:polygon(0 var(--diag),100% 0,100% calc(100% - var(--diag)),0 100%);
  padding-top:calc(64px + var(--diag));
  padding-bottom:calc(64px + var(--diag))
}
/* L'hero parte a filo dell'header: solo taglio inferiore. */
.band--diag-bottom,.hero:not(.hero--light){
  clip-path:polygon(0 0,100% 0,100% calc(100% - var(--diag)),0 100%);
  padding-bottom:calc(48px + var(--diag))
}
/* La CTA confina in basso col footer (#08182f): un taglio inferiore lascerebbe
   un triangolo bianco tra due fondi scuri. Solo taglio superiore. */
.band--diag-top,.cta{
  clip-path:polygon(0 var(--diag),100% 0,100% 100%,0 100%);
  padding-top:calc(64px + var(--diag))
}

/* Mesh di nodi nell'angolo alto a destra delle bande scure. Spinta oltre il bordo
   per meta' della sua larghezza, non finisce mai dietro un paragrafo. */
.band-mesh,.chain,.security{
  background-image:url("../img/mesh-nodes.svg");
  background-repeat:no-repeat;
  background-position:right -90px top -70px;
  background-size:620px
}
/* La CTA ha un gradiente come sfondo: va ridichiarato insieme alla mesh, altrimenti
   background-image lo sostituisce. */
.cta{
  background-image:url("../img/mesh-nodes.svg"),linear-gradient(135deg,var(--navy) 0%,#0a3a52 100%);
  background-repeat:no-repeat,no-repeat;
  background-position:right -90px top -70px,0 0;
  background-size:620px,cover
}

@media(max-width:640px){
  .band--diag,.chain,.security{
    padding-top:calc(48px + var(--diag));
    padding-bottom:calc(48px + var(--diag))
  }
  .band--diag-bottom,.hero:not(.hero--light){padding-bottom:calc(40px + var(--diag))}
  .band--diag-top,.cta{padding-top:calc(48px + var(--diag))}
}

/* ---------- hero scuro ---------- */
/* Il fondo navy e' il default di tutti gli hero. Fa eccezione .hero--light
   (/contatti e la pagina di conferma), dove l'hero introduce un form su bianco. */
/* La mesh sta nel primo strato, sopra i bagliori: come banda scura l'hero la porta
   nello stesso angolo delle altre. Non puo' stare su .hero, perche' .hero-bg la
   coprirebbe. */
.hero:not(.hero--light) .hero-bg{
  background:
    url("../img/mesh-nodes.svg") right -90px top -70px/620px no-repeat,
    radial-gradient(900px 520px at 82% -10%,rgba(25,185,198,.28),transparent 60%),
    radial-gradient(700px 500px at 8% 110%,rgba(84,180,132,.18),transparent 60%),
    linear-gradient(160deg,var(--navy) 0%,#0a3a52 100%)
}
.hero:not(.hero--light) .grid-lines{
  opacity:.6;
  background-image:
    linear-gradient(rgba(255,255,255,.10) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.10) 1px,transparent 1px)
}
.hero:not(.hero--light) h1{color:#fff}
.hero:not(.hero--light) h1 .hl{color:var(--teal-bright)}
.hero:not(.hero--light) .hero__sub,
.hero:not(.hero--light) p.lead{color:#aebbd6}
/* Il badge pieno in gradiente brand non garantisce AA sul testo bianco: si passa
   a testo teal-bright su fondo teal-bright trasparente, come da spec. */
.hero:not(.hero--light) .eyebrow{
  color:var(--teal-bright);
  background:rgba(25,185,198,.10);
  border-color:rgba(25,185,198,.35)
}
.hero:not(.hero--light) .eyebrow .dot{
  background:var(--teal-bright);
  box-shadow:0 0 0 4px rgba(25,185,198,.25);
  animation:none
}
/* Il bottone primario e' navy: su fondo navy sparirebbe. */
.hero:not(.hero--light) .btn-primary,
.hero:not(.hero--light) .btn--primary{background:var(--teal-bright);color:var(--navy)}
.hero:not(.hero--light) .btn-primary:hover,
.hero:not(.hero--light) .btn--primary:hover{background:#fff;color:var(--navy)}
.hero:not(.hero--light) .btn-ghost,
.hero:not(.hero--light) .btn--ghost{color:#fff;border-color:rgba(255,255,255,.3)}
.hero:not(.hero--light) .btn-ghost:hover,
.hero:not(.hero--light) .btn--ghost:hover{border-color:var(--teal-bright);color:var(--teal-bright)}
/* Il pannello e' gia' navy: senza un bordo si fonderebbe col fondo. */
.hero:not(.hero--light) .hero-panel{border:1px solid rgba(255,255,255,.10)}

/* ---------- bande scure: livelli e accenti ---------- */
/* I decori (bagliori radiali, mesh, foto del Task 6) stanno sotto; il contenuto
   sale a z-index 2 e non viene mai coperto. */
.chain>.wrap,.security>.wrap,.cta>.wrap{position:relative;z-index:2}
/* La catena di controllo e' il fulcro della pagina: i nodi ricevono un quadrato in
   gradiente brand pieno con glifo navy, l'unica combinazione che resta sopra la
   soglia di contrasto 3:1 su tutti gli stop del gradiente. */
.node .ico{background:var(--grad-brand);color:var(--navy)}
/* Ripetuta con lo stesso selettore composto di riga 205 (.node:nth-child(4) .ico):
   quella regola ha specificita' maggiore e vincerebbe sulla precedente per ordine
   di sorgente se non venisse ridichiarata qui, lasciando il nodo col vecchio
   accento menta invece del gradiente uniforme. */
.node:nth-child(4) .ico{background:var(--grad-brand);color:var(--navy)}

/* ---------- card ---------- */
/* .card ha gia' position:relative e overflow:hidden (riga 562): lo pseudo-elemento
   ::before era libero e diventa il filo brand, sempre visibile. */
.card::before{
  content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:var(--grad-brand)
}
.card:hover{box-shadow:0 24px 60px -28px rgba(12,144,156,.45)}

/* La sottolineatura dei link di navigazione usa lo stesso gradiente. */
.nav-links a::after{background:var(--grad-brand)}

/* ---------- sezione a fondo navy ---------- */
/* background-color, non lo shorthand background: le sezioni scure che sono anche
   .band-mesh (es. .band--diag.band-mesh) portano un'immagine di sfondo dichiarata
   altrove; lo shorthand a parita' di specificita' la azzererebbe. */
.section--dark{background-color:var(--navy);color:#fff;position:relative;overflow:hidden}
.section--dark h2,.section--dark h2.sec-title{color:#fff}
.section--dark .sec-tag{color:var(--teal-bright)}
.section--dark .sec-tag::before{background:var(--teal-bright)}
.section--dark .sec-head p,.section--dark>.wrap>p{color:#aebbd6}
.section--dark>.wrap{position:relative;z-index:2}
.section--dark .preview-grid img{border-color:rgba(255,255,255,.14)}
.section--dark .preview-empty{
  border-color:rgba(255,255,255,.18);color:#aebbd6;
  background:rgba(255,255,255,.04)
}
.section--dark .btn-primary,.section--dark .btn--primary{background:var(--teal-bright);color:var(--navy)}
.section--dark .btn-primary:hover,.section--dark .btn--primary:hover{background:#fff;color:var(--navy)}

/* ---------- foto di banda ---------- */
/* Foto decorative: desaturate e fuse col navy della banda. L'oscuramento sta
   sull'immagine (opacity + luminosity) e non in un ::after, perche' sulle bande
   scure gli pseudo-elementi sono gia' occupati dai bagliori radiali. */
.band-bg{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;filter:grayscale(1);mix-blend-mode:luminosity;
  opacity:.10;z-index:0;pointer-events:none
}
/* Nella catena l'immagine e' texture, non soggetto: la foto e' gia' scura di suo
   e sotto .10 sparirebbe del tutto, quindi qui l'opacita' sale invece di scendere. */
.chain .band-bg{opacity:.12}
/* Nell'hero di /chi-siamo i due strati di fondo stanno a z-index -1: la foto li
   segue nel DOM, quindi resta sopra il gradiente e sotto il testo. */
.hero--foto .band-bg{z-index:-1}

/* ---------- reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
}
