/* ============================================================
   alpi.css — foglio di marca di Alpi Adelmo dal 1960, sopra il tema
   Antra (theme/antra/index-6.html, «layout 6»).

   RISCRITTO DA ZERO il 2026-08-20. La stesura precedente (2.791 righe)
   reinterpretava il tema: rifaceva la tipografia con i caratteri di
   gruppo, sostituiva la pillola dell'occhiello con un filetto, ridisegnava
   la testata, il pannello mobile, le card, i numeri, il footer. Il
   committente ha confrontato il demo index-6 con la nostra home e ha
   bocciato: «state adattando un vostro tema con effetti antra, io ho
   chiesto antra». Quel foglio non conteneva errori: conteneva un altro
   progetto.

   Questo file e' modellato su sites/edilgetica/assets/css/edilgetica.css,
   che e' la ricetta approvata dal committente sulla demo di rete (host
   ritirato il 2026-09-22: il portale sta su www.edilgeticasrl.it), e
   fa le stesse cinque cose e basta:
     1. rimette in piedi lo strato di variabili del tema;
     2. sposta l'accento (l'oro di Antra -> l'azzurro di Alpi Adelmo) da UN
        punto solo, la variabile del tema;
     3. corregge la lingua (il Title Case inglese in italiano e' un errore);
     4. garantisce leggibilita' e contrasti dove il tema conta su una
        fotografia che noi non abbiamo o su un colore che non passa AA;
     5. veste i pochi componenti NOSTRI (.eg-*) che il tema non conosce.
   Quello che NON fa: ridisegnare sezioni, cambiare spaziature
   (pt-130/pb-130 sono criterio di collaudo), sostituire icone, inventare
   pattern. Se una regola qui dentro non rientra in quei cinque punti, e'
   fuori posto.

   ORDINE DI CARICAMENTO (lo scrive tools/alpi-shell.mjs):
     bootstrap · fontawesome · venobox · nice-select · carouselTicker ·
     animation · swiper · main.css   (il TEMA, intatto)
     -> variables.css   (solo :root, i token di marca)
     -> alpi-guscio.css (le sei riparazioni strutturali del guscio)
     -> alpi.css        (questo file)
   components/shared/base.css NON e' piu' nella catena: riscriveva sopra
   il tema tipografia, scala dei titoli e larghezza dei contenitori. Le
   due sole classi che servivano davvero (.skip-link, .visually-hidden)
   stanno qui sotto, §6.
   ============================================================ */


/* ============================================================
   1. LO STRATO DI VARIABILI DEL TEMA
   ------------------------------------------------------------
   MISURATO il 2026-08-20 sul demo servito nel browser
   (getComputedStyle(document.documentElement)):
     --tl-ff-heading            -> "'Cal Sans', serif"
     --tl-color-theme-primary   -> "#CAA05C"
   quindi su index-6 le variabili del tema ARRIVANO, al contrario di
   quanto misurato sul portale (vedi edilgetica.css §1). Questo blocco
   percio' non e' un ripristino d'emergenza: e' il punto unico in cui
   dichiariamo l'accento e in cui mettiamo al sicuro i due valori che il
   tema sbaglia. I valori sono quelli del tema, ricopiati fedelmente da
   theme/antra/assets/scss/utilities/_colors.scss e _typography.scss: qui
   non si cambia il progetto.
   ============================================================ */
:root{
  /* --- L'ACCENTO. E' l'unica cosa che il tema non decide piu'.
     #139DD9 e' l'azzurro del logo di Alpi Adelmo (cambio committente 2026-08-20, era ocra) (tokens/brand/alpiadelmo.json
     -> --color-primary, ripreso da variables.css). Il tema lo usa per il
     pallino della pillola, la parola in accento dei titoli, il fondo del
     bottone di testata, gli hover: cambiandolo QUI cambia tutto insieme,
     che e' il motivo per cui il tema centralizza il colore.
     ATTENZIONE, ED E' LA CAUSA DI META' DEI RILIEVI DI CONTRASTO (WP9,
     qa-report §5.2): IL FONDO DI PAGINA DEL TEMA E' #F6F6F6, NON BIANCO.
     `main.css` scrive `body{background-color:#f6f6f6}`. Ogni rapporto
     calcolato su #FFFFFF qui scende del 7% circa, e le prime tre varianti
     dell'accento erano state tarate su bianco: #0F7EAF passava per «4,54:1
     AA» e in pagina misurava 4,20. Le varianti qui sotto sono ricalcolate
     SU #F6F6F6, che e' la superficie vera.
     Contrasti MISURATI con scripts/contrast.mjs (su #F6F6F6 / su #FFFFFF):
       #139DD9   2,84 / 3,06  -> SOLO componenti grafici e fasce scure
       #0F7EAF   4,20 / 4,54  -> FONDO di componente, col bianco sopra
       #0E76A4   4,69 / 5,06  -> TESTO sotto i 18px su fondo chiaro (AA)
       #1292CA   3,24 / 3,51  -> TESTO da 24px in su su fondo chiaro (AA)
       #139DD9 su #191919 5,74 · su #232525 5,03 · su #100D0B 6,32
       #1292CA su #191919 5,02 · su #232525 4,40 · su #100D0B 5,53
     E C'E' UNA QUARTA SUPERFICIE CHIARA, che il QA non aveva campionata:
     `main.css` dipinge `.process-section{background-color:#eee}` — un
     grigio piu' scuro del fondo di pagina. MISURATO a pixel sulla home
     («sempre a che punto sei», 60px): li' il #1298D2 che il QA aveva
     calcolato su #F6F6F6 scende a **2,81:1** e non passa. #1292CA fa
     **3,02:1 su #EEEEEE**, cioe' regge sulla PIU' SCURA delle tre
     superfici chiare del sito, non solo su quella di pagina. Sei punti di
     luminosita' sotto il valore del QA: la differenza non e' percepibile,
     la soglia si', ed e' l'unico valore che chiude B5 su tutte le sezioni
     invece che su nove su dieci.
       (l'oro del tema, #CAA05C, su bianco sta a 2,42:1: il difetto di
       contrasto e' del tema, e con l'azzurro migliora invece di peggiorare) */
  --tl-color-theme-primary: #139DD9;
  /* B1 di WP9: il FONDO del bottone di testata. Con il bianco sopra fa
     4,54:1 (era 3,06 con l'accento pieno). NON e' un colore di testo: su
     #F6F6F6 sta a 4,20 e per il testo piccolo non basta. */
  --alpi-accento-fondo: #0F7EAF;
  /* B2 di WP9: l'accento come TESTO PICCOLO (<18px) su fondo chiaro.
     Era #0F7EAF, che sul #F6F6F6 del tema misurava 4,20:1. Cambiato QUI e
     non nelle dieci regole che lo usano: sono tutte e dieci testo su
     superficie chiara (etichette, recapiti, link in mezzo al testo,
     indice), verificate una per una prima di spostare il token.
     PERCHE' #0E76A4 E NON IL #0F79A7 CHE IL QA AVEVA CALCOLATO: il QA ha
     calcolato su #F6F6F6, dove #0F79A7 fa esattamente 4,51. Campionando a
     pixel i 31 testi che usano questo token si trovano DUE superfici piu'
     scure di #F6F6F6, e sono entrambe FILIGRANE del tema, non fondi
     dichiarati:
       le tre percentuali delle maestranze stanno sopra `.skill-text` — la
       filigrana «alpi» a 390px, `color:#9F9FA4` con `opacity:.13` su
       bianco, cioe' un #F2F2F2 effettivo: li' #0F79A7 misurava **4,35**;
       l'occhiello del blocco «Il gruppo» sta sopra la sua forma di fondo:
       **4,40**.
     #0E76A4 porta il PEGGIORE dei 31 a **4,52** e non cambia nient'altro
     (su #F6F6F6 4,69, su bianco 5,06). Tre punti di luminosita' sotto il
     valore del QA, e chiudono i due casi che il calcolo su una superficie
     sola non poteva vedere. */
  --alpi-accento-scuro: #0E76A4;
  /* B5 di WP9: l'accento come TESTO GRANDE (>=24px) su fondo chiaro —
     la parola in accento dei titoli e il bottone dell'accordion aperto.
     3,02:1 sul #EEEEEE della process-section (la superficie chiara PIU'
     scura del sito), 3,24 su #F6F6F6, 3,51 su bianco, contro i 2,64-2,84
     dell'accento pieno. Sulle fasce scure resta sopra 4,4:1 — che per il
     testo grande basta — quindi la stessa variante vale su TUTTE le
     superfici e non serve una seconda regola per il fondo scuro:
     MISURATO a pixel sull'hero (5,21:1 nel 2% peggiore) e sulle tre fasce
     fotografiche (4,01-4,47 nel 2% peggiore). */
  --alpi-accento-grande: #1292CA;
  --alpi-accento-su-scuro: #139DD9;     /* testo e segni su fondo scuro */
  --alpi-blu-gruppo: #0F70B7;      /* SOLO firma endorsed e rimandi al portale */
  --alpi-blu-gruppo-chiaro: #7FB6E0;

  /* --- caratteri: sono i due del tema. L'unica correzione e' il
     fallback: il tema scrive `'Cal Sans', serif`, quindi se il woff2 non
     arriva i titoli diventano un Times. Un carattere che non carica non
     deve cambiare il progetto in un altro progetto. */
  --tl-ff-heading: 'Cal Sans', system-ui, sans-serif;
  --tl-ff-body: 'Golos Text', system-ui, sans-serif;
  --tl-ff-p: 'Golos Text', system-ui, sans-serif;

  /* --- colori del tema, ridichiarati per intero: se un giorno il blocco
     :root di main.css non arrivasse (e' successo sul portale), qui c'e'
     la rete. Valori del tema, non nostri. */
  --tl-color-common-white: #ffffff;
  --tl-color-common-black: #000000;
  --tl-color-heading-primary: #191919;
  --tl-color-text-body: #4D4D52;
  --tl-color-bg-1: #1C1C1D;
  --tl-color-grey-1: #59585D;
  --tl-color-grey-2: #9F9FA4;
  --tl-color-border-1: #E3E3E8;
  /* Questi tre il tema li USA ma non li DICHIARA: sono variabili orfane,
     rotte anche nel tema originale. I valori sono dedotti dagli
     esadecimali che il tema usa altrove per gli stessi ruoli. */
  --tl-color-bg-2: #252627;
  --tl-color-border-6: #2E2F31;
  --tl-color-text-black: #191919;

  --tl-fw-normal: normal;  --tl-fw-thin: 100;    --tl-fw-elight: 200;
  --tl-fw-light: 300;      --tl-fw-regular: 400; --tl-fw-medium: 500;
  --tl-fw-sbold: 600;      --tl-fw-bold: 700;    --tl-fw-ebold: 800;
  --tl-fw-black: 900;

  --tl-fs-body: 16px;  --tl-fs-p: 16px;  --tl-fs-p-bold: 20px;
  --tl-fs-h1: 80px;    --tl-fs-h2: 60px; --tl-fs-h3: 50px;
  --tl-fs-h4: 40px;    --tl-fs-h5: 30px; --tl-fs-h6: 20px;

  /* le FAQ del tema scrivono `var(--lt-color-…)` con «lt» invece di «tl»:
     13 dichiarazioni invalide, che cadono sull'ereditato. Due alias e
     tornano a funzionare (stessa cura del portale, edilgetica.css §21). */
  --lt-color-heading-primary: #191919;
  --lt-color-text-body: #4D4D52;
}
/* cintura: se una regola del tema perde la variabile, il testo resta nel
   carattere giusto invece di cadere su Times */
body{ font-family: 'Golos Text', system-ui, sans-serif; }
h1, h2, h3, h4, h5, h6,
.section-title, .sub-heading, .tl-primary-btn{
  font-family: 'Cal Sans', system-ui, sans-serif;
}


/* ============================================================
   2. LINGUA — via il Title Case, «edilgetica» minuscolo
   ------------------------------------------------------------
   Il tema applica `text-transform: capitalize` a titoli, menu e bottoni.
   In inglese e' una convenzione, in italiano e' un errore: «Preventivo
   Certo» e «Impresa Edile A Faenza» non si scrivono cosi'.
   L'occhiello resta MAIUSCOLO: quella e' grafica, non ortografia, ed e'
   la pillola del tema (`.section-heading .sub-heading`: 12px, uppercase,
   bordo, pallino in accento) — non si tocca, e' uno degli elementi che il
   committente confronta col demo.
   ============================================================ */
.section-heading .section-title,
.header .primary-header-inner .header-menu-wrap ul li a,
.tl-primary-btn,
.service-item-5 .title,
.project-content .title,
.process-item-6 .title,
.details-title,
h1, h2, h3, h4, h5, h6{
  text-transform: none;
}
/* L'OCCHIELLO E' UN <p>, E IL TEMA LO VESTIVA COME <h4> — MISURATO.
   Il tema scrive `<h4 class="sub-heading" data-text-animation…>`: un
   titolo finto (produceva h4 -> h2 su ogni sezione) e, senza
   ScrollTrigger, un testo che resta invisibile per sempre. Il markup
   nostro usa <p>, che e' corretto, ma cosi' la pillola cade sotto le
   regole di paragrafo del tema, che hanno specificita' maggiore:
     `.hero-wrap-6 .hero-content-6 p{font-size:18px;font-weight:500;margin-top:30px}`
   MISURATO in pagina: la pillola della hero era 251x44 con testo a 18px,
   dove il demo la fa 215x30 con testo a 12px — piu' 30px di margine
   superiore che spingevano giu' tutto il blocco.
   Qui la scatola torna quella dell'h4 del tema: stessa semantica
   corretta, stessa geometria del demo. (Stessa cura del portale,
   edilgetica.css §2.) */
.section-heading .sub-heading,
.hero-wrap-6 .hero-content-6 .section-heading .sub-heading,
.section-heading.section-heading-2 .sub-heading{
  font-size: 12px;
  font-weight: 400;
  line-height: 1.2;
  margin-top: 0;
  margin-bottom: 20px;
}

/* Il nome del gruppo va sempre in minuscolo, anche dentro un blocco che
   il tema stampa in maiuscolo (e' la regola di marca, e vale quanto la
   fedelta' al tema perche' riguarda il MARCHIO, non il layout). Stessa
   soluzione del portale, che lo fa sulla filigrana: `.about-text span`.
   Qui la porta il markup, con <span class="eg-marchio">. */
.eg-marchio{ text-transform: lowercase; }


/* ============================================================
   3. IL LOGO E LA FIRMA ENDORSED
   ------------------------------------------------------------
   Il logo di Alpi Adelmo e' un PNG 146x120 SENZA canale alpha (misurato:
   PNG color type 2, RGB), cioe' con il suo fondo bianco dentro. Il tema
   mette il logo su una testata trasparente sopra la foto scura della
   hero: un file bianco li' sopra e' una targa bianca, non una wordmark.
   Finche' non arriva una variante su fondo scuro (voce da mettere in
   checklist), si contiene: si limita l'ALTEZZA — non la larghezza, o
   l'attributo height diventa una deformazione — e si da' alla targa un
   contorno e un raggio, cosi' legge come lockup e non come immagine
   sbagliata.
   ALTEZZA 44px: nel demo la wordmark «antra» e' alta 30px di inchiostro
   dentro un file da 150px di larghezza. Il nostro logo ha il marchio piu'
   alto del testo, quindi a 44px l'inchiostro della scritta «ALPI ADELMO»
   sta sui 12px e la sagoma pesa quanto quella del demo.
   ============================================================ */
