/* ============================================================
   faro.css — foglio di marca di Faro 2016, sopra il tema Antra
   (theme/antra/index-5.html, «versione 5», header base).

   Modellato su sites/studior/assets/css/studior.css e
   sites/alpiadelmo/assets/css/alpi.css, che sono la ricetta approvata: 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 -> il blu notte di Faro 2016) 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 non abbiamo o su una misura che il nostro testo non
        rispetta;
     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
   una scala tipografica o un sistema di spaziature. Il tema decide.

   OGNI OVERRIDE HA ACCANTO LA MISURA CHE L'HA RESO NECESSARIO. Se la
   misura non c'e', la riga non doveva esserci.

   ORDINE DI CARICAMENTO (lo scrive tools/faro-shell.mjs):
     bootstrap · fontawesome · venobox · nice-select · carouselTicker ·
     animation · swiper · main.css       (il TEMA, intatto)
     -> variables.css     (solo :root, i token di marca di build/faro)
     -> faro-guscio.css   (le riparazioni strutturali, GENERATO)
     -> faro.css          (questo file)
   components/shared/base.css NON e' nella catena: ridefinisce .container
   (72rem) e h1-h4/p/a sopra il tema, e la tipografia del tema e' criterio
   di collaudo (CLAUDE.md §1). Stessa decisione di alpi (2026-08-20),
   savorani (2026-09-07) e studior (2026-09-08).
   ============================================================ */


/* ============================================================
   1. LO STRATO DI VARIABILI DEL TEMA E L'ACCENTO
   ------------------------------------------------------------
   CONTRASTI MISURATI SULLE SUPERFICI VERE, non su bianco: il fondo di
   pagina del tema e' #F6F6F6 (`body{background-color:#f6f6f6}`, e
   `.tl-bg-color` idem); le fasce scure di index-5 sono #1C1C1D (hero) e
   #151515 (i quattro pilastri); il velo della CTA e' nero al 54%.
     #2F4A75 (accento, --ramo-investimenti)  su #FFFFFF 8,91 · su #F6F6F6 8,24
                                             bianco sopra 8,91
       -> segni, testo su chiaro, fondo di componente col bianco sopra: ok
     #263C5F (--color-primary-strong)        su #F6F6F6 10,26
       -> stati premuti e testo piccolo, con margine
     #698CC3 (--color-primary-on-dark)       su #191919 5,14 · #1C1C1D 4,98 · #151515 5,34
       -> testo e segni sulle fasce scure PIENE
       -> e' anche il colore della parola evidenziata dentro i titoli
          bianchi e del fuoco visibile sulle superfici scure (art
          direction §3.2 e §3.7: la tavola dei colori la fissa il
          ui-designer, qui si applica e si misura)
     #0F70B7 (blu di gruppo)                 su #F6F6F6 4,83
       -> SOLO firma endorsed e footer di gruppo (regola di piattaforma)
     #7FB6E0                                 su #191919 8,10 · su #151515 8,41
       -> la firma endorsed sulle superfici scure
   TOKEN CORE IMMUTABILI: qui non si ridefinisce nessun --ink-*, --sand-*,
   --blue-*; si leggono e si usano. I valori vengono da
   tokens/brand/faro.json (build/faro/variables.css).
   ============================================================ */
:root{
  --tl-color-theme-primary: #2F4A75;   /* L'ACCENTO: cambia tutto insieme */
  --fa-accento: #2F4A75;
  --fa-accento-scuro: #263C5F;         /* stati premuti, testo piccolo su chiaro */
  --fa-accento-su-scuro: #698CC3;      /* testo e segni su fascia scura piena */
  --fa-accento-soft: #E9EEF6;          /* SOLO sfondo (token primary-soft) */
  --fa-blu-gruppo: #0F70B7;            /* SOLO firma endorsed e footer di gruppo */
  --fa-blu-gruppo-chiaro: #7FB6E0;     /* la firma sulle superfici scure */

  /* IL PUNTO D'ARRIVO DELLE ANCORE. La testata agganciata di questo tema
     misura 88px a 390 e 98px a 1280 (`.primary-header.fixed`): 110px sono
     la piu' alta delle due piu' un filo d'aria, cosi' il titolo della
     sezione richiesta si legge sotto la barra invece di finirci dietro.
     LA LEGGE ANCHE IL JAVASCRIPT: `faro-menu.js` prende questo valore da
     getComputedStyle invece di riscriverlo, cosi' la misura sta in UN
     posto solo (senza JS agisce lo `scroll-margin-top` del §6). */
  --fa-ancora-offset: 110px;

  /* caratteri del tema; corretto solo il FALLBACK. Il tema scrive
     `--tl-ff-heading: 'Cal Sans', serif`: se Cal Sans non carica, i titoli
     passano da una sans geometrica a un Times, e a 92px nella hero il
     salto di larghezza e di interlinea sposta tutto l'impaginato.
     system-ui e' molto piu' vicina per metrica. */
  --tl-ff-heading: 'Cal Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --tl-ff-body: 'Golos Text', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --tl-ff-p: 'Golos Text', system-ui, -apple-system, 'Segoe UI', sans-serif;

  /* colori del tema RIDICHIARATI: se il :root di main.css non arrivasse
     alla pagina (e' successo sul portale, ed e' il bug noto di CLAUDE.md
     §2.2), 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-bg-2: #ffffff;
  --tl-color-grey-1: #59585D;
  --tl-color-grey-2: #9F9FA4;
  --tl-color-border-1: #E3E3E8;
  --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;
  /* l'accordion del tema scrive `--lt-` invece di `--tl-`: e' un refuso
     del venditore, e senza queste due righe il testo delle risposte
     eredita `color: inherit` (serve a WP4, che monta le FAQ) */
  --lt-color-heading-primary: #191919;
  --lt-color-text-body: #4D4D52;
}
body{ font-family: var(--tl-ff-body); }
h1, h2, h3, h4, h5, h6,
.section-title, .sub-heading, .tl-primary-btn, .cta-btn{
  font-family: var(--tl-ff-heading);
}


/* ============================================================
   2. LINGUA — via il Title Case, «edilgetica» minuscolo
   ------------------------------------------------------------
   Il tema applica `text-transform: capitalize` a titoli, voci di menu e
   bottoni: in inglese e' una convenzione tipografica, in italiano e' un
   errore di ortografia, e su un titolo di 92px si vede da lontano
   («La Tua Casa, Un Unico Referente»).
   L'occhiello (`.sub-heading`) resta MAIUSCOLO: e' del tema, e in
   maiuscolo «FARO 2016 · SOCIETÀ IMMOBILIARE INTEGRATA» non ha maiuscole
   sbagliate.
   ============================================================ */
.section-heading .section-title,
.header .primary-header-inner .header-menu-wrap ul li a,
.tl-primary-btn,
.cta-btn,
.feature-item .title,
.project-item-5 .project-content .title,
.process-item-wrap-5 .process-item-5 .content .title,
.counter-item .sub-title,
.footer-list li a,
h1, h2, h3, h4, h5, h6{
  text-transform: none;
}
/* L'OCCHIELLO E' UN <p> (TRAPPOLA 7: come <h4> aveva
   data-text-animation e restava invisibile senza JS). Il tema lo veste
   con `.section-heading .sub-heading`, che vale anche su un <p>, ma le
   regole di paragrafo gli aggiungono `margin-bottom:15px` e
   `line-height:1.625`: MISURATO su alpi, la pillola cresceva da 30 a 44px
   di altezza. Qui torna la geometria dell'h4 del tema. */
.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;
  /* LA PILLOLA NON E` UN PARAGRAFO, anche se ora e` un <p>. main.css da`
     `width:100%` ai <p> di certi contenitori, e la regola varrebbe anche
     su di lei: il bordo arriverebbe a fine colonna con il testo finito a
     un terzo. width:auto la rimanda a stringersi sul testo, come fa
     l`<h4> del tema. */
  width: auto;
}
/* il nome del gruppo e' sempre minuscolo, anche dentro un titolo */
.eg-lockup__firma,
.eg-endorse{ text-transform: lowercase; }


/* ============================================================
   3. IL LOCKUP — il wordmark (o il PNG di WP3) + la firma endorsed
   ------------------------------------------------------------
   Faro 2016 non ha un marchio storico. Finche' WP3 non consegna i due PNG
   (`faro-2016-340.png` su chiaro, `faro-2016-scuro-360.png` su scuro), il
   guscio rende un WORDMARK TESTUALE, che e' esattamente quello che fa il
   demo: index-5 monta in testata un file che e' la scritta «antra» in
   bianco, alta 40px. Il wordmark e' un <span> dentro l'<a>, non un <h1> e
   non un <img>: il nome accessibile del link non dipende da un file che
   potrebbe non arrivare.
   ============================================================ */
