:root{--r-sm:6px;--r-md:12px;--r-lg:14px;--r-pill:999px}
/* Stile condiviso pagine servizio AIR */
:root{
  --serif:"Cormorant Garamond","Times New Roman",serif;
  --sans:"Inter Tight",-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;
  --mono:"JetBrains Mono","SF Mono",ui-monospace,monospace;
}
/* Palette definitiva: light = Terracotta · dark = Terminal verde */
:root[data-theme="light"]{--primary-ink:#8F3A16;--sem-red:#B33C18;--sem-amber:#946009;--sem-green:#1F7A55;--bg:#F3EDE3;--surface:#FAF6EE;--surface-2:#E8DECB;--text:#241A12;--text-muted:#6E6152;--border:#DBCDB6;--hairline:#CBBB9F;--primary:#C25A2B;--primary-hover:#A64A22;--accent:#D99A2B;--accent-red:#C0451F;--primary-contrast:#F3EDE3;--btn-ink:#fff;}
:root[data-theme="dark"]{--sem-red:#E5484D;--sem-amber:#E9A23B;--sem-green:#33B983;--bg:#060806;--surface:#0D120D;--surface-2:#141B14;--text:#DFF5DF;--text-muted:#7C9C7C;--border:#1E2A1E;--hairline:#26361F;--primary:#2CFF8A;--primary-hover:#5BFFA6;--accent:#B6FF3B;--accent-red:#17E070;--primary-contrast:#060806;--btn-ink:#06210F;}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:clip;transition:background .4s,color .4s}
a{color:inherit}
.wrap{max-width:1100px;margin:0 auto;padding:0 40px}
.serif{font-family:var(--serif)}
.red{color:var(--accent-red)}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--primary)}
.rule{height:1px;background:var(--hairline);border:0}

/* nav */
nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 97%,transparent);backdrop-filter:blur(18px) saturate(120%);border-bottom:1px solid var(--border)}
@media(max-width:820px){nav{background:var(--bg);backdrop-filter:none}}
.nav-inner{display:flex;align-items:center;gap:24px;padding:16px 40px;max-width:1100px;margin:0 auto}
.logo{font-family:var(--serif);font-weight:600;font-size:30px;letter-spacing:-.01em;text-decoration:none}
.logo .r{color:var(--primary)}
.nav-tools{display:flex;gap:10px;align-items:center}
.toggle{border:1px solid var(--border);background:transparent;color:var(--text);border-radius:var(--r-md);padding:12px 14px;cursor:pointer;font-family:var(--mono);font-size:12px;line-height:1}
.toggle:hover{border-color:var(--primary);color:var(--primary)}
/* header completo: menu su tutte le pagine */
.brand{display:flex;align-items:baseline;gap:12px;text-decoration:none;color:inherit}
.payoff{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap}
.payoff .d,.payoff .ai{color:var(--primary-ink,var(--primary))} .payoff .d{vertical-align:middle}
@media(max-width:1080px){.payoff{display:none}}
.nav-links{display:flex;gap:24px;margin-left:auto;align-items:center}
.nav-links a{color:var(--text-muted);text-decoration:none;font-size:14px;font-weight:500;transition:.2s}
.nav-links a:hover{color:var(--text)}
.has-sub{position:relative}
/* Ponte sopra il distacco di 12px: senza, uscendo dal link il puntatore
   attraversa un vuoto che non appartiene a .has-sub e il pannello sparisce. */