.eg-lockup{ display: inline-flex; align-items: center; gap: 12px; }
.eg-lockup__nome{ display: inline-flex; padding: 6px 0; }   /* 44px di bersaglio col marchio dentro */

/* B6 DEL MANDATO CORRETTIVO (2026-08-20) — VIA LA TARGA BIANCA.
   Qui c'erano tre dichiarazioni che mettevano sotto il PNG del logo un
   fondo bianco arrotondato (`background:#FFFFFF;border-radius:8px;
   padding:4px 6px`), perche' il file consegnato e' RGB SENZA ALPHA (PNG
   color type 2) e il suo bianco e' opaco. Effetto misurato in testata a
   1280px: un francobollo bianco di 78x52px nell'angolo di una fotografia
   di cantiere. Nel demo, al suo posto, c'e' la wordmark bianca del tema.
   Il PNG resta SOLO nel pannello del menu mobile, che main.css dipinge di
   bianco: li' il suo fondo non si vede. Su tutte le superfici scure —
   testata (trasparente sopra l'hero, #191919 quando si aggancia), footer,
   preloader — il marchio e' la wordmark testuale qui sotto.
   Il PNG torna appena il committente consegna la variante in bianco su
   trasparente: vedi la nota in tools/alpi-shell.mjs, lockup(). */
.eg-lockup--side img{
  height: 44px;
  width: auto;
  max-width: none;             /* il tema mette max-width:170px sulla larghezza */
}

/* LA WORDMARK. Cal Sans bianco (il carattere dei titoli del tema) e
   «impresa edile» sotto, piu' piccolo e con la spaziatura larga: e' il
   lockup del logo vero, scritto. Le due righe stanno in una colonna
   flessibile perche' la firma endorsed accanto resta allineata al centro
   del blocco, non alla prima riga. */
.eg-wordmark{
  display: flex;
  flex-direction: column;
  justify-content: center;
  line-height: 1;
}
.eg-wordmark__nome{
  font-family: var(--tl-ff-heading);
  font-size: 26px;
  line-height: 1;
  color: #FFFFFF;
  letter-spacing: .2px;
  /* MISURATO nel footer a 1280px: dentro la colonna col-lg-3 (~200px utili)
     con la firma endorsed di fianco, «Alpi Adelmo» andava a capo e si leggeva
     «Alpi / Adelmo». Il nome dell'impresa non si spezza mai. */
  white-space: nowrap;
}
/* Nel FOOTER la firma sta sotto il nome, come nell'header stretto: la colonna
   e' larga un quarto di contenitore e affiancarle le mandava a capo tutte e
   due. Non e' nascosta, e' impilata (network-map §2.2 chiede che ci sia). */
.footer-section .eg-lockup{
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
}
/* nel footer lo spazio non e' contato: la firma tiene i suoi 44px di
   bersaglio (MISURATA a 25px prima di questa riga). */
.footer-section .eg-lockup__firma{ min-height: 44px; padding: 12px 0; }
/* 12px E NON 10: e' il minimo che la piattaforma si e' data (regola 6, e
   tools/shoot.mjs lo misura). A 10px la sottoriga stava piu' comoda sotto il
   nome, ma «impresa edile» e' informazione, non ornamento: chi legge poco
   deve poterla leggere. La larghezza torna con la spaziatura, non col corpo:
   13 caratteri a 12px + 2px di letter-spacing fanno ~132px contro i ~140 di
   «Alpi Adelmo» a 26px. MISURATO: prima erano 2 elementi sotto i 12px in
   pagina (testata e footer), ora zero. */
.eg-wordmark__ruolo{
  font-family: var(--tl-ff-body);
  font-size: 12px;
  line-height: 1.1;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .72);
  margin-top: 3px;
}
@media only screen and (max-width: 767px){
  .eg-wordmark__nome{ font-size: 21px; }
  .eg-wordmark__ruolo{ font-size: 12px; letter-spacing: .6px; }
}
/* nel preloader il tema scriveva «ANTRA» a 40px: la wordmark tiene la
   stessa presenza, centrata come vuole `.site-name{text-align:center}` */
.eg-site-name .eg-wordmark{ align-items: center; }
.eg-site-name .eg-wordmark__nome{ font-size: 46px; }
.eg-site-name .eg-wordmark__ruolo{ font-size: 13px; letter-spacing: 5px; margin-top: 8px; }
@media only screen and (max-width: 767px){
  .eg-site-name .eg-wordmark__nome{ font-size: 34px; }
  .eg-site-name .eg-wordmark__ruolo{ font-size: 11px; letter-spacing: 3px; }
}
/* la firma endorsed: e' un link al portale (network-map §2.2) e resta il
   solo punto della pagina in cui compare il blu di gruppo */
