/* =====================================================================
   NLT Manager — frontend. Pagina OFFERTA = replica del mockup (#18).
   Isolato sotto `.nlt-app`; auto-inherit dei global color/typography di
   Elementor con fallback ai token del mockup (Rubik/Poppins/JetBrains Mono,
   palette neutra Ardesia: accento #cbd5e1, scuro #1e293b, sfondo #f8fafc). FG resta solo nel PDF.

   #31.1 — TUTTE le regole visive stanno sotto `.nlt-app`: niente selettore
   "nudo" (a/img/svg/icone/classi) che possa toccare header/footer del tema.
   Restano necessariamente GLOBALI solo: @font-face (non scopabile), i fix del
   titolo doppio (`body.single-nlt_offerta …`) e l'overflow del full-bleed.
   ===================================================================== */

/* --- Font self-hosted (same-origin dal plugin): non dipendono da Elementor/Google/CSP.
       Google Fonts open-source (OFL). Fallback sempre a sans-serif/monospace. --- */
@font-face{ font-family:"Poppins"; font-style:normal; font-weight:400; font-display:swap; src:url("../fonts/poppins-400.woff2") format("woff2"); }
@font-face{ font-family:"Poppins"; font-style:normal; font-weight:500; font-display:swap; src:url("../fonts/poppins-500.woff2") format("woff2"); }
@font-face{ font-family:"Poppins"; font-style:normal; font-weight:600; font-display:swap; src:url("../fonts/poppins-600.woff2") format("woff2"); }
@font-face{ font-family:"Poppins"; font-style:normal; font-weight:700; font-display:swap; src:url("../fonts/poppins-700.woff2") format("woff2"); }
@font-face{ font-family:"Poppins"; font-style:normal; font-weight:800; font-display:swap; src:url("../fonts/poppins-800.woff2") format("woff2"); }
@font-face{ font-family:"Rubik"; font-style:normal; font-weight:400; font-display:swap; src:url("../fonts/rubik-400.woff2") format("woff2"); }
@font-face{ font-family:"Rubik"; font-style:normal; font-weight:500; font-display:swap; src:url("../fonts/rubik-500.woff2") format("woff2"); }
@font-face{ font-family:"Rubik"; font-style:normal; font-weight:700; font-display:swap; src:url("../fonts/rubik-700.woff2") format("woff2"); }
@font-face{ font-family:"Rubik"; font-style:normal; font-weight:800; font-display:swap; src:url("../fonts/rubik-800.woff2") format("woff2"); }
@font-face{ font-family:"Rubik"; font-style:normal; font-weight:900; font-display:swap; src:url("../fonts/rubik-900.woff2") format("woff2"); }
@font-face{ font-family:"JetBrains Mono"; font-style:normal; font-weight:400; font-display:swap; src:url("../fonts/jetbrainsmono-400.woff2") format("woff2"); }
@font-face{ font-family:"JetBrains Mono"; font-style:normal; font-weight:500; font-display:swap; src:url("../fonts/jetbrainsmono-500.woff2") format("woff2"); }

/* Fix tema (necessariamente NON scoped, targettano il tema): niente titolo doppio,
   niente overlap header sticky. Solo display/margin: non tocca icone/social. */
body.single-nlt_offerta .entry-title,
body.single-nlt_offerta .page-title,
body.single-nlt_offerta .entry-header{ display:none !important; }
body.single-nlt_offerta .entry-content,
body.single-nlt_offerta .site-content,
body.single-nlt_offerta .content-area{ margin-top:0 !important; }