.has-sub::after{content:"";position:absolute;left:0;right:0;top:100%;height:14px}
.submenu{position:absolute;top:calc(100% + 12px);left:50%;transform:translateX(-50%) translateY(6px);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:8px;min-width:220px;display:flex;flex-direction:column;gap:2px;box-shadow:0 20px 44px rgba(0,0,0,.18);opacity:0;visibility:hidden;transition:opacity .18s ease,transform .18s ease;z-index:60}
.has-sub:hover .submenu,.has-sub:focus-within .submenu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.has-sub:hover>a,.has-sub:focus-within>a{color:var(--text)}
.submenu a{padding:9px 12px!important;border-radius:var(--r-md);font-size:14px!important;color:var(--text)!important}
.submenu a:hover{background:var(--surface-2);color:var(--primary)!important}
.submenu a[aria-current="page"]{background:var(--surface-2);color:var(--primary-ink,var(--primary))!important;font-weight:600}
.submenu-h{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);padding:9px 12px 4px;margin-top:4px;border-top:1px solid var(--border)}
.submenu-h:first-child{margin-top:0;border-top:0;padding-top:2px}
.burger{display:none;border:1px solid var(--border);background:transparent;color:var(--text);border-radius:var(--r-md);padding:8px 11px;cursor:pointer;font-size:16px;line-height:1}
@media(max-width:760px){
  .burger{display:inline-grid;place-items:center}
  .nav-tools .btn{display:none}
  .nav-tools{margin-left:auto}
  /* P23: align-items:center era ereditato dal desktop e mai resettato, quindi
     le voci erano larghe quanto il proprio testo (FAQ e Blog 32px su 346) e
     i separatori uscivano di sei lunghezze diverse.
     Niente mask-image su questo elemento: su Safari iOS una maschera su un
     contenitore con overflow:auto cancella meta' del pannello, sfondo compreso. */
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:0 24px 40px rgba(0,0,0,.28);padding:6px 22px 16px;margin-left:0;max-height:calc(100dvh - 84px);overflow-y:auto;scrollbar-width:thin}
  .nav-links .has-sub{width:100%}
  nav.open .nav-links{display:flex}
  .nav-links>a,.has-sub>a{padding:13px 0;font-size:16px;border-top:1px solid var(--border);display:block}
  .submenu{position:static;transform:none;opacity:1;visibility:visible;box-shadow:none;border:0;background:transparent;padding:0 0 6px 14px;min-width:0}
  .submenu a{padding:9px 0!important;font-size:14px!important;color:var(--text-muted)!important}
  .submenu-h{padding:9px 0 4px;margin-top:0;border-top:0}
}
.btn{display:inline-flex;align-items:center;gap:14px;border-radius:var(--r-lg);padding:13px 13px 13px 22px;font-family:var(--sans);font-size:15px;font-weight:600;text-decoration:none;cursor:pointer;background:var(--accent-red);color:var(--btn-ink,#fff);border:1px solid transparent;box-shadow:0 8px 22px rgba(0,0,0,.14);transition:transform .2s,box-shadow .2s,filter .2s}
.btn:hover{transform:translateY(-2px);filter:brightness(1.07);box-shadow:0 14px 30px rgba(0,0,0,.2)}
.btn .ic{width:32px;height:32px;border-radius:50%;border:1.6px solid color-mix(in srgb,currentColor 70%,transparent);color:inherit;display:grid;place-items:center;font-size:15px;flex:none}
.nav-tools .btn{padding:9px 9px 9px 18px;font-size:14px;box-shadow:none}
.nav-tools .btn .ic{width:28px;height:28px;font-size:14px}

/* hero */
.s-hero{padding:48px 0 52px;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:40px;position:relative;overflow:hidden}
.s-hero-art{position:relative;height:440px}
.hero3d{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;color:var(--primary)}
@media(max-width:820px){.s-hero{grid-template-columns:1fr;gap:8px}.s-hero-art{height:300px}}
.back{font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);text-decoration:none}
@media(max-width:820px){.back{display:inline-flex;align-items:center;min-height:44px;padding:4px 0}}
.back:hover{color:var(--primary)}
.s-hero .eyebrow{display:block;margin:20px 0 16px}
.s-hero h1{font-family:var(--sans);font-weight:800;font-size:clamp(38px,5.4vw,76px);line-height:1.02;letter-spacing:-.03em}
.s-hero p.sub{font-family:var(--serif);font-weight:500;font-size:clamp(19px,2.2vw,26px);max-width:640px;margin:28px 0 32px;line-height:1.4;opacity:.9}
.cta-row{display:flex;gap:16px;flex-wrap:wrap;align-items:center}

/* sezioni */
.sec{padding:70px 0;border-top:1px solid var(--hairline)}
.sec .eyebrow{margin-bottom:10px;display:block}
.sec h2{font-family:var(--sans);font-weight:800;font-size:clamp(28px,4vw,48px);letter-spacing:-.03em;line-height:1.04;max-width:20ch}
.sec .lead{color:var(--text-muted);font-size:18px;max-width:60ch;margin-top:16px}

/* steps */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:40px}
.step{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);padding:26px}
.step .n{font-family:var(--mono);color:var(--primary);font-size:13px;letter-spacing:.1em}
.step h3{font-family:var(--sans);font-weight:700;font-size:19px;margin:10px 0 8px}
.step p{color:var(--text-muted);font-size:15px;line-height:1.5}