.eg-lockup__firma{
  display: inline-flex;
  align-items: center;
  min-height: 44px;            /* controllo autonomo: MISURATO 28px prima */
  font-family: var(--tl-ff-heading);
  font-size: 14px;
  line-height: 1.2;
  color: var(--alpi-blu-gruppo-chiaro);
  white-space: nowrap;
}
.eg-lockup__firma:hover{ color: #FFFFFF; }
/* La firma resta SULLA STESSA RIGA del logo anche su telefono, com'e' nel
   demo (logo a sinistra, tondo a destra, una riga sola). MISURATO a 390px
   con il logo contenuto in altezza: 48 (logo) + 10 + 107 (firma) + 56
   (tondo) = 221px su 366 utili. Andava a capo quando il logo era largo
   132px, cioe' prima che §3 gli desse un'altezza. */
@media only screen and (max-width: 991px){
  .eg-lockup{ gap: 10px; }
  .eg-lockup__firma{ font-size: 13px; }
}
/* B6: il preloader e' #111 e non ospita piu' il PNG con la sua targa
   bianca. La wordmark e' vestita sopra (.eg-site-name). */


/* ============================================================
   4. LA HERO — solo l'accento della filigrana
   ------------------------------------------------------------
   Tutto il resto della hero (foto full-bleed con velo .64, pillola,
   titolo a 100px bianco con la seconda riga in accento, paragrafo,
   bottone tondo «Preventivo certo») e' del tema e funziona: non c'e'
   niente da correggere, e infatti qui non c'e' niente.
   L'unica riga necessaria: la filigrana `.hero-text` ha l'oro del tema
   SCRITTO A MANO nel gradiente (`linear-gradient(180deg,#CAA05C…)`,
   main.css) invece che nella variabile. E' l'unico punto del tema in cui
   l'accento non passa da --tl-color-theme-primary: senza questa regola
   resterebbe una filigrana dorata sopra un sito azzurro.
   ============================================================ */
.hero-section-6 .hero-text span{
  background: linear-gradient(180deg, #139DD9 14.9%, rgba(153, 153, 153, 0) 65.95%);
  -webkit-background-clip: text;
  background-clip: text;
}
/* La filigrana del demo e' UNA PAROLA su UNA riga («Interior»). La nostra
   sono due («Dal 1960») e a 390px il blocco, che e' in posizione assoluta
   e quindi largo quanto il contenuto disponibile, andava a capo: due
   righe di lettere alte 150px, cioe' mezza schermata di filigrana.
   `nowrap` la riporta a una riga sola come nel demo; il corpo scende
   perche' su 390px una riga da 320px sarebbe larga 1.200px, e il ritaglio
   (.hero-section-6.overflow-hidden) coprirebbe tutto tranne una lettera.
   Non si sposta e non si toglie l'overflow-hidden: senza quel ritaglio si
   aprirebbe uno scorrimento laterale su ogni schermo sotto i 1.600px. */
.hero-section-6 .hero-text span{ white-space: nowrap; }
@media only screen and (max-width: 991px){
  .hero-section-6 .hero-text span{ font-size: 190px; }
}
@media only screen and (max-width: 767px){
  .hero-section-6 .hero-text span{ font-size: 120px; }
}


/* ============================================================
   5. LA TESTATA A 1280 — misurata, non stimata
   ------------------------------------------------------------
   IL DIFETTO: a 1280px le sette voci italiane andavano a capo e la
   testata si sdoppiava su due righe, con la firma di gruppo a mezz'aria.
   Il demo non lo fa perche' ha sei voci inglesi corte («Home», «Blog»,
   «Contact»): le nostre sono «Riqualificazione energetica» e
   «Ristrutturazioni».
   LE MISURE, a 1280 (contenitore utile 1256px: main.css porta .container
   a max-width 1795px, quindi qui e' il viewport meno 24px di gronda):
     logo del tema         150px      logo nostro contenuto  ~54px
     column-gap left-wrap   56px
     sette voci a 16px    ~765px  +  14 margini da 15px = 975px
     bottone CTA          ~170px
   150 + 56 + 975 + 170 = 1351 > 1256  ->  va a capo.
   LA CORREZIONE usa le manopole che il tema ha gia' e nella banda in cui
   il tema stesso stringe (sotto i 1399 nasconde il recapito, sotto i 1199
   porta i margini a 10px): fra 993 e 1399 le voci prendono il margine dei
   1199 e mezzo punto in meno di corpo, e la colonna di sinistra respira
   24px invece di 56.
     54 + 24 + (717 + 112) + 170 = 1077 su 1256  ->  una riga sola, con
   179px di margine di sicurezza per un menu che un domani si allunghi.
   Sopra i 1400 non cambia niente rispetto al demo.
   ============================================================ */
@media only screen and (min-width: 993px) and (max-width: 1439px){
  .header .primary-header-inner .header-left-wrap{ column-gap: 24px; }
  .header .primary-header-inner .header-menu-wrap ul li{ margin: 0 8px; }
  .header .primary-header-inner .header-menu-wrap ul li a{ font-size: 15px; }
}
/* ------------------------------------------------------------
   LE DUE BANDE CHE MANCAVANO — 2026-08-20, MISURATE una per una.
   Le tre righe qui sopra bastavano a 1280 (ed era la misura che le ha
   scritte), ma la testata andava a capo in DUE altre bande, che nessuno
   aveva guardato. `.primary-header-inner` e' un flex che va a capo: quando
   la somma non ci sta, il blocco di destra (recapito + CTA) finisce SOTTO
   il menu, a sinistra, e la testata diventa alta 152px invece di 96.
   MISURATO (larghezza utile = viewport meno 24px di gronda; il
   `.container` di questa sezione e' fluido):
     993px   utili 969  servivano 1085  -> a capo (misurato: h 152)
     1024px  utili 1000 servivano 1085  -> a capo
     1100px  utili 1076 servivano 1085  -> a capo
     1120px  utili 1096 servivano 1085  -> una riga
     1400px  utili 1376 servivano 1395  -> a capo: a 1400 il TEMA rimette
             il recapito telefonico (`.header-contact`, 138px) e nello
             stesso punto finiva la nostra banda, quindi il menu tornava
             a corpo 16 e margini 15 (+155px) nel momento in cui arrivava
             piu' roba. Due salti nello stesso pixel.
     1440px  utili 1416 servivano 1239  -> una riga
   Da qui le due correzioni: la banda base arriva a 1439 (non 1399), cosi'
   il recapito entra mentre il menu e' ancora compatto; e sotto i 1120 si
   stringe di piu', con le stesse manopole del tema — margini fra le voci,
   corpo del menu, gronda della colonna di sinistra, e il bottone che passa
   al padding simmetrico. La firma di gruppo NON si nasconde: e' un
   obbligo di rete (regia §0), e in questa banda scende solo di un punto,
   come fa il tema col suo menu.
   ------------------------------------------------------------ */
@media only screen and (min-width: 993px) and (max-width: 1119px){
  .header .primary-header-inner .header-left-wrap{ column-gap: 14px; }
  .header .primary-header-inner .header-menu-wrap ul li{ margin: 0 4px; }
  .header .primary-header-inner .header-menu-wrap ul li a{ font-size: 14px; }
  .header .primary-header-inner .eg-lockup{ gap: 8px; }
  .header .primary-header-inner .eg-lockup__firma{ font-size: 13px; }
  .header .primary-header-inner .header-btn-wrap .tl-primary-btn{
    font-size: 15px;
    padding: 10px 18px;
  }
}
/* Il recapito in testata resta com'e' nel tema, compreso il fatto che
   sotto i 1400px sparisce (`.header-contact{display:none}`): e' una sua
   scelta di densita' e sul telefono il numero e' nel pannello, nel blocco
   «Raccontaci il tuo cantiere» e nel footer. Non si forza. */

/* ------------------------------------------------------------
   B1 DI WP9 (qa-report §5.6) — IL FONDO DELLA CTA DI TESTATA.
   MISURATO in pagina: `.header-btn` ha `color:#fff` a 16px sopra
   `background-color:var(--tl-color-theme-primary)`, cioe' bianco su
   #139DD9 = **3,06:1**, contro i 4,5 che AA chiede al testo normale. E'
   la CTA principale del sito, su tutte e sette le pagine.
   La regola del tema e'
     `.header .primary-header-inner .header-right-wrap .header-btn{
        background-color:var(--tl-color-theme-primary)}`   (0,4,0)
   quindi qui serve la stessa specificita' o piu': una regola a due classi
   NON aggancia (e' l'errore gia' fatto e misurato sulle FAQ, §10.12).
   NON si cambia --tl-color-theme-primary: quello e' l'accento di tutto il
   sito (pallini, bordi, icone, hover) e sulle fasce scure sta a 5,03-6,32:1.
   Si cambia il FONDO DI QUESTO COMPONENTE, che e' l'unico posto dove
   l'accento porta del bianco a 16px.
   Bianco su #0F7EAF = **4,54:1**. Il bordo e l'hover del tema restano suoi:
   `:hover` riempie con `:before` bianco e il testo diventa #191919 (16,4:1).
   ------------------------------------------------------------ */
.header .primary-header-inner .header-right-wrap .header-btn{
  background-color: var(--alpi-accento-fondo);
}
/* Niente regola per `.header-btn .icon`: il markup del guscio scrive
   `<a class="tl-primary-btn header-btn">Preventivo certo</a>` senza tondo
   (verificato sulle 7 pagine), quindi sarebbe una regola morta. */


/* ============================================================
   6. ACCESSIBILITA' — quello che base.css portava, piu' il fuoco
   ------------------------------------------------------------
   .skip-link e .visually-hidden erano le uniche due classi di
   components/shared/base.css che il markup del guscio usa davvero
   (misurato: 7 e 2 occorrenze sulle 7 pagine; dei suoi componenti —
   .card .btn .kicker .tag .grid .stat e il suo elenco col motivo a punta
   — zero: il nome di quella classe non si scrive nemmeno qui, perche' il
   controllo di WP8 sul motivo abolito e' un grep secco su tutto il ramo e
   deve tornare zero senza falsi allarmi). Il foglio e'
   uscito dalla catena perche' riscriveva la tipografia del tema: le due
   classi restano, con le stesse dichiarazioni.
   `left:-9999px` non e' un difetto: e' la tecnica standard per un
   elemento fuori schermo che deve restare leggibile dagli assistivi e
   tornare visibile al fuoco.
   ============================================================ */
.skip-link{
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 1100;
  background: var(--tl-color-heading-primary);
  color: #FFFFFF;
  font-family: var(--tl-ff-heading);
  padding: 12px 20px;
  border-radius: 0 0 10px 0;
}
.skip-link:focus{ left: 0; }
.visually-hidden{
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px; padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
/* Il tema si affida all'outline di sistema e in piu' punti lo azzera.
   Requisito AA: ogni elemento attivabile deve mostrarsi quando ha il
   fuoco, anche sopra le fotografie. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible{
  outline: 2px solid var(--alpi-accento-scuro);
  outline-offset: 2px;
}
.hero-section-6 a:focus-visible,
.service-section-5 a:focus-visible,
.counter-section a:focus-visible,
.request-section a:focus-visible,
.request-section button:focus-visible,
.footer-section a:focus-visible,
.mobile-side-menu a:focus-visible,
.mobile-side-menu button:focus-visible,
.header a:focus-visible,
.header button:focus-visible,
/* AGGIUNTE CON WP9. Erano le due fasce scure che mancavano all'elenco, e
   si sono viste ricalcolando --alpi-accento-scuro (B2): l'anello di fuoco
   su fondo scuro deve stare sopra 3:1 e quel token, che serve al TESTO su
   fondo chiaro, sulle fasce scure scende a 3,47. Le due fasce hanno link
   veri: la testata di pagina porta le briciole (`.eg-briciole a`, 6
   pagine) e la fascia di chiusura porta i due bottoni della CTA. Sopra una
   fotografia l'anello si fa bianco, come nelle altre otto. */
.page-header a:focus-visible,
.eg-cta a:focus-visible,
.eg-cta button:focus-visible{
  outline-color: #FFFFFF;
}

/* ------------------------------------------------------------
   B3 DI WP9 (qa-report §5.6) — I SETTE BOTTONI DELL'ACCORDION
   NON MOSTRAVANO IL FUOCO, E LA REGOLA QUI SOPRA C'ERA GIA'.
   E' una COLLISIONE DI SPECIFICITA', misurata con Tab veri e
   getComputedStyle su document.activeElement (4 bottoni in index.html,
   4 in ristrutturazioni.html, tutti e otto `outline-width: 0px`):
     bootstrap.min.css  `.accordion-button:focus{outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}`
                        -> (0,2,0), e azzera l'OUTLINE
     main.css           `.faq-content-2 .faq-accordion .accordion-item .accordion-button{box-shadow:none}`
                        -> (0,4,0), e spegne anche l'ANELLO che bootstrap
                           metteva al posto dell'outline
     alpi.css:505       `button:focus-visible{outline:2px solid …}`
                        -> (0,1,1): PERDE contro (0,2,0).
   Le due regole del tema si annullano a vicenda e non resta niente:
   nessun outline (bootstrap) e nessuna ombra (main.css). La prova che la
   nostra regola agganciava comunque e' che `outline-offset` misurava 2px
   mentre `outline-width` misurava 0: passava la proprieta' che bootstrap
   non nomina, non quella che azzera.
   Servono i QUATTRO selettori di accordion del tema, che sono (0,4,0)+
   -> con `:focus-visible` battono bootstrap senza `!important`.
   `.faq-content` e `.service-faq` oggi non sono in pagina (usate solo
   `.about-content-6 .about-faq` in home e `.faq-content-2` in
   ristrutturazioni): restano perche' sono i quattro modi in cui questo
   tema scrive un accordion, e la prossima pagina che ne monta uno non
   deve ritrovare il difetto. Stesso elenco di §10.12.
   L'accento SCURO e non il bianco: gli accordion stanno su fondo chiaro.
   ------------------------------------------------------------ */
.faq-content .faq-accordion .accordion-item .accordion-button:focus-visible,
.faq-content-2 .faq-accordion .accordion-item .accordion-button:focus-visible,
.about-content-6 .about-faq .faq-accordion .accordion-item .accordion-button:focus-visible,
.service-details-content .service-faq .faq-accordion .accordion-item .accordion-button:focus-visible{
  outline: 2px solid var(--alpi-accento-scuro);
  outline-offset: 3px;
}


/* ============================================================
   7. I COMPONENTI NOSTRI (.eg-*)
   ------------------------------------------------------------
   Sono i pochi blocchi che il tema non ha: il guscio e le sette pagine li
   introducono e nessuno li veste. La regola che mi sono dato: ogni
   componente prende tipografia, colori e raggi dal TEMA (variabili
   --tl-*), cosi' sta nella stessa pagina invece di sembrarci appoggiato
   sopra.
   ============================================================ */

/* --- 7.1 Elenco con la freccia tonda del tema ------------------------
   B10 DEL MANDATO CORRETTIVO (2026-08-20). Fino a ieri qui c'era un
   FILETTO ORIZZONTALE disegnato con `.eg-lista li::before` — 14x2px in
   accento — nato per non usare il motivo a punta del tema
   (`fa-circle-chevron-right`, abolito dalla regia R7). Ha esagerato: il
   divieto e' sul MOTIVO, non sulle icone, e CLAUDE.md §2.3 dice
   l'opposto, che le icone del tema restano. Un trattino di due pixel
   accanto a una voce di elenco non dice niente; il tondo del tema dice
   «questa voce e' una cosa in piu'».
   Ora lista() scrive `<i class="fa-solid fa-circle-arrow-right">` e qui c'e'
   la sua misura. Il tema veste gia' `li i` dentro questi elenchi
   (`.content-info .content-list li i{color:var(--tl-color-theme-primary)}`):
   il colore lo mette lui, noi mettiamo il corpo e la posizione — perche' il
   tema incollava la <i> alla prima parola e le righe di continuazione
   rientravano sotto il bollino invece che sotto il testo.
   L'accento pieno su bianco e' 3,88:1: sopra il 3:1 richiesto ai
   COMPONENTI GRAFICI, e questo lo e' (un marcatore d'elenco, aria-hidden,
   non testo). */
.eg-lista{ list-style: none; margin: 0; padding: 0; }
.eg-lista li{ position: relative; padding-left: 34px; }
.eg-lista li > i{
  position: absolute;
  left: 0;
  top: .62em;                  /* allineato alla prima riga, non al blocco */
  font-size: 18px;
  line-height: 1;
  color: var(--tl-color-theme-primary);
}
/* IL FLEX DEL TEMA VA TOLTO, e serve la specificita' giusta o non succede
   niente. Il tema dichiara `display:flex;align-items:center;column-gap:10px`
   su questi <li> in DUE posti, con due selettori diversi:
     .content-info .content-list li                          (0,2,1)
     .service-details-content .service-details-list-wrap ul li  (0,2,2)
   Con il flex attivo, un <li> che contiene `<strong>Cappotto termico</strong>:
   coibentazione...` diventa DUE colonne: l'etichetta stretta a sinistra e la
   descrizione a destra. MISURATO su riqualificazione-energetica.html a 390px:
   «Cappotto termico» si incolonnava su due righe in 100px mentre accanto il
   testo ne aveva 240. Sei voci cosi' di fila non si leggono.
   In un elenco il testo e' UNA colonna e l'etichetta apre la frase: display
   block, e il segno resta dove lo mette il ::before assoluto qui sopra.
   `line-height` torna a 1.5: il tema lo mette a 1 perche' da lui queste voci
   sono di tre parole e non vanno mai a capo. */
.eg-lista li,
.content-info .content-list.eg-lista li,
.service-details-content .service-details-list-wrap ul.eg-lista li{
  display: block;
  line-height: 1.5;
}

/* --- 7.2 Passi numerati (service-details-items del tema) ------------- */
.eg-passo__numero{
  font-family: var(--tl-ff-heading);
  font-size: 20px;
  line-height: 1;
  color: var(--tl-color-theme-primary);
  margin: 0;
}
/* MISURATO su costruzioni.html a 390px: .service-details-item usciva a
   655px, cioe' 265px oltre il viewport, e non si vedeva perche' main.css
   mette overflow-x:hidden su html e body. La causa e' nel tema:
   `.service-details-items{grid-template-columns:repeat(2,1fr)}` senza
   nessuna media query. Sotto i 768px una colonna sola; il min-width:0
   toglie il blocco alla radice (un elemento di griglia ha min-width:auto
   e non si stringe). */
.service-details-content .service-details-items .service-details-item,
.service-details-content .service-details-items .service-details-item .content{
  min-width: 0;
}
@media only screen and (max-width: 767px){
  .service-details-content .service-details-items{ grid-template-columns: 1fr; }
}

/* LA COLONNA DA 80px CHE NON CONTIENE NIENTE — C1 del mandato correttivo
   (2026-08-20), e la causa esatta dei «250-266px» che i revisori hanno
   misurato. Il tema scrive
     .service-details-content .service-details-items .service-details-item{
       display:grid; grid-template-columns:80px 1fr; grid-gap:20px }
   e gli 80px sono per il TONDO in accento con l'icona PNG del venditore.
   Il nostro passi() al suo posto mette il numero («01»), che ne occupa ~30:
   50px per colonna buttati, piu' i 20 di gap. MISURATO su costruzioni.html a
   390px: `.eg-passo .content` largo 266px su 366 disponibili, cioe' 34
   caratteri per riga.
   La colonna diventa `auto`: la larghezza del numero, non quella dell'icona
   che non c'e'. E il selettore ha la specificita' del tema piu' una classe
   nostra, perche' `.eg-passi .eg-passo` (due classi) perdeva contro le tre
   del tema — era il difetto della prima stesura di questa correzione.
   Il tema mette anche `max-width:334px` sul <p>: sotto i 768 va via, o il
   testo resta incolonnato anche a colonna piena. */
.service-details-content .service-details-items .service-details-item.eg-passo{
  grid-template-columns: auto 1fr;
  grid-gap: 14px;
}
@media only screen and (max-width: 767px){
  /* a colonna singola il numero va SOPRA il titolo, in linea: e' la stessa
     forma che B12 chiede per le cinque prove, ed e' la piu' leggibile a
     360-390px */
  .service-details-content .service-details-items .service-details-item.eg-passo{
    display: block;
  }
  .service-details-content .service-details-items .service-details-item.eg-passo .content p{
    max-width: none;
  }
}

/* --- 7.3 Briciole, occhiello e sommario della testata di pagina ------
   Il tema mette qui `<h4 class="sub-title">Home — About Us</h4>`: un
   titolo finto che nel DOM viene PRIMA dell'h1. Il markup nostro le fa
   diventare un <nav><ol>, che e' quello che sono. La VESTE resta la sua:
   13px, maiuscolo, bianco, la voce corrente in accento, e tutto
   CENTRATO come il resto del blocco (`.page-header-content{text-align:
   center}`). Prima erano allineate a sinistra sotto un titolo centrato:
   una sbavatura rispetto al demo, non una scelta. */
.eg-briciole ol{
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0 8px;
  list-style: none;
  margin: 0 0 18px;
  padding: 0;
}
.eg-briciole li{
  font-family: var(--tl-ff-heading);
  font-size: 13px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: rgba(255, 255, 255, .78);
}
/* la voce corrente in accento, come `.sub-title .inner-page` del tema */
.eg-briciole li:last-child span{ color: var(--alpi-accento-su-scuro); }
/* L'occhiello della testata di pagina e' la stessa pillola del resto del
   sito: il tema qui non ne ha una (la sua testata ha solo briciole e
   titolo), ma le nostre sei pagine interne portano un kicker e senza
   regole restava un paragrafo grigio 16px sopra una fotografia — MISURATO
   su ristrutturazioni.html: quasi illeggibile. La pillola e' il modo in
   cui questo tema scrive gli occhielli: si riusa quella, non se ne
   inventa un'altra. */
.page-header .page-header-content .sub-heading{
  display: inline-block;
  font-family: var(--tl-ff-heading);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--tl-color-common-white);
  border: 1px solid rgba(255, 255, 255, .24);
  border-radius: 100px;
  padding: 7px 19px 7px 28px;
  margin: 0 0 20px;
  position: relative;
}
.page-header .page-header-content .sub-heading::before{
  content: "";
  background-color: var(--tl-color-theme-primary);
  height: 5px; width: 5px;
  border-radius: 50%;
  position: absolute;
  top: 50%; left: 15px;
  transform: translateY(-50%);
}
.eg-briciole li + li::before{
  content: "";
  display: inline-block;
  width: 10px;
  height: 1px;
  margin-right: 8px;
  vertical-align: middle;
  background-color: rgba(255, 255, 255, .5);
}
.eg-briciole a{
  color: #FFFFFF;
  /* 44px di bersaglio DICHIARATI e non calcolati. `display:inline-block`
     + `padding:11px 0` faceva 43,1px — MISURATO a 390 e a 1280 su tutte e
     sei le pagine interne: 13px di corpo per l'interlinea 1.625 del corpo
     fanno 21,1px, non 22. Un bersaglio che dipende dall'interlinea del
     testo torna sotto misura appena qualcuno cambia il corpo, quindi qui
     si dichiara il minimo e si centra il testo dentro. */
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 0;
}
.eg-briciole a:hover{ color: var(--alpi-accento-su-scuro); }
.eg-page-header__sommario{
  color: rgba(255, 255, 255, .86);
  max-width: 60ch;
  margin: 18px auto 0;    /* auto: il blocco del tema e' centrato */
}

/* --- 7.4 Il confronto «come va di solito / come lavoriamo noi» ------- */
.eg-confronto{
  display: grid;
  gap: 20px;
  margin: 24px 0 8px;
}
@media (min-width: 768px){
  .eg-confronto{ grid-template-columns: 1fr 1fr; }
}
.eg-confronto__lato{
  border: 1px solid var(--tl-color-border-1);
  border-radius: 24px;         /* il raggio delle card del tema */
  padding: 24px;
  background-color: var(--tl-color-common-white);
}
.eg-confronto__lato--noi{ border-color: var(--tl-color-theme-primary); }
.eg-confronto__etichetta{
  font-family: var(--tl-ff-heading);
  font-size: 13px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--tl-color-grey-1);
  margin-bottom: 10px;
}
.eg-confronto__lato--noi .eg-confronto__etichetta{ color: var(--alpi-accento-scuro); }
.eg-confronto p:last-child{ margin-bottom: 0; }
/* Correzioni dei contenuti v1 (2026-10-13, A09): il confronto con «come va
   di solito» e' uscito. Resta il solo riquadro «noi», a tutta larghezza. */
@media (min-width: 768px){
  .eg-confronto--solo{ grid-template-columns: 1fr; }
}
/* A03: nella skill-section della home l'elenco delle lavorazioni ha preso il
   posto delle tre barre con le percentuali; gli serve lo stacco dal paragrafo
   che le barre avevano dal tema. */
.skill-left-content .eg-lavorazioni{ margin-top: 30px; }
.skill-left-content .eg-lavorazioni li{
  font-size: 18px;
  padding-top: 18px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--tl-color-border-1);
}
.skill-left-content .eg-lavorazioni li:last-child{ border-bottom: 0; }
.skill-left-content .eg-lavorazioni li > i{ top: calc(18px + .25em); }