.eg-lockup{
  display: inline-flex;
  align-items: baseline;
  column-gap: 10px;
  flex-wrap: wrap;
}
/* MISURATO: con il PNG a max-height 44px l'<a> chiudeva a 43,98px e
   shoot.mjs lo contava sotto la soglia dei 44. min-height lo fissa. */
.eg-lockup__nome{ display: inline-flex; align-items: center; min-height: 44px; }
.eg-wordmark{
  font-family: var(--tl-ff-heading);
  font-size: 30px;
  line-height: 1.1;
  letter-spacing: .01em;
  color: var(--tl-color-common-white);
  white-space: nowrap;
}
.eg-wordmark b{ font-weight: 400; color: var(--fa-accento-su-scuro); }
/* il pannello del menu mobile e' l'UNICA superficie chiara del guscio
   (main.css riga 813: `.mobile-side-menu{background-color:var(--tl-color-common-white)}`) */
.eg-lockup--side .eg-wordmark{ color: var(--tl-color-heading-primary); }
.eg-lockup--side .eg-wordmark b{ color: var(--fa-accento); }
/* il logo, quando WP3 lo consegna: `img{max-width:100%}` del tema senza
   `height:auto` schiaccerebbe il PNG appena una regola ne stringe la
   larghezza (faro-guscio.css §1 rimette height:auto; qui c'e' il tetto) */
.eg-logo{ max-height: 44px; width: auto; }

/* la firma endorsed: e' il link al portale, e vive su superfici scure
   (testata, preloader, footer) e su una chiara (il pannello) */
.eg-lockup__firma{
  font-family: var(--tl-ff-body);
  font-size: 13px;
  line-height: 1;
  color: var(--fa-blu-gruppo-chiaro);
  white-space: nowrap;
  /* 28px di bersaglio: sopra il minimo AA di 24px per un link inline.
     A 44 la barra della testata andava a due righe (misurato su studior a
     768), e la firma NON e' un controllo autonomo: e' la seconda meta' di
     un lockup. */
  padding: 7px 0;
}
.eg-lockup__firma:hover,
.eg-lockup__firma:focus-visible{ color: var(--tl-color-common-white); }
.eg-lockup--side .eg-lockup__firma{ color: var(--fa-blu-gruppo); }
.eg-lockup--side .eg-lockup__firma:hover{ color: var(--fa-accento-scuro); }
/* nel preloader la firma e' TESTO e non link: tutto il preloader e'
   aria-hidden e main.js lo rimuove dopo qualche secondo */
.eg-lockup__firma--testo{ display: inline-block; }
.eg-site-name{ display: flex; align-items: baseline; column-gap: 10px; }
/* sotto i 576px la firma non ci sta accanto al marchio: va sotto, e la
   testata resta su una riga sola */
@media only screen and (max-width: 575px){
  .eg-lockup--header{ flex-direction: column; row-gap: 0; }
  /* MISURATO a 360: con padding 2px la firma chiudeva a 16px, sotto anche
     il minimo AA di 24 per un link inline. Il padding resta, cala il corpo. */
  .eg-lockup--header .eg-lockup__firma{ font-size: 12px; padding: 6px 0; }
  .eg-wordmark{ font-size: 24px; }
}


/* ============================================================
   4. LA HERO — un solo scaglione ritoccato, e la misura che lo impone
   ------------------------------------------------------------
   Il tema scrive 110px sul titolo della hero (`.hero-wrap-2
   .hero-content-2 .section-heading .section-title`), 80 sotto i 1200 e
   60 sotto i 768.
   MISURATO con getBoundingClientRect() su OGNI scaglione, con l'H1 del
   copy §2.1 dentro (che e' piu' lungo del titolo del demo):
     360   60px  ->  testo fino a 328 in una colonna di 348   TIENE
     390   60px  ->  testo fino a 351 in una colonna di 366   TIENE
     768   80px  ->  testo fino a 743 in una colonna di 744   TIENE
     1024  80px  ->  testo fino a 536 in una colonna di 550   TIENE
     1280 110px  ->  CINQUE righe, 605px di titolo, e la fotografia
                     dell'hero scende a y=895, cioe' FUORI dalla prima
                     schermata di un portatile (800px). Nel demo la
                     fotografia sta a y=675 ed e' meta' del colpo d'occhio.
            92px  ->  quattro righe, 405px, fotografia a y=695: la stessa
                     resa del demo. 92 = 110 x (15/18), cioe' il rapporto
                     fra i caratteri della riga piu' lunga del demo
                     («Interior Design») e della nostra («un unico
                     referente»). Stesso metodo di studior.css §4.
     1600  92px  ->  tre righe, fotografia a y=594 (110px terrebbe, ma la
                     scala deve restare una sola sopra i 1200).
   Gli altri due scaglioni NON si toccano: il corpo del tema tiene, e una
   riga di CSS che non serve e' una riga che allontana dal demo.
   ============================================================ */
@media only screen and (min-width: 1200px){
  .hero-wrap-2 .hero-content-2 .section-heading .section-title{ font-size: 92px; }
}
/* LA PAROLA EVIDENZIATA DENTRO UN TITOLO BIANCO. Il tema la dipinge con
   l'accento pieno (main.css riga 75): #2F4A75 su #1C1C1D fa 1,73:1 e su
   #151515 2,05:1, cioe' sparisce. Ci va la variante chiara che l'art
   direction §2 calcola per i fondi scuri, #698CC3: 4,98:1 sull'hero e
   5,34:1 sulla fascia dei pilastri.
   Specificita' (0,4,0) contro la (0,3,0) del tema. */
.white-content .section-heading .section-title span,
.section-heading.white-content .section-title span,
.cta-wrap-5 .section-heading .section-title span{ color: var(--fa-accento-su-scuro); }
/* il pallino della pillola sulle fasce scure: stesso motivo, stessa cura
   (main.css riga 73 lo dipinge con l'accento pieno) */
.white-content .section-heading .sub-heading:before,
.section-heading.white-content .sub-heading:before{ background-color: var(--fa-accento-su-scuro); }


/* ============================================================
   5. LA TESTATA — header base, il tondo del menu, il pannello
   ============================================================ */
/* --- F6: il chevron della tendina diventa il FILETTO ------------------
   Il motivo a punta e' abolito (CLAUDE.md §2.3). Il tema lo scrive in DUE
   posti: main.css riga 701 (`.menu-item-has-children:after`, in barra) e
   riga 857 (`.mean-expand:before`, dentro il pannello mobile, dove si
   vede solo ad accordion aperto). Il sito di Faro 2016 non ha tendine —
   quattro pagine non ne hanno bisogno — ma le due regole restano: il
   giorno in cui WP4 ne aggiunge una, il chevron non rientra dalla
   finestra. `\f068` = fa-minus, che e' ancora un glifo del tema.
   Sul pannello via anche il `rotate(90deg)` della voce aperta: su un
   filetto diventerebbe un trattino verticale. */
.header .primary-header-inner .header-menu-wrap ul .menu-item-has-children:after{ content: "\f068"; }
.mean-bar .mean-nav.mean-nav > ul li a.mean-expand:before{ content: "\f068"; }
.mean-bar .mean-nav.mean-nav > ul li a.mean-expand.mean-clicked:before{ transform: none; opacity: .55; }

/* --- «Home» e' una voce del SOLO pannello mobile ----------------------
   In barra il marchio e' gia' il link alla home, e una voce «Home» a
   dieci pixel dal marchio e' rumore. Sotto i 992px il pannello lo riempie
   meanmenu clonando questa <ul>, e li' «Home» serve. */
@media only screen and (min-width: 993px){
  .header .primary-header-inner .header-menu-wrap ul li.eg-solo-mobile{ display: none; }
}

/* --- le voci del menu: bersaglio da 44px ------------------------------
   Il tema da' `padding:36px 0` alle voci in barra (main.css riga 664),
   che e' abbondante. Dentro il pannello, invece, meanmenu le ridisegna:
   qui si dichiara il minimo. */
.mean-bar .mean-nav > ul > li > a{ min-height: 44px; display: flex; align-items: center; }

/* --- il tondo che apre il menu ---------------------------------------
   E' il `.sidebar-icon > .sidebar-trigger` del tema (56x56, bordo bianco
   al 9%): cambia cosa fa, non come si vede. Qui solo il fuoco visibile,
   che il tema non da' a nessun bottone. */
.eg-menu-toggle{ cursor: pointer; }
.eg-menu-toggle:focus-visible,
.mobile-side-menu-close:focus-visible{
  outline: 2px solid var(--fa-accento-su-scuro);
  outline-offset: 3px;
}

/* --- il pannello off-canvas ------------------------------------------
   Il pannello di questo tema e' CHIARO (main.css riga 813) e il tema ci
   scrive dentro in --tl-color-heading-primary: il testo del tema va bene
   com'e'. Qui si veste solo cio' che e' NOSTRO. */