/* poc list */
.poc{display:grid;grid-template-columns:1fr;gap:0;margin-top:30px}
.poc-row{display:grid;grid-template-columns:60px 1fr;gap:24px;padding:26px 0;border-top:1px solid var(--hairline)}
.poc-row:last-child{border-bottom:1px solid var(--hairline)}
.poc-row .pn{font-family:var(--serif);font-weight:600;font-size:28px;color:var(--text-muted)}
.poc-row h3{font-family:var(--sans);font-weight:700;font-size:clamp(20px,2.4vw,28px);letter-spacing:-.02em}
.poc-row p{color:var(--text-muted);font-size:16px;margin-top:6px;max-width:62ch}

/* stats */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:36px}
.stat{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);padding:28px;display:flex;flex-direction:column}
.stat .big{font-family:var(--sans);font-weight:800;font-size:clamp(40px,6vw,64px);line-height:1;letter-spacing:-.02em;color:var(--accent-red)}
.stat .lbl{color:var(--text-muted);font-size:14px;margin-top:auto;padding-top:8px}
.case{margin-top:24px;border:1px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface-2);padding:24px 26px}
.case .eyebrow{color:var(--primary)}
.case p{font-size:16px;margin-top:8px;line-height:1.6}
.case p.note{font-size:12px;line-height:1.6;margin-top:14px;max-width:66ch}
.note{color:var(--text-muted);font-family:var(--mono);font-size:12px;margin-top:14px}

/* cta finale */
.s-cta{padding:100px 0;border-top:1px solid var(--hairline)}
.s-cta h2{font-family:var(--sans);font-weight:800;font-size:clamp(38px,6vw,80px);letter-spacing:-.03em;line-height:1}

/* footer */
footer{border-top:1px solid var(--border);padding:44px 0;color:var(--text-muted);font-size:14px}
.foot-in{max-width:1100px;margin:0 auto;padding:0 40px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px}
footer .logo{font-size:22px}
footer a{color:var(--text-muted);text-decoration:none}
footer a:hover{color:var(--primary)}
.flinks{display:flex;gap:16px;flex-wrap:wrap;margin-top:6px}
.foot-nav{display:flex;flex-direction:column;gap:9px}

.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s cubic-bezier(.22,.61,.36,1),transform .7s cubic-bezier(.22,.61,.36,1)}
.reveal.in{opacity:1;transform:none}

/* ===== elementi GEO (brecce/landing) ===== */
/* quick answer: 40-80 parole citabili subito sotto l'H1 */
/* P24: il bordo inferiore del box coincideva esattamente con la riga
   divisoria della sezione, e la barra verticale ci finiva dentro formando
   una L che sembrava un errore di rendering */
.qa{margin:24px 0 40px;padding:20px 24px;border-left:3px solid var(--primary);background:var(--surface);border-radius:0 var(--r-md) var(--r-md) 0}
/* P24: i paragrafi di raccordo fra hero e prima sezione erano incastrati
   con zero spazio sopra e sotto */