/* --- 7.5 Le cinque prove numerate ------------------------------------ */
.eg-prova{
  display: flex;
  gap: 20px;
  padding: 28px 0;
  border-top: 1px solid var(--tl-color-border-1);
}
.eg-prova__numero{
  font-family: var(--tl-ff-heading);
  font-size: 24px;
  line-height: 1.1;
  color: var(--tl-color-theme-primary);
  margin: 0;
  flex: 0 0 auto;
  min-width: 44px;
}
.eg-prova__corpo{ min-width: 0; }
.eg-prova__oltre a{
  display: inline-block;
  padding: 10px 0;             /* 44px di bersaglio */
  font-family: var(--tl-ff-heading);
  color: var(--alpi-accento-scuro);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* --- 7.6 Le schede dei valori e il box recapiti della colonna sticky - */
.eg-scheda,
.eg-box-contatto{
  border: 1px solid var(--tl-color-border-1);
  border-radius: 24px;
  padding: 30px;
  background-color: var(--tl-color-common-white);
}
.eg-box-contatto{ margin-top: 24px; }
.eg-box-contatto__titolo,
.eg-recapito__etichetta,
.eg-footer-title{
  font-family: var(--tl-ff-heading);
  font-size: 13px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--tl-color-grey-1);
  margin-bottom: 12px;
}
/* i recapiti isolati sono controlli autonomi, non link dentro un
   paragrafo: MISURATO 24px di altezza, sotto il minimo di WCAG 2.5.8.
   10 + 24 + 10 = 44. width:fit-content perche' il bersaglio sia largo
   quanto il testo e non quanto la colonna. */
.eg-box-contatto .number,
.eg-box-contatto .mail,
.eg-recapiti .number,
.eg-recapiti .mail{
  display: block;
  width: fit-content;
  padding: 10px 0;
  font-family: var(--tl-ff-heading);
  color: var(--tl-color-heading-primary);
}
.eg-box-contatto .number:hover,
.eg-box-contatto .mail:hover,
.eg-recapiti .number:hover,
.eg-recapiti .mail:hover{ color: var(--alpi-accento-scuro); }
.eg-box-contatto__azione{ margin-top: 18px; }

/* --- 7.7 Il NAP di contatti.html ------------------------------------- */
.eg-recapiti-griglia{
  display: grid;
  gap: 24px;
  margin-bottom: 24px;
}
@media (min-width: 768px){
  .eg-recapiti-griglia{ grid-template-columns: 1fr 1fr; }
}
.eg-recapiti-note{ color: var(--tl-color-text-body); }

/* --- 7.8 L'indice della colonna sticky ------------------------------- */
.eg-indice .list-title{
  font-family: var(--tl-ff-heading);
  font-size: 13px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--tl-color-grey-1);
}

/* --- 7.9 La banda dei partner ---------------------------------------- */
.eg-partner img{ max-height: 64px; width: auto; margin-inline: auto; }
.eg-partner__nota{
  margin-top: 18px;
  text-align: center;
  color: var(--tl-color-text-body);
}

/* --- 7.10 I numeri-prova (counter-section) ---------------------------
   L'unita' di misura: nel tema era un «+» dentro `.icon`, da noi puo'
   essere anche «m». */
.eg-numero__unita{ font-size: .6em; }

/* IL CARATTERE DEI QUATTRO NUMERI — 2026-08-20, difetto MISURATO.
   Nel tema il numero e' <h3 class="title"> e l'etichetta <h4 class="sub-title">;
   da noi sono due <p> (un numero non e' un titolo di sezione: dentro la
   scaletta dei titoli aprirebbe un livello che non esiste). Il guaio e' che
   il carattere dei titoli in main.css lo da' un selettore di ELEMENTO
   — `h1,h2,h3,h4,h5,h6{font-family:var(--tl-ff-heading)}` — che sul <p>
   non aggancia: la geometria (60px/40px, line-height 1, il filetto sotto)
   arriva dalle classi e resta giusta, il CARATTERE no.
   MISURATO a 1280 con getComputedStyle sulla home generata: i quattro
   numeri uscivano `"Golos Text" 60px` contro il `"Cal Sans" 60px` del
   demo index-6, e la fascia dei numeri e' un intero blocco di pagina.
   E' lo stesso difetto della pillola (occhiello <p> invece di <h4>), che
   §7.3 ripara allo stesso modo: si ridichiara SOLO la famiglia, perche'
   peso, corpo, interlinea e margini le classi del tema li danno gia'
   (e sono le stesse del demo: `font-weight:400`, `line-height:1`).
   Niente `color` qui: il colore lo decide `.white-content` del tema, e
   riscriverlo rimetterebbe testo scuro sulla fascia scura. */
.counter-item-6 p.title,
.counter-item-6 p.sub-title{ font-family: var(--tl-ff-heading); }

/* --- 7.11 Il modulo: avviso «spento», note, select ------------------- */
/* A2 DEL MANDATO CORRETTIVO (2026-08-20). Qui c'era la veste del box
   «Questo modulo e' ancora spento»: riquadro bordato, titolo a 18px, tre
   paragrafi, 148px di altezza misurati a 390px SOPRA il primo campo. Il box
   e' uscito dal markup: il modulo si spiega da solo con i campi disabilitati,
   il tasto che diventa un telefono e UNA riga sotto.
   Restano due componenti, e sono due righe di CSS ciascuno. */

/* il tasto che al posto di inviare chiama: e' il bottone del tema, quindi
   non si riveste. Serve solo che a 320px non sfori il contenitore, perche'
   l'etichetta e' piu' lunga di «Invia» (16 caratteri contro 5). */
.eg-modulo-chiama{ max-width: 100%; }

/* la riga sotto il tasto. Non e' un avviso e non deve sembrarlo: e' una
   frase di servizio, corpo piccolo, senza riquadro. */
.eg-modulo-riga{
  margin: 16px 0 0;
  font-size: 15px;
  line-height: 1.5;
  color: rgba(255, 255, 255, .78);
}
.eg-modulo-riga a{
  text-decoration: underline;
  text-underline-offset: 3px;
  /* e' l'unico recapito raggiungibile da questo punto della pagina, quindi
     e' un controllo autonomo e non un link in mezzo a un discorso: 44px.
     MISURATO 20px prima. */
  display: inline-block;
  padding: 12px 0;
}
/* sulla superficie CHIARA (contatti.html) la riga non puo' restare bianca:
   MISURATO alla prima build, era bianco su bianco */
.eg-modulo--chiara .eg-modulo-riga{ color: var(--tl-color-text-body); }
.eg-modulo--chiara .eg-modulo-riga a{ color: var(--alpi-accento-scuro); }
.request-form-wrap.eg-modulo--chiara .form-item .form-control{ color: var(--tl-color-heading-primary); }
.request-form-wrap.eg-modulo--chiara .form-item .form-control::placeholder{ color: var(--tl-color-grey-1); }
.request-form-wrap.eg-modulo--chiara .eg-form-hint{ color: var(--tl-color-grey-1); }
.eg-modulo-campi{ border: 0; padding: 0; margin: 0; }
.eg-form-hint{
  font-size: 15px;
  line-height: 1.5;
  max-width: 58ch;
  margin-top: 10px;
}
/* la select nativa (data-eg-native, vedi la patch a main.js): l'aspetto di
   sistema e' un rettangolo grigio in mezzo a campi con raggio 24px.
   16px di corpo: sotto quella misura iOS ingrandisce da solo.
   Il segno resta #0F7EAF (non e' passato a #0E76A4 con B2 di WP9): un
   `data:` non legge le variabili CSS, e questo e' un COMPONENTE GRAFICO —
   soglia 3:1, misurato 4,20:1 sul #F6F6F6 del tema. Se un giorno serve
   allinearlo, si cambia l'esadecimale anche qui, a mano. */
.eg-select{
  appearance: none;
  -webkit-appearance: none;
  min-height: 58px;
  padding-right: 52px;
  font-size: 16px;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%230F7EAF' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 22px center;
}

/* --- 7.12 Il blocco «Il gruppo» (al posto della newsletter) ----------
   La composizione e' quella della newsletter del tema (fascia centrata,
   disegno di fondo, bottone al posto del campo email): la scrive
   bloccoGruppo() in tools/alpi-shell.mjs, dove sta anche il confronto col
   demo. Qui restano due cose sole: la misura della colonna di testo e lo
   spazio sopra il bottone.
   `margin-inline:auto` NON e' decorazione: `.newsletter-wrap` del tema
   centra il TESTO (`text-align:center`), non il blocco, e un
   `max-width:780px` senza margini automatici resta appeso a sinistra
   dentro un contenitore da 1170. */
.eg-gruppo-wrap{ max-width: 780px; margin-inline: auto; }
.eg-gruppo-btn-wrap{ margin-top: 34px; text-align: center; }
/* Il bottone del tema e' `inline-flex`, quindi e' un elemento di linea e
   il `text-align:center` del contenitore basta a centrarlo. L'anchor e'
   lunga (network-map §2.3, si riporta esatta): a schermo stretto il testo
   va a capo dentro la pillola, e senza questo limite la pillola diventa
   una riga sola larga quanto il contenitore. */
.eg-gruppo-btn-wrap .tl-primary-btn{ max-width: 100%; text-align: left; }

/* --- 7.13 Footer di gruppo ------------------------------------------- */
/* Ogni voce e' nome + mestiere su due righe: senza display:block si legge
   «Il gruppo edilgeticaIl valore, piano dopo piano». */
.eg-footer-gruppo .eg-realta,
.eg-footer-gruppo .eg-endorse{ display: block; }
.eg-endorse{
  font-size: 14px;
  color: rgba(255, 255, 255, .62);
}
/* tap target: le voci di elenco e i recapiti del footer erano alti 20px.
   MISURATO dopo la prima correzione: con 10px per lato le voci restavano
   a 38px (18 di riga + 20), quindi 13px. I recapiti, che hanno una riga
   piu' alta, arrivano a 46 gia' con 10. */
.footer-list li a,
.footer-list li > span{
  display: inline-block;
  padding: 13px 0;
  line-height: 1.3;
}
.footer-address .number,
.footer-address .mail{
  display: inline-block;
  padding: 10px 0;
  line-height: 1.3;
}
/* I tre recapiti della fascia «Raccontaci il tuo cantiere» sono tre
   controlli autonomi, uno per riga: MISURATO 29px. 8px per lato = 45. */
.request-item a{
  display: inline-block;
  padding: 8px 0;
}
/* I recapiti dentro l'avviso «il modulo e' spento» stanno in una frase,
   quindi sarebbero esenti dalla regola dei 44px; ma su telefono sono
   l'UNICO modo di contattare l'impresa da quel punto della pagina.
   La regola sta ora in §7.11 (.eg-modulo-riga a): il box che la ospitava
   e' uscito con A2 del mandato correttivo. */
.footer-list li:not(:last-of-type){ margin-bottom: 0; }
.eg-footer-title{ color: rgba(255, 255, 255, .72); }
.footer-section .eg-lockup__firma{ color: var(--alpi-blu-gruppo-chiaro); }

/* --- 7.14 Il pannello off-canvas ------------------------------------- */
.eg-side-title{
  font-family: var(--tl-ff-heading);
  font-size: 24px;
  line-height: 1.2;
  margin-bottom: 0;
  color: var(--tl-color-heading-primary);
}
/* meanmenu clona le sette voci con una specificita' alta
   (.mean-bar .mean-nav.mean-nav>ul li a) e azzera il padding: MISURATO a
   390px col pannello APERTO, le voci erano alte 22px. Con 14px per lato
   arrivano a 50. Le voci CHIUSE stanno fuori schermo, quindi il report
   automatico non le vede: e' il classico falso negativo. */
.mobile-side-menu .mean-bar .mean-nav.mean-nav > ul li a{ padding: 14px 0; }
.mobile-side-menu .side-menu-list a{
  display: inline-block;
  padding: 14px 0;             /* MISURATO 40px con 12: 19 di riga + 28 = 47 */
  line-height: 1.2;
}
.mobile-side-menu .side-menu-head .mobile-side-menu-close{ height: 44px; width: 44px; }
/* il logo nel pannello: senza vincolo il PNG entra a 120x111 e si prende
   un quarto della schermata (MISURATO a 390px). Stessa targa della
   testata, un filo piu' grande perche' qui il fondo e' chiaro. */
.mobile-side-menu .side-menu-head img{
  height: 48px;
  width: auto;
  max-width: none;
}

/* --- 7.15 Le note di bozza e il registro: RIMOSSE ---------------------
   Qui c'erano dieci dichiarazioni per due componenti — `.eg-draft-note`
   (la nota «bozza — …» sotto le didascalie, sotto le barre, dentro i moduli)
   e `.eg-bozza-registro` (la riga «Anteprima di lavorazione · N segnaposto
   di copy …» in fondo al footer). A1 del mandato correttivo (2026-08-20) le
   ha portate fuori dalla pagina: quel contenuto e' informazione per il QA,
   non per il visitatore, e ora sta nei COMMENTI HTML dei generatori.
   Le regole sono cancellate insieme al markup, e non lasciate «per
   sicurezza»: se qualcuno rimettesse la classe in pagina, il difetto si deve
   vedere subito. Il presidio automatico e' in tools/alpi-shell.mjs,
   controlli(): due righe che contano le note visibili e il lessico di
   lavorazione nel testo, e vanno a zero. */


/* ============================================================
   8. LEGGIBILITA' — dove il tema conta su qualcosa che non abbiamo
   ============================================================ */

/* 8.1 La testata delle pagine interne non spezza le parole.
   MISURATO su chi-siamo.html a 390px: l'H1 usciva «tre generazi / oni di
   impresa», cioe' una parola tagliata a meta'. Il tema scrive
   `.page-header .page-header-content .title{font-size:80px}` e non ha
   NESSUNA media query per quel titolo (grep su main.css: una sola
   dichiarazione). A 390px restano ~330px utili e «generazioni» a 80px ne
   chiede ~350. Il tetto resta l'80px del tema: da 800px in su non cambia
   niente rispetto a oggi. */
.page-header .page-header-content .title{ font-size: clamp(40px, 10vw, 80px); }

/* 8.1-bis A6 DEL MANDATO CORRETTIVO (2026-08-20) — LA CARD INTERA E' IL LINK.
   Qui c'era una regola che allargava a 45px il bersaglio del TITOLO, perche'
   il titolo era l'unico link della card (come nel demo: index-6:544 linka
   solo l'h3). Adesso e' la card a essere un <a>, quindi il bersaglio e'
   tutta la card e questa regola non serve piu'.
   Cio' che serve invece: `.service-item-5` nel tema e' un <div> e main.css lo
   veste come blocco; diventando un <a> eredita da `a{text-decoration:none}`
   (c'e') ma NON il `display`, quindi tornerebbe inline e il layout della card
   si sfascerebbe. Due dichiarazioni, e sono strutturali. */
.service-item-5.eg-servizio{
  display: block;
  color: inherit;              /* il tema colora i titoli e i <p> da se' */
}
/* il fuoco da tastiera deve vedersi sulla CARD, non su una parola: senza
   questo, l'anello del browser segue il riquadro ma resta appiccicato al
   bordo dell'immagine. */