.eg-side-title{
  font-family: var(--tl-ff-heading);
  font-size: 20px;
  line-height: 1.2;
  color: var(--tl-color-heading-primary);
  margin-bottom: 15px;
}
.mobile-side-menu .side-menu-list a{ min-height: 44px; display: inline-flex; align-items: center; }


/* ============================================================
   6. ACCESSIBILITA' — skip link, fuoco, ancore
   ------------------------------------------------------------
   `.skip-link` a `left:-9999px` e' la tecnica standard dell'off-screen
   accessibile (la stessa di components/shared/base.css:29): non e' un
   elemento nascosto per sbaglio, e shoot.mjs lo segnala come «sporgente»
   in tutti i report. E' un falso positivo noto.
   ============================================================ */
.skip-link{
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 200;
  background: var(--fa-accento);
  color: #fff;
  padding: 12px 20px;
  border-radius: 0 0 12px 0;
  font-family: var(--tl-ff-heading);
}
.skip-link:focus{ left: 0; }
a:focus-visible,
button:focus-visible{
  outline: 2px solid var(--fa-accento);
  outline-offset: 2px;
}
.white-content a:focus-visible,
.footer-section a:focus-visible,
.header a:focus-visible{ outline-color: var(--fa-accento-su-scuro); }
/* senza JavaScript il salto all'ancora e' quello nativo: lo stesso
   offset che faro-menu.js usa con JavaScript acceso */
[id]{ scroll-margin-top: var(--fa-ancora-offset); }
main:focus{ outline: none; }


/* ============================================================
   7. I COMPONENTI NOSTRI (.eg-*) — tipografia, colori e raggi dal tema
   ============================================================ */

/* --- 7.1 Il bottone di sezione ---------------------------------------
   Un contenitore, non un bottone nuovo: dentro c'e' il `tl-primary-btn`
   del tema. Serve dove il componente del tema non ha uno slot per
   l'uscita (la process-section-5). */
.eg-sezione-btn{ margin-top: 40px; }

/* --- 7.2 L'elenco dei quattro fatti (about-section-5) -----------------
   La veste e' del tema (`.about-content-5 .about-bottom-content ul li`,
   main.css riga 1907): filetto di separazione, 18px, Cal Sans. Qui solo
   il marcatore, che nel tema era un motivo a punta dentro una <i>. */
.eg-lista{ list-style: none; padding-left: 0; margin-bottom: 0; }
.about-content-5 .about-bottom-content ul li i{ color: var(--fa-accento); flex: 0 0 auto; }
/* le voci sono lunghe: `align-items:center` del tema centra l'icona a
   meta' di due righe, e la seconda riga rientra sotto l'icona. Con
   `align-items:flex-start` l'icona resta sulla prima riga. */
.about-content-5 .about-bottom-content ul li{ align-items: flex-start; line-height: 1.35; }

/* --- 7.3 Il blocco «Il gruppo» (era la newsletter-section) ------------ */
.eg-gruppo-wrap{ max-width: 900px; margin: 0 auto; }
.eg-gruppo-section .section-heading{ align-items: center; }
.eg-gruppo-section .section-heading p{ max-width: 780px; }
.eg-gruppo-frase{ margin-top: 10px; }
.eg-gruppo-frase a{ color: var(--fa-blu-gruppo); text-decoration: underline; text-underline-offset: 3px; }
.eg-gruppo-frase a:hover{ color: var(--fa-accento-scuro); }
.eg-gruppo-btn-wrap{ display: flex; justify-content: center; margin-top: 30px; }

/* --- 7.4 Il footer di gruppo -----------------------------------------
   Le colonne sono quelle del tema. Qui: le due righe di ogni realta' del
   gruppo (nome + descrittore), i bersagli da 44px e la filigrana. */
.eg-footer-title{
  font-family: var(--tl-ff-heading);
  font-size: 20px;
  line-height: 1.2;
  color: var(--tl-color-common-white);
  margin-bottom: 20px;
}
.eg-footer-gruppo .eg-realta,
.eg-footer-gruppo .eg-endorse{ display: block; }
.eg-footer-gruppo .eg-endorse{ font-size: 14px; opacity: .72; line-height: 1.3; }
.eg-footer-gruppo li{ margin-bottom: 12px; }
/* COLLISIONE MISURATA, e la correzione va qui perche' il difetto e' qui.
   La riga sotto — `.footer-list li a{display:inline-flex}` (0,1,2), che
   serve a dare 44px di bersaglio alle voci di menu — batteva
   `.eg-footer-gruppo a{display:block}` (0,1,1): le due righe di ogni
   realta' del gruppo (nome + descrittore) diventavano due elementi flex
   AFFIANCATI, e nel footer si leggeva «Il gruppo edilgetica  il valore,
   piano dopo piano.» sulla stessa riga, con «Studio R» spezzato in due.
   Qui la specificita' e' (0,2,2) e la colonna del gruppo torna a due
   righe per voce. */
.footer-list.eg-footer-gruppo li a,
.eg-footer-gruppo > li > span{ display: block; padding: 4px 0; }
.eg-footer-delimitazione{
  font-size: 14px;
  line-height: 1.45;
  opacity: .82;
  margin: 0 auto 6px auto;
  max-width: 620px;
  text-align: center;
}
/* L'INDIRIZZO E' UN <address>, NON UN <p>, e il tema colora solo i <p>
   (`.footer-widget p{color:var(--tl-color-common-white)}`, main.css
   riga 3302). MISURATO: senza questa riga l'<address> ereditava
   `--tl-color-text-body` (#4D4D52) e finiva su #1C1C1D a 1,6:1, cioe'
   illeggibile. Il tag resta quello giusto, il colore torna quello del
   tema. */
.footer-widget address{ color: var(--tl-color-common-white); font-size: 16px; font-style: normal; margin-bottom: 10px; }
.footer-address .number,
.eg-footer-recapito .number{ display: inline-flex; align-items: center; min-height: 44px; }
.footer-list li a{ display: inline-flex; align-items: center; min-height: 44px; }
/* la firma endorsed nel footer sta su fondo scuro come in testata */
.eg-lockup--footer{ margin-bottom: 10px; }

/* --- 7.5 La CTA di chiusura ------------------------------------------ */
.eg-cta-riga{
  color: var(--tl-color-common-white);
  margin-top: 24px;
  margin-bottom: 0;
  font-size: 16px;
}
/* il numero e l'uscita secondaria del funnel (docs/funnel-faro.md: «hai un
   terreno da proporci?») hanno la stessa veste. SENZA questa regola il
   secondo link ereditava il bianco del paragrafo e NON aveva sottolineatura:
   MISURATO sullo screenshot, era indistinguibile dal testo intorno — un
   link riconoscibile solo da chi ci passa sopra col mouse (WCAG 1.4.1). */