.wrap > .note{margin:22px 0 34px}
.qa p{font-family:var(--serif);font-size:clamp(18px,1.9vw,22px);line-height:1.45}
.updated{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--text-muted);margin-top:14px;display:block}
/* per chi / audience */
.aud{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:36px}
.aud .a{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);padding:20px 22px}
.aud .a h4{font-family:var(--sans);font-weight:700;font-size:16px;margin-bottom:6px}
.aud .a p{color:var(--text-muted);font-size:15px;line-height:1.5}
/* cross-link ecosistema */
.eco{margin-top:26px;border:1px dashed var(--hairline);border-radius:var(--r-md);padding:18px 22px;font-size:15px;color:var(--text-muted);line-height:1.6}
.eco a{color:var(--accent-red);font-weight:600;text-decoration:none}
.eco a:hover{text-decoration:underline}
/* faq */
.faq-item{border-top:1px solid var(--hairline)}
.faq-item:last-child{border-bottom:1px solid var(--hairline)}
.faq-q{width:100%;text-align:left;background:none;border:0;color:var(--text);font-family:var(--sans);font-weight:600;font-size:clamp(17px,2vw,22px);padding:22px 0;cursor:pointer;display:flex;justify-content:space-between;gap:16px}
.faq-q .plus{color:var(--primary);transition:.25s;flex:none}
.faq-a{max-height:0;overflow:hidden;transition:max-height .4s ease;color:var(--text-muted);font-size:16px;line-height:1.6}
.faq-item.open .faq-a{max-height:360px;padding-bottom:22px}
.faq-item.open .plus{transform:rotate(45deg)}
@media(max-width:820px){.aud{grid-template-columns:1fr}}

/* ===== form (pagina contatti) ===== */
form{display:grid;gap:18px;max-width:540px;margin-top:8px}
label{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}
input,textarea{width:100%;background:transparent;border:0;border-bottom:1px solid var(--hairline);padding:12px 0;color:var(--text);font-family:var(--serif);font-size:19px}
input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--primary);outline-offset:3px;border-color:var(--primary)}
input:focus,textarea:focus{border-color:var(--primary)}
input:focus:not(:focus-visible),textarea:focus:not(:focus-visible){outline:none}
.consent{display:flex;align-items:flex-start;gap:10px;margin-top:2px}
.consent input[type=checkbox]{appearance:none;-webkit-appearance:none;width:20px;height:20px;flex:0 0 20px;padding:0;margin-top:1px;border:1.5px solid var(--hairline);border-radius:var(--r-sm);background:var(--surface);display:grid;place-content:center;cursor:pointer;transition:.15s}
.consent input[type=checkbox]:hover{border-color:var(--primary)}
.consent input[type=checkbox]:checked{background:var(--accent-red);border-color:var(--accent-red)}
.consent input[type=checkbox]:checked::after{content:"";width:11px;height:6px;border:2px solid var(--btn-ink,#fff);border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}
.consent label{text-transform:none;letter-spacing:0;font-family:var(--sans);font-size:13px;color:var(--text-muted);line-height:1.5}
.consent a{color:var(--primary);text-decoration:underline}
.contact-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:start}
.contact-side{border-left:1px solid var(--hairline);padding-left:32px;align-self:stretch}
.contact-side h3{font-family:var(--sans);font-weight:700;font-size:18px;margin-bottom:6px}
.contact-side p{color:var(--text-muted);font-size:15px;line-height:1.6;margin-bottom:22px}
.contact-side a{color:var(--accent-red);font-weight:600;text-decoration:none}
form textarea{resize:vertical;max-width:100%}
/* P42: inviando il form vuoto il campo in errore riceveva lo stesso bordo
   del focus valido, cioe' il segnale opposto a quello che serviva */
/* fuori dalle demo, dove i controlli hanno bordo pieno e raggio: la
   sottolineatura rossa la vogliamo solo sui campi a filetto */
form:not(.sform):not(.demo-form) input:user-invalid,
form:not(.sform):not(.demo-form) textarea:user-invalid{border-bottom-color:var(--sem-red)}
form:not(.sform):not(.demo-form) input:user-invalid:focus,
form:not(.sform):not(.demo-form) textarea:user-invalid:focus{border-bottom-color:var(--sem-red);outline-color:var(--sem-red)}
.consent input[type=checkbox]:user-invalid{border-color:var(--sem-red)}
@media(max-width:820px){.contact-grid{grid-template-columns:1fr;gap:32px}.contact-side{border-left:0;padding-left:0;border-top:1px solid var(--hairline);padding-top:28px}}

@media(max-width:820px){
  .wrap,.nav-inner,.foot-in{padding-left:22px;padding-right:22px}
  .steps,.stats{grid-template-columns:1fr}
  .poc-row{grid-template-columns:1fr;gap:6px}
  .nav-tools .btn{display:none}
}

/* ===== lead magnet: fascia in evidenza (demo che si prova sul sito) ===== */
.demo-sec{position:relative;border-top:1px solid var(--primary)}
.demo-sec::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0}
:root[data-theme="dark"] .demo-sec::before{background:
  radial-gradient(120% 90% at 50% -12%,color-mix(in srgb,var(--primary) 16%,transparent),transparent 58%),
  color-mix(in srgb,var(--primary) 6%,transparent)}