.service-item-5.eg-servizio:focus-visible{
  outline: 3px solid var(--tl-color-theme-primary);
  outline-offset: 4px;
}
/* LA PILLOLA-FRECCIA. E' il bottone del tema (.tl-primary-btn) reso <span>,
   perche' dentro un <a> non ci va un altro elemento interattivo. main.css lo
   veste per CLASSE e non per elemento, quindi lo <span> prende tutto:
   `display:inline-flex`, il raggio a 100px, il bordo, il tondo della freccia.
   Serve solo il margine sopra.
   IL COLORE NON SI TOCCA, ed e' un errore che ho fatto e misurato: al primo
   giro avevo scritto `color:#FFFFFF` dando per scontato che la card stesse
   sulla fascia scura. La FASCIA e' scura, la CARD e' BIANCA (il tema:
   `.service-item-5{background-color:var(--tl-color-common-white)}`).
   Risultato sullo screenshot a 1280px: della pillola si vedeva solo il tondo
   azzurro della freccia, e l'etichetta «Vedi le costruzioni» era bianca su
   bianco — cioe' esattamente il difetto che la pillola doveva risolvere.
   Il colore giusto e' quello del tema (`--tl-color-heading-primary`), che il
   bottone ha da se'. */
.eg-servizio__pillola{ margin-top: 22px; }
/* la card e' un link: il segnale di passaggio cade sulla pillola, come
   accade ai bottoni del tema (`.tl-primary-btn:hover` porta l'accento). */
.eg-servizio:hover .eg-servizio__pillola,
.eg-servizio:focus-visible .eg-servizio__pillola{
  border-color: var(--tl-color-theme-primary);
  color: var(--tl-color-theme-primary);
}
/* il tondo della freccia dentro la pillola: il tema lo disegna con
   `.tl-primary-btn .icon`, che aggancia anche qui. Niente da fare. */

/* 8.1-ter I LINK DENTRO IL TESTO NON SI VEDEVANO.
   MISURATO su ristrutturazioni.html: i tre rimandi in mezzo ai paragrafi
   (studio tecnico del gruppo, Giò, l'adeguamento sismico) erano
   `rgb(77,77,82)` senza sottolineatura, cioe' identici al testo attorno —
   main.css scrive `a{text-decoration:none}` e non da' nessun colore ai
   link in linea, perche' il tema non ne ha nemmeno uno.
   Azzurro scuro (--alpi-accento-scuro, #0E76A4: 4,69:1 sul #F6F6F6 del
   tema e 5,06 su bianco, AA per il testo piccolo — vedi §1, B2 di WP9) e
   sottolineatura. NON si allargano a 44px: sono link dentro una frase, e
   la regola dei bersagli vale per i controlli autonomi — allargarli
   sfalserebbe l'interlinea del paragrafo. */