/* ---------------------- ROOT + TOKEN (scoped) ---------------------- */
.nlt-app{
  --nlt-accent: var(--nlt-accento, var(--e-global-color-accent, var(--e-global-color-secondary, #cbd5e1)));
  --nlt-accent-hover: var(--nlt-accento-hover, #94a3b8);
  --nlt-ink: var(--nlt-testo, var(--e-global-color-primary, var(--e-global-color-text, #1e293b)));
  --nlt-dark: #1e293b;
  --nlt-muted: #737373;
  --nlt-faint: #a3a3a3;
  --nlt-line: #f0f0f0;
  --nlt-line2: #e5e5e5;
  --nlt-soft: #fafafa;
  --nlt-light: #f7f7f7;
  --nlt-card: #ffffff;
  --nlt-bg: var(--nlt-sfondo, #f8fafc);
  --nlt-yellow-soft: rgba(203,213,225,.12);
  /* generico SEMPRE fuori dalla var(): se Elementor definisce la famiglia "nuda"
     (es. "Poppins") il fallback interno non si applica → aggiungiamo noi il sans-serif
     dopo la var() così NON si ripiega mai sul serif di sistema. */
  --nlt-font-title: var(--e-global-typography-primary-font-family, "Rubik"), "Rubik", "Segoe UI", Arial, sans-serif;
  --nlt-font-text: var(--e-global-typography-text-font-family, "Poppins"), "Poppins", "Segoe UI", Arial, sans-serif;
  --nlt-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, "Courier New", monospace;
  color: var(--nlt-ink);
  font-family: var(--nlt-font-text);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
.nlt-app *{ box-sizing:border-box; }
.nlt-app a{ color:inherit; text-decoration:none; }
.nlt-app img{ max-width:100%; height:auto; }
.nlt-app h1,.nlt-app h2,.nlt-app h3,.nlt-app h4{ font-family:var(--nlt-font-title); color:var(--nlt-ink); margin:0; line-height:1.15; font-weight:800; letter-spacing:-.01em; }
.nlt-app .nlt-hl{ color:var(--nlt-accent); }
.nlt-app .nlt-mono{ font-family:var(--nlt-font-mono); }
.nlt-app .nlt-ico{ display:inline-block; vertical-align:middle; }
.nlt-app .nlt-muted{ color:var(--nlt-muted); }

/* #24: l'offset (compensazione header + respiro) resta TRASPARENTE (sotto l'header si
   vede il bianco del body, niente riga di stacco); il grigio parte dal wrapper interno. */
.nlt-app.nlt-offer-page, .nlt-app.nlt-catalog-page{ padding-top:var(--nlt-header-offset,0px); background:transparent; }
/* #30.3: gli SFONDI delle sezioni arrivano ai bordi del viewport (full-bleed); il CONTENUTO
   resta centrato nei .nlt-wrap. Solo estensione orizzontale (il fix verticale #24 resta). */
.nlt-app .nlt-page-bg{ background:var(--nlt-bg); width:100vw; margin-left:calc(50% - 50vw); }
/* evita lo scroll orizzontale dovuto a 100vw+scrollbar: clip sull'elemento che scrolla
   (regole a livello html/body: necessariamente globali, non toccano widget del tema) */
html:has(body.nlt-fullbleed){ overflow-x:hidden; }
body.nlt-fullbleed{ overflow-x:hidden; }
.nlt-app .nlt-wrap{ max-width:1280px; margin:0 auto; padding:0 20px; }
.nlt-app .nlt-wrap-narrow{ max-width:900px; margin:0 auto; padding:0 20px; }

/* etichetta-pillola (eyebrow) — usata nelle sezioni preventivo/FAQ */
.nlt-app .nlt-eyebrow{ display:inline-flex; align-items:center; gap:8px; font-size:11px; font-weight:700; text-transform:uppercase;
  letter-spacing:1.5px; color:var(--nlt-accent-hover); background:var(--nlt-yellow-soft); border-radius:999px; padding:5px 12px; }
.nlt-app .nlt-eyebrow-dot{ width:8px; height:8px; border-radius:50%; background:var(--nlt-accent); }

/* ============================ CATALOGO ============================ */
.nlt-app .nlt-pagehead{ padding:26px 0 8px; }
.nlt-app .nlt-pagehead h1{ font-size:30px !important; line-height:1.1; }
.nlt-app .nlt-pagehead p{ color:var(--nlt-muted); margin:6px 0 0; }
/* #115 — tasti pubblico Privati/Business (nessuno attivo = tutte) */
.nlt-app .nlt-pub-tabs{ display:flex; gap:10px; margin:4px 0 18px; flex-wrap:wrap; }
/* #116.1 — reset esplicito su tutti gli stati: da DESELEZIONATO il tasto torna bianco/testo scuro
   (evita che :focus/:active del tema lo tengano giallo). Solo .is-active è colorato. */
.nlt-app .nlt-pub-tab,
.nlt-app .nlt-pub-tab:hover,
.nlt-app .nlt-pub-tab:focus,
.nlt-app .nlt-pub-tab:active{ cursor:pointer; font:inherit; font-weight:700; padding:9px 20px; border-radius:999px;
  border:1.5px solid var(--nlt-line2); background:var(--nlt-card); color:inherit; box-shadow:none; transition:.15s; outline:none; }
.nlt-app .nlt-pub-tab:hover,
.nlt-app .nlt-pub-tab:focus-visible{ border-color:var(--nlt-accent); }
.nlt-app .nlt-pub-tab.is-active,
.nlt-app .nlt-pub-tab.is-active:hover,
.nlt-app .nlt-pub-tab.is-active:focus,
.nlt-app .nlt-pub-tab.is-active:active{ background:var(--nlt-accent); border-color:var(--nlt-accent); color:var(--nlt-ink); }
.nlt-app .nlt-catalog{ display:grid; grid-template-columns:260px 1fr; gap:26px; align-items:start; padding-bottom:40px; }
.nlt-app .nlt-filters{ background:var(--nlt-card); border:1px solid var(--nlt-line2); border-radius:16px; padding:18px; position:sticky; top:16px; }
.nlt-app .nlt-filters h3{ font-size:16px !important; margin:0 0 12px; }
.nlt-app .nlt-f{ margin-bottom:16px; }
.nlt-app .nlt-f label{ display:block; font-size:13px; color:var(--nlt-muted); margin-bottom:6px; font-family:var(--nlt-font-title); font-weight:700; }
.nlt-app .nlt-f select, .nlt-app .nlt-f input[type=range]{ width:100%; }
.nlt-app .nlt-f input[type=range]{ accent-color:var(--nlt-accent); }
.nlt-app .nlt-f select{ padding:9px; border:1px solid var(--nlt-line2); border-radius:9px; background:#fff; color:var(--nlt-ink); font:inherit; }
.nlt-app .nlt-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
/* #189 — vetrina home: riusa .nlt-grid e le card del catalogo; qui solo titolo, spaziature e bottone. */
/* #201 — SOLO la vetrina passa da grid a FLEX centrato: le righe incomplete (1·2·4·5 auto) devono
   stare al centro, non appoggiate a sinistra. 🛑 `.nlt-grid` GLOBALE resta grid: il catalogo la
   condivide e lì l'orfano a sinistra è giusto (è un elenco con filtri, non una vetrina). Questa regola
   sta DOPO la .nlt-grid globale (riga 117), stessa specificità → vince per ordine di sorgente. */
.nlt-vetrina .nlt-grid{ display:flex; flex-wrap:wrap; justify-content:center; }
/* card = 1/3 meno i 2 gap, grow 0 (⚠️ MAI grow 1: una riga da 2 sarebbero 2 card larghe il doppio,
   non 2 della misura di sempre centrate). box-sizing:border-box (riga 63) fa rientrare il bordo nel
   calc → 3 card + 2 gap = 100% esatti, niente wrap. */
.nlt-vetrina .nlt-offer-card{ flex:0 1 calc((100% - 2*18px)/3); }
.nlt-vetrina{ padding:8px 0 4px; }
.nlt-vetrina .nlt-vetrina-title{ text-align:center; margin:0 0 22px; font-size:clamp(22px,3vw,32px); color:var(--nlt-ink); }
.nlt-vetrina .nlt-vetrina-all{ text-align:center; margin:26px 0 0; }
.nlt-vetrina .nlt-btn{ display:inline-block; padding:12px 24px; border-radius:10px; background:var(--nlt-accent);
  color:var(--nlt-ink); font-weight:700; text-decoration:none; transition:.15s; }
.nlt-vetrina .nlt-btn:hover{ background:var(--nlt-accent-hover); }
.nlt-app .nlt-offer-card{ background:var(--nlt-card); border:1px solid var(--nlt-line2); border-radius:16px; overflow:hidden;
  box-shadow:0 6px 22px rgba(20,20,20,.05); display:flex; flex-direction:column; color:inherit; transition:.15s; }
.nlt-app .nlt-offer-card:hover{ box-shadow:0 12px 30px rgba(20,20,20,.10); transform:translateY(-2px); }
/* #52 — foto catalogo uniformi: cornice fissa, sfondo bianco, auto INTERA (contain), mai tagliata */
.nlt-app .nlt-photo{ height:160px; background:#fff; display:flex; align-items:center;
  justify-content:center; position:relative; border-bottom:1px solid var(--nlt-line2); overflow:hidden; color:var(--nlt-faint); padding:12px; }
.nlt-app .nlt-photo img{ width:100%; height:100%; object-fit:contain; }
.nlt-app .nlt-star{ position:absolute; top:10px; left:10px; background:var(--nlt-accent); color:#fff;
  font-size:11px; font-family:var(--nlt-font-title); font-weight:700; padding:4px 9px; border-radius:999px; z-index:1; }
.nlt-app .nlt-card-body{ padding:15px; display:flex; flex-direction:column; gap:2px; flex:1; }
.nlt-app .nlt-brand{ font-size:12px; color:var(--nlt-muted); text-transform:uppercase; letter-spacing:.5px; }
.nlt-app .nlt-name{ font-family:var(--nlt-font-title); font-weight:800; font-size:18px; }
.nlt-app .nlt-trim{ font-size:13px; color:var(--nlt-muted); margin-bottom:8px; }
.nlt-app .nlt-offer-card .nlt-price{ font-family:var(--nlt-font-title); font-weight:800; font-size:22px; margin-top:auto; }
.nlt-app .nlt-price small{ font-size:12px; color:var(--nlt-muted); font-family:var(--nlt-font-text); }
.nlt-app .nlt-go{ margin-top:12px; text-align:center; background:var(--nlt-soft); border:1px solid var(--nlt-line2);
  border-radius:10px; padding:10px; font-family:var(--nlt-font-title); font-weight:700; font-size:14px; }
.nlt-app .nlt-offer-card:hover .nlt-go{ background:var(--nlt-accent); color:#fff; border-color:var(--nlt-accent); }
.nlt-app .nlt-gallery-ph{ color:var(--nlt-faint); }

/* ============================ PAGINA OFFERTA (mockup #18) ============================ */
/* barra notifica + breadcrumb */
.nlt-app .nlt-hero-note{ background:var(--nlt-light); border-top:1px solid var(--nlt-line); border-bottom:1px solid var(--nlt-line); padding:12px 0; margin-bottom:4px; }
.nlt-app .nlt-hero-note .nlt-wrap{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; font-size:13px; }
.nlt-app .nlt-note-live{ display:inline-flex; align-items:center; gap:8px; font-weight:600; color:#404040; }
.nlt-app .nlt-dot-pulse{ width:8px; height:8px; border-radius:50%; background:var(--nlt-accent); box-shadow:0 0 0 0 rgba(203,213,225,.6); animation:nltpulse 1.8s infinite; }
@keyframes nltpulse{ 0%{box-shadow:0 0 0 0 rgba(203,213,225,.5)} 70%{box-shadow:0 0 0 8px rgba(203,213,225,0)} 100%{box-shadow:0 0 0 0 rgba(203,213,225,0)} }
.nlt-app .nlt-note-state{ font-size:12px; color:var(--nlt-muted); font-weight:600; display:inline-flex; align-items:center; gap:7px; }
.nlt-app .nlt-note-ok{ color:#16a34a; font-weight:700; }
/* #33.A — badge stato offerta (per-offerta): 3 colori ben leggibili sul fondo chiaro della banda */
.nlt-app .nlt-state-badge{ display:inline-flex; align-items:center; font-size:11px; font-weight:800; letter-spacing:.3px; text-transform:uppercase; border-radius:999px; padding:3px 11px; line-height:1.4; }
.nlt-app .nlt-state-verde{ background:#dcfce7; color:#15803d; }
.nlt-app .nlt-state-giallo{ background:#fef3c7; color:#92400e; }
.nlt-app .nlt-state-rosso{ background:#fee2e2; color:#b91c1c; }
.nlt-app .nlt-crumb{ color:var(--nlt-faint); font-size:12px; padding:20px 0 4px; display:flex; align-items:center; gap:6px; font-weight:500; }
.nlt-app .nlt-crumb .nlt-ico{ color:#d4d4d4; }

/* #22C: layout unico 2 colonne a scorrimento indipendente (niente vuoto sotto la galleria) */
.nlt-app .nlt-layout{ display:grid; grid-template-columns:7fr 5fr; gap:32px; align-items:start; padding:16px 0 48px; }
.nlt-app .nlt-col-left, .nlt-app .nlt-col-right{ display:flex; flex-direction:column; gap:24px; min-width:0; }
.nlt-app .nlt-hero-card{ background:var(--nlt-card); border:1px solid var(--nlt-line); border-radius:20px; padding:28px; box-shadow:0 6px 22px rgba(20,20,20,.05);
  display:flex; flex-direction:column; }
.nlt-app .nlt-hero-top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.nlt-app .nlt-cat-pill{ background:var(--nlt-light); color:rgba(18,18,18,.8); font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:1px; border-radius:999px; padding:5px 12px; }
.nlt-app .nlt-hero-id{ font-family:var(--nlt-font-mono); font-size:12px; color:var(--nlt-faint); }
.nlt-app .nlt-hero-title{ font-size:34px !important; font-weight:800; letter-spacing:-.02em; }
.nlt-app .nlt-hero-sub{ color:var(--nlt-muted); margin:8px 0 0; font-size:14px; }
.nlt-app .nlt-stage{ position:relative; display:flex; align-items:center; justify-content:center; margin:24px 0; padding:24px; min-height:300px;
  border-radius:18px; border:1px solid var(--nlt-soft); background:radial-gradient(circle at 50% 45%, #fafafa, #ffffff); overflow:hidden; }
.nlt-app .nlt-stage img{ max-height:300px; width:auto; object-fit:contain; }
.nlt-app .nlt-stage .nlt-gallery-ph{ color:var(--nlt-faint); opacity:.5; }
.nlt-app .nlt-view-pill{ position:absolute; left:16px; bottom:16px; background:rgba(18,18,18,.95); color:#fff; font-size:12px; font-weight:600;
  border-radius:10px; padding:6px 12px; display:inline-flex; align-items:center; gap:8px; }
.nlt-app .nlt-view-dot{ width:8px; height:8px; border-radius:50%; background:var(--nlt-accent); }
/* frecce navigazione galleria (#27) */
.nlt-app .nlt-gal-nav{ position:absolute; top:50%; transform:translateY(-50%); width:36px !important; height:36px !important; min-width:36px !important;
  border:1px solid var(--nlt-line2) !important; border-radius:50% !important; background:rgba(255,255,255,.9) !important; color:var(--nlt-dark) !important;
  font-size:22px !important; line-height:1 !important; font-weight:600; padding:0 !important; box-shadow:0 2px 8px rgba(0,0,0,.12) !important;
  display:inline-flex; align-items:center; justify-content:center; cursor:pointer; }
.nlt-app .nlt-gal-nav:hover{ background:#fff !important; border-color:var(--nlt-dark) !important; }
.nlt-app .nlt-gal-prev{ left:12px; } .nlt-app .nlt-gal-next{ right:12px; }
/* thumbnails galleria */
.nlt-app .nlt-thumbs{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.nlt-app .nlt-thumb{ width:64px !important; height:48px !important; padding:0 !important; border:1px solid var(--nlt-line2) !important; border-radius:8px !important;
  overflow:hidden; background:#fff !important; cursor:pointer; flex:0 0 auto; box-shadow:none !important; }
.nlt-app .nlt-thumb.is-active{ border-color:var(--nlt-accent) !important; box-shadow:0 0 0 1px var(--nlt-accent) !important; }
.nlt-app .nlt-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }

/* configuratore (colonna dx) */
/* #25: colonna destra in FLUSSO NORMALE — Configuratore poi, subito sotto, "Sempre Incluso".
   Niente sticky (evita overlap/nascondimento della card scura). */
.nlt-app .nlt-config{ background:var(--nlt-card); border:1px solid var(--nlt-line); border-radius:20px; overflow:hidden; box-shadow:0 20px 40px rgba(20,20,20,.10); }
.nlt-app .nlt-config-head{ background:var(--nlt-dark); color:#fff; padding:16px 24px; display:flex; align-items:center; justify-content:space-between; }
.nlt-app .nlt-config-badge{ font-size:11px; text-transform:uppercase; letter-spacing:2px; font-weight:700; color:var(--nlt-accent); }
.nlt-app .nlt-config-guar{ display:inline-flex; align-items:center; gap:6px; font-size:12px; }
.nlt-app .nlt-config-guar .nlt-ico{ color:var(--nlt-accent); }
.nlt-app .nlt-config-body{ padding:28px 24px; display:flex; flex-direction:column; gap:22px; }
.nlt-app .nlt-config-ey{ font-size:11px; font-weight:600; letter-spacing:1px; text-transform:uppercase; color:var(--nlt-faint); }
.nlt-app .nlt-config-title{ font-size:22px !important; font-weight:900; margin-top:4px; }
.nlt-app .nlt-config-tsub{ font-size:12px; color:var(--nlt-faint); margin-top:2px; }
.nlt-app .nlt-price-block{ background:var(--nlt-soft); border:1px solid var(--nlt-line); border-radius:14px; padding:18px 20px; display:flex; align-items:center; justify-content:space-between; }
.nlt-app .nlt-price-amt{ display:flex; align-items:baseline; gap:4px; }
.nlt-app .nlt-price-amt b{ font-family:var(--nlt-font-title); font-size:38px; font-weight:800; letter-spacing:-.02em; }
.nlt-app .nlt-price-amt small{ font-size:14px; font-weight:600; color:var(--nlt-muted); }
.nlt-app .nlt-price-iva{ font-size:11px; font-weight:500; text-transform:uppercase; color:var(--nlt-faint); display:block; margin-top:2px; }
/* switch IVA */
.nlt-app .nlt-switch{ display:inline-flex; align-items:center; gap:8px; cursor:pointer; }
.nlt-app .nlt-switch input{ position:absolute; opacity:0; width:0; height:0; }
.nlt-app .nlt-switch-track{ width:40px; height:20px; background:#d4d4d4; border-radius:999px; position:relative; transition:background .2s; flex:0 0 auto; }
.nlt-app .nlt-switch-track::after{ content:""; position:absolute; top:2px; left:2px; width:16px; height:16px; background:#fff; border-radius:50%; box-shadow:0 1px 2px rgba(0,0,0,.2); transition:transform .2s; }
.nlt-app .nlt-switch input:checked + .nlt-switch-track{ background:var(--nlt-accent); }
.nlt-app .nlt-switch input:checked + .nlt-switch-track::after{ transform:translateX(20px); }
.nlt-app .nlt-switch-lbl{ font-size:12px; font-weight:700; color:#404040; }
/* slider */
.nlt-app .nlt-sliders{ display:flex; flex-direction:column; gap:20px; }
.nlt-app .nlt-slider-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:8px; }
.nlt-app .nlt-slider-lbl{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:#404040; }
.nlt-app .nlt-slider-val{ font-family:var(--nlt-font-mono); font-weight:700; font-size:12px; color:var(--nlt-accent-hover); background:var(--nlt-yellow-soft); padding:3px 9px; border-radius:6px; }
.nlt-app .nlt-config input[type=range]{ -webkit-appearance:none; appearance:none; width:100%; height:6px; background:#e5e5e5; border-radius:8px; cursor:pointer; }
.nlt-app .nlt-config input[type=range]::-webkit-slider-thumb{ -webkit-appearance:none; width:18px; height:18px; border-radius:50%; background:var(--nlt-accent); border:2px solid #fff; box-shadow:0 1px 3px rgba(0,0,0,.25); cursor:pointer; }
.nlt-app .nlt-config input[type=range]::-moz-range-thumb{ width:18px; height:18px; border:2px solid #fff; border-radius:50%; background:var(--nlt-accent); cursor:pointer; }
.nlt-app .nlt-ticks{ display:flex; justify-content:space-between; font-size:10px; font-weight:700; color:var(--nlt-faint); margin-top:7px; padding:0 1px; }
/* #33.B — anticipo NON personalizzabile: valore fisso (nessuno slider) */
.nlt-app .nlt-anticipo-fisso{ font-size:11px; font-weight:600; color:var(--nlt-muted); background:var(--nlt-soft); border:1px solid var(--nlt-line); border-radius:10px; padding:9px 12px; text-align:center; }
/* stepper − / + sobri (piccoli, outline grigio, simbolo scuro) — CSS blindato dal tema */
.nlt-app .nlt-slider-row{ display:flex; align-items:center; gap:10px; }
.nlt-app .nlt-slider-row input[type=range]{ flex:1; min-width:0; }
.nlt-app .nlt-step{ width:30px !important; height:30px !important; min-width:30px !important; flex:0 0 auto; padding:0 !important;
  border:1px solid var(--nlt-line2) !important; border-radius:50% !important; background:#fff !important; color:var(--nlt-dark) !important;
  font-family:var(--nlt-font-text); font-size:17px !important; font-weight:600; line-height:1 !important; box-shadow:none !important;
  display:inline-flex; align-items:center; justify-content:center; cursor:pointer; transition:background .15s,border-color .15s; }
.nlt-app .nlt-step > span{ display:block; margin-top:-1px; }
.nlt-app .nlt-step:hover{ background:var(--nlt-soft) !important; border-color:var(--nlt-dark) !important; }
.nlt-app .nlt-step:disabled{ opacity:.35 !important; cursor:not-allowed; }
/* servizi opzionali card */
.nlt-app .nlt-optz{ padding-top:8px; border-top:1px solid var(--nlt-line); display:flex; flex-direction:column; gap:10px; }
.nlt-app .nlt-optz-lbl{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:#404040; }
.nlt-app .nlt-optz-item{ display:flex; align-items:center; gap:12px; padding:12px; background:#fff; border:1px solid var(--nlt-line2); border-radius:12px; cursor:pointer; transition:background .15s; }
.nlt-app .nlt-optz-item:hover{ background:var(--nlt-soft); }
.nlt-app .nlt-optz-item input{ width:16px; height:16px; accent-color:var(--nlt-accent); flex:0 0 auto; }
.nlt-app .nlt-optz-name{ font-size:12px; font-weight:700; color:#262626; }
.nlt-app .nlt-optz-desc{ font-size:10px; color:var(--nlt-faint); margin-top:1px; }
/* #33.C — "Servizi Extra Inclusi" (incluso=true): solo elenco, niente checkbox/prezzo */
.nlt-app .nlt-inclusi{ padding-top:12px; border-top:1px solid var(--nlt-line); display:flex; flex-direction:column; gap:9px; }
.nlt-app .nlt-inclusi-lbl{ font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:#404040; }
.nlt-app .nlt-inclusi-item{ display:flex; align-items:center; gap:10px; font-size:12px; font-weight:600; color:#262626; }
.nlt-app .nlt-inclusi-chk{ width:20px; height:20px; border-radius:50%; background:var(--nlt-yellow-soft); color:var(--nlt-accent-hover); display:flex; align-items:center; justify-content:center; flex:0 0 auto; }
/* CTA + franchigie */
.nlt-app .nlt-cta{ width:100%; display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:16px; background:var(--nlt-accent); color:#fff;
  font-family:var(--nlt-font-title); font-weight:800; text-transform:uppercase; letter-spacing:.5px; border:0; border-radius:14px; font-size:15px;
  box-shadow:0 10px 24px rgba(203,213,225,.28); cursor:pointer; transition:background .15s, transform .15s;
  /* #198 — 🔑 il `nowrap` NON è nostro: lo mette il TEMA (`[type="submit"], button{white-space:nowrap}`),
     e su mobile «INVIA RICHIESTA DI PREVENTIVO» (236px) in un bottone da 207px si leggeva
     «VIA RICHIESTA DI PREVENTIV». Va neutralizzato esplicitamente, o si cerca il bug dove non è.
     Il testo NON si accorcia: il problema era il contenitore. `height:auto` perché il tema fissa
     un'altezza ai bottoni, e con due righe il testo verrebbe tagliato lo stesso. */
  white-space:normal; overflow-wrap:break-word; height:auto; line-height:1.25; text-align:center; }
.nlt-app .nlt-cta:hover{ background:var(--nlt-accent-hover); transform:translateY(-1px); }
/* #198 — l'icona è un flex item: col testo su due righe verrebbe schiacciata invece di restare 16px. */
.nlt-app .nlt-cta svg{ flex-shrink:0; }
.nlt-app .nlt-franch{ font-family:var(--nlt-font-mono); font-size:10px; text-align:center; color:var(--nlt-faint); text-transform:uppercase; letter-spacing:.5px; margin-top:12px; }

/* blocchi tecnici (colonna sx del layout unico) */
/* #31.2 — UNA sola intestazione per sezione: via la pill gialla + il doppione.
   Heading pulito Poppins bold con accento giallo discreto (sottolineatura corta, ritoccabile). */
.nlt-app .nlt-tblock{ display:block; }
.nlt-app .nlt-block-head{ margin-bottom:18px; }
.nlt-app .nlt-block-title{ font-family:var(--nlt-font-text); font-size:26px !important; font-weight:700; letter-spacing:-.01em; margin:0; }
.nlt-app .nlt-block-title::after{ content:""; display:block; width:34px; height:3px; border-radius:2px; background:var(--nlt-accent); margin-top:10px; }
/* #36 — sezioni tecniche in accordion (<details>/<summary> nativi, come le FAQ): niente JS */
.nlt-app details.nlt-acc{ display:block; }
.nlt-app .nlt-acc > summary{ list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:0; }
.nlt-app .nlt-acc > summary::-webkit-details-marker{ display:none; }
.nlt-app .nlt-acc-chevron{ flex:0 0 auto; background:var(--nlt-yellow-soft); color:var(--nlt-accent-hover); border-radius:8px; padding:4px; display:flex; transition:transform .2s; }
.nlt-app .nlt-acc[open] .nlt-acc-chevron{ transform:rotate(90deg); }
.nlt-app .nlt-acc-body{ margin-top:18px; }
/* #38.2 — i 4 accordion hanno il titolo più piccolo di "Caratteristiche principali" (26px, statica) */
.nlt-app .nlt-acc > summary .nlt-block-title{ font-size:20px !important; }
.nlt-app .nlt-spec-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.nlt-app .nlt-spec-cell{ background:#fff; border:1px solid var(--nlt-line); border-radius:14px; padding:16px; box-shadow:0 4px 14px rgba(20,20,20,.04); display:flex; flex-direction:column; gap:10px; }
.nlt-app .nlt-spec-key{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--nlt-faint); }
.nlt-app .nlt-spec-val{ font-size:12px; font-weight:700; color:#262626; display:flex; align-items:center; gap:6px; }
.nlt-app .nlt-spec-val .nlt-ico{ color:var(--nlt-accent); flex:0 0 auto; }
.nlt-app .nlt-dimtable{ background:#fff; border:1px solid var(--nlt-line); border-radius:14px; overflow:hidden; box-shadow:0 4px 14px rgba(20,20,20,.04); display:grid; grid-template-columns:1fr 1fr; }
.nlt-app .nlt-dimtable.nlt-dim-single{ grid-template-columns:1fr; }
.nlt-app .nlt-dimcell{ padding:15px 16px; display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:12px; border-bottom:1px solid var(--nlt-line); } /* #38.4: gap → label e valore non si toccano mai */
.nlt-app .nlt-dimcell:nth-child(even){ border-left:1px solid var(--nlt-line); }
.nlt-app .nlt-dimtable .nlt-dimcell:nth-last-child(-n+2){ border-bottom:0; }
.nlt-app .nlt-dim-single .nlt-dimcell{ border-left:0; }
.nlt-app .nlt-dim-k{ font-size:12px; color:var(--nlt-faint); }
.nlt-app .nlt-dim-v{ font-size:12px; font-weight:700; color:#262626; }
.nlt-app .nlt-optlist{ background:#fff; border:1px solid var(--nlt-line); border-radius:14px; padding:22px; box-shadow:0 4px 14px rgba(20,20,20,.04); }
.nlt-app .nlt-optlist ul{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.nlt-app .nlt-optlist li{ display:flex; align-items:flex-start; gap:10px; font-size:12px; font-weight:500; color:#404040; }
.nlt-app .nlt-optlist .nlt-chk{ width:20px; height:20px; border-radius:50%; background:var(--nlt-yellow-soft); color:var(--nlt-accent-hover); display:flex; align-items:center; justify-content:center; flex:0 0 auto; margin-top:1px; }

/* card scura "sempre incluso" + testimonianza */
.nlt-app .nlt-incl{ background:var(--nlt-dark); color:#fff; border-radius:20px; padding:26px; box-shadow:0 12px 30px rgba(20,20,20,.18); position:relative; overflow:hidden; }
.nlt-app .nlt-incl::after{ content:""; position:absolute; right:-20px; top:-20px; width:120px; height:120px; background:rgba(203,213,225,.12); border-radius:50%; filter:blur(30px); }
.nlt-app .nlt-incl h3{ color:var(--nlt-accent); font-size:18px !important; text-transform:uppercase; letter-spacing:.5px; position:relative; }
.nlt-app .nlt-incl-sub{ color:#a3a3a3; font-size:12px; margin:6px 0 0; line-height:1.6; position:relative; }
.nlt-app .nlt-incl-list{ display:flex; flex-direction:column; gap:16px; margin-top:22px; position:relative; }
.nlt-app .nlt-incl-item{ display:flex; align-items:flex-start; gap:12px; }
.nlt-app .nlt-incl-ico{ background:#262626; color:var(--nlt-accent); border-radius:10px; padding:9px; display:flex; flex:0 0 auto; }
.nlt-app .nlt-incl-item h4{ font-size:12px !important; color:#fff; text-transform:uppercase; letter-spacing:.5px; font-weight:700; }
.nlt-app .nlt-incl-item p{ font-size:11px; color:#a3a3a3; margin:2px 0 0; line-height:1.5; }
.nlt-app .nlt-testi{ background:#fff; border:1px solid var(--nlt-line); border-radius:20px; padding:26px; box-shadow:0 6px 18px rgba(20,20,20,.05); position:relative; }
.nlt-app .nlt-testi-q{ position:absolute; left:16px; top:6px; font-size:52px; color:var(--nlt-accent); opacity:.2; font-family:var(--nlt-font-title); font-weight:800; line-height:1; }
.nlt-app .nlt-testi-txt{ font-size:12px; color:#525252; line-height:1.7; padding-top:8px; position:relative; }
.nlt-app .nlt-testi-by{ display:flex; align-items:center; gap:12px; margin-top:16px; }
.nlt-app .nlt-testi-av{ width:32px; height:32px; border-radius:50%; background:rgba(203,213,225,.2); color:var(--nlt-accent-hover); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px; }
.nlt-app .nlt-testi-by h5{ font-size:12px !important; font-weight:700; }
.nlt-app .nlt-testi-by p{ font-size:10px; color:var(--nlt-faint); margin:0; }

/* sezione preventivo */
.nlt-app .nlt-quote-sec{ background:var(--nlt-light); border-top:1px solid var(--nlt-line); border-bottom:1px solid var(--nlt-line); padding:64px 0; }
.nlt-app .nlt-quote-head{ text-align:center; margin-bottom:36px; display:flex; flex-direction:column; align-items:center; gap:12px; }
.nlt-app .nlt-quote-head h2{ font-size:34px !important; font-weight:800; }
.nlt-app .nlt-quote-head p{ color:var(--nlt-muted); font-size:14px; max-width:520px; }
.nlt-app .nlt-form-card{ background:#fff; border:1px solid #e5e5e5aa; border-radius:20px; overflow:hidden; box-shadow:0 20px 40px rgba(20,20,20,.10); }
/* #198 — `[nlt_form_preventivo riquadro="no"]`: la cornice la disegna GIÀ la pagina (card di
   Elementor). Senza questo, due riquadri identici e sovrapposti + padding annidati che su mobile
   lasciano ai campi il 53% dello schermo. Il padding orizzontale sparisce con la cornice: serviva a
   staccare il testo dal bordo, e il bordo non c'è più (quello verticale resta, per il ritmo). */
.nlt-app .nlt-form-card--nuda{ background:transparent; border:0; border-radius:0; box-shadow:none; }
.nlt-app .nlt-form-card--nuda .nlt-lead-form{ padding-left:0; padding-right:0; }
.nlt-app .nlt-tabs{ display:flex; border-bottom:1px solid var(--nlt-line); background:var(--nlt-soft); }
.nlt-app .nlt-tab{ flex:1; padding:16px; font-family:var(--nlt-font-title); font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:1px;
  text-align:center; border:0; border-bottom:2px solid transparent; background:transparent; color:var(--nlt-faint); cursor:pointer; }
.nlt-app .nlt-tab.is-active{ border-bottom-color:var(--nlt-accent); background:#fff; color:#0a0a0a; }
.nlt-app .nlt-lead-form{ padding:28px; display:flex; flex-direction:column; gap:22px; }
.nlt-app .nlt-form-summary{ background:rgba(203,213,225,.05); border:1px solid rgba(203,213,225,.2); border-radius:12px; padding:16px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; }
.nlt-app .nlt-fs-lbl{ font-size:12px; font-weight:700; color:#262626; }
.nlt-app .nlt-fs-car{ font-size:12px; color:var(--nlt-muted); font-weight:600; }
.nlt-app .nlt-fs-rk{ font-size:10px; text-transform:uppercase; font-weight:700; color:var(--nlt-faint); text-align:right; display:block; }
.nlt-app .nlt-fs-rate{ font-size:16px; font-weight:700; color:var(--nlt-accent-hover); text-align:right; }
.nlt-app .nlt-lf-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
/* #198 — etichette alleggerite (peso 700→600, colore più tenue, margine 6→5) ma **sopra il campo e
   sempre visibili**: l'utente ha scelto questa fra tre alternative (le altre due le spostavano dentro
   il campo o le facevano salire tipo «floating label»). ⚠️ NON diventano placeholder: sparirebbero
   proprio mentre si compila, che è quando servono. Il MAIUSCOLO resta — è così nel mockup approvato. */
.nlt-app .nlt-field label{ display:block; font-size:11px; font-weight:600; text-transform:uppercase; color:var(--nlt-muted); margin-bottom:5px; }
.nlt-app .nlt-lead-form input, .nlt-app .nlt-lead-form textarea, .nlt-app .nlt-lead-form select{ width:100%; padding:12px 14px; border:1px solid var(--nlt-line2); border-radius:10px; font:inherit; font-size:13px; color:var(--nlt-ink); background:#fff; }
.nlt-app .nlt-lead-form input:focus, .nlt-app .nlt-lead-form textarea:focus, .nlt-app .nlt-lead-form select:focus{ outline:none; border-color:var(--nlt-accent); box-shadow:0 0 0 1px var(--nlt-accent); }
.nlt-app .nlt-lead-form textarea{ resize:vertical; }
.nlt-app .nlt-char-count{ margin-top:4px; text-align:right; font-size:11px; color:var(--nlt-muted); }
.nlt-app .nlt-consents{ display:flex; flex-direction:column; gap:12px; }
.nlt-app .nlt-consent{ display:flex; align-items:flex-start; gap:12px; cursor:pointer; }
.nlt-app .nlt-consent input{ width:16px; height:16px; accent-color:var(--nlt-accent); margin-top:2px; flex:0 0 auto; }
.nlt-app .nlt-consent span{ font-size:11px; color:var(--nlt-muted); line-height:1.5; font-weight:500; }
.nlt-app .nlt-consent a{ color:var(--nlt-accent-hover); font-weight:700; text-decoration:underline; }
.nlt-app .nlt-lf-result{ font-size:13px; color:var(--nlt-muted); }

/* modale successo */
.nlt-app .nlt-modal{ position:fixed; inset:0; z-index:99999; display:none; align-items:center; justify-content:center; padding:16px; background:rgba(18,18,18,.85); backdrop-filter:blur(6px); }
.nlt-app .nlt-modal.is-open{ display:flex; }
.nlt-app .nlt-modal-card{ background:#fff; border:1px solid var(--nlt-line); border-radius:20px; max-width:440px; width:100%; padding:32px; text-align:center; position:relative; box-shadow:0 30px 60px rgba(0,0,0,.4); }
.nlt-app .nlt-modal-x{ position:absolute; top:16px; right:16px; background:none; border:0; color:var(--nlt-faint); cursor:pointer; }
.nlt-app .nlt-modal-ico{ width:64px; height:64px; margin:0 auto 20px; border-radius:50%; background:var(--nlt-yellow-soft); color:var(--nlt-accent-hover); display:flex; align-items:center; justify-content:center; }
.nlt-app .nlt-modal-card h3{ font-size:24px !important; font-weight:900; }
.nlt-app .nlt-modal-card > p{ font-size:13px; color:var(--nlt-muted); margin:12px 0 0; line-height:1.6; }
.nlt-app .nlt-modal-sum{ background:var(--nlt-soft); border:1px solid var(--nlt-line); border-radius:12px; padding:16px; margin:22px 0; text-align:left; }
.nlt-app .nlt-modal-sum .nlt-ms-veh{ padding-bottom:12px; margin-bottom:12px; border-bottom:1px solid var(--nlt-line); }
.nlt-app .nlt-modal-sum .nlt-ms-veh-t{ font-size:15px; font-weight:900; color:var(--nlt-ink); margin:0; line-height:1.3; }
.nlt-app .nlt-modal-sum .nlt-ms-veh-s{ font-size:12px; font-weight:600; color:var(--nlt-muted); margin:2px 0 0; line-height:1.35; }
.nlt-app .nlt-modal-sum .nlt-ms-t{ font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--nlt-faint); }
.nlt-app .nlt-modal-sum .nlt-ms-grid{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px; font-size:12px; font-weight:600; color:#404040; }
.nlt-app .nlt-modal-sum b{ color:var(--nlt-accent-hover); }

/* FAQ */
.nlt-app .nlt-faq-sec{ padding:64px 0; }
.nlt-app .nlt-faq-head{ text-align:center; margin-bottom:36px; display:flex; flex-direction:column; align-items:center; gap:12px; }
.nlt-app .nlt-faq-head h2{ font-size:30px !important; font-weight:800; }
.nlt-app .nlt-faq-list{ display:flex; flex-direction:column; gap:14px; }
.nlt-app .nlt-faq{ background:#fff; border:1px solid var(--nlt-line); border-radius:14px; overflow:hidden; box-shadow:0 4px 14px rgba(20,20,20,.04); }
.nlt-app .nlt-faq > summary{ list-style:none; cursor:pointer; padding:16px 22px; display:flex; align-items:center; justify-content:space-between; gap:16px;
  font-family:var(--nlt-font-title); font-size:14px; font-weight:700; color:#262626; }
.nlt-app .nlt-faq > summary::-webkit-details-marker{ display:none; }
.nlt-app .nlt-faq-icon{ flex:0 0 auto; background:var(--nlt-yellow-soft); color:var(--nlt-accent-hover); border-radius:8px; padding:4px; display:flex; transition:transform .2s; }
.nlt-app .nlt-faq[open] .nlt-faq-icon{ transform:rotate(90deg); }
.nlt-app .nlt-faq-body{ padding:2px 22px 20px; font-size:13px; color:var(--nlt-muted); line-height:1.7; border-top:1px solid var(--nlt-soft); }

.nlt-app .nlt-hidden{ display:none !important; }
/* #203 — messaggio «Nessuna offerta con questi filtri»: centrato quando visibile, e [hidden] blindato
   contro un eventuale `display` del tema (stesso motivo di .nlt-hidden qui sopra). */
.nlt-app .nlt-no-results{ text-align:center; padding:24px 0; grid-column:1/-1; }
.nlt-app .nlt-no-results[hidden]{ display:none; }

/* ============================ RESPONSIVE ============================ */
@media (max-width:900px){
  /* una colonna, ordine: Galleria → Configuratore → Caratteristiche → … (display:contents
     appiattisce le colonne così l'order agisce sui singoli blocchi) */
  .nlt-app .nlt-layout{ display:flex; flex-direction:column; gap:20px; }
  .nlt-app .nlt-col-left, .nlt-app .nlt-col-right{ display:contents; }
  .nlt-app .nlt-hero-card{ order:1; } .nlt-app .nlt-config{ order:2; position:static; }
  .nlt-app .nlt-t-carat{ order:3; } .nlt-app .nlt-t-dim{ order:4; } .nlt-app .nlt-t-emiss{ order:5; }
  .nlt-app .nlt-t-listino{ order:6; } .nlt-app .nlt-t-opt{ order:7; }
  .nlt-app .nlt-incl{ order:8; } .nlt-app .nlt-testi{ order:9; }
  .nlt-app .nlt-spec-grid{ grid-template-columns:repeat(2,1fr); }
  .nlt-app .nlt-optlist ul, .nlt-app .nlt-lf-grid{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .nlt-app .nlt-catalog{ grid-template-columns:1fr; } .nlt-app .nlt-filters{ position:static; }
  .nlt-app .nlt-grid{ grid-template-columns:repeat(2,1fr); }
  /* #201 — vetrina a 2 per riga (grow resta 0): riga incompleta = 1 card centrata. */
  .nlt-vetrina .nlt-offer-card{ flex-basis:calc((100% - 18px)/2); }
}
@media (max-width:560px){
  .nlt-app .nlt-grid{ grid-template-columns:1fr; }
  /* #201 — vetrina a 1 per riga: una colonna, già centrata. */
  .nlt-vetrina .nlt-offer-card{ flex-basis:100%; }
  .nlt-app .nlt-spec-grid, .nlt-app .nlt-dimtable{ grid-template-columns:1fr; }
  .nlt-app .nlt-hero-title{ font-size:28px !important; }
  /* #38.3 — frecce galleria ai bordi estremi (fuori dall'auto), solo mobile; desktop resta 12px */
  .nlt-app .nlt-gal-prev{ left:2px; } .nlt-app .nlt-gal-next{ right:2px; }
  /* #38.5 — box "Auto selezionata" centrato solo da mobile; desktop invariato */
  .nlt-app .nlt-form-summary{ justify-content:center; text-align:center; }
  /* #198 — respiro su mobile: `padding:28px` era fisso a ogni larghezza e a 390px si mangiava 56px
     dei 263 disponibili. Qui scende a 16 e la `gap` da 22 a 18. Breakpoint **già esistente** (560),
     non uno nuovo: aggiungerne significherebbe due sistemi di soglie che prima o poi divergono. */
  .nlt-app .nlt-lead-form{ padding:16px; gap:18px; }
  .nlt-app .nlt-lf-grid{ gap:14px; }
  /* col riquadro spento il modulo usa tutta la larghezza della card della pagina */
  .nlt-app .nlt-form-card--nuda .nlt-lead-form{ padding-left:0; padding-right:0; }
  /* il testo del bottone è lungo: da mobile ci sta comodo con un filo di padding in meno ai lati */
  .nlt-app .nlt-cta{ padding:15px 12px; letter-spacing:.3px; }
  .nlt-app .nlt-fs-rk, .nlt-app .nlt-fs-rate{ text-align:center; }
}