:root[data-theme="light"] .demo-sec::before{background:
  radial-gradient(130% 92% at 50% -14%,color-mix(in srgb,var(--primary) 18%,transparent),transparent 60%),
  linear-gradient(180deg,#FBF4EA,#F5EBDB)}
.demo-sec>.wrap{position:relative;z-index:1}
.demo-sec .eyebrow{color:var(--primary)}
/* la scatola demo risalta di più: anello e bagliore */
.demo-sec .demo{background:var(--surface);box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 34%,transparent),0 26px 70px color-mix(in srgb,var(--primary) 16%,transparent)}
:root[data-theme="light"] .demo-sec .demo{background:#FFFFFF;box-shadow:0 0 0 1px color-mix(in srgb,var(--primary) 26%,transparent),0 22px 55px rgba(120,55,20,.15)}

/* I form della demo non ereditano il max-width della pagina contatti: devono
   occupare tutta la larghezza della scatola, altrimenti restano 457px di vuoto. */
.demo form{max-width:none;margin-top:0}

/* Stati della demo. Prima l'errore usava la stessa .note della nota legale
   che sta subito sotto, quindi erano due righette grigie identiche. */
.demo-msg{margin:0;font-size:15px;line-height:1.5;color:var(--text);border-radius:var(--r-md);padding:12px 14px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.demo-msg--wait{background:color-mix(in srgb,var(--text) 5%,transparent);border-left:3px solid var(--hairline)}
.demo-msg--err{background:color-mix(in srgb,var(--sem-red) 9%,transparent);border-left:3px solid var(--sem-red)}
.demo-msg--err .ico{color:var(--sem-red);font-weight:800;flex:none}
.demo-msg a{color:var(--primary-ink,var(--primary));font-weight:600}
.demo-msg .btn{padding:8px 8px 8px 16px;font-size:14px;box-shadow:none;border-color:color-mix(in srgb,var(--sem-red) 45%,transparent)}
.demo-msg .btn.ghost:hover{border-color:var(--sem-red);color:var(--sem-red)}
.demo-msg .btn.ghost:hover .ic{border-color:var(--sem-red)}
.demo-msg .btn .ic{width:24px;height:24px;font-size:13px}
.demo .btn[disabled]{opacity:.55;cursor:not-allowed;transform:none;filter:none}

/* Riduci movimento: i blocchi .reveal partono a opacity 0, quindi senza questo
   fallback chi ha l'impostazione attiva (o JavaScript spento) non vede il contenuto. */
@media(prefers-reduced-motion:reduce){
  .reveal{opacity:1!important;transform:none!important;transition:none!important}
  html{scroll-behavior:auto}
}
/* La nav e sticky e alta 80px: senza questo le ancore finiscono sotto la barra. */
section[id],header[id],div[id]{scroll-margin-top:96px}

/* footer: su schermi stretti le tre colonne si impilano, altrimenti logo e
   navigazione si affiancano lasciando un vuoto sotto il logo. */
@media(max-width:760px){.foot-in{flex-direction:column;gap:26px}}

/* Contrasto del tema chiaro (P9). Il terracotta --primary su fondo crema sta fra
   3,3:1 e 4,4:1, sotto il minimo di 4,5:1, e lo usiamo proprio sui testi piccoli:
   occhielli, numeri delle step card, link dentro i riquadri. --primary-ink e
   definito solo nel tema chiaro, quindi nel tema scuro il fallback lascia tutto
   com'e. */
.eyebrow,.case .eyebrow,.demo-sec .eyebrow,.step .n,.case a,.back:hover,
.consent a,.faq-q .plus,.pv-chips span,.demo-table th{color:var(--primary-ink,var(--primary))}
/* Questi due hover peggioravano la leggibilita: l'elemento puntato diventava
   quello che si legge peggio (da 14,7:1 a 3,76:1 sul toggle). */
.toggle:hover{color:var(--primary-ink,var(--primary))}
footer a:hover{color:var(--primary-ink,var(--primary))}
/* .eco a usa --accent-red, appena sotto soglia in chiaro */
:root[data-theme="light"] .eco a{color:var(--primary-ink)}
:root[data-theme="light"] .contact-side a{color:var(--primary-ink)}
:root[data-theme="light"] .qa a,:root[data-theme="light"] .note a{color:var(--primary-ink)}

/* P32: colore e stile dei link nei contenuti, una regola sola invece di
   decine di attributi style ripetuti pagina per pagina. */
.sec p a,.note a,.eco a,.case a,.qa a,.contact-side a{
  color:var(--primary-ink,var(--primary));font-weight:600;text-decoration:none}
.sec p a:hover,.note a:hover,.eco a:hover,.case a:hover,.qa a:hover,.contact-side a:hover{
  text-decoration:underline;text-underline-offset:3px}
/* payoff del footer: stessa costruzione di quello nella nav */
.foot-payoff{font-family:var(--mono);font-size:11px;letter-spacing:.12em}
.foot-payoff .d,.foot-payoff .ai{color:var(--primary-ink,var(--primary))}
.foot-payoff .d{vertical-align:middle}

/* P18: misura di riga. Nella stessa colonna convivevano paragrafi limitati a
   60ch e blocchi che arrivavano a 141 caratteri per riga. */
.case p,.case .note,.eco{max-width:60ch}
.faq-a{max-width:56ch}
.note{max-width:66ch}
.qa p{max-width:58ch}

/* P19: la CTA finale aveva due bottoni pieni identici, uno dei quali porta fuori
   dalla pagina di conversione. Il secondo diventa secondario. Il bordo usa una
   miscela del colore testo perche --border sta a 1,34:1 dal fondo, sotto la
   soglia di 3:1 richiesta ai controlli. */
.btn.ghost{background:transparent;color:var(--text);
  border-color:color-mix(in srgb,var(--text) 32%,transparent);box-shadow:none}
.btn.ghost .ic{border-color:color-mix(in srgb,var(--text) 32%,transparent)}
.btn.ghost:hover{border-color:var(--primary);color:var(--primary);filter:none}
.btn.ghost:hover .ic{border-color:var(--primary)}
/* su mobile i due bottoni avevano larghezze diverse, con il bordo destro frastagliato */
@media(max-width:820px){
  .cta-row{display:grid;gap:12px}
  .cta-row .btn{width:100%;justify-content:space-between}
}

/* P26: titoli bilanciati, per evitare ultime righe di una parola sola */
h1,h2,h3,.s-hero h1,.sec h2,.poc-row h3,.step h3{text-wrap:balance}
.s-hero p.sub,.sec .lead,.article-hero .dek{text-wrap:pretty}

/* P28: la riga della FAQ non dava alcun segnale di essere cliccabile */
.faq-q:hover{color:var(--primary-ink,var(--primary))}
.faq-q:hover .plus{transform:scale(1.2)}