.eg-blocco p a,
.service-details-content p a,
.eg-recapiti-note a,
.eg-prova__corpo p a{
  color: var(--alpi-accento-scuro);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.eg-blocco p a:hover,
.service-details-content p a:hover{ text-decoration-thickness: 2px; }

/* 8.2 Le foto dentro i riquadri del tema.
   Il tema disegna i suoi riquadri attorno a immagini gia' tagliate alla
   misura giusta; le nostre arrivano da WP2 con proporzioni diverse.
   `object-fit:cover` fa il taglio senza deformare: senza, il collage
   della about-section e le card dei cantieri stiravano le persone. */
.about-img-wrap-6 img,
.content-img-wrap img,
.project-thumb img,
.service-img img,
.process-img-6 img,
.skill-img img,
.eg-figura img{ object-fit: cover; }

/* 8.3 Le didascalie dei cantieri stanno sopra una foto: il tema le
   scrive nel grigio del corpo testo, che sopra uno scatto chiaro sparisce.
   (`.project-item-2 .project-content p` non ha colore proprio.) */
.project-item-4 .project-content p{ color: rgba(255, 255, 255, .82); }

/* 8.4 Il testo digitato nel modulo sulla fascia scura: il tema da'
   `.request-form-wrap .form-item .form-control{color:#9f9fa4}` — 2,5:1 sul
   fondo del campo. Quello che scrivi lo devi leggere. */
.request-section .request-form-wrap .form-item .form-control{ color: #FFFFFF; }
.request-section .request-form-wrap .form-item .form-control::placeholder{ color: rgba(255, 255, 255, .66); }

/* 8.5 I <select> e gli <input> disabilitati (il modulo nasce spento)
   restano leggibili: il grigio di sistema su fondo scuro sparisce. */
.eg-modulo-campi .form-control:disabled{ opacity: 1; }

/* ------------------------------------------------------------
   8.6 — B2 E B5 DI WP9: L'ACCENTO DOVE E' TESTO E NON SEGNO.
   L'accento del committente (#139DD9) e' nato per i SEGNI del tema —
   pallini, bordi, tondi, icone — e li' passa (soglia 3:1, misura 2,84 su
   #F6F6F6 e 3,06 su bianco... che per il testo non basta MAI). Il tema
   pero' lo usa anche come colore di TESTO in cinque punti, e in tutti e
   cinque il rapporto misurato sta sotto soglia. Le tre varianti sono in §1;
   qui c'e' il rimappaggio, punto per punto, con la misura che lo motiva.

   La regola d'uso, da tenere per ogni componente futuro:
     segno grafico su chiaro ......... #139DD9   (2,84:1, soglia 3,0 → serve
                                                  un segno spesso, non testo)
     testo < 18px su chiaro .......... #0E76A4   (4,52:1 sul PEGGIORE
                                                  dei chiari misurati,
                                                  la filigrana su #F2F2F2)
     testo >= 24px su chiaro ......... #1292CA   (3,02:1 sul PEGGIORE
                                                  dei chiari, #EEEEEE)
     fondo di componente col bianco .. #0F7EAF   (bianco 4,54:1)
     testo e segni su fascia scura ... #139DD9   (5,03-6,32:1)
   ------------------------------------------------------------ */

/* (a) B5 — LA PAROLA IN ACCENTO DENTRO I TITOLI. 6 occorrenze in home, 1
   per pagina interna. Il tema: `.section-heading .section-title span{
   color:var(--tl-color-theme-primary)}` (0,2,1). MISURATO 2,84:1 su
   #F6F6F6 contro i 3,0 che AA chiede al testo grande: mancava per 0,16.
   #1292CA lo porta a 3,24 (e a 3,02 sul #EEEEEE della process-section,
   la superficie che il QA non aveva campionato e dove il valore da lui
   calcolato, #1298D2, sarebbe rimasto a 2,81). La stessa variante vale
   anche sulle fasce SCURE, dove questi titoli compaiono (hero, servizi,
   numeri, chiusure): MISURATO a pixel, 4,01-5,21:1 nel 2% peggiore. */
.section-heading .section-title span{ color: var(--alpi-accento-grande); }

/* (b) B5 — IL BOTTONE DELL'ACCORDION APERTO, 24-28px.
   Il tema: `.accordion-button:not(.collapsed){color:var(--tl-color-theme-primary)}`
   dentro i quattro selettori di §6/B3. MISURATO 2,62-2,84:1 sul fondo
   chiaro. Stessi quattro selettori, stessa variante da testo grande. */
.faq-content .faq-accordion .accordion-item .accordion-button:not(.collapsed),
.faq-content-2 .faq-accordion .accordion-item .accordion-button:not(.collapsed),
.about-content-6 .about-faq .faq-accordion .accordion-item .accordion-button:not(.collapsed),
.service-details-content .service-faq .faq-accordion .accordion-item .accordion-button:not(.collapsed){
  color: var(--alpi-accento-grande);
}

/* (c) B2 — LE TRE PERCENTUALI DELLE MAESTRANZE, 16px.
   ATTENZIONE AL SELETTORE, ED E' UN ERRORE CHE HO FATTO E MISURATO.
   Il tema NON scrive `.skills-items .skills-item .progress .progress-bar
   span` (0,4,1): scrive
     `.skill-left-content .skills-items .skills-item .progress .progress-bar span`
   cioe' (0,5,1), e la versione corta perde. Con la regola corta il colore
   calcolato in pagina restava rgb(19,157,217) — l'accento pieno — e la
   correzione non c'era, pur essendo scritta. Verificato con
   getComputedStyle, non guardando il foglio.
   `.team-details-content` e' l'altro contenitore con cui il tema scrive lo
   stesso componente: non e' in pagina oggi, resta nell'elenco perche' la
   prossima pagina che monta delle barre non deve ritrovare il difetto.
   La dichiarazione del tema e'
   `color:var(--tl-color-theme-primary);font-size:16px`.
   IL FONDO NON E' QUELLO DELLA SEZIONE: `.skill-section` e' bianca, ma le
   percentuali cadono sopra `.skill-text`, la filigrana «alpi» a 390px che
   il tema disegna in #9F9FA4 al 13% — cioe' un #F2F2F2 effettivo, che e'
   il fondo piu' scuro sotto un testo piccolo di tutto il sito. MISURATO a
   pixel: accento pieno **2,74:1** contro i 4,5 del testo normale (il QA
   aveva letto 2,97-3,03 calcolando su #F6F6F6). Con
   --alpi-accento-scuro: **4,52:1**.
   Sono NUMERI, cioe' il contenuto della sezione, non una decorazione:
   vanno letti. */
.skill-left-content .skills-items .skills-item .progress .progress-bar span,
.team-details-content .skills-items .skills-item .progress .progress-bar span{
  color: var(--alpi-accento-scuro);
}

/* (d) B2 — LA VOCE CORRENTE DELLE BRICIOLE E LA VOCE DI MENU ATTIVA,
   SOPRA UNA FOTOGRAFIA. Qui il colore da solo NON basta e non e' un
   problema di variante: MISURATO 2,17-3,51:1 (briciole 13px) e 2,11-3,61:1
   (menu 16px) sulle sei pagine interne, e sopra un fondo fotografico
   velato NESSUNA variante ragionevole dell'accento arriva a 4,5:1 —
   il fondo cambia da pixel a pixel, quindi il rapporto peggiore lo detta
   la zona piu' chiara della foto, non il colore che scegliamo noi.
   Le due voci passano al BIANCO — MISURATO a pixel dopo la correzione:
   briciole **6,63-12,34:1** sulle sei interne, voce di menu attiva
   **7,86-16,47:1** sulle sette. Al posto del colore, un SEGNO che dice
   quale: un pallino prima delle briciole e un filetto sotto la voce di
   menu. Sono bianchi anche loro, e il perche' e' misurato nei due commenti
   qui sotto: sopra fotografia l'accento non regge nemmeno su 2-5px.
   RESTA UN PALLINO IN ACCENTO SU QUELLA FOTOGRAFIA, e non e' una
   dimenticanza: e' quello della pillola dell'occhiello (§7.3), che il tema
   disegna a 5px dentro un bordo bianco. Sullo stesso fondo misura come gli
   altri due (~2,2-2,6:1), quindi sotto i 3:1 ci sta anche lui — MA non e'
   un segno che porta informazione: la pillola ha il suo testo bianco
   accanto, e il pallino e' decorazione del tema dentro un contorno che la
   stacca dalla foto. Non era fra i sei rilievi e non e' stato toccato. Se
   il committente vuole coerenza assoluta, e' una riga in §7.3.
   In home la voce di menu attiva PASSAVA (li' la testata sta sopra l'hero,
   molto piu' scura): la regola vale comunque per tutte e sette, perche' un
   colore che dipende da quanto e' scura la foto sotto non e' una regola. */
.eg-briciole li:last-child span{
  color: #FFFFFF;
  font-weight: 600;             /* le altre voci sono 500 */
}
/* IL SEGNO. Le briciole sono `Home — Ristrutturazioni`: i link sono bianchi
   pieni, quindi la voce corrente in bianco pieno da sola non si
   distinguerebbe piu' da loro. Il separatore che la precede — il filetto di
   §7.3, che c'e' gia' e non e' un elemento nuovo — diventa un pallino:
   e' l'idioma con cui il tema segna la voce corrente
   (`li li.active a:before`), e resta un tondo contro tre filetti.
   BIANCO e non in accento, per la stessa misura del filetto del menu qui
   sotto: sopra la fotografia della testata il fondo arriva a L=0,108 e
   l'accento pieno su 5px scenderebbe a **2,17:1**, sotto i 3:1 che AA
   chiede a un segno. Il pallino non porta informazione da solo: la voce e'
   l'ultima dell'elenco, ha `aria-current="page"` nel markup ed e' l'unica
   non linkata. */
.eg-briciole li:last-child::before{
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background-color: var(--tl-color-common-white);
}

/* la voce di menu attiva: bianca come le altre sei, piu' un filetto che
   dice QUALE. Il tema usa lo stesso idioma per le voci di sottomenu
   (`li li.active a:before{width:10px}`), quindi non e' un motivo nuovo.
   IL FILETTO E' BIANCO, E ANCHE QUESTO E' MISURATO. La prima stesura lo
   faceva in accento — «il colore resta sul segno» — e il segno e' un
   COMPONENTE GRAFICO, soglia 3:1. Campionando a pixel la striscia di
   fotografia esattamente sotto la voce attiva sulle sette pagine, il fondo
   arriva a L=0,084 nel punto piu' chiaro (ristrutturazioni): li' #139DD9
   misura **2,56:1** e non passa. E' lo STESSO motivo per cui il testo e'
   passato al bianco: sopra una fotografia velata l'accento non regge, ne'
   come testo ne' come segno di 2px. Il bianco sullo stesso fondo fa
   7,8-16:1. L'accento su questa fascia resta solo sul pallino decorativo
   della pillola dell'occhiello (§7.3): vedi la nota nel blocco (d) sopra.
   Specificita': il tema dichiara il colore con (0,4,1), qui serve almeno
   altrettanto. */
.header .primary-header-inner .header-menu-wrap ul li.active > a{
  color: var(--tl-color-common-white);
}
.header .primary-header-inner .header-menu-wrap ul li.active > a::after{
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 30px;                 /* il tema da' `padding:36px 0` alla voce */
  height: 2px;
  background-color: var(--tl-color-common-white);
}
@media only screen and (max-width: 1119px){
  /* in questa banda la voce scende a 14px (vedi §5) e il padding del tema
     resta 36px: il filetto si alza di conseguenza */
  .header .primary-header-inner .header-menu-wrap ul li.active > a::after{ bottom: 32px; }
}
/* (e) B2 — LA VOCE ATTIVA NEL PANNELLO MOBILE, che invece sta su BIANCO.
   meanmenu clona le sette voci dentro `.mobile-side-menu`, che il tema
   dipinge `background-color:var(--tl-color-common-white)`; la regola del
   colore e' `.mean-container .mean-nav ul li.active a{color:accento}`
   (0,4,1) su testo di 16px → 3,06:1. Qui il fondo e' noto e uniforme,
   quindi basta la variante da testo piccolo e NON serve il filetto: sopra
   il bianco l'accento scuro si distingue dal #191919 delle altre voci. */
.mobile-side-menu .mean-container .mean-nav ul li.active a{
  color: var(--alpi-accento-scuro);
}


/* ============================================================
   10. IL MANDATO CORRETTIVO DEL 2026-08-20
   ------------------------------------------------------------
   Tutto quello che sta qui sotto nasce da una misura, non da un gusto: ogni
   blocco dice il valore misurato e a che voce del mandato risponde. Sta in
   coda perche' e' l'ultimo strato: se una di queste regole litiga con una
   di sopra, vince questa, e il commento spiega perche'.
   ============================================================ */

/* --- 10.1 (A4) IL TELEFONO IN TESTATA SCENDE A 1024px ----------------
   IL DIFETTO, misurato. main.css:
     @media(max-width:1399px){
       .header .primary-header-inner .header-right-wrap .header-contact{
         display:none } }
   Sotto i 1400px il recapito diretto SPARISCE. Vuol dire che su un portatile
   da 1280 o 1366 — cioe' la larghezza piu' diffusa fra chi cerca un'impresa
   edile dall'ufficio — la testata di un'impresa artigiana non ha il numero di
   telefono. Il tema puo' permetterselo: il suo menu ha sei voci brevi in
   inglese. Il nostro ne ha sette in italiano.
   LA CORREZIONE E' UN OVERRIDE MOTIVATO, non una preferenza: la soglia
   scende a 1024px, cioe' dove il menu passa comunque alla forma mobile e in
   testata restano logo e tondo.
   PERCHE' CI STA. Il conto a 1024px, misurato dopo A4 (l'etichetta di menu
   «Riqualificazione energetica» -> «Riqualificazione», 11 caratteri in meno):
   logo/wordmark ~150 + firma ~110 + 7 voci ~525 + recapito ~150 + CTA ~150 +
   i gap = sotto la larghezza utile. Verificato a 1024, 1119, 1280, 1399 e
   1440: una riga, telefono visibile.
   La specificita' e' la stessa del tema piu' :where(), che non ne aggiunge:
   basta l'ordine dei fogli (alpi.css e' l'ultimo). */
@media (min-width: 1024px){
  .header .primary-header-inner .header-right-wrap .header-contact{
    display: flex;
  }
}
/* Sotto i 1024 resta nascosto, ed e' giusto: il numero e' nel pannello del
   menu (prima voce dei contatti) e nel footer. Il tondo del menu e la CTA
   restano i due bersagli grandi della testata.

   ORA IL CONTO DELLA LARGHEZZA, ED E' MISURATO NEL BROWSER, non stimato
   (getBoundingClientRect su .header-logo / .header-menu-wrap /
   .header-right-wrap, viewport emulato):
     1440 -> 270 + 748 + 328 = 1346 su 1416 utili  · una riga (h 98)
     1399 -> 241 + 714 + 304 = 1259 su 1375        · una riga (h 96)
     1280 -> 241 + 714 + 304 = 1259 su 1256        · DUE righe (h 155): 3px
     1119 -> 237 + 654 + 273 = 1164 su 1095        · DUE righe (h 155)
     1024 -> 237 + 654 + 273 = 1164 su 1000        · DUE righe (h 155)
   A 1280 mancavano TRE PIXEL. A 1024 ne mancavano 164.

   COME SI RECUPERANO, e non stringendo il testo fino a renderlo illeggibile.
   Il pezzo piu' grasso della testata e' il lockup: 237px, di cui 121 sono la
   wordmark e 107 la firma «· gruppo edilgetica», AFFIANCATE. La firma non
   deve stare accanto al nome: puo' stare SOTTO, ed e' esattamente dove sta in
   ogni firma endorsed. Il blocco passa da 237 a 121: 116px recuperati senza
   togliere niente e senza rimpicciolire niente.
   La firma resta in testata su ogni pagina, come vuole network-map §2.2: non
   e' nascosta, e' impilata.
   Nuovo conto misurato: 1280 -> 121 + 714 + 304 = 1139 su 1256 (una riga).
   1024 -> 121 + 593 + 264 = 978 su 1000 (una riga), con il menu a 15px. */
/* FRA 1200 E 1399 la firma NON si impila: resta accanto al nome e conserva i
   suoi 44px di bersaglio. Il posto si trova nel menu, che perde un punto di
   corpo (16 -> 15px) e tre pixel di respiro per voce.
   MISURATO, e in due passaggi sbagliati prima di quello giusto:
   (1) cercare i pixel nel corpo della FIRMA (13 -> 12px) non bastava:
       mancavano 50px, non tre;
   (2) il menu a 15px con 12px di margine da' `.header-menu-wrap` = 654px, e a
       1200 la somma resta 1226 su 1176. Non basta.
   Serve il corpo del tier stretto (14px, margine 8px) fino a 1279, dove il
   menu misura ~590: somma 1162 su 1176. Da 1280 in su c'e' posto per il 15px
   (somma 1226 su 1256). */
@media (min-width: 1200px) and (max-width: 1399px){
  .header .primary-header-inner .eg-lockup{ gap: 8px; }
  .header .primary-header-inner .eg-lockup__firma{ font-size: 12px; white-space: nowrap; }
  .header .primary-header-inner .header-menu-wrap ul li{ margin-right: 12px; }
  .header .primary-header-inner .header-menu-wrap ul li a{ font-size: 15px; }
  .header .primary-header-inner .header-right-wrap{ column-gap: 12px; }
  .header .primary-header-inner .header-right-wrap .header-contact{ column-gap: 10px; }
  .header .primary-header-inner .header-right-wrap .header-contact .icon{ font-size: 20px; }
  .eg-wordmark__nome{ font-size: 23px; }
}
/* fra 1200 e 1279 il menu tiene il corpo del tier stretto: sono gli 80px che
   evitano la seconda riga tenendo la firma affiancata (e quindi a 44px). */
@media (min-width: 1200px) and (max-width: 1279px){
  .header .primary-header-inner .header-menu-wrap ul li{ margin-right: 8px; }
  .header .primary-header-inner .header-menu-wrap ul li a{ font-size: 14px; }
  .header .primary-header-inner .header-right-wrap .tl-primary-btn.header-btn{
    padding-left: 16px;
    font-size: 14px;
    /* MISURATO a 1024: con il corpo a 14px il bottone scendeva a 34px di
       altezza (a 1280 ne fa 54, perche' li' il tondo della freccia e' piu'
       grande). E' la CTA della testata, cioe' un controllo autonomo: 44px. */
    min-height: 44px;
  }
}
/* SOTTO I 1200 la firma va IMPILATA sotto il nome: sono i 116px che
   permettono al telefono di stare in testata (vedi il conto sopra).
   COMPROMESSO DICHIARATO, ed e' l'unico di questa revisione: impilata, la
   firma e' alta ~28px invece di 44. A 44 il lockup diventerebbe alto 86px e
   la testata ~136 contro i 96 del tema, cioe' si romperebbe proprio quello
   che A4 chiede di tenere. 28px resta sopra il minimo WCAG 2.5.8 (24x24 CSS
   px, AA) e sotto la soglia di piattaforma (44): l'alternativa era una
   testata a due righe senza telefono. Sopra i 1200 e nel footer sono 44.
   Se il committente preferisse i 44px anche qui, si toglie il telefono da
   questa finestra: la scelta e' fra i due, non c'e' spazio per entrambi. */
@media (min-width: 1024px) and (max-width: 1199px){
  .header .primary-header-inner .eg-lockup{
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
  }
  .header .primary-header-inner .eg-lockup__firma{
    min-height: 0;
    padding: 6px 0;
    font-size: 13px;
    white-space: nowrap;
  }
  .header .primary-header-inner .header-right-wrap{ column-gap: 10px; }
  .header .primary-header-inner .header-right-wrap .header-contact{ column-gap: 8px; }
  .header .primary-header-inner .header-right-wrap .header-contact .icon{ font-size: 20px; }
}
/* fra 1024 e 1199 il tema non stringe niente e le sette voci italiane sono
   piu' larghe delle sei inglesi del demo: qui il menu perde un punto di
   corpo (15px, sopra il minimo di 12) e quattro pixel di respiro per voce. */
@media (min-width: 1024px) and (max-width: 1199px){
  /* 8px e non 10: a 1024 la somma misurata era 1004 su 1000 utili, cioe' QUATTRO
     pixel di troppo, e .primary-header-inner ha flex-wrap:wrap — quattro pixel
     mandano la meta' destra su una seconda riga. Con 8px la somma e' 992. */
  .header .primary-header-inner .header-menu-wrap ul li{ margin-right: 8px; }
  .header .primary-header-inner .header-menu-wrap ul li a{ font-size: 14px; }
  .header .primary-header-inner .header-right-wrap .tl-primary-btn.header-btn{
    padding-left: 16px;
    font-size: 14px;
    /* MISURATO a 1024: con il corpo a 14px il bottone scendeva a 34px di
       altezza (a 1280 ne fa 54, perche' li' il tondo della freccia e' piu'
       grande). E' la CTA della testata, cioe' un controllo autonomo: 44px. */
    min-height: 44px;
  }
  .header .primary-header-inner .header-right-wrap .header-contact .content .call-text{ font-size: 12px; }
  .header .primary-header-inner .header-right-wrap .header-contact .content .call-number{ font-size: 16px; }
}

/* --- 10.2 (B4) LE TRE FILIGRANE ---------------------------------------
   Sono tre parole giganti che il tema stende dietro tre sezioni. Tutte e tre
   erano rotte, e in modo diverso.

   (a) HERO, «Dal 1960». Il tema la ancora a destra
   (`.hero-text{position:absolute;bottom:-53px;right:10%}`) a 320px di corpo.
   MISURATO a 390px: il blocco andava da -87px a +351px, cioe' la testa della
   parola era FUORI dal bordo sinistro e in pagina si leggeva «al 1960».
   Sotto i 768px passa a filo sinistro e il corpo scende a una misura che ci
   sta: 8 caratteri a 84px in Cal Sans fanno ~330px su 390 di viewport. */
@media only screen and (max-width: 767px){
  .hero-section-6 .hero-text{
    right: auto;
    left: 0;
    bottom: -14px;
  }
  .hero-section-6 .hero-text span{ font-size: 84px; }
}
/* fra 768 e 991 il corpo del tema e' ancora troppo per la larghezza: qui
   la parola resta a destra come nel demo, ma rientra */
@media only screen and (min-width: 768px) and (max-width: 991px){
  .hero-section-6 .hero-text span{ font-size: 150px; }
}

/* (b) SKILL-SECTION. Era «maestranze», dieci caratteri a 390px di corpo
   ancorati a `left:50%` con `translateX(-75%)`: MISURATO a 390px, il blocco
   andava da -1370px a +717px e in pagina si vedeva UNA "n" gigante sopra la
   foto. Il markup ora dice «alpi» (quattro caratteri, come i cinque di
   «antra» nel demo) e a quel punto la regola del tema torna sensata. Resta
   da contenere il corpo sotto i 992px, dove il tema lo tiene a 220px: con
   quattro caratteri sono ~440px di parola su 390 di schermo. */
@media only screen and (max-width: 991px){
  .skill-section .skill-text{ font-size: 150px; }
}
@media only screen and (max-width: 767px){
  .skill-section .skill-text{ font-size: 92px; transform: translateX(-50%); }
}

/* (c) FOOTER. Era «alpi adelmo»: due parole, undici caratteri, a 480px di
   corpo in un blocco assoluto largo quanto il footer. Andava a CAPO in due
   righe che scavalcavano la banda del copyright, e sopra il testo restava un
   disco grigio orfano — MISURATO: e' il puntino della "i" di «alpi», l'unica
   parte della prima riga che finiva sopra il taglio.
   Il markup ora dice «alpi», una parola. E la filigrana scende sotto la banda
   del copyright, che e' dove il mandato la vuole e dove non copre piu' niente.
   RESTA ASSOLUTA, e non e' pigrizia: il tema riserva a questa filigrana
   `padding-bottom:395px` sul footer (250 sotto i 992, 100 sotto i 768), che e'
   spazio del suo ritmo verticale — criterio di collaudo del committente. Al
   primo giro l'avevo messa nel flusso: il padding restava vuoto E la parola
   aggiungeva la sua altezza, quindi il footer usciva con 395px di nero morto
   in coda (MISURATO: footer alto 1383px, l'ultima cosa visibile a 1774 e il
   bordo a 2169). Tenendola assoluta dentro quel padding, l'altezza del footer
   e' quella del tema e la parola sta esattamente nella fascia che il tema le
   aveva riservato.
   `bottom:0` e non `-72px`: il -72 del tema taglia la parola sotto la linea di
   base, e con un discendente (la "p" di «alpi») si perderebbe. */
.footer-section .footer-text.eg-footer-text{
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  line-height: 0;              /* il blocco non aggiunge spazio: lo da' il glifo */
  pointer-events: none;        /* e' decorazione: non intercetta i tap */
  white-space: nowrap;         /* una riga: mai piu' due */
}
/* Il corpo sta DENTRO il padding che il tema riserva: 395px sopra i 992,
   250 fra 768 e 992, 100 sotto. Il glifo di Cal Sans occupa circa 1,0em fra
   l'ascendente della "l" e il discendente della "p", quindi il corpo massimo
   e' quel padding meno un margine di sicurezza. */
.eg-footer-text span{
  display: inline-block;
  font-size: clamp(72px, 14vw, 300px);
  line-height: 1.1;
}
@media only screen and (max-width: 992px){
  .eg-footer-text span{ font-size: clamp(72px, 20vw, 200px); }
}
@media only screen and (max-width: 767px){
  .eg-footer-text span{ font-size: 78px; }
}

/* --- 10.3 (B5) LO SCRIM DELL'HERO ------------------------------------
   Il tema vela la fotografia con `.hero-section-6 .overlay` (#100801 al
   64%), uniforme su tutta la larghezza. Il testo sta a SINISTRA, e a
   sinistra la nostra fotografia (struttura in c.a. controluce) ha le zone
   piu' chiare: MISURATO sul titolo bianco, il contrasto locale scendeva
   sotto il 4,5:1 sulle prime due parole.
   Si aggiunge un gradiente in piu', non si tocca il velo del tema: un
   secondo strato che pesa a sinistra e svanisce verso destra, cosi' la
   fotografia resta leggibile dove non c'e' testo. */
.hero-section-6 .overlay::after{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg,
    rgba(10, 8, 6, .78) 0%,
    rgba(10, 8, 6, .58) 34%,
    rgba(10, 8, 6, .12) 68%,
    rgba(10, 8, 6, 0) 100%);
  pointer-events: none;
}
/* su telefono il testo occupa tutta la larghezza, quindi il gradiente non ha
   un lato da risparmiare: diventa verticale e MOLTO piu' leggero. Il primo
   giro l'ha sbagliato: .62/.74/.58 sopra il .64 del tema fanno ~0,88 di velo
   totale, e la fotografia dell'hero — misurata sullo screenshot a 390px —
   era diventata una superficie quasi nera. Uno scrim che cancella la foto non
   e' uno scrim: e' un fondo tinta unita con un file da 144 KB dietro. Qui
   aggiunge il minimo che serve al paragrafo, che e' la parte piu' fragile
   (16px bianchi su una zona chiara della struttura). */
@media only screen and (max-width: 767px){
  .hero-section-6 .overlay::after{
    background: linear-gradient(180deg,
      rgba(10, 8, 6, 0) 0%,
      rgba(10, 8, 6, .22) 38%,
      rgba(10, 8, 6, .30) 72%,
      rgba(10, 8, 6, .10) 100%);
  }
}
/* Il cerchio della CTA resta TRASPARENTE come nel demo (mandato C7): la
   leggibilita' la da' lo scrim qui sopra, non un fondo pieno. L'unica cosa
   che si aggiunge e' il fuoco da tastiera, che nel tema non c'e'. */
.hero-btn a:focus-visible{
  outline: 3px solid #FFFFFF;
  outline-offset: 4px;
}

/* --- 10.4 (B1, B2) LE DUE FASCE SCURE NON SONO LO STESSO NERO --------
   Le due sezioni scure della home (i tre servizi e i quattro numeri) ora
   hanno una fotografia di fondo, come nel demo. Senza due veli DIVERSI
   sarebbero due bande nere identiche a distanza di tre sezioni — che era il
   difetto di prima, solo con la foto sotto.
   La service-section e' la piu' scura delle due: la fotografia ci sta come
   materia, non come soggetto, e sopra ci vanno tre card con il loro testo.
   Il velo del tema (`.service-section-5 .bg-img:before`, se c'e') non basta:
   si dichiara qui, per intero, su un pseudo nostro. */
.service-section-5 .bg-img.eg-bg-servizi{
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}
.service-section-5 .bg-img.eg-bg-servizi::after{
  content: "";
  position: absolute;
  inset: 0;
  background-color: #100D0B;
  opacity: .88;                /* MOLTO scurita, come chiede il mandato */
}
/* la fascia dei numeri e' meno scura e piu' calda: e' l'altra meta' del
   contrasto fra le due, e il testo sopra e' piu' corto (una cifra grande e
   due righe) quindi regge un fondo piu' vivo */
.counter-section .bg-img.eg-bg-numeri{
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}
.counter-section .bg-img.eg-bg-numeri::after{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(16, 13, 11, .86) 0%, rgba(28, 21, 17, .78) 100%);
}
/* i due div del tema sono `position:absolute` con i figli assoluti: senza
   questo lo pseudo si posiziona sul viewport */