.eg-cta-riga .number,
.eg-cta-riga .eg-cta-link{
  color: var(--fa-accento-su-scuro);
  text-decoration: underline;
  text-underline-offset: 3px;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
/* il tondo del tema e' 120x120: sopra il minimo. Qui solo il fuoco. */
.cta-btn:focus-visible{ outline: 2px solid var(--fa-accento-su-scuro); outline-offset: 4px; }

/* --- 7.6 I passi numerati (li usa WP4 sulla pagina del metodo) -------- */
.eg-passi{ display: grid; gap: 30px; }
.eg-passo{ display: grid; grid-template-columns: 64px 1fr; gap: 20px; align-items: start; }
.eg-passo__numero{
  font-family: var(--tl-ff-heading);
  font-size: 24px;
  line-height: 1;
  color: var(--fa-accento);
  margin: 0;
}
@media only screen and (max-width: 575px){
  .eg-passo{ grid-template-columns: 1fr; gap: 8px; }
}

/* --- 7.7 Il modulo spento (lo usa WP4 su contatti) -------------------- */
.eg-modulo-avviso{ font-size: 15px; margin-bottom: 20px; }
.eg-modulo-campi{ border: 0; padding: 0; margin: 0; opacity: .62; }
.eg-form-hint{ font-size: 14px; line-height: 1.45; }


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

/* --- 8.1 L'accento del tema era l'oro: dove finisce il blu ------------
   Sulle superfici CHIARE l'accento pieno va bene (8,24:1 sul #F6F6F6 del
   tema). Sulle fasce SCURE piene il tema usa la stessa variabile per il
   testo, e li' l'accento pieno fa 1,73:1: serve la variante chiara. */
.feature-item.active .title,
.feature-item:hover .title{ color: var(--fa-accento-su-scuro); }
.feature-item.active .number{ color: var(--fa-accento-su-scuro); }
/* art direction §3.3: dove l'accento e' un PIENO che porta il bianco
   resta #2F4A75 (bianco sopra 8,91), NON si schiarisce — su #698CC3 il
   bianco cadrebbe a 3,42. Sul nero della fascia quel pieno ha pero' un
   bordo poco visibile (2,05:1): il tondo della freccia prende un filo
   bianco al 24%, come chiede l'AD. Vale per la fascia dei pilastri e per
   la hero, che sono le due superfici scure con un bottone dentro. */
.feature-section-2 .tl-primary-btn .icon,
.hero-section-2 .tl-primary-btn .icon{ border: 1px solid rgba(255, 255, 255, .24); }

/* --- 8.2 F5: la riserva di spazio della fotografia flottante ----------
   `.counter-5{padding-bottom:425px}` (main.css riga 1941) esiste solo per
   fare posto a `.counter-element`, che nel tema porta il segnaposto
   grigio «1018X594». Tolto l'elemento, quei 425px sono un vuoto misurato
   fra l'ultimo numero e la sezione successiva. Qui torna il ritmo del
   tema, che e' il pb-130 gia' scritto nella classe della sezione. */
.counter-5{ padding-bottom: 130px; }
@media only screen and (max-width: 767px){
  .counter-5{ padding-bottom: 70px; }   /* la misura che il tema stesso da' sotto i 768 */
}
/* «dal» davanti al 1960: il tema non veste il `.icon` di fianco al
   numero, quindi erediterebbe i 60px del titolo. A 24px sta sulla stessa
   linea di base e si legge come una preposizione, non come una cifra. */
.counter-item .title .eg-prefisso{
  font-size: 24px;
  line-height: 1;
  margin-right: 10px;
  align-self: center;
  color: var(--fa-accento);
}
.counter-item .title .icon{ color: var(--fa-accento); }

/* --- 8.2b La CTA e' bianco su fotografia: sotto ci va una tinta -------
   MISURATO: `.cta-bg` porta `data-speed="0.8"` e ScrollTrigger le scrive
   una `transform: translate(0px, -290.88px)` (sul demo, nello stesso
   punto, -314px). Il fondo fotografico e' quindi PIU' CORTO della fascia
   nel momento in cui si muove, e dove non arriva si vedeva la carta
   chiara del tema (#F6F6F6) sotto un titolo BIANCO: illeggibile. Sul demo
   succede identico — e' il tema, non noi — ma qui il testo e' quello che
   porta la chiamata all'azione.
   La tinta va sulla SEZIONE, non sul fondo che si muove: quando la
   fotografia c'e' non si vede (le sta dietro), quando la fotografia
   scorre o non e' stata dipinta (nessun JavaScript) resta una fascia
   scura con il bianco sopra a 17:1. Nessun effetto sulla resa del demo. */
.cta-section-5{ background-color: var(--tl-color-bg-1); }

/* --- 8.3 Il capitolato: pillole che non sono link ---------------------
   main.css riga 1994 veste la pillola solo sull'<a>
   (`.project-item-5 .project-img ul li a{…}`). I nostri riquadri NON sono
   link — non esiste una pagina per voce di capitolato — quindi la stessa
   veste va dichiarata per lo <span>, o la pillola perde bordo, raggio e
   maiuscoletto e resta una parola bianca appoggiata sulla foto. */
.project-item-5 .project-img ul li span{
  font-family: var(--tl-ff-heading);
  color: var(--tl-color-common-white);
  font-size: 13px;
  padding: 5px 15px;
  text-transform: uppercase;
  border: 1px solid var(--tl-color-common-white);
  border-radius: 100px;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* i riquadri senza fotografia (WP2 in corso) non sono buchi bianchi: la
   superficie e' la tinta chiara dell'accento, che dichiara «qui manca una
   foto» senza rompere la griglia. Si toglie quando le foto ci sono tutte. */
.project-item-5 .project-img{ background-color: var(--fa-accento-soft); }
.feature-img{ background-color: var(--tl-color-bg-1); }

/* --- 8.4 Le filigrane -------------------------------------------------
   IL DIFETTO, MISURATO a 1280 con getBoundingClientRect(): il tema scrive
   «antra» — CINQUE caratteri e nessuno spazio — a 420px nella
   counter-section e a 480px nel footer, e le due filigrane escono larghe
   1.019px e 1.165px, cioe' una parola sola, lunga quanto la fascia.
   «faro 2016» ha uno SPAZIO: i due contenitori sono `position:absolute`
   senza larghezza, quindi si stringono sul contenuto e la filigrana ANDAVA
   A CAPO — «faro» sopra, «2016» sotto, 842px di larghezza per riga nella
   counter-section, stampati sopra la fotografia e i numeri. Non e' la
   filigrana del demo: e' un titolo gigante in mezzo alla sezione.
   IL RIMEDIO: `white-space: nowrap` (una riga, come nel demo) e il corpo
   ridotto in proporzione, perche' la nostra stringa e' lunga il doppio.
   I numeri sono calcolati sulla misura del demo, non a gusto:
     counter  420 x (1.019 / 1.800 stimati a 420) ~ 230px  -> ~1.000px
     footer   480 x (1.165 / 2.060 stimati a 480) ~ 270px  -> ~1.150px
   Gli scaglioni sotto i 1400, i 992 e i 768 tengono la parola INTERA
   dentro il viewport, che e' l'unica cosa che il demo non deve fare (a
   360 «antra» del tema e' tagliata a meta': una parola sola resta
   riconoscibile, «faro 2016» diventerebbe «o 20»). */
.eg-counter-text span,
.eg-footer-text span{ white-space: nowrap; }
.eg-counter-text span{ font-size: 230px; }
.eg-footer-text span{ font-size: 270px; }
@media(max-width: 1399px){ .eg-footer-text span{ font-size: 220px; } }
@media only screen and (max-width: 992px){ .eg-footer-text span{ font-size: 150px; } }
@media only screen and (max-width: 767px){ .eg-footer-text span{ font-size: 76px; } }

/* --- 8.5 I bottoni del tema ------------------------------------------
   `.tl-primary-btn` e' alto 44px scarsi con il padding del tema: qui si
   dichiara il minimo per il bersaglio (WCAG 2.5.8) senza toccare il
   disegno. */
.tl-primary-btn{ min-height: 44px; }

/* --- 8.6 Il preloader senza JavaScript --------------------------------
   Lo rimuove main.js. Se non arriva, faro-guscio.css §5 lo spegne: qui
   c'e' solo la veste del marchio dentro. */
.preloader .site-name .eg-wordmark{ font-size: 56px; }
@media only screen and (max-width: 767px){
  .preloader .site-name .eg-wordmark{ font-size: 34px; }
}


/* ============================================================
   9. NOTE DI CANTIERE — cosa NON e' stato fatto, e perche'
   ------------------------------------------------------------
   1. NESSUN `overflow-x:hidden` aggiunto da noi. Quello di main.css su
      html e body (righe 3-4) e' del tema e resta: nascondere un
      sintomo non e' correggerlo, e i «sporge» misurati sulla home sono
      trasformate di GSAP a meta' animazione (F8), non elementi larghi.
   2. Il marchio NON esiste ancora: il wordmark del §3 e' un ripiego
      dichiarato. Quando WP3 consegna i PNG, `lockup()` passa al file da
      solo e questa nota si cancella. Va chiesto anche il VETTORIALE: e'
      l'unica strada per una favicon nitida a 32px.
   3. Le fotografie sono in parte RIPIEGHI di Alpi Adelmo (regia §3): la
      build le elenca a ogni esecuzione. Non e' un debito di CSS.
   4. Non c'e' una scala tipografica nostra. Gli unici corpi ridichiarati
      sono il titolo della hero (§4, con il calcolo), il «dal» del
      contatore (§8.2), le filigrane (§8.4) e i componenti .eg-*, che il
      tema non conosce.
   5. `prefers-reduced-motion` e il ramo `.no-js` stanno in
      faro-guscio.css, che e' generato: sono riparazioni strutturali, non
      marca.
   ============================================================ */


/* ============================================================
   10. PAGINE INTERNE (WP4)
   ------------------------------------------------------------
   Le tre pagine interne (chi-siamo, metodo, contatti) le genera
   tools/build-faro-pages.mjs sul contratto del guscio. Tutte le regole
   che servono a loro stanno QUI, con la misura accanto, e non sparse
   nelle sezioni precedenti.
   REGOLA DI QUESTA SEZIONE: solo variabili, raggi (24px e 16px), bordi e
   spaziature del TEMA. Nessun colore nuovo, nessuna scala tipografica
   nuova. Dove una misura del tema non tiene, si scrive di fianco che cosa
   si e' misurato e con che larghezza.
     10.1  la testata di pagina (briciole, occhiello, sommario, H1)
     10.2  la sezione generica .eg-blocco e lo slot fotografico
     10.3  chi-siamo: il 1960 del contatore, la riga di delimitazione
     10.4  chi-siamo: le due schede dei referenti
     10.5  chi-siamo: il manifesto nel blockquote del tema
     10.6  metodo: colonna sticky, pilastri, passi, elenco, rimandi
     10.7  contatti: recapiti, modulo spento, mappa senza iframe
   ============================================================ */

/* ------------------------------------------------------------
   10.1 LA TESTATA DI PAGINA (intestazionePagina() del guscio)
   ------------------------------------------------------------ */
.eg-page-header{ position: relative; }
.eg-briciole ol{
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 10px;
  padding: 0;
  margin: 0 0 20px 0;
  font-size: 14px;
}
.eg-briciole li + li::before{
  content: "\f068";
  font-family: "Font Awesome 6 Pro";
  font-weight: 900;
  font-size: 9px;
  opacity: .55;
  margin-right: 10px;
  vertical-align: middle;
}
/* IL LINK DELLE BRICIOLE NON PUO' ESSERE L'ACCENTO CHIARO, ed e' una
   correzione MISURATA su questa stessa riga scritta da WP0. Il
   `page-header` sta sopra una FOTOGRAFIA velata (`.overlay`, #100801 al
   64%, main.css riga 3029): dove la fotografia e' scura #698CC3 si legge,
   dove e' chiara no. Caso peggiore calcolabile — pixel bianco sotto il
   velo, composito #666666, L=0,1329 — il rapporto di #698CC3 (L=0,2570)
   scende a 1,68:1. E' esattamente cio' che succede sulla testata di
   `contatti`, dove la fotografia e' un interno controluce con una
   portafinestra bianca proprio a meta' larghezza.
   Bianco pieno sullo stesso composito fa 5,74:1 in ogni punto della
   fotografia, e la distinzione fra link e voce corrente la porta la
   sottolineatura, non il colore. */
.eg-briciole a{
  color: var(--tl-color-common-white);
  text-decoration: underline;
  text-underline-offset: 3px;
  /* 44px di bersaglio: MISURATO 40x17 senza questa riga, e la briciola e'
     un CONTROLLO AUTONOMO (non un link dentro un paragrafo), quindi WCAG
     2.5.8 non la esenta. */
  display: inline-flex;
  align-items: center;
  min-height: 44px;
}
.eg-briciole a:hover,
.eg-briciole a:focus-visible{ color: var(--fa-accento-su-scuro); }
/* la voce corrente non e' un link: bianco all'88%, che sul composito
   peggiore (#666666) fa 4,86:1 */
.eg-briciole [aria-current]{ color: rgba(255, 255, 255, .88); }
.eg-briciole li + li::before{ opacity: .7; }

/* L'OCCHIELLO DELLA TESTATA non sta in un `.section-heading`, e la
   pillola del tema e' agganciata li' (`.section-heading .sub-heading`,
   main.css riga 68): senza questa regola il kicker esce come un <p>
   grigio del corpo (#4D4D52) sopra la fotografia velata, cioe' 1,6:1 —
   MISURATO sugli screenshot delle tre testate, dove «Chi siamo»,
   «Il metodo» e «Contatti» erano praticamente invisibili.
   Qui c'e' la STESSA geometria del tema — 12px, maiuscolo, padding
   7/19/7/28, bordo 1px, raggio 100px, pallino a sinistra — con i colori
   della variante su scuro. */
.eg-page-header .sub-heading{
  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);
  padding: 7px 19px 7px 28px;
  display: inline-block;
  width: auto;
  margin: 0 0 20px 0;
  position: relative;
  border: 1px solid rgba(255, 255, 255, .24);
  border-radius: 100px;
}
.eg-page-header .sub-heading::before{
  background-color: var(--fa-accento-su-scuro);
  content: "";
  height: 5px;
  width: 5px;
  position: absolute;
  top: 50%;
  left: 15px;
  transform: translateY(-50%);
  border-radius: 50%;
}

/* IL SOMMARIO. Stesso difetto: ereditava `--tl-color-text-body` (#4D4D52)
   sopra la fotografia velata. Bianco pieno, che e' il colore che il tema
   da' al testo della sua testata (`.page-header .page-header-content
   .sub-title`, main.css riga 3034), a 18px per non pesare come un titolo. */
.eg-page-header__sommario{
  max-width: 760px;
  margin: 20px auto 0 auto;
  font-size: 18px;
  line-height: 1.55;
  color: var(--tl-color-common-white);
}
/* il numero dentro il sommario e' un link INLINE in una frase (WCAG 2.5.8
   lo esenta dai 44px): resta riconoscibile per sottolineatura */
.eg-tel-inline{
  color: var(--tl-color-common-white);
  text-decoration: underline;
  text-underline-offset: 3px;
  white-space: nowrap;
}

/* L'H1 DELLA TESTATA. main.css riga 3033 scrive
   `.page-header .page-header-content .title{font-size:80px}` e NON HA
   NESSUNA MEDIA QUERY: e' l'unico titolo del tema senza scala.
   MISURATO a 360 su chi-siamo: «L'unione che fa la forza» a 80px va su
   TRE righe e occupa 600px, cioe' tre quarti della prima schermata prima
   che cominci la pagina; su contatti («Parliamo della casa che stai
   valutando») sono cinque righe.
   `clamp(38px, 9vw, 80px)`: il MASSIMO resta la misura del tema (a 890px
   e oltre si torna a 80), il minimo tiene il titolo piu' lungo del sito
   entro tre righe a 360. Stesso rimedio, stessa forma, di studior §10.1. */
.eg-page-header .page-header-content .title{
  font-size: clamp(38px, 9vw, 80px);
  margin-bottom: 20px;
}


/* ============================================================
   10.2 LA SEZIONE GENERICA E LO SLOT FOTOGRAFICO
   ------------------------------------------------------------
   Il tema non ha un contenitore di sezione NEUTRO: ogni sua <section>
   porta una classe che tira dietro una veste scoped (`.about-section-2`,
   `.service-details`, `.contact-section`...). Dove il contenuto non e'
   nessuno di quei componenti — le due schede dei referenti, il manifesto
   — serve una scatola che porti solo il ritmo. `.eg-blocco` non dichiara
   ne' padding ne' margini: quelli restano `pt-130`/`pb-130` del tema,
   scritti in classe sul markup.
   ============================================================ */
.eg-blocco{ position: relative; z-index: 1; }

/* Lo slot fotografico fuori da `about-wrap-2`. Le misure sono quelle di
   `.about-wrap-2 .about-content-right .about-img-1` (main.css riga 1314):
   altezza 540, `object-fit:cover`, raggio 24; e sotto i 767 il tema la
   porta a 350, come qui. */
.eg-foto-riquadro{ width: 100%; height: 540px; }
.eg-foto-riquadro img{ width: 100%; height: 100%; object-fit: cover; border-radius: 24px; }
@media only screen and (max-width: 991px){
  .eg-foto-riquadro{ height: 400px; margin-bottom: 40px; }
}
@media only screen and (max-width: 767px){
  .eg-foto-riquadro{ height: 350px; }
}


/* ============================================================
   10.3 CHI SIAMO — il 1960 del contatore e la riga di delimitazione
   ============================================================ */
/* IL «1960» SFORAVA, ED E' MISURATO. Il tema scrive
   `.about-wrap-2 .about-content-left .about-counter-wrap .counter-content
   .title{font-size:360px; margin-top:-125px}` (260 sotto i 1400, 200
   sotto i 1200): e' tarato sul numero di DUE cifre del demo («26»).
   «1960» ne ha quattro. MISURATO a 360 e a 390 con shoot.mjs: il blocco
   `.counter-content` andava da x=12 a x=409, cioe' 49px oltre il bordo
   destro del viewport — nascosti solo dall'`overflow-x:hidden` che
   main.css tiene su html e body, che non e' una correzione.
   Qui la scala e' ricalcolata sulla colonna che il numero ha davvero:
   dentro `about-content-left` (col-lg-8) restano circa 305px a 1280
   accanto alla fotografia da 350 e al gap da 85. I margini negativi vanno
   a zero: servivano a far rientrare un numero alto 360px, non uno da 120. */
.about-wrap-2 .about-content-left .about-counter-wrap .counter-content .title.eg-anno{
  font-size: 120px;
  margin-top: 0;
  line-height: 1;
}
.about-wrap-2 .about-content-left .about-counter-wrap .counter-content p{ margin-top: 0; }
@media (max-width: 1399px){
  .about-wrap-2 .about-content-left .about-counter-wrap .counter-content .title.eg-anno{ font-size: 96px; }
}
@media (max-width: 1199px){
  .about-wrap-2 .about-content-left .about-counter-wrap .counter-content .title.eg-anno{ font-size: 76px; }
}
@media only screen and (max-width: 575px){
  .about-wrap-2 .about-content-left .about-counter-wrap .counter-content .title.eg-anno{ font-size: 60px; }
}

/* LA RIGA DI DELIMITAZIONE (regia §0). E' una riga di servizio che
   riguarda la sezione intera, non una nota a margine: sta a tutta
   larghezza in coda, sotto un filetto del tema, e ha il colore del corpo
   (#4D4D52 su #F6F6F6 = 7,9:1). Il testo e' identico a quello del footer
   perche' viene dalla stessa costante del guscio. */
.eg-delimitazione{
  margin: 60px 0 0 0;
  padding-top: 24px;
  border-top: 1px solid var(--tl-color-border-1);
  font-size: 15px;
  line-height: 1.5;
  max-width: 760px;
}


/* ============================================================
   10.4 LE DUE SCHEDE DEI REFERENTI (chi-siamo #referenti)
   ------------------------------------------------------------
   Il tema non ha un componente «persona senza ritratto»: le sue card di
   team sono costruite intorno alla fotografia, e i volti generati sono
   vietati (regia §0). La scheda e' nostra, ma NON ha misure inventate:
   bianco, raggio 24px e padding 40px sono quelli di
   `.service-details-left-content .service-category-list` (main.css riga
   2733), che e' la scheda su fondo chiaro del tema.
   ============================================================ */
.eg-schede{ display: grid; gap: 30px; }
.eg-scheda{
  background-color: var(--tl-color-common-white);
  border-radius: 24px;
  padding: 40px;
}
.eg-scheda .title{ font-size: 26px; font-weight: 400; margin-bottom: 6px; }
.eg-scheda__ruolo{
  font-family: var(--tl-ff-heading);
  font-size: 16px;
  color: var(--fa-accento);
  margin-bottom: 18px;
}
/* la frase in prima persona: e' una citazione, e si vede che lo e' */
.eg-scheda__voce{
  margin-bottom: 0;
  font-size: 18px;
  line-height: 1.55;
  padding-left: 20px;
  border-left: 2px solid var(--fa-accento);
}
@media only screen and (max-width: 575px){
  .eg-scheda{ padding: 28px 24px; }
}


/* ============================================================
   10.5 IL MANIFESTO (chi-siamo #manifesto)
   ------------------------------------------------------------
   Il contenitore e' il `blockquote` DEL TEMA (main.css riga 3216:
   #efebe8, padding 45, raggio 16, centrato, con la `.shape` in basso a
   destra e l'icona della virgoletta). Qui solo due cose: il tema mette
   `.author` come <h4> e noi usiamo un <h3> — la gerarchia della pagina
   non ammette un h4 dopo un h2 senza h3 — e la citazione va in colonna
   accanto alla fotografia, non a tutta larghezza.
   ============================================================ */
.eg-manifesto{ overflow: hidden; }
.eg-manifesto .content .author{
  font-family: var(--tl-ff-heading);
  color: var(--tl-color-heading-primary);
  font-size: 16px;
  font-weight: 500;
  line-height: 1;
  margin: 30px 0 0 0;
}
.eg-manifesto__glossa{ max-width: 720px; }
@media only screen and (max-width: 991px){
  .eg-manifesto-wrap .eg-foto-riquadro{ margin-top: 40px; margin-bottom: 0; }
}


/* ============================================================
   10.6 IL METODO — colonna sticky, pilastri, passi, elenco, rimandi
   ============================================================ */
/* L'INDICE. `.service-category-list` e' gia' vestito dal tema (scheda
   bianca, raggio 24, padding 40, voci con 20px sopra e sotto = 58px di
   bersaglio, misurati). Due sole aggiunte: il `h3.list-title` del tema
   qui e' un <p> — nel DOM verrebbe prima dei titoli veri e romperebbe la
   gerarchia — e quindi perde il carattere dei titoli, che va rimesso; e
   il <nav> in piu' non ha effetti sulla resa (nessuna regola del tema
   cerca `div.service-category-list`: verificato). */
.eg-indice .list-title{
  font-family: var(--tl-ff-heading);
  color: var(--tl-color-heading-primary);
  line-height: 1.2;
}
.eg-indice ul{ margin-bottom: 0; }

/* IL BOX CTA DEL TEMA. Il numero e' l'unico controllo autonomo del box e
   MISURATO chiudeva a 40px di altezza (`.service-details-cta .number`,
   40px di corpo e `line-height:1`): sotto i 44. */
.service-details-left-content .service-details-cta .number{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
}
.service-details-left-content .service-details-cta .cta-btn a:focus-visible{
  outline: 2px solid var(--tl-color-common-white);
  outline-offset: 4px;
}

/* I PILASTRI E I PASSI dentro `.service-details-content`.
   TRE DIFETTI MISURATI, tutti del tema:
   1. `.service-details-content .service-details-items{grid-template-
      columns:repeat(2,1fr)}` e main.css NON HA NESSUNA MEDIA QUERY per
      questo componente. A 360 e a 390 la seconda colonna andava da
      x=299 a x=553, cioe' 193px oltre il bordo destro. Sotto i 768 la
      griglia va a UNA colonna. Nessun `overflow-x:hidden` aggiunto:
      quello di main.css nascondeva il sintomo, non lo correggeva.
   2. gli stessi due valori valgono per i CINQUE passi (`.eg-passi`), che
      a due colonne lasciavano un buco in basso a destra e facevano
      leggere la numerazione a zig-zag: qui la griglia e' a una colonna a
      OGNI larghezza, e la specificita' (0,3,0) e' quella che serve per
      battere la regola del tema.
   3. `.service-details-item .content p{max-width:334px}` e' giusto per le
      quattro parole del demo e sbagliato per i 250-400 caratteri di un
      passo: il testo restava tagliato a 334px con la colonna larga il
      doppio. */
.service-details-content .service-details-items.eg-passi{
  grid-template-columns: 1fr;
  grid-gap: 30px;
  gap: 30px;
}
.service-details-content .service-details-items .service-details-item .content p{
  max-width: 100%;
}
@media only screen and (max-width: 767px){
  .service-details-content .service-details-items{ grid-template-columns: 1fr; }
  .service-details-content .service-details-items .service-details-item{
    grid-template-columns: 1fr;
    grid-gap: 12px;
  }
}
/* il numero del passo prende il posto del tondo dell'icona (80px nel
   tema): a 24px si perdeva in quella colonna */
.service-details-content .eg-passi .eg-passo__numero{
  font-size: 40px;
  line-height: 1;
  padding-top: 6px;
}
/* le icone dei quattro pilastri stanno nel tondo da 80px del tema, che ha
   il fondo dell'accento: il glifo ci va bianco (8,91:1 su #2F4A75), e a
   30px riempie il tondo come il PNG del demo */
.service-details-content .service-details-items .service-details-item .icon i{
  color: var(--tl-color-common-white);
  font-size: 30px;
}

/* L'ELENCO DELLE OTTO VOCI. Il tema mette DUE <ul> affiancati con
   `display:flex; justify-content:space-between` (main.css riga 2762): qui
   la lista e' UNA sola — un elenco solo e' anche cio' che un lettore di
   schermo deve sentire — e va a due colonne con la griglia.
   Due correzioni del tema, misurate: `ul li{line-height:1}` fa toccare le
   righe appena una voce va a capo (le voci del demo stanno su una riga,
   le nostre no), e `font-family:var(--tl-ff-heading)` mette il carattere
   dei TITOLI su una frase di corpo. */
.eg-lista-wrap{ display: block; max-width: 100%; }
.eg-lista-wrap .eg-lista{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px 40px;
  list-style: none;
  padding-left: 0;
  margin-bottom: 0;
}
.service-details-content .service-details-list-wrap ul li{
  font-family: var(--tl-ff-body);
  font-size: 16px;
  line-height: 1.5;
  align-items: flex-start;
  margin-bottom: 0;
}
.service-details-content .service-details-list-wrap ul li i{ margin-top: 4px; flex: 0 0 auto; }
@media only screen and (max-width: 767px){
  .eg-lista-wrap .eg-lista{ grid-template-columns: 1fr; }
}

/* I DUE RIMANDI DI RETE. Il testo dice il confine di competenza, il link
   e' una riga a se': MISURATO 393x20 e 334x20 senza questa regola, cioe'
   due controlli autonomi sotto i 44px. */
.eg-rimando{
  border-left: 3px solid var(--fa-accento);
  padding-left: 24px;
  margin: 0 0 40px 0;
}
.eg-rimando__link a{
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: var(--fa-accento);
  text-decoration: underline;
  text-underline-offset: 3px;
  font-family: var(--tl-ff-heading);
  font-size: 18px;
}
.eg-rimando__link a:hover,
.eg-rimando__link a:focus-visible{ color: var(--fa-accento-scuro); }


/* ============================================================
   10.7 CONTATTI — recapiti, modulo, mappa
   ============================================================ */
/* I TRE RECAPITI. `.request-content .request-item-wrap` e' un flex a DUE
   voci con 65px di gap (main.css riga 1467): con TRE voci diventavano tre
   colonne strette dentro una col-lg-6. Griglia a due, una sotto i 576.

   COLLISIONE DI SPECIFICITA', trovata sullo screenshot a piena pagina e
   non nel sorgente. Scritta come `.eg-recapiti-wrap{display:grid}` la
   regola e' (0,1,0) e NON si applicava: `.request-content
   .request-item-wrap{display:flex}` (main.css riga 1467) e' (0,2,0) e
   vince. Risultato MISURATO a 1280 e a 768: tre colonne da circa 120px
   dentro una col-lg-6, con «Via del Naviglio 14, 48018 Faenza (RA)»
   spezzato su cinque righe. Il selettore va scritto con l'antenato,
   cioe' (0,3,0). Le due regole in collisione:
     main.css:1467   .request-content .request-item-wrap        (0,2,0)
     faro.css qui    .request-content .request-item-wrap.eg-…   (0,3,0) */
.request-content .request-item-wrap.eg-recapiti-wrap{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 30px 40px;
  column-gap: 40px;
}
@media only screen and (max-width: 575px){
  .request-content .request-item-wrap.eg-recapiti-wrap{ grid-template-columns: 1fr; }
}
/* L'ETICHETTA. Il tema la lascia a #9F9FA4 (main.css riga 1468) perche'
   la sua fascia contatti e' SCURA; qui `.contact-page-area` rimette il
   fondo chiaro (#F6F6F6) e non rimette il colore: 2,25:1 calcolato.
   `--tl-color-grey-1` (#59585D) sullo stesso fondo fa 6,63:1. */
.contact-page-area .request-content .request-item-wrap .request-item span{
  color: var(--tl-color-grey-1);
  display: flex;
  align-items: center;
  column-gap: 10px;
  margin-bottom: 14px;
}
.contact-page-area .request-content .request-item-wrap .request-item span i{ color: var(--fa-accento); }
/* i due controlli autonomi della scheda — il numero e il link a
   chi-siamo — chiudevano a 29px (MISURATO) */
.contact-page-area .request-content .request-item-wrap .request-item a{
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.eg-recapito__riga{
  font-size: 15px;
  line-height: 1.45;
  color: var(--tl-color-grey-1);
  margin-bottom: 0;
}

/* IL MODULO SPENTO su fascia chiara. Il tema veste `.request-form-wrap`
   per una fascia SCURA (main.css riga 1471: campi trasparenti al 9% e
   testo digitato #9F9FA4) e dentro `.contact-page-area` rimette solo il
   FONDO bianco (riga 885), non il colore del testo: quello che uno scrive
   nel campo resterebbe a 2,25:1 su bianco. Stesso difetto sul
   segnaposto. */
.contact-page-area .request-form-wrap .form-item .form-control{
  color: var(--tl-color-heading-primary);
  border: 1px solid var(--tl-color-border-1);
}
.contact-page-area .request-form-wrap .form-item .form-control::placeholder{
  color: var(--tl-color-grey-1);
  opacity: 1;
}
.contact-page-area .request-form-wrap .form-item .form-control:focus-visible{
  outline: 2px solid var(--fa-accento);
  outline-offset: 2px;
}
/* il modulo e' spento: i campi sono in un <fieldset disabled> a opacita'
   ridotta (§7.7) e l'avviso che lo dice sta PRIMA di loro, non una
   schermata sotto */
.contact-page-area .eg-modulo-avviso{
  background-color: var(--fa-accento-soft);
  border-radius: 16px;
  padding: 16px 20px;
  color: var(--tl-color-heading-primary);
}
.contact-page-area .eg-modulo-avviso .number{
  color: var(--fa-accento-scuro);
  text-decoration: underline;
  text-underline-offset: 3px;
  white-space: nowrap;
}

/* LA MAPPA SENZA IFRAME. Stessa scheda bianca del tema
   (`.service-category-list`: raggio 24, padding 40). Nessun link a Google
   Maps: la sede e' un'ipotesi di lavoro. */
.eg-mappa{
  background-color: var(--tl-color-common-white);
  border-radius: 24px;
  padding: 40px;
  max-width: 760px;
}
.eg-mappa__titolo{
  font-family: var(--tl-ff-heading);
  font-size: 22px;
  color: var(--tl-color-heading-primary);
  display: flex;
  align-items: center;
  column-gap: 10px;
  margin-bottom: 14px;
}
.eg-mappa__titolo i{ color: var(--fa-accento); }
.eg-mappa address{
  font-style: normal;
  font-size: 18px;
  color: var(--tl-color-heading-primary);
  margin-bottom: 14px;
}
.eg-mappa__nota{ font-size: 15px; line-height: 1.5; }
.eg-mappa__nota .number{
  color: var(--fa-accento);
  text-decoration: underline;
  text-underline-offset: 3px;
  white-space: nowrap;
}
@media only screen and (max-width: 575px){
  .eg-mappa{ padding: 28px 24px; }
}

/* ------------------------------------------------------------
   10.8 I NUMERI DENTRO UNA FRASE
   ------------------------------------------------------------
   Tre link inline in un paragrafo — il numero del sommario di contatti,
   quello dell'avviso «il modulo si attiva con la pubblicazione» e quello
   della nota della mappa. WCAG 2.5.8 li ESENTA dal minimo di 44px
   (sono link dentro un blocco di testo, non controlli autonomi), ma
   MISURATI chiudevano a 18 e 22px, sotto anche il minimo AA di 24 per un
   bersaglio inline. Cresce la scatola, non il flusso: il padding
   verticale non sposta la riga di base.
   Misurati dopo: 26px e 28px.
   ------------------------------------------------------------ */
.eg-tel-inline,
.eg-modulo-avviso .number,
.eg-mappa__nota .number{ padding: 4px 0; }

/* La voce corrente e il separatore devono stare sulla stessa riga di base
   del link, che ora e' alto 44px: MISURATO sullo screenshot senza
   JavaScript a 390, «Chi siamo» stava 12px piu' in alto di «Home» e il
   filetto in mezzo galleggiava. La <li> diventa flex e i tre pezzi si
   centrano fra loro. */
.eg-briciole li{ display: flex; align-items: center; }

/* IL VELO DEL BOX LATERALE. Il tema stende il nero al 46% sopra la
   fotografia (`.service-details-cta .cta-bg:before{opacity:.46}`,
   main.css riga 2744) ed e' tarato sulla sua immagine, che e' scura.
   MISURATO sul pixel VERO del composito (sonda che nasconde il testo,
   cattura, e legge il fondo nella scatola di ogni riga): con
   `cappotto-posa-pannelli.jpg` — pannelli di isolante chiari in pieno
   sole — l'etichetta bianca «Hai una domanda?» a 20px chiudeva a
   3,91:1, sotto il minimo AA di 4,5. Il numero a 40px stava a 4,59.
   Al 62% le stesse due righe misurano 6,85:1 e 7,78:1 (e il tondo 8,74),
   e la fotografia resta riconoscibile: e' il modo di tenere QUESTA foto in
   QUESTO componente senza scurirla nel file. */
.service-details-left-content .service-details-cta .cta-bg:before{ opacity: .62; }


/* ============================================================
   10.9 IL MODULO LEAD — consenso, honeypot, Turnstile, esito
   ============================================================
   Le classi sono quelle di `tools/lib/lead.mjs` (CSS_LEAD): NON si
   rinominano, perche' `assets/js/lead.js` le cerca per nome ed e' lo
   stesso script sui sei siti. Qui cambiano solo i colori, che passano
   dalle variabili del tema e di marca: nessun valore inventato, tranne i
   due semafori (verde/rosso), che non esistono fra i token del tema e
   vanno pescati altrove — sono gli stessi due di CSS_LEAD.

   Dove finisce ogni pezzo, nel modulo di `contatti.html`:
     .eg-hp           il campo che un umano non vede (honeypot). NON
                      `display:none`: alcuni robot lo rispettano. Sta
                      fuori schermo con la stessa tecnica dello skip link
                      (§6), che su questo sito e' gia' dichiarata.
     .eg-consenso     la casella obbligatoria + l'etichetta con il link
                      all'informativa. L'etichetta NON eredita il
                      `.form-title` del tema (maiuscoletto spaziato da
                      titolo): e' una frase da leggere.
     .eg-turnstile    il widget di Cloudflare. `min-height` e' spazio
                      RISERVATO: il widget arriva da un iframe e senza
                      riserva farebbe saltare l'impaginato mentre si
                      compila il modulo (CLS).
     .eg-lead-esito   la riga di risposta, che lead.js riempie e mette a
                      fuoco. Vuota non esiste.
   ------------------------------------------------------------ */
.eg-hp{ position: absolute; left: -9999px; top: auto; width: 1px; height: 1px; overflow: hidden; }

.eg-consenso{
  display: flex;
  gap: .75rem;
  align-items: flex-start;
  margin-bottom: 1.25rem;
}
/* Il quadratino e' un <input> senza veste del tema. A 1.25rem MISURATO
   chiudeva a 20x20, sotto il minimo di 24x24 di WCAG 2.5.8: qui sta a
   1.5rem, cioe' 24x24 esatti. Il bersaglio VERO e' piu' largo, perche'
   l'etichetta e' un <label for> e quindi spunta la casella anche lei. */
.eg-consenso input[type="checkbox"]{
  flex: 0 0 auto;
  width: 1.5rem;
  height: 1.5rem;
  margin-top: .1rem;
  accent-color: var(--fa-accento);
}
.eg-consenso input[type="checkbox"]:focus-visible{
  outline: 2px solid var(--fa-accento);
  outline-offset: 2px;
}
.eg-consenso label{
  margin: 0;
  font-family: var(--tl-ff-body);
  font-size: .9375rem;
  line-height: 1.5;
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  color: var(--tl-color-heading-primary);
}
/* il link all'informativa e' un link DENTRO una frase (WCAG 2.5.8 lo
   esenta dal minimo), ma MISURATO chiudeva a 176x18: stesso trattamento
   dei numeri di §10.8, la scatola cresce e la riga di base non si sposta.
   Misurato dopo: 26px. */
.eg-consenso a{
  color: var(--fa-accento);
  text-decoration: underline;
  text-underline-offset: 3px;
  padding: 4px 0;
}
.eg-consenso a:hover,
.eg-consenso a:focus-visible{ color: var(--fa-accento-scuro); }

/* 65px e' l'altezza del widget «flexible» di Cloudflare: si riserva
   prima che arrivi, cosi' il bottone d'invio non scende sotto il dito di
   chi sta gia' mirando. */
.eg-turnstile{ margin-bottom: 1.25rem; min-height: 65px; }

.eg-lead-esito:empty{ display: none; }
.eg-lead-esito{
  margin-top: 1.25rem;
  padding: .875rem 1.125rem;
  border-left: 3px solid var(--fa-accento);
  background-color: var(--fa-accento-soft);
  font-size: .9375rem;
  line-height: 1.5;
  color: var(--tl-color-heading-primary);
}
/* i due semafori: non esistono fra i token del tema (che ha un accento
   solo) e sono gli stessi di CSS_LEAD. Portano il colore sul BORDO, non
   sul testo: il testo resta a 12,6:1 sul fondo chiaro. */
.eg-lead-esito--ok{ border-left-color: #2e7d32; }
.eg-lead-esito--errore{ border-left-color: #c62828; }
.eg-lead-esito:focus{
  outline: 2px solid var(--fa-accento);
  outline-offset: 2px;
}
/* a invio riuscito i campi spariscono: dopo il «grazie» un modulo vuoto
   invita a riempirlo una seconda volta, e il secondo invio in Odoo
   diventa un duplicato. */
form[data-eg-stato="inviato"] .eg-lead-campi{ display: none; }

/* il modulo acceso non ha piu' il fieldset a opacita' ridotta: la
   legenda degli obbligatori sta sopra i campi, e respira */
.contact-page-area .eg-modulo-legenda{ margin-bottom: 20px; }

/* SENZA JAVASCRIPT il tasto d'invio sparisce e resta il telefono: il
   fetch non parte e il form non ha `action`, quindi un tasto che si puo'
   premere sarebbe un tasto che mente. `html.no-js` e' la classe che lo
   script in linea nella testa scambia in `js` appena il JavaScript gira
   (stessa tecnica di faro-guscio.css §5). */
.eg-modulo-nojs{ display: none; }
.no-js .eg-modulo-nojs{
  display: block;
  background-color: var(--fa-accento-soft);
  border-radius: 16px;
  padding: 16px 20px;
  margin-bottom: 20px;
  font-size: 15px;
  line-height: 1.5;
  color: var(--tl-color-heading-primary);
}
.no-js .eg-modulo-nojs .number{
  color: var(--fa-accento-scuro);
  text-decoration: underline;
  text-underline-offset: 3px;
  white-space: nowrap;
  padding: 4px 0;
}
.no-js .eg-lead-campi .submit-btn{ display: none; }
/* senza JavaScript anche il widget anti-spam non si monta: la sua riserva
   di spazio lascerebbe un buco di 65px */
.no-js .eg-turnstile{ display: none; }


/* ============================================================
   10.10 LA PAGINA LEGALE (privacy.html)
   ============================================================
   Una colonna di testo e basta. Il tema non ha un componente per le
   pagine legali (il demo non ne ha nessuna): qui si usa la sezione
   generica `.eg-blocco` (10.2) e si veste il solo testo, con la
   tipografia del tema. La misura di riga e' la stessa che il tema tiene
   sui paragrafi lunghi di `service-details` (~70 caratteri).
   ------------------------------------------------------------ */
.eg-legale{ max-width: 72ch; }
.eg-legale__titolo{
  font-family: var(--tl-ff-heading);
  font-size: 24px;
  line-height: 1.3;
  color: var(--tl-color-heading-primary);
  margin-top: 48px;
  margin-bottom: 16px;
}
.eg-legale > .eg-legale__titolo:first-child{ margin-top: 0; }
.eg-legale p{ margin-bottom: 16px; }
.eg-legale strong{ color: var(--tl-color-heading-primary); font-weight: 500; }
/* stessa misura dei numeri di §10.8: link dentro una frase, scatola
   cresciuta senza spostare la riga di base (MISURATI 60x20 senza) */
.eg-legale a,
.copyright-content p a{
  color: var(--fa-accento);
  text-decoration: underline;
  text-underline-offset: 3px;
  padding: 4px 0;
}
/* la riga del copyright e' su fascia SCURA: li' l'accento pieno fa
   1,73:1 (§8.1) e ci va la variante chiara, come per il resto del footer */
.copyright-content p a{ color: var(--fa-accento-su-scuro); }
.eg-legale a:hover,
.eg-legale a:focus-visible{ color: var(--fa-accento-scuro); }
/* l'elenco: il tema veste solo le sue liste (`.service-details-list-wrap
   ul`), che portano un'icona. Qui il segno e' il pallino del browser,
   rientrato in modo che il testo resti allineato al paragrafo sopra. */
.eg-legale__elenco{
  margin: 0 0 16px 0;
  padding-left: 22px;
  list-style: disc;
}
.eg-legale__elenco li{
  margin-bottom: 10px;
  line-height: 1.6;
}
.eg-legale__aggiornamento{
  margin-top: 48px;
  padding-top: 24px;
  border-top: 1px solid var(--tl-color-border-1);
  font-size: 15px;
}
@media only screen and (max-width: 575px){
  .eg-legale__titolo{ font-size: 21px; margin-top: 40px; }
}

/* 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='%232F4A75' 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='%232F4A75' 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; }

/* PRELOADER CENTRATO come sul portale (richiesta del committente,
   2026-10-04). Il marchio era in alto a sinistra (flex in riga, che il
   `align-content` del tema non centra) e la firma usciva a 80px in
   maiuscolo: la regola del tema `.preloader span` e' pensata per la sua
   scritta «ANTRA» e colpiva anche lei. Come su Studio R: logo a 240px,
   firma sotto, in corpo normale e minuscola («edilgetica» si scrive cosi'). */
.preloader .eg-site-name{
  flex-direction: column;
  align-items: center;
  justify-content: center;
  row-gap: 12px;
}
/* `max-height: none`: il tetto di 44px e' quello della testata (§ .eg-logo);
   lasciato qui, con la larghezza a 240px schiacciava il PNG (2026-10-04) */
.preloader .eg-site-name .eg-logo{ width: 240px; height: auto; max-height: none; }
.preloader .eg-site-name .eg-lockup__firma{
  font-size: 16px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  color: var(--fa-blu-gruppo-chiaro);
}

/* ============================================================
   11. CORREZIONI DEI CONTENUTI v1 (committente, 2026-10-13)
   Tre aggiunte, tutte per elementi che il tema prevede UNA volta e che
   qui sono piu' d'uno. Nessuna regola del tema viene riscritta.
   ============================================================ */
/* 11.1 I tre bottoni dei percorsi nella feature-section della home, e i
   bottoni in coda alle sezioni delle pagine dei percorsi: il tema ne mette
   uno solo e non prevede lo spazio fra due. */
.eg-percorsi-btn,
.eg-dettaglio-btn{
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
}
.eg-dettaglio-btn{ margin-bottom: 50px; }
/* 11.2 I campi del modulo che valgono per una sola scelta (faro-menu.js li
   nasconde con l'attributo `hidden`): la colonna di Bootstrap ha un suo
   `display`, che senza questa riga vincerebbe sull'attributo. */
[data-eg-solo][hidden]{ display: none !important; }