.service-section-5 .bg-img,
.counter-section .bg-img{ position: absolute; inset: 0; }

/* --- 10.5 (B11) LA BANDA DELLA GALLERIA DI CHI-SIAMO -----------------
   Il tema vela `.gallary-section-2 .bg-img:before` di nero al 46%. Con la
   fotografia precedente (gru contro il cielo) il titolo bianco cadeva sulla
   zona piu' chiara dello scatto. Cambiata la foto (B11), lo scrim sale
   comunque: 46% su una facciata diurna non basta per un titolo a 50px. */
.gallary-section-2 .bg-img.eg-bg-galleria::after{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(12, 10, 9, .86) 0%, rgba(12, 10, 9, .68) 55%, rgba(12, 10, 9, .58) 100%);
}
.gallary-section-2 .bg-img{ position: absolute; inset: 0; }
@media only screen and (max-width: 991px){
  /* impilato, il titolo non e' piu' a sinistra: il velo torna uniforme */
  .gallary-section-2 .bg-img.eg-bg-galleria::after{
    background: rgba(12, 10, 9, .8);
  }
}

/* --- 10.6 (B8) IL COLLAGE DELLA ABOUT-SECTION ------------------------
   MISURATO a 1280px: delle tre immagini del collage la terza
   (`.about-img-3`, il primo piano delle mani) era coperta per due terzi da
   `.about-img-2`, che il tema piazza in assoluto con un margine negativo.
   Non e' un difetto del tema: le sue tre immagini hanno proporzioni fisse e
   le nostre no, quindi la seconda cresce e invade.
   Si riordina: le tre restano dove le mette il tema, ma la terza sale sopra
   nell'ordine di sovrapposizione e la seconda rientra. Nessun margine del
   tema cambia. */
.about-img-wrap-6{ position: relative; }
.about-img-wrap-6 .about-img-1{ position: relative; z-index: 1; }
.about-img-wrap-6 .about-img-2{ z-index: 2; }
.about-img-wrap-6 .about-img-3{ position: relative; z-index: 3; }
@media (min-width: 992px){
  /* la seconda smette di allargarsi oltre il suo riquadro: e' lei che
     copriva la terza */
  .about-img-wrap-6 .about-img-2 img{ max-height: 300px; }
  .about-img-wrap-6 .about-img-3 img{ max-height: 220px; }
}
@media only screen and (max-width: 991px){
  /* sotto i 992 il tema non ha regole per questo collage: le tre immagini
     tornano tre blocchi, e impilate si vedono tutte per definizione */
  .about-img-wrap-6 .about-img-1,
  .about-img-wrap-6 .about-img-2,
  .about-img-wrap-6 .about-img-3{
    position: relative;
    inset: auto;
    /* IL `transform` VA AZZERATO, e senza questa riga il difetto peggiora
       invece di sparire: il tema tiene la terza immagine centrata con
       `left:50%;transform:translateX(-50%)`, e togliendole solo il
       posizionamento assoluto la traslazione resta e la porta MEZZA FUORI
       dallo schermo. MISURATO a 390px al primo giro di correzione:
       .about-img-3 andava da -171px a +195px. */
    transform: none;
    margin: 0 0 16px;
    width: 100%;
    max-width: none;   /* il tema ne limita tre a 310/320/380px */
    height: auto;
  }
  .about-img-wrap-6 img{ width: 100%; height: auto; max-height: 260px; }
}

/* --- 10.7 (C1) LE COLONNE DI TESTO DA 250px --------------------------
   MISURATO a 390px sui blocchi «passi» e «fasi» delle pagine servizio e su
   quelli del metodo in home: le colonne di testo uscivano larghe 250-266px
   dentro un viewport da 390. Sono ~34 caratteri per riga: la lettura si
   spezza e il testo sembra incolonnato in una scanalatura.
   La causa e' una griglia a due colonne del tema che sotto i 768px non ha
   media query, piu' i padding del contenitore. §7.2 ne ha gia' corretta una
   (`.service-details-items`); queste sono le altre due. */
@media only screen and (max-width: 767px){
  .process-item-wrap-6,
  .process-item-wrap-6 .process-item-6,
  .eg-passi,
  .eg-passi .eg-passo,
  .eg-passo .content,
  .eg-prove,
  .eg-prova,
  .eg-prova__corpo{
    width: auto;
    max-width: none;
    min-width: 0;
  }
  /* il tema mette il numero e il testo affiancati: sotto i 768 il numero va
     sopra, in linea, e il testo prende la larghezza piena. Vale per i passi
     e per le cinque prove (B12 lo chiede esplicitamente per queste). */
  .eg-passi .eg-passo,
  .eg-prova{
    display: block;
  }
  .eg-passo__numero,
  .eg-prova__numero{
    min-width: 0;
    margin-bottom: 6px;
  }
  /* .process-item-6 del tema ha il numero in `position:absolute` a sinistra
     e un padding-left che gli lascia il posto: resta com'e', ma il testo non
     deve stringersi oltre */
  .process-item-wrap-6 .process-item-6 p{ max-width: none; }
}

/* --- 10.8 (B12) LE CINQUE PROVE SU TELEFONO E L'INDICE ---------------
   Le prove sono `display:flex` con il numero in una colonna da 44px: a
   390px al testo restavano ~300px, e dentro c'e' il confronto a due riquadri
   che si stringe ancora. Sopra (10.7) il flex diventa blocco; qui il numero
   torna una riga sopra il titolo, come chiede il mandato. */
@media only screen and (max-width: 767px){
  .eg-prova__numero{
    display: inline-block;
    font-size: 20px;
    letter-spacing: 1px;
  }
  .eg-confronto{ gap: 14px; margin: 18px 0 4px; }
  .eg-confronto__lato{ padding: 18px; border-radius: 18px; }
}
/* L'INDICE «IN QUESTA PAGINA» in versione non-sticky (perche-noi non ha la
   colonna delle pagine servizio). Stessa veste dell'indice della colonna:
   occhiello piccolo, voci in elenco, bersagli da 44px. */
.eg-indice--inline{
  border: 1px solid var(--tl-color-border-1);
  border-radius: 24px;
  padding: 22px 26px;
  margin-bottom: 34px;
  background-color: var(--tl-color-common-white);
}
.eg-indice--inline .eg-indice__titolo{
  font-family: var(--tl-ff-heading);
  font-size: 13px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  color: var(--tl-color-grey-1);
  margin-bottom: 6px;
}
.eg-indice--inline ul{ list-style: none; margin: 0; padding: 0; }
@media (min-width: 768px){
  .eg-indice--inline ul{ display: flex; flex-wrap: wrap; column-gap: 28px; }
}
.eg-indice--inline li a{
  display: inline-block;
  padding: 11px 0;             /* 44px con la riga da 22 */
  font-family: var(--tl-ff-heading);
  color: var(--tl-color-heading-primary);
}
.eg-indice--inline li a:hover{ color: var(--alpi-accento-scuro); }

/* --- 10.9 (A5) LA RIGA DI CONTATTO A META' PAGINA --------------------
   Una riga, non una fascia: se avesse un fondo o un bordo diventerebbe una
   sezione, e il ritmo verticale del tema e' criterio di collaudo. */
.eg-riga-contatto{
  margin: 34px 0 0;
  font-family: var(--tl-ff-heading);
  font-size: 20px;
  line-height: 1.4;
  color: var(--tl-color-heading-primary);
}
.eg-riga-contatto a,
.eg-azioni__telefono a{
  color: var(--alpi-accento-scuro);
  text-decoration: underline;
  text-underline-offset: 4px;
  /* controllo autonomo (e' l'unica azione della riga): 44px */
  display: inline-block;
  padding: 10px 0;
  white-space: nowrap;
}
.eg-riga-contatto a:hover,
.eg-azioni__telefono a:hover{ text-decoration-thickness: 2px; }
/* in home il telefono sta ACCANTO al bottone del blocco about: sulla stessa
   riga da 576px in su, sotto su telefono */
.eg-azioni{ display: flex; flex-wrap: wrap; align-items: center; gap: 8px 22px; }
.eg-azioni__telefono{
  margin: 0;
  font-family: var(--tl-ff-heading);
  font-size: 17px;
  color: var(--tl-color-grey-1);
}

/* --- 10.10 (C2) LA FASCIA «RACCONTACI IL TUO CANTIERE» ---------------
   Due difetti misurati sulla stessa sezione.
   (a) Lo scrim: il tema stende `#1c1511` al 75% su `.request-section
   .bg-img:before`. Sopra la nostra fotografia (gru contro il cielo, cioe'
   il punto piu' chiaro del pacchetto) le etichette del modulo a 14px
   restavano sotto il 4,5:1. Sale a un gradiente piu' pesante.
   (b) I campi: il tema li fa TRASLUCIDI
   (`.request-form-wrap .form-item .form-control` con fondo trasparente e
   bordo sottile), quindi il testo digitato galleggia sulla fotografia e
   ogni campo ha un contrasto diverso a seconda di cosa gli passa dietro.
   Un campo di modulo e' una superficie di scrittura: prende un fondo PIENO. */
/* IL VALORE E' STATO CORRETTO DOPO LA MISURA. Il primo giro metteva .88 di
   velo SOPRA il .75 del tema: composti fanno 0,97, cioe' la fotografia
   spariva e la fascia diventava la terza banda quasi-nera della pagina a
   dieci sezioni dalle altre due. Qui si aggiunge il minimo che serve alle
   etichette del modulo (14px bianchi): .30/.42 sopra il .75 del tema
   compongono ~0,84. */
.request-section .bg-img::after{
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(20, 16, 13, .30) 0%, rgba(20, 16, 13, .42) 100%);
}
.request-section .bg-img{ position: absolute; inset: 0; }
.request-section .request-form-wrap .form-item .form-control{
  background-color: #1A1614;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 12px;
}
.request-section .request-form-wrap .form-item .form-control:focus{
  border-color: var(--tl-color-theme-primary);
  outline: 2px solid var(--tl-color-theme-primary);
  outline-offset: 1px;
}
/* i campi DISABILITATI non devono sembrare rotti: fondo pieno, bordo
   visibile, segnaposto leggibile. Sono spenti, non guasti. */
.request-section .eg-modulo-campi .form-control:disabled{
  background-color: #1A1614;
  color: rgba(255, 255, 255, .82);
  cursor: default;
}

/* --- 10.11 (C3) I BOTTONI DELLE CHIUSURE SU FOTO SCURA ---------------
   sezioneCta() mette `.white-btn` (la variante chiara del tema) su TUTTI i
   bottoni della fascia: vedi la nota in tools/alpi-shell.mjs. Qui resta solo
   la gerarchia, perche' due bottoni a contorno bianco identici non dicono
   quale sia l'azione principale. Il primo si riempie: variante chiara PIENA
   contro variante chiara a CONTORNO, entrambe del tema. */
.eg-cta .eg-cta-btn-wrap > .tl-primary-btn:first-child{
  background-color: #FFFFFF;
  border-color: #FFFFFF;
  color: var(--tl-color-heading-primary);
}
.eg-cta .eg-cta-btn-wrap > .tl-primary-btn:first-child .icon{
  background-color: var(--tl-color-heading-primary);
  color: #FFFFFF;
}
.eg-cta .eg-cta-btn-wrap > .tl-primary-btn:first-child:hover{
  background-color: var(--tl-color-theme-primary);
  border-color: var(--tl-color-theme-primary);
  color: #FFFFFF;
}

/* --- 10.12 (C4) FOOTER: L'INDIRIZZO, E IL MENO DELLE FAQ -------------
   (a) L'INDIRIZZO. MISURATO nel footer: `<address>` eredita il colore del
   corpo testo del tema (#4D4D52) su un fondo nero al 75% — 2,2:1, sotto AA
   perfino per il testo grande. Era la riga meno leggibile del sito, ed e' il
   NAP, cioe' un dato che qualcuno deve poter copiare.
   Anche il <p> che lo precede si allinea: nel footer il testo di servizio
   sta a un contrasto solo. */
.footer-section .footer-widget address,
.footer-section .footer-widget > p{
  color: rgba(255, 255, 255, .82);
  font-style: normal;          /* <address> e' corsivo per difetto */
  line-height: 1.7;
}
/* (b) IL MENO DELLE FAQ, e la causa e' precisa. Sotto i 768px — e SOLO
   sotto — il tema tira il segno fuori dal flusso:
     @media (max-width:767px){
       .faq-content-2 .faq-accordion .accordion-item .accordion-button:after{
         position:absolute; right:0; top:45% } }
   e nella stessa media query rende il bottone `flex-direction:column`. Le
   domande del demo stanno su una riga e il segno gli resta a destra; le
   nostre sono lunghe («Quanto dura una ristrutturazione e quanto costa?»),
   riempiono la riga, e l'ultima parola passa SOTTO un segno che non occupa
   spazio. MISURATO su ristrutturazioni.html a 390px: il meno cadeva
   sull'ultima «o» di «quanto».
   Il segno NON si sposta — e' il segno del tema — ma il testo gli lascia il
   posto: il bottone prende un padding a destra pari alla larghezza del segno
   (20px) piu' una gola.
   DUE ERRORI GIA' FATTI SU QUESTE SEI RIGHE, per chi le tocca dopo:
   1. una regola a due classi (`.faq-accordion .accordion-item
      .accordion-button`) NON aggancia: il tema ne usa quattro. MISURATO,
      `padding-right` restava 0px;
   2. `column-gap` non serve a niente qui, perche' sotto i 768 il segno e'
      assoluto e non e' un elemento di flex. */
@media only screen and (max-width: 767px){
  .faq-content .faq-accordion .accordion-item .accordion-button,
  .faq-content-2 .faq-accordion .accordion-item .accordion-button,
  .about-content-6 .about-faq .faq-accordion .accordion-item .accordion-button{
    padding-right: 36px;
  }
}
/* sopra i 768 il segno E' un elemento di flex (bootstrap: `margin-left:auto`)
   e allora la gola serve, perche' fra i due non c'e' niente */
@media (min-width: 768px){
  .faq-content .faq-accordion .accordion-item .accordion-button,
  .faq-content-2 .faq-accordion .accordion-item .accordion-button,
  .about-content-6 .about-faq .faq-accordion .accordion-item .accordion-button{
    column-gap: 24px;
  }
}

/* --- 10.13 (C5) I NUMERI DI TELEFONO HANNO UNO STILE SOLO ------------
   MISURATO su contatti.html: lo stesso numero compariva in quattro vesti
   diverse nella stessa pagina — bianco senza sottolineatura nella testata
   del blocco, grigio del corpo nei recapiti, azzurro sottolineato nelle
   note, dentro un bottone nella chiusura. Un recapito che cambia aspetto
   quattro volte non si legge come lo stesso recapito.
   Una regola: accento SCURO (--alpi-accento-scuro #0E76A4: 4,69:1 sul
   #F6F6F6 del tema, 5,06 su bianco, AA per il testo piccolo) e
   sottolineatura, su tutte le superfici chiare. Sulle scure resta il bianco
   del tema, che li' e' giusto. */
/* IL COLORE E LA SOTTOLINEATURA valgono per tutti i recapiti della pagina.
   Il `display` NO, ed e' l'errore che ho fatto e misurato: la prima stesura
   metteva `display:inline-block` in un selettore che comprendeva anche
   `.contact-page-area .eg-recapiti a` — due classi piu' un tipo, cioe' piu'
   specifico della regola di §7.7 che dava `display:block` ai due numeri. Il
   markup li mette come <a> fratelli senza niente in mezzo, e affiancati si
   leggevano «0546 634391 335 7121769»: un numero sbagliato di undici cifre
   (MISURATO sullo screenshot a 1280px). Il `display` sta in DUE regole
   separate qui sotto, ognuna col suo caso. */
.eg-recapiti .number,
.eg-recapiti .mail,
.eg-recapiti-note a,
.eg-recapiti-indicazioni a,
.contact-page-area .eg-recapiti a{
  color: var(--alpi-accento-scuro);
  text-decoration: underline;
  text-underline-offset: 4px;
}
/* i due numeri e la mail: uno per riga, bersaglio da 44px largo quanto il
   testo e non quanto la colonna */
.contact-page-area .eg-recapiti .number,
.contact-page-area .eg-recapiti .mail{
  display: block;
  width: fit-content;
  padding: 9px 0;
}
/* i link dentro le note e le indicazioni: stanno in una frase, quindi
   inline-block col padding che li porta a 44 senza spezzare il paragrafo */
.eg-recapiti-note a,
.eg-recapiti-indicazioni a{
  display: inline-block;
  padding: 9px 0;
}

/* LA COLONNA DEI RECAPITI NON STA IN FONDO ALLA PAGINA.
   Il tema allinea questa riga in basso (`.request-wrap` dentro un `.row`
   flex con `align-items:end`): in home ha senso, perche' a sinistra c'e' un
   titolo e a destra un modulo della stessa altezza. Su contatti il NAP e' un
   blocco da 363px e il modulo ne fa 1130: MISURATO, i recapiti cominciavano
   767px SOTTO il titolo della sezione, in fondo a una colonna vuota. Il NAP
   e' la prima cosa che questa pagina deve mostrare. */
.contact-page-area.request-wrap{ align-items: flex-start; }
.eg-recapiti .number{
  font-family: var(--tl-ff-heading);
  font-size: 22px;
  line-height: 1.2;
}
.eg-recapiti .number:hover,
.eg-recapiti .mail:hover{ text-decoration-thickness: 2px; }

/* --- 10.14 (C6) LE INDICAZIONI -------------------------------------- */
.eg-recapiti-indicazioni{ margin: 6px 0 0; }

/* --- 10.15 (C9) L'ANCHOR DEL GRUPPO DENTRO LA FRASE ------------------
   Non e' piu' dentro la pastiglia del bottone (55 caratteri in un componente
   fatto per quattro parole): e' un link in un paragrafo. Percio' NON si
   allarga a 44px — e' un link in mezzo a un discorso, e allargarlo
   sfalserebbe l'interlinea. */
.eg-gruppo-frase{ margin-top: 18px; }
.eg-gruppo-frase a{
  color: var(--alpi-accento-scuro);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.eg-gruppo-frase a:hover{ text-decoration-thickness: 2px; }


/* ============================================================
   11. IL MODULO CHE INVIA — 2026-09-22
   ------------------------------------------------------------
   Da oggi i due moduli del sito (home e contatti) mandano davvero, a
   Odoo. Le classi qui sotto NON sono inventate: sono quelle che produce
   tools/lib/lead.mjs (CSS_LEAD), uguali sui sei siti del gruppo, e questo
   foglio si limita a portarle sui colori di Alpi Adelmo. La semantica dei
   nomi non si cambia: se un domani la libreria aggiunge un pezzo, qui si
   aggiunge una regola, non si rinomina niente. A fine build
   tools/alpi-shell.mjs controlla che ci siano tutte.

   Le regole sono DOPPIE perche' i due moduli stanno su due superfici
   diverse — la fascia fotografica scura della home (.eg-modulo--scura) e
   il fondo chiaro di contatti (.eg-modulo--chiara) — ed e' esattamente il
   difetto gia' misurato su questo sito: le regole scritte per il modulo
   scuro scrivevano bianco su bianco sull'altro (vedi §7.11).
   ------------------------------------------------------------ */

/* 11.1 L'ESCA PER I ROBOT. Un campo «Sito web» che un umano non vede e non
   compila: se arriva pieno, l'invio viene scartato. Fuori schermo e non
   `display:none`, che alcuni programmi automatici rispettano. Se questa
   regola sparisce, in mezzo al modulo compare un campo in piu'. */
.eg-hp{
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* 11.2 LA CASELLA DI CONSENSO. E' una riga di testo con una casella, non
   un'etichetta di campo: si azzerano maiuscolo e spaziatura che il tema
   da' a `.form-title`. La casella prende l'accento del sito da
   `accent-color`, che e' una riga e vale per tutti i browser moderni. */
/* la riga che compare SOLO senza JavaScript: e' un avviso, quindi si
   stacca dal resto con il filetto dell'accento. Non e' un riquadro
   colorato: chi la vede ha gia' un browser in condizioni particolari e
   non ha bisogno di un allarme, ha bisogno di un numero di telefono. */
.eg-form-hint--noscript{
  margin: 0 0 20px;
  padding: 12px 16px;
  border-left: 3px solid var(--tl-color-theme-primary);
}
.eg-modulo--scura .eg-form-hint--noscript{ background: rgba(255, 255, 255, .10); }
.eg-modulo--chiara .eg-form-hint--noscript{ background: rgba(0, 0, 0, .05); }

/* la riga che precede la casella: e' l'informazione, non una nota a pie'
   di modulo. Prende aria sopra (viene dall'ultimo campo) e poco sotto,
   perche' con la casella forma un blocco solo. */
.eg-form-hint--consenso{
  margin: 6px 0 12px;
  max-width: 58ch;
}
.eg-consenso{
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin: 0 0 20px;
}
/* 24x24 e non i 20 della libreria: e' la misura minima di un bersaglio
   secondo WCAG 2.5.8 (AA), e MISURATO a 390px con 20px la casella era
   l'unico controllo del modulo sotto soglia. La <label> accanto e'
   cliccabile e grande, ma il bersaglio che si conta e' il controllo. */
.eg-consenso input[type="checkbox"]{
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  margin-top: 1px;
  accent-color: var(--tl-color-theme-primary);
}
.eg-consenso label{
  margin: 0;
  font-size: 15px;
  line-height: 1.5;
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
}
.eg-consenso a{
  text-decoration: underline;
  text-underline-offset: 3px;
}
.eg-modulo--chiara .eg-consenso label{ color: var(--tl-color-text-body); }
.eg-modulo--chiara .eg-consenso a{ color: var(--alpi-accento-scuro); }
.eg-modulo--scura .eg-consenso label{ color: rgba(255, 255, 255, .86); }
.eg-modulo--scura .eg-consenso a{ color: var(--alpi-accento-su-scuro); }

/* 11.3 IL WIDGET ANTI-SPAM. `min-height` riservata PRIMA che Cloudflare lo
   monti: senza, il riquadro compare a pagina disegnata e spinge giu' il
   tasto d'invio mentre qualcuno sta per premerlo (e' uno spostamento di
   impaginato, CLS, ed e' anche un errore di mira). 65px e' l'altezza del
   widget nella sua forma flessibile. */
.eg-turnstile{
  margin-bottom: 20px;
  min-height: 65px;
}

/* 11.4 L'ESITO. Vuoto non esiste (`:empty`), cosi' non lascia un riquadro
   grigio sotto il tasto finche' non c'e' niente da dire. Il filetto a
   sinistra cambia colore col risultato: verde e rosso sono SEGNI, non
   testo — il testo resta quello del corpo, che il contrasto ce l'ha gia'.
   `tabindex="-1"` glielo mette lead.js per portarci il fuoco: l'anello
   deve vedersi, o chi naviga da tastiera non sa dove e' finito. */
.eg-lead-esito:empty{ display: none; }
.eg-lead-esito{
  margin-top: 20px;
  padding: 14px 18px;
  border-left: 3px solid var(--tl-color-theme-primary);
  font-size: 15px;
  line-height: 1.5;
}
.eg-modulo--chiara .eg-lead-esito{
  background: rgba(0, 0, 0, .05);
  color: var(--tl-color-text-body);
}
.eg-modulo--scura .eg-lead-esito{
  background: rgba(255, 255, 255, .10);
  color: #FFFFFF;
}
.eg-lead-esito--ok{ border-left-color: #2E7D32; }
.eg-lead-esito--errore{ border-left-color: #C62828; }
.eg-lead-esito:focus{
  outline: 2px solid var(--tl-color-theme-primary);
  outline-offset: 2px;
}
form[data-eg-stato="inviato"] .eg-lead-campi{ display: none; }


/* 11.5 IL LINK LEGALE IN FOOTER. E' l'unico link autonomo della banda del
   copyright, quindi vale la regola dei bersagli (44px), non quella dei
   link dentro una frase. MISURATO alla prima build: 56x20px. Il padding
   lo porta a 44 e il margine negativo di pari misura toglie di nuovo lo
   spazio al LAYOUT, cosi' la riga del copyright resta alta com'era: si
   allarga l'area sensibile, non la banda. */
.copyright-content p a{
  display: inline-block;
  padding: 12px 8px;
  margin: -12px -8px;
  text-decoration: underline;
  text-underline-offset: 3px;
}


/* ============================================================
   12. L'INFORMATIVA PRIVACY (privacy.html) — 2026-09-22
   ------------------------------------------------------------
   Una pagina di solo testo lungo. L'unica cosa che le serve e' una
   MISURA DI RIGA: dentro `.container-2` a 1280px un paragrafo arriva a
   oltre 120 caratteri, che e' il doppio di quello che si legge senza
   perdere il rigo. 68ch e' la colonna; tutto il resto (tipografia,
   spaziature della sezione, elenchi col filetto) e' gia' del tema e di
   .eg-blocco, e non si riscrive.
   ------------------------------------------------------------ */
.eg-legale{ max-width: 68ch; }
.eg-legale p{ margin-bottom: 14px; }
.eg-legale p:last-child{ margin-bottom: 0; }
.eg-legale .eg-lista-wrap{ margin-bottom: 18px; }
/* la data dell'ultimo aggiornamento: e' un dato di servizio, non una
   frase del discorso, e si stacca dal testo senza diventare un riquadro */
.eg-legale__data{
  margin-top: 24px;
  font-size: 15px;
  color: var(--tl-color-grey-1);
}


/* ============================================================
   9. NOTE DI CANTIERE — cosa NON e' stato fatto, e perche'
   ------------------------------------------------------------
   1. Il logo su fondo scuro MANCA, e resta la voce numero uno da chiedere
      al committente. Il file consegnato e' RGB senza alpha (PNG color
      type 2, misurato): il suo fondo bianco e' opaco. Fino al 2026-08-20
      alpi.css gli metteva sotto una targa bianca arrotondata; con B6 del
      mandato correttivo la targa e' uscita e su tutte le superfici scure
      (testata, footer, preloader) il marchio e' la WORDMARK TESTUALE
      «Alpi Adelmo / impresa edile» in Cal Sans bianco — che e' quello che
      fa il demo. Il PNG resta solo nel pannello del menu mobile, che il
      tema dipinge di bianco. Serve la variante in bianco su trasparente,
      come il logo-2.png del tema: quel giorno torna in testata e §10.2/§3
      si semplificano.
   2. La striscia dei cantieri (.project-accordion-wrap) e' larga 3000px
      sopra i 768px e viene ritagliata da .project-section-6.overflow-hidden:
      a 1280 se ne vede poco piu' di meta'. E' cosi' anche nel demo: non si
      corregge, e' il disegno del tema.
   3. Le percentuali delle barre delle maestranze restano da confermare col
      committente. Dal 2026-08-20 la dichiarazione NON e' piu' in pagina
      (A1 del mandato: era una nota di lavorazione sotto le barre) ma nel
      commento HTML che le precede, e in tools/build-alpi-home.mjs. Le barre
      portano valori realistici e la veste del tema: non si vestono per
      sembrare piu' veri di quello che sono, e non si vestono per sembrare
      provvisori.
   4. Nessun `overflow-x:hidden` aggiunto da noi. Quello di main.css su
      html/body e' del tema e nasconde i sintomi: se compare uno
      scorrimento laterale va trovato l'elemento che sporge, non coperto.
   ============================================================ */

/* MENU A TENDINA: freccia giu' a menu chiuso, su a menu aperto (richiesta
   del committente 2026-10-03: senza segno la select sembrava un campo di
   testo come gli altri). E' un segno d'interfaccia, non il motivo a punta
   del marchio. La classe `eg-select--aperto` la mette lead.js (tools/lib/
   lead-form.js). Tre classi come la regola del tema `.request-form-wrap
   .form-item .form-control`, che altrimenti azzera lo sfondo e con lui la
   freccia (succedeva qui: la .eg-select a una classe perdeva). Il colore e'
   scritto a mano: un `data:` non legge le variabili CSS. */
.request-form-wrap .form-item .eg-select{
  appearance: none;
  -webkit-appearance: none;
  padding-right: 52px;
  cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%230F7EAF' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 22px center;
}
.request-form-wrap .form-item .eg-select.eg-select--aperto{
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 8l6-6 6 6' fill='none' stroke='%230F7EAF' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
}

/* PRELOADER SENZA BARRA DI SCORRIMENTO: il tema scrive
   `.preloader span{ overflow-x: hidden }` per la sua scritta «ANTRA»; sugli
   span del marchio, con l'asse verticale che per regola CSS diventa `auto`,
   il testo (piu' alto della sua riga a line-height 1) mostrava per una
   frazione di secondo un riquadro con la barra (segnalazione del
   committente, 2026-10-03). Gli span del marchio non hanno nulla da tagliare. */
.preloader .eg-site-name span{ overflow: visible; }
