/* =====================================================================
   GB-LEGACY.CSS  ·  COMPATIBILITA' CON LE PAGINE DEL SITO VECCHIO
   =====================================================================
   COS'E': le regole grafiche che tengono in piedi le pagine gia' pubblicate
   (liste a spunta per prodotto, titoli colorati, vecchie CTA .cta/.cta2...,
   form #form-cta-1 e #form-v, box prezzi, tab verticali, header animato).
   Non e' il design system: e' il suo opposto, l'archivio di cio' che non si tocca.

   REGOLA D'USO — vale sia per le persone sia per l'IA:
   • Su una pagina NUOVA non si usa NIENTE di questo file. Si usano i componenti
     del design system (.gb-pulsante, .gb-lista, .gb-card...) descritti in REGOLE-NUOVE-SEZIONI.md.
   • Qui dentro non si aggiungono stili nuovi: si aggiungono solo regole che
     servono a far sopravvivere una pagina vecchia.
   • Quando una pagina vecchia viene rifatta con la libreria, le sue regole si
     possono togliere da qui. Il file e' destinato a rimpicciolire, non a crescere.

   PERCHE' I FONT-SIZE SONO IN PIXEL E RESTANO COSI'
   Nel design system i px fissi sono vietati e la scala vive nei token. Qui no,
   ed e' voluto: questi valori riproducono pagine gia' online. Tokenizzarli
   significherebbe cambiarle. Stessa logica del blocco LEGACY dentro gb-core.css.

   I COLORI QUI SI SCRIVONO IN ESADECIMALE, SEMPRE
   Anche quando esiste un token di marca che vale esattamente lo stesso. E' una
   scelta presa il 09/09/2026, e il motivo e' la leggibilita': questo file
   riproduce pagine gia' online, e un legacy si capisce meglio se DICE il colore
   invece di rimandare altrove. Chi apre una regola qui dentro vede subito cosa
   vedra' a schermo, senza dover rincorrere gb-core.css.

   CONSEGUENZA, ED E' VOLUTA: se un domani cambia il blu o l'arancio di marca,
   le pagine vecchie NON seguono. Restano come sono. E' il comportamento giusto
   per un legacy — una fotografia, non un pezzo vivo del design system. Se un
   giorno si volesse il contrario, si rimettono i token: ma allora per TUTTI i
   colori, non per alcuni si' e altri no. Era proprio la mescolanza a confondere.

   PRIMA (fino al 09/09/2026) sei colori erano scritti come token:
       #2b689e  blu di marca            #f07e00  arancio di marca
       #599842  contabilita             #FFAD00  revisione
       #EAF0F5  azzurro dei pannelli    #5C5C5C  grigio dei sottotitoli
   ⚠ SUL GRIGIO, l'unico che non e' un ritorno all'originale: il token puntava
   a #55606B, ma dopo la scala di grigi era diventato #5C5C5C. Qui e' rimasto
   scritto #5C5C5C, cioe' quello che le pagine mostrano DAVVERO oggi: la
   conversione non doveva cambiare niente a schermo. Il valore originale del
   sito vecchio era #55606B: se un giorno lo si vuole indietro, e' quello.
   NON sono stati toccati due colori che SEMBRANO token ma non lo sono:
     · #009900 (verde delle liste): nel core --gb-verde oggi vale #007A00.
     · #ffaa00 (articoli, blocco 13): --gb-mod-revisione vale #FFAD00, tre unita'
       piu' in la. Somigliano, non sono lo stesso colore: non "correggerli".
   I colori-prodotto senza token (#E7324A, #4BB4E6, #598AB1...) restano letterali.
   I glifi sono scritti come escape CSS (\2713 = spunta, \2022 = pallino) invece
   che come caratteri: cosi' il file regge qualunque codifica il server dichiari.
   Nei blocchi 13, 26 e 35 alcuni selettori portano :not(:where(.gb-libreria *, .gb-sezione *)) —
   unica aggiunta ai selettori originali, spiegata blocco per blocco. :where() vale zero
   in specificita', quindi le regole si comportano esattamente come prima.

   IL GANCIO E' .gb-libreria, E VA TENUTO ATTACCATO.
   .gb-libreria e' una classe SENZA NESSUNA REGOLA CSS: esiste solo per far riconoscere
   a queste guardie il markup della libreria. Sta sulla radice di tutti e 136 i testo.html.
   Prima il gancio era la sola .gb-sezione, ma la portavano appena 41 sezioni su 136:
   le altre 95 usavano <section class="<nome>-sezione"> e restavano scoperte, in silenzio.
   .gb-sezione resta nella lista perche' e' quella del template in REGOLE-NUOVE-SEZIONI.md:
   chi segue il template e' coperto lo stesso.
   Il linter _LINTER-ANTI-DRIFT.ps1 verifica che ogni testo.html abbia .gb-libreria sulla
   radice: se un giorno una sezione nuova se la dimentica, lo dice. Non toglierlo.

   ⚠ COLLISIONI POSSIBILI COL DESIGN SYSTEM (due, entrambe note)
   1. LISTE. Le regole qui sotto colpiscono `li::before` con specificita' alta.
      Se una sezione della libreria (che usa .gb-lista) finisse DENTRO un contenitore
      con una classe di questo file (.box-prezzi, .bluedot, .contabilitadot...),
      il segno di elenco del vecchio sito vincerebbe su quello del componente.
      Non mescolare i due mondi nello stesso blocco: sezione nuova = riga Divi sua.
   2. TITOLI DEGLI ARTICOLI (blocco 13). Questa e' gia' disinnescata nel codice,
      perche' era molto piu' probabile: mettere una sezione dentro un articolo del
      blog e' una cosa che si fa. Vedi la nota nel blocco 13.
   ===================================================================== */


/* =========================================================
   1. LISTE PUNTATE E SPUNTE COLORATE
   ========================================================= */

/* Gradienti generici e liste base */
.blue-gradient ul, .orange-gradient ul, .orange-gradient-bis ul { list-style-type: none; }
.blue-gradient ul li::before { content: "\2022\00a0\00a0"; color: #2B689E; font-weight: 700; font-size: 24px; vertical-align: middle; }
.orange-gradient ul li::before, .orange-gradient-bis ul li::before { content: "\2022\00a0\00a0"; color: #F07E00; font-weight: 700; font-size: 24px; vertical-align: middle; }

/* Liste per dipartimento */
.contabilitadot ul { list-style-type: none; padding-left: 0; }
.contabilitadot ul li { text-align: left; margin-bottom: 10px; }
.contabilitadot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #599842; }

.bedot ul { list-style-type: none; padding-left: 0; }
.bedot ul li { text-align: left; margin-bottom: 10px; }
.bedot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #F58220; }

.dfdot ul { list-style-type: none; padding-left: 0; }
.dfdot ul li { text-align: left; margin-bottom: 10px; }
.dfdot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #4BB4E6; }

.paghedot ul { list-style-type: none; padding-left: 0; }
.paghedot ul li { text-align: left; margin-bottom: 10px; }
.paghedot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #E7324A; }

.revisionedot ul { list-style-type: none; padding-left: 0; }
.revisionedot ul li { text-align: left; margin-bottom: 10px; }
.revisionedot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #FFAD00; }

.vigdot ul { list-style-type: none; padding-left: 0; }
.vigdot ul li { text-align: left; margin-bottom: 10px; }
.vigdot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #ffcf00; }

.cdiwdot ul { list-style-type: none; padding-left: 0; }
.cdiwdot ul li { text-align: left; margin-bottom: 10px; }
.cdiwdot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #c48f65; }

.cdcdot ul { list-style-type: none; padding-left: 0; }
.cdcdot ul li { text-align: left; margin-bottom: 10px; }
.cdcdot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #FF5B5B; }

.ardot ul { list-style-type: none; padding-left: 0; }
.ardot ul li { text-align: left; margin-bottom: 10px; }
.ardot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #E964A1; }

.fattdot ul { list-style-type: none; padding-left: 0; }
.fattdot ul li { text-align: left; margin-bottom: 10px; }
.fattdot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #449D44; }

.gestsocdot ul { list-style-type: none; padding-left: 0; }
.gestsocdot ul li { text-align: left; margin-bottom: 10px; }
.gestsocdot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #008b80; }

/* Liste per colore base */
.bluedot ul { list-style-type: none; padding-left: 0; }
.bluedot ul li { text-align: left; margin-bottom: 10px; }
.bluedot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #2B689E; }

.orangedot ul { list-style-type: none; padding-left: 0; }
.orangedot ul li { text-align: left; margin-bottom: 10px; }
.orangedot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #F07E00; }

/* #009900 NON tokenizzato: --gb-verde nel core oggi vale #007A00 (contrasto),
   sostituirlo cambierebbe il verde delle pagine gia' online. */
.greendot ul { list-style-type: none; padding-left: 0; }
.greendot ul li { text-align: left; margin-bottom: 10px; }
.greendot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #009900; }

.canceldot ul { list-style-type: none; padding-left: 0; }
.canceldot ul li { text-align: left; margin-bottom: 10px; }
.canceldot li:before { content: "X"; font-weight: 700; padding-right: 5px; color: #FF0000; }

.controllodot ul { list-style-type: none; padding-left: 0; }
.controllodot ul li { text-align: left; margin-bottom: 10px; font-size: 20px; }
.controllodot li:before { content: "\2713"; font-weight: 700; padding-right: 5px; color: #2B689E; }


/* =========================================================
   2. COLORI DEI TITOLI PRODOTTO
   ========================================================= */

.title-contabilita { color: #599842; }
.title-fatturazione { color: #449D44; }
.title-bilancio { color: #F58220; }
.title-fiscali { color: #4BB4E6; }
.title-paghe { color: #E7324A; }
.title-cdg { color: #FF5B5B; }
.title-revisione { color: #FFAD00; }
.title-antiric { color: #E964A1; }
.title-cloud { color: #598AB1; }
.title-ets { color: #F79B4D; }
.title-vigilanza { color: #FFCF00; }
.title-crisiimpresa { color: #c48f65; }
.title-guido { color: #2B689E; }


/* =========================================================
   3. BOTTONI (CALL TO ACTION) VECCHI
   Sulle pagine NUOVE non si usano: la CTA e' .gb-pulsante (gb-core.css).
   ========================================================= */

/* Varianti Standard */
.cta { width: 100%; max-width: 300px; display: inline-block; background-color: #2B689E; border: solid 1px #2B689E; padding: 10px; color: #ffffff; text-align: center; text-transform: uppercase; font-size: 17px; border-radius: 10px; font-weight: 300; white-space: normal; }
.cta:hover { background-color: #F07E00; border: solid 1px #F07E00; }

.cta-light { width: 100%; max-width: 300px; display: inline-block; background-color: #598AB1; padding: 10px; color: #ffffff; text-align: center; font-size: 17px; border-radius: 10px; font-weight: 300; white-space: normal; }

.cta-light2 { background-image: url(https://www.softwaregb.it/wp-content/uploads/copy-35.png); background-repeat: no-repeat; padding-left: 20px; width: 100%; max-width: 150px; display: inline-block; background-color: #598AB1; padding: 10px; color: #ffffff; text-align: center; font-size: 15px; border-radius: 10px; font-weight: 300; white-space: normal; }

.cta2 { width: 100%; max-width: 300px; display: inline-block; background-color: #F07E00; border: solid 1px #F07E00; padding: 10px; color: #ffffff; text-align: center; text-transform: uppercase; font-size: 17px; border-radius: 10px; font-weight: 300; white-space: normal; }
.cta2:hover { background-color: #2B689E; border: solid 1px #2B689E; }

.cta3 { width: 100%; max-width: 300px; display: inline-block; background-color: #fff; border: solid 1px #2B689E; padding: 10px; color: #2B689E; text-align: center; text-transform: uppercase; font-size: 17px; border-radius: 10px; font-weight: 300; white-space: normal; }
.cta3:hover { background-color: #2B689E; color: #fff; border: solid 1px #2B689E; }

.cta4 { width: 100%; max-width: 300px; display: inline-block; background-color: transparent; border: solid 1px #2B689E; padding: 10px; color: #2B689E; text-align: center; text-transform: uppercase; font-size: 17px; border-radius: 10px; font-weight: 300; white-space: normal; }
.cta4:hover { background-color: #2B689E; color: #fff; border: solid 1px #2B689E; }

.cta5 { width: 100%; max-width: 300px; display: inline-block; background-color: #F07E00; border: solid 1px #F07E00; padding: 10px; color: #fff; text-align: center; text-transform: uppercase; font-size: 17px; border-radius: 10px; font-weight: 700; white-space: normal; }
.cta5:hover { background-color: #f39833; color: #fff; border: solid 1px #f39833; }

.cta6 { width: 100%; max-width: 300px; display: inline-block; background-color: #fff; border: solid 1px #F07E00; padding: 10px; color: #F07E00; text-align: center; text-transform: uppercase; font-size: 17px; border-radius: 10px; font-weight: 700; white-space: normal; }
.cta6:hover { background-color: #fff; color: #F07E00; border: solid 1px #F07E00; }

.cta, .cta2, .cta3, .cta4, .cta5, .cta6 { margin-right: 15px; }

/* Bottoni specifici per prodotto */
.cta-controllo-gestione-applicazioni { width: 100%; max-width: 300px; display: inline-block; background-color: #fff; border: solid 1px #F07E00; padding: 10px; color: #F07E00; text-align: center; text-transform: uppercase; font-size: 17px; border-radius: 10px; font-weight: 700; white-space: normal; }
.cta-controllo-gestione-applicazioni:hover { background-color: #fff; color: #F07E00; border: solid 1px #F07E00; }

.cta-int { background-color: #2B689E; border: solid 1px #2B689E; margin-right: 0; }
.cta-int:hover { background-color: #598AB1; border: solid 1px #598AB1; }

.cta-pag { background-color: #E7324A; border: solid 1px #E7324A; margin-right: 0; }
.cta-pag:hover { background-color: #EC5B6E; border: solid 1px #EC5B6E; }

.cta-rev { background-color: #FFAD00; border: solid 1px #FFAD00; margin-right: 0; }
.cta-rev:hover { background-color: #FFBD33; border: solid 1px #FFBD33; }

.cta-fat { background-color: #449D44; border: solid 1px #449D44; margin-right: 0; }
.cta-fat:hover { background-color: #69B169; border: solid 1px #69B169; }

.cta-cdg { background-color: #FF5B5B; border: solid 1px #FF5B5B; margin-right: 0; }
.cta-cdg:hover { background-color: #FF7C7C; border: solid 1px #FF7C7C; }

.cta-gs { background-color: #008b80; border: solid 1px #008b80; margin-right: 0; }
.cta-gs:hover { background-color: #32a299; border: solid 1px #32a299; }


/* =========================================================
   4. FORM CTA PERSONALIZZATO (#form-cta-1)
   ========================================================= */

div#form-cta-1 { padding-right: 10px; padding-left: 5px; margin-top: 6px; margin-bottom: 10px; }

#intestazione-form-cta-1 { text-align: center; color: #ffffff; font-weight: 600; min-height: 65px; line-height: 1.2em; }

#intestazione2-form-cta-1 { display: inline-block; color: #feb45e; font-weight: 500; }

#paragrafo-form-cta-1 { min-height: 109px; text-align: justify; line-height: 1.4em; color: #e0e0e0; }

#contenitore-form-cta-1 { font-size: 16px; font-weight: 400; text-align: left; background-color: #2B689E; overflow: auto; margin-bottom: 32px; padding: 30px 25px 25px 30px; border-width: 0.3px; border-style: solid; border-radius: 5px; border-color: #183b5a; box-shadow: 0px 2px 18px 0px rgba(0, 0, 0, 0.3); }

#form-cta-1 fieldset { border: none; }

#form-cta-1 div label { color: #ffffff; text-align: left; font-size: 13px; height: 17px; }

#form-cta-1 fieldset label { display: block; float: none; width: 100%; margin: 5px 0 2px 0; }

#form-cta-1 input[type="text"] { float: none; width: 100%; height: 28px; font-size: 14px; border: solid 1px #e0e0e0; border-radius: 3px; background: #ffffff; }

#form-cta-1 fieldset select { float: none; width: 100%; height: 28px; font-size: 14px; border: solid 1px #e0e0e0; border-radius: 3px; background: #ffffff; }

#form-cta-1 fieldset #campi-richiesti-cta-1 { margin: 3px 0 5px 0px; font-style: oblique; font-size: 10px; }

#form-cta-1 fieldset #testo-legale-cta-1 { margin: 5px 0 5px 0px; color: #ffffff; font-size: 9px; line-height: 1.2em; }

#campi-richiesti-cta-1 { min-height: 12px; color: #f7f7f7; }

#invia { margin-bottom: 0px; }


/* =========================================================
   5. BOX PREZZI (TABELLE E CELLE IN EVIDENZA)
   ========================================================= */

.box-prezzi.dettaglio .inevidenza { transform: scaleX(1.03) scaleY(1.03); transition: transform 300ms ease 0ms; }

/* Intestazioni per prodotto */
#fatturazione .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #449d44; }
#societa .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #008b80; }
#controllodg .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #ff5b5b; }
#integrato .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #2B689E; }
#paghe .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #e7324a; }
#revisione .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #FFAD00; }
#revisione2 .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #FFAD00; }
#antiriciclaggio .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #e964a1; }
#bilancio .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #f58220; }
#contabilita .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #599842; }
#dichiarazioni .box-prezzi.dettaglio .inevidenza .et_pb_text:first-child { background: #4BB4E6; }

.box-prezzi.dettaglio .inevidenza .et_pb_text:first-child h3 { color: #fff; }

.box-prezzi select { width: 100%; border: solid 2px #ddd; padding: 5px 12px; margin-bottom: 0px; }

/* Spunte liste interne ai box prezzi */
.box-prezzi ul li:before { content: "\2713"; font-weight: 700; padding-right: 5px; }
.box-prezzi ul li { padding: 0 0 5px 0px; font-size: 14px; }
.box-prezzi ul { list-style-type: none; padding-bottom: 0; padding-left: 0; }

.box-prezzi .p-integrato li:before { color: #2B689E; }
.box-prezzi .p-paghe li:before { color: #e7324a; }
.box-prezzi .p-revisione li:before { color: #FFAD00; }
.box-prezzi .p-gestione-s li:before { color: #008b80; }
.box-prezzi .p-controllo-g li:before { color: #e7324a; }
.box-prezzi .p-antiriciclaggio li:before { color: #e964a1; }
.box-prezzi .p-fatturazione li:before { color: #449D44; }

/* Prezzi barrati */
.box-prezzi .del, .prezzo.del { color: #999; text-decoration: none; position: relative; font-size: 22px; font-weight: 400; }
.box-prezzi .del:before, .prezzo.del:before { content: " "; display: block; width: 100%; border-top: 1px solid #f00; height: 10px; position: absolute; bottom: 0; left: 0; transform: rotate(-7deg); }

@media (max-width: 1100px) {
    .box-prezzi.dettaglio { display: flex; flex-wrap: wrap; }
    .box-prezzi.dettaglio .et_pb_column:first-child { border-radius: 25px; border-width: 1px; margin-top: 0; margin-bottom: 20px; }
    .box-prezzi.dettaglio .et_pb_column { width: 95%; margin: 0 auto; }
}


/* =========================================================
   6. TAB VERTICALI (Variante 1 e Variante 2)
   ========================================================= */

/* Variante 1 */
.vertical-tabs1 { border: none; }
.vertical-tabs1 .et_pb_tabs_controls li a { text-align: left; }
.vertical-tabs1 ul.et_pb_tabs_controls { float: left; width: 35%; margin-right: 0; background: transparent; }
.vertical-tabs1 ul.et_pb_tabs_controls:after { content: none; }
.vertical-tabs1 .et_pb_tabs_controls li { width: 100%; border-right: none; border-left: 5px solid transparent; background: #f4f4f4; height: unset; }
.vertical-tabs1 .et_pb_tabs_controls li.et_pb_tab_active { border-left: 5px solid #ea7f08; background: #ffffff; }
.vertical-tabs1 .et_pb_tabs_controls li a { padding: 10px 20px; font-size: 15px; }
.vertical-tabs1 .et_pb_tabs_controls li.et_pb_tab_active a { color: #ea7f08; }
.vertical-tabs1 .et_pb_tab { padding: 0; }
.vertical-tabs1 .et_pb_tab_content { display: flex; flex-wrap: wrap; padding: 20px; }

/* Variante 2 */
.vertical-tabs2 { border: none; }
.vertical-tabs2 .et_pb_tabs_controls li { height: unset; }
.vertical-tabs2 ul.et_pb_tabs_controls { float: left; width: 35%; margin-right: 10px; background: transparent; }
.vertical-tabs2 ul.et_pb_tabs_controls:after { content: none; }
.vertical-tabs2 .et_pb_tabs_controls li { width: 100%; border-right: none; border: 2px solid transparent; background: #E9F0F5; }
.vertical-tabs2 .et_pb_tabs_controls li:not(.et_pb_tab_active):hover { background: #95b3ce70; }
.vertical-tabs2 .et_pb_tabs_controls li.et_pb_tab_active { border: 2px solid #2B689E; background: #2B689E; }
.vertical-tabs2 .et_pb_tabs_controls li.et_pb_tab_active:after { top: 50%; right: -33px; border: solid transparent; content: " "; position: absolute; border-color: transparent; border-left-color: #2B689E; border-width: 16px; margin-top: -16px; }
.vertical-tabs2 .et_pb_tabs_controls li a { padding: 8px 20px; }
.vertical-tabs2 .et_pb_tabs_controls li.et_pb_tab_active a { color: #ffffff; }
.vertical-tabs2 .et_pb_tab { padding: 0; }
.vertical-tabs2 .et_pb_tab_content { display: flex; flex-wrap: wrap; padding: 20px; }

@media (max-width: 767px) {
    .vertical-tabs1 ul.et_pb_tabs_controls, .vertical-tabs2 ul.et_pb_tabs_controls { width: 100%; margin-bottom: 30px; margin-right: 0; }
    .vertical-tabs1 .et_pb_tabs_controls li, .vertical-tabs2 .et_pb_tabs_controls li { border-bottom: none; }
    .vertical-tabs1 .et_pb_tab_content, .vertical-tabs2 .et_pb_tab_content { display: block; }
}


/* =========================================================
   7. HEADER HOME ANIMATO (#home-slider)
   ========================================================= */

#home-slider { overflow: hidden; }
.title-container-home-slider { margin-top: 10px; margin-bottom: 10px; overflow: hidden; }
.title-home-slider { font-size: 30px; color: #2B689E; font-weight: 400; padding-bottom: 10px; }
.subtitle-home-slider { font-size: 20px; color: #5C5C5C; font-weight: 200; line-height: 1.3em; padding-bottom: 15px; }
.subtitle-home-slider2 { font-size: 20px; font-weight: 300; line-height: 1.3em; padding-bottom: 15px; color: #5C5C5C; }
.subtitle-extra-home-slider { display: block; margin-bottom: 0; }
.subtitle-main-home-slider { display: inline; }
.icons-container-home-slider { margin-top: 20px; height: 40px; }
.icon-home-slider { margin-right: 20px; transition: margin 0.3s; }
.icon-home-slider:hover { cursor: pointer; }
.icon-hidden-home-slider { display: none; }
.subt-extra-cont-home-slider { display: inline-flex; overflow: hidden; }

#img-col-slider { padding: 0 0; position: relative; overflow: hidden; height: 550px; }
.img-bkgr-home-slider { height: 550px; width: 100%; position: absolute; background-repeat: no-repeat; background-position: top left; background-size: cover; }

#home-slider .et_pb_column_1 { width: 50%; }
#home-slider .et_pb_column_2 { width: 50%; }
#home-slider .title-home-slider { animation-duration: 0.55s; }
#home-slider .subtitle-extra-home-slider { animation-duration: 0.55s; }

.animation-delay-cstm-1 { animation-delay: 0.5s; }
.animation-delay-cstm-2 { animation-delay: 0.8s; }

/* Animazione Bounce applicabile ai titoli.
   Chi ha attivato "riduci animazioni" nel sistema operativo non la vede:
   il blocco prefers-reduced-motion di gb-core.css la spegne per tutto il sito. */
.bounce { animation-name: bounce; transform-origin: center bottom; animation-duration: 1s; animation-fill-mode: both; }

@keyframes bounce {
    0%, 20%, 53%, 80%, 100% { transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); transform: translate3d(0,0,0); }
    40%, 43% { transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transform: translate3d(0, -30px, 0); }
    70% { transition-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060); transform: translate3d(0, -15px, 0); }
    90% { transform: translate3d(0,-4px,0); }
}

@media (max-width: 1399px) {
    #home-slider { display: flex; flex-wrap: wrap; }
    #home-slider .et_pb_column_1, #home-slider .et_pb_column_2 { width: 100%; }
    .img-bkgr-home-slider { height: 500px; background-position: center left; background-size: cover; }
    #img-col-slider { height: 500px; }
    .icons-container-home-slider { margin-top: 0px; }
}


/* =========================================================
   8. TAB A ICONE (BLURB TABS)
   ========================================================= */

#blurb-tabs .et_pb_column { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; }
#blurb-tabs .tab-title { width: 33.333%; transition: all .3s ease-in-out; }
#blurb-tabs .tab-title:hover { cursor: pointer; background: #f3f3f3; }
#blurb-tabs .tab-title.active-tab { background: #E9F0F5; }
#blurb-tabs .et_pb_module_header a { color: #95b3ce; }
#blurb-tabs .et-pb-icon { color: #95b3ce; }
#blurb-tabs .et_pb_blurb_container { vertical-align: middle; }
#blurb-tabs .et_pb_module_header { padding: 0; }

#blurb-tabs .active-tab .et_pb_module_header a { color: #2B689E; }
#blurb-tabs .tab-title.active-tab .et_pb_blurb_container h4 a { color: #000; }
#blurb-tabs .tab-title.active-tab .et-pb-icon { color: #2B689E; }

.et_pb_main_blurb_image .et-pb-icon { width: 100px; height: 100px; display: flex; justify-content: center; align-items: center; padding: 0; }

@media (max-width: 980px) {
    #blurb-tabs .tab-title { width: 100%; }
}


/* =========================================================
   9. FORM CONTATTI VARIANTE V (#cont-form-v)

   COMPLETATO l'11 agosto 2026. Prima qui c'erano solo i RITOCCHI.
   Nel CSS del sito vecchio questo form sta su DUE strati:
     - un blocco BASE su selettori nudi (fieldset, fieldset div,
       input[type=button], #privacy-box...) che vale per tutti i form;
     - un blocco #form-v che ne cambia solo alcune cose (le etichette a
       tutta larghezza, i campi al 100% invece che al 65%).
   Era stato portato solo il secondo. Il form usciva sformato non perche'
   una regola fosse sbagliata, ma perche' sovrascriveva un valore che non
   c'era piu': #form-v e' una correzione, non un foglio completo.

   Le regole base mancanti sono state aggiunte QUI, tutte riscritte con
   #form-v davanti. Non e' una scorciatoia: e' lo stesso trattamento del
   blocco 4 (#form-cta-1), che infatti porta il suo "#form-cta-1 fieldset".
   Cosi' `fieldset`, `#privacy-box` e `input[type=button]` restano dentro
   questo form e non toccano il resto del sito ne' le sezioni nuove --
   e non serve nessuna guardia :not(:where(...)).

   Prezzo da sapere: se un giorno un ALTRO form si appoggiasse a quelle
   regole nude, resterebbe sformato come lo era questo. Oggi non succede:
   i soli form nel CSS vecchio sono #form-v e #form-cta-1, e il secondo ha
   gia' le sue.
   ========================================================= */

#cont-form-v { background-color: #EAF0F5; padding: 30px; box-shadow: 0px 2px 18px 0px rgba(0,0,0,0.3); }

/* --- base, era `fieldset` nudo: senza, il fieldset teneva il bordo di
       default del browser e non era ne' centrato ne' limitato a 1024px --- */
fieldset { border: none; width: 100%; text-align: left; max-width: 1024px; margin: 0 auto; }

/* --- base, era `fieldset div`: e' lo spazio verticale FRA I CAMPI.
       Senza, le righe del form si toccano. --- */
fieldset div { float: none; margin: 0 0 10px 0; width: 100%; }

/* --- base, era `form small` --- */
form small { line-height: 18px; display: block; }

#form-v fieldset label { display: block; float: none; width: 100%; text-align: left; padding: 0 30px 0 0; font-size: 16px; font-weight: 400; }

#form-v fieldset input[type=text] { float: none; width: 100%; height: 30px; font-size: 16px; border: 1px solid #999999; padding: 0 0 0 5px; margin: 0; color: #666666; background: #ffffff; }

#form-v fieldset select { width: 100%; height: 32px; float: none; border: 1px solid #999999; font-size: 16px; color: #666666; background: #ffffff; }

#form-v fieldset textarea { width: 100%; height: 60px; float: none; font-size: 16px; border: 1px solid #999999; padding: 0 0 0 5px; margin: 0; color: #666666; resize: vertical; background: #ffffff; }

#form-v fieldset textarea.messaggio { height: 100px; }

/* --- base, era `fieldset input[type='checkbox']`: le spunte di privacy e
       newsletter. Senza, restano alla misura di default del browser. --- */
fieldset input[type='checkbox'] { width: 15px; height: 15px; float: none; margin: 0 30px 0 0; background: #ffffff; }

/* --- base, erano `#privacy-box, #newsletter, #campi-obbligatori` nudi ---
   ATTENZIONE ALL'ORDINE: questa riga azzera il margine, la successiva lo
   rimette solo su #privacy-box. Hanno la STESSA specificita' (due id), quindi
   decide chi arriva dopo. Invertirle attacca la privacy al campo sopra. */
#privacy-box, #newsletter, #campi-obbligatori { font-size: 12px; float: none; width: 100%; padding: 0; margin: 0; }
#privacy-box { margin: 20px 0 0 0; }

/* --- base, era `#privacy-box label, #newsletter label`: senza, l'etichetta
       della privacy resta al 35% e allineata a destra come nei form vecchi --- */
#privacy-box label, #newsletter label { float: none; font-size: 14px; width: 100%; text-align: left; }

#form-v #privacy-box #privacy-check, #form-v #newsletter #newsletter-check, #form-v #campi-obbligatori #campi-obbligatori-left { width: 5%; float: left; text-align: left; padding: 0; margin: 0; }

#form-v #privacy-box #privacy-descrizione, #form-v #newsletter #newsletter-descrizione, #form-v #campi-obbligatori #campi-obbligatori-descrizione { width: 95%; float: left; padding: 0; margin: 0; }

/* --- base, era `fieldset input[type='button']`: IL PULSANTE DI INVIO.
       Senza questa regola tornava un bottone di sistema: niente arancio,
       niente maiuscolo, niente centratura, niente larghezza massima.
       #f07e00 e' identico a --gb-arancio e diventa token, come da prassi del
       legacy. L'arancio dell'hover (#F39833) NON corrisponde a nessun token e
       resta esadecimale: somiglia, ma non e' lo stesso colore. --- */
/* ⚠ QUESTA RESTA NUDA, NON LEGARLA A #form-v.
   E' il pulsante di invio di TUTTI i form del sito vecchio, non solo di questo.
   Il 12/08/2026 era stata chiusa dentro #form-v insieme alle altre regole base,
   e il pulsante del form CTA in sidebar (#form-cta-1, blocco 4) ha perso di colpo
   arancio, maiuscolo, larghezza massima e raggio: e' tornato un bottone di sistema.
   Il blocco 4 infatti NON ha una regola sua per il pulsante -- si e' sempre
   appoggiato a questa. Restringerla equivale a cancellargliela.
   Se un giorno serve un pulsante diverso in un form, si aggiunge una regola
   PIU' SPECIFICA per quel form, senza toccare questa. */
fieldset input[type='button'] { clear: both; display: block; margin: 30px auto; padding: 10px; width: 100%; max-width: 350px; background-color: #F07E00; color: #FFF; text-transform: uppercase; border: none; cursor: pointer; font-size: 18px; border-radius: 5px; font-weight: 700; height: auto !important; white-space: normal; }
fieldset input[type='button']:hover { background-color: #F39833 !important; }

#form-v span.error { color: #F00000; font-weight: 300; font-size: 13px; }

/* --- Rotelle di attesa: nascoste di riposo, le accende il JS del form
       durante l'invio. Se manca questa riga restano visibili SEMPRE, ed e'
       il difetto che si nota per primo perche' non sembra un problema di CSS.
       Queste NON si possono legare a #form-v: .loadingsb e .loadingNews stanno
       fuori dal form (sidebar e newsletter). Verificato prima di lasciarle
       nude: nessuna sezione della libreria usa una classe "loading". --- */
.loading, .loading2, .loading3, .loadingsb, .loadingNews { display: none; }


/* =========================================================
   13. LAYOUT ARTICOLO E INDICE (JOLI TOC)

   ⚠ NOTA SUI TITOLI — l'unico punto di questo file in cui ho aggiunto qualcosa
   ai selettori originali, e il perche':
   `.defaultpost h2` vale (0,1,1) di specificita', `.gb-titolo` vale (0,1,0) —
   e questo file arriva DOPO gb-core.css. Quindi una sezione della libreria messa
   dentro un articolo si sarebbe ritrovata i titoli centrati, maiuscoli e con il
   filetto arancio sotto; e gli `h3` delle .gb-card idem. Non e' un'ipotesi di
   scuola: infilare una sezione dentro un post e' una cosa che si fa.
   La guardia e' `:not(:where(.gb-libreria *, .gb-sezione *))`: esclude tutto cio' che sta dentro
   una sezione della libreria. `:where()` conta ZERO in specificita', quindi
   fuori dalle sezioni queste regole si comportano esattamente come prima.
   Il gancio che conta e' .gb-libreria (vedi la nota in testa al file): .gb-sezione
   da sola copriva 41 sezioni su 136. Questo blocco e' il piu' esposto di tutti,
   perche' 135 sezioni su 136 hanno almeno un h2/h3/h4.

   Il colore #ffaa00 NON e' #FFAD00 (#FFAD00): sono due arancioni
   diversi. Lasciato letterale apposta.
   ========================================================= */

/* Impostazioni Articolo */
.defaultpost h1.entry-title { color: #ffaa00; font-weight: 400; margin-bottom: 5px; font-size: 30px; }
.defaultpost h2:not(:where(.gb-libreria *, .gb-sezione *)) { font-size: 24px; color: #2B689E; text-align: center; border-bottom: solid 2px #ffaa00; margin-bottom: 15px; margin-top: 30px; text-transform: uppercase; font-weight: 400; }
.defaultpost h3:not(:where(.gb-libreria *, .gb-sezione *)) { font-size: 21px; color: #598AB1; text-align: center; border-bottom: solid 2px #ffaa00; margin-bottom: 15px; margin-top: 30px; text-transform: uppercase; font-weight: 400; }
.defaultpost h4:not(:where(.gb-libreria *, .gb-sezione *)) { font-size: 18px; text-align: center; border-bottom: solid 2px #ffaa00; margin-bottom: 15px; margin-top: 30px; text-transform: uppercase; font-weight: 400; }

.mypostmeta { color: #2B689E; font-weight: 400; font-size: 20px; margin-bottom: 20px; padding: 0; }
.mytag { font-size: 15px; margin-bottom: 15px; margin-top: 25px; }
.mytag span { color: #2B689E; font-weight: 800; margin-right: 10px; }
.mytag a { color: #ffaa00; margin: 0 4px; display: inline-block; font-weight: 400; }
.mpath { padding: 0 0 20px 0; margin: 0 auto; font-size: 13px; font-weight: 400; }

/* Indice dei Contenuti (Joli TOC) */
#joli-toc { background: rgba(255, 170, 0, 0.17); margin: 20px auto; width: 100%; min-width: 100%; }
#joli-toc-wrapper.joli-incontent { margin-bottom: 0px; }
#joli-toc-wrapper nav#joli-toc ul { list-style-image: unset; padding: 0 0 0 1em; color: #ffaa00; text-align: left; display: block; list-style-type: disc; }
#joli-toc-wrapper nav#joli-toc ul li { margin-bottom: 5px; list-style: disc; margin-left: 20px; font-size: 14px; display: list-item; color: #ffaa00; }
#joli-toc a { color: #777; font-size: 15px; }
#joli-toc a:hover { color: #333; background: transparent; }
.defaultpost .joli-heading { padding: 0 0 10px 0; }


/* =========================================================
   21. GRIGLIA CASI STUDIO (CASE HISTORY)

   ⚠ FRAGILITA' DA SAPERE (non la tocco, e' cosi' anche sul sito vivo):
   la regola del titolo usa `.et_pb_blog_0`. Quello zero e' l'INDICE del modulo
   Blog nella pagina, assegnato da Divi in ordine di comparsa: se un giorno
   qualcuno aggiunge un altro modulo prima di quello, il modulo dei casi studio
   diventa .et_pb_blog_1 e la regola smette di agganciare — in silenzio, senza
   errori. Se un giorno i titoli tornano storti, il colpevole e' quello zero:
   basta togliere `.et_pb_blog_0` dal selettore e lasciare `.casehistory h2.entry-title`.

   Nota buona per i Core Web Vitals: le tre altezze fissate qui (`height:150px`
   sull'immagine, `min-height` su titolo e testo) riservano lo spazio prima che
   le immagini arrivino. E' proprio quello che evita il salto di layout.
   ========================================================= */

.casehistory .et_pb_blog_grid .et_pb_image_container img {
    height: 150px;
    object-fit: contain;
    padding: 15px;
    border-radius: 7px;
}

.casehistory .et_pb_blog_0 h2.entry-title {
    order: unset;
    border-left: none;
    padding-left: unset;
    padding: 0;
    font-size: 22px;
    text-align: center;
    line-height: 1.3em;
    color: #2B689E;
    min-height: 56px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.casehistory .et_pb_image_container { margin: 0; }
.casehistory .entry-featured-image-url { margin-bottom: 0; }
.casehistory .post-content-inner { text-align: center; min-height: 92px; display: flex; justify-content: center; align-items: center; }
.casehistory article { border-radius: 20px; border: none; }
.casehistory .more-link { color: #2B689E; text-align: center; display: block; font-weight: 400; }


/* =========================================================
   26. REORDERING MODULO BLOG E ARCHIVI (FLEXBOX)

   ⚠ DUE COSE DA SAPERE.

   1) Le regole su `.archive article` e `.search-results article` colpiscono
      OGNI <article> della pagina, non solo quelli del blog: `.archive` e
      `.search-results` sono classi che WordPress mette sul <body>.
      Sette sezioni della libreria usano <article> al loro interno. Se una di
      quelle finisse in un template di archivio o nei risultati di ricerca
      (con il Theme Builder di Divi si fa), si ritroverebbe TUTTO il testo
      corsivo, grigio e a 15px — e le immagini con il raggio a 7px.
      Percio' qui c'e' `:not(:where(.gb-libreria *, .gb-sezione *))`, come nel blocco 13:
      `:where()` conta ZERO in specificita', quindi fuori dalle sezioni queste
      regole restano identiche a prima, ma smettono di entrare nella libreria.

   2) `.et_pb_blog_0` senza contenitore: vale per il PRIMO modulo Blog di
      qualunque pagina, casi studio compresi. Vedi la nota nel blocco 21.
   ========================================================= */

.et_pb_module.et_pb_blog_0 article { display: flex; flex-direction: column; }

/* Il titolo scende al secondo posto (order: 2) */
.et_pb_module.et_pb_blog_0 h2.entry-title, .search-results h2.entry-title, .archive h2.entry-title {
    order: 2;
    border-left: solid 2px #2B689E;
    padding-left: 15px;
    color: #ffaa00;
    font-weight: 400;
}

/* I metadati salgono al primo posto (order: 1) */
.et_pb_module.et_pb_blog_0 .post-meta, .search-results .post-meta, .archive .post-meta {
    order: 1;
    border-left: solid 2px #2B689E;
    padding-left: 15px;
    margin-bottom: 0;
    padding-bottom: 10px;
}

/* Il contenuto scende al terzo posto (order: 3) */
.et_pb_module.et_pb_blog_0 .post-content { order: 3; }

.archive article:not(:where(.gb-libreria *, .gb-sezione *)), .search-results article:not(:where(.gb-libreria *, .gb-sezione *)) { font-size: 15px; color: #888; font-style: italic; font-weight: 400; }
.search-results article .post-meta, .archive article .post-meta { margin-top: 0; margin-bottom: 10px; }
.search-results article:not(:where(.gb-libreria *, .gb-sezione *)) img, .search-results article .entry-featured-image-url, .archive article:not(:where(.gb-libreria *, .gb-sezione *)) img, .archive article .entry-featured-image-url { border-radius: 7px; }

/* --- IL "LEGGI TUTTO" DEGLI ARCHIVI · aggiunto l'11 agosto 2026 ---
   Era rimasto indietro: nel CSS del sito vecchio sta a riga 896 e non era mai
   stato portato qui (`et_pb_button` compariva ZERO volte in questo file).
   Senza, il link torna testo semplice -- ed e' il "leggi di piu..." arancio
   nudo che si vede oggi sugli archivi.

   PORTATA A META', E DI PROPOSITO. Il selettore originale era
       .et_pb_bg_layout_light .et_pb_button, .et_pb_posts a.more-link
   cioe' faceva DUE mestieri: il more-link degli archivi (questo serve) e
   TUTTI i pulsanti Modulo Pulsante di Divi su fondo chiaro (questo no: farebbe
   arrivare la pillola blu del sito vecchio anche sulle pagine nuove).
   Qui resta solo il more-link. Se un domani ti accorgi che manca la pillola blu
   su qualche pulsante Divi, si aggiunge `.et_pb_bg_layout_light .et_pb_button`
   a questo selettore -- ma solo dopo aver guardato DOVE manca, non per scrupolo.

   Il blu e' identico a --gb-blu, quindi diventa token come da prassi del legacy.
   I px restano: riproducono pagine gia' online.
   La guardia :not(:where(...)) tiene la regola fuori dalle sezioni della
   libreria, che i pulsanti ce li hanno gia' (.gb-pulsante). */
.et_pb_posts a.more-link:not(:where(.gb-libreria *, .gb-sezione *)) {
    color: #ffffff !important;
    background-color: #2B689E !important;
    border-width: 0 !important;
    border-radius: 30px !important;
    font-size: 13px !important;
    padding: 7px 26px !important;
    line-height: normal !important;
    display: inline-block !important;
    font-weight: 400 !important;
    max-width: max-content;
    width: max-content;
}


/* =========================================================
   35. TOGGLE SWITCH E RANGE SLIDER (Pagine Prezzi)

   La soglia 980px e' quella giusta: e' il breakpoint tablet di Divi.

   ⚠ QUESTO BLOCCO NON HA SCOPE: agisce su elementi nudi e su due nomi di
   classe fra i piu' comuni del web. Due conseguenze, una risolta e una da sapere.

   1) RISOLTA — `input[type="range"]` colpiva anche la libreria. Tre sezioni
      usano un cursore: configuratore-licenza, calcolatore-risparmio,
      prezzo-bloccato. Quest'ultima disegna il suo pomello a 22px
      (.prezzo-bloccato-cursore::-webkit-slider-thumb, specificita' 0,1,0):
      `input[type="range"]::-webkit-slider-thumb` vale (0,1,1) e vinceva,
      portandolo a 35px sotto i 980px. Aggiunto `:not(:where(.gb-libreria *, .gb-sezione *))`,
      che vale zero in specificita': fuori dalle sezioni nulla cambia.

      STORIA DI QUESTA RIGA, perche' non si ripeta. La guardia c'era gia', ma
      nominava la sola .gb-sezione — e nessuna delle tre sezioni col cursore la
      porta: usano <section class="<nome>-sezione">. La negazione era quindi
      sempre vera, la regola si applicava lo stesso e i tre cursori tornavano
      alti 35px sotto i 980px. Il ragionamento sulla specificita' era giusto;
      era il gancio che non agganciava. Per questo ora c'e' .gb-libreria, che
      sta su tutte e 136 le radici ed e' verificata dal linter.
      Morale: una guardia scritta contro una convenzione che il codice non
      rispetta non protegge niente, e non lo dice.

   2) DA SAPERE — `.switch` e `.slider` restano senza prefisso. Oggi nessuna
      sezione della libreria li usa (quelle che sembravano usarli hanno nomi
      prefissati: battito-studio-switch, interruttore-guido-switch), quindi
      non tocco niente. Ma `.slider` e' un nome che moltissimi plugin di
      caroselli adottano: se un giorno un carosello si sposta di 50px in
      orizzontale sotto i 980px, il colpevole e' la regola qui sotto
      `input:checked + .slider:before`. E' cosi' anche sul sito vivo.
   ========================================================= */

@media (max-width: 980px) {
    /* Stile per la barra a scorrimento (Range) */
    input[type="range"]:not(:where(.gb-libreria *, .gb-sezione *)) {
        height: 35px;
    }
    input[type="range"]:not(:where(.gb-libreria *, .gb-sezione *))::-webkit-slider-thumb {
        height: 35px;
        width: 35px;
    }

    /* Stile per l'interruttore (Switch) */
    .switch {
        width: 80px;
        height: 35px;
        vertical-align: 7px;
    }

    /* Il "pallino" dell'interruttore */
    .slider:before {
        height: 26px;
        width: 26px;
    }

    /* Animazione quando l'interruttore è attivo (Checked) */
    input:checked + .slider:before {
        -webkit-transform: translateX(50px);
        -ms-transform: translateX(50px);
        transform: translateX(50px);
    }
}

/* =========================================================
   FEATHERLIGHT — il lightbox DEL SITO (non del child)
   ---------------------------------------------------------
   Featherlight non arriva da qui: e' gia' sul sito, e lo usano cinque
   sezioni della libreria (hero-slider, hero-prodotto-video e la sua
   variante a esagoni, recensioni-video, recensioni-esagoni, video-riquadro)
   attraverso i soli attributi data-featherlight-* sul link.

   Questa unica regola toglie la barra di scorrimento verticale che compare
   dentro la finestra del lightbox quando ci si mette un iframe video: senza,
   a destra resta una striscia grigia e il video sembra tagliato.

   STA QUI E NON NELLE SEZIONI, per due motivi:
   1. i selettori sono di featherlight, quindi NON possono avere il prefisso
      di una sezione: metterli in un stile.css significherebbe piazzare due
      classi senza prefisso in pagina, contro la regola 4.1;
   2. e' una riga sola che vale per tutto il sito. Prima veniva incollata
      dentro OGNI blocco video: cinque copie della stessa regola sulla stessa
      pagina, e cinque punti da cambiare il giorno che serve.
   ========================================================= */
.featherlight-iframe .featherlight-content{ overflow-y: hidden; }


/* =========================================================
   36. VOCI NASCOSTE NEL WIDGET CATEGORIE (#categories-2)

   Portato dal CSS del sito vecchio il 12/08/2026: nel passaggio a Divi 5
   questa regola non era arrivata, e nell'elenco categorie della sidebar
   sono ricomparse 27 voci che da anni erano nascoste.

   SELETTORI NUDI, IDENTICI ALL'ORIGINALE. NON RESTRINGERLI.
   Al primo tentativo erano stati chiusi dentro #categories-2, il widget della
   sidebar, per "non colpire tutto". Sbagliato: gli elenchi di categorie sono
   almeno DUE, in contenitori diversi --
       #categories-2   il widget della sidebar
       .listcat        l'elenco in fondo agli articoli singoli
   e restringendo al primo, sugli articoli ricomparivano tutte e 27 le voci.
   Verificato sul sito vecchio: la regola li' e' nuda apposta, e vale ovunque.

   NIENTE GUARDIA :not(:where(.gb-libreria *, .gb-sezione *)) qui, a differenza
   dei blocchi 13/26/35: quelle guardie servono dove il selettore e' generico
   (`li`, `article`) e potrebbe pescare dentro una sezione della libreria.
   `cat-item-NNN` no: e' una classe che genera WordPress per gli elenchi di
   categorie, con dentro il term_id reale. Nessuna sezione puo' portarla per
   sbaglio, quindi la guardia sarebbe rumore.

   TRE VOCI NASCONDONO SOLO I FIGLI (`li.cat-item-90 .children`): la voce
   resta visibile, sparisce il sottoelenco. Non e' una svista dell'originale.

   DUE DOPPIONI TOLTI: nel vecchio `cat-item-258` e `cat-item-1128`
   comparivano due volte nello stesso selettore. Da 28 voci a 27 uniche,
   stesso identico effetto.

   Gli id numerici non si toccano: sono i term_id reali delle categorie.
   Se un giorno una voce deve tornare visibile, si toglie la sua riga da qui.
   ========================================================= */
li.cat-item-1,
li.cat-item-5,
li.cat-item-15,
li.cat-item-18,
li.cat-item-21,
li.cat-item-22,
li.cat-item-258,
li.cat-item-305,
li.cat-item-317,
li.cat-item-318,
li.cat-item-319,
li.cat-item-320,
li.cat-item-321,
li.cat-item-322,
li.cat-item-325,
li.cat-item-351,
li.cat-item-352,
li.cat-item-353,
li.cat-item-452,
li.cat-item-871,
li.cat-item-1128,
li.cat-item-1616,
li.cat-item-2636,
li.cat-item-3055,
li.cat-item-90 .children,
li.cat-item-2026 .children,
li.cat-item-2635 .children { display: none !important; }


/* =========================================================
   37. ELENCO CATEGORIE IN FONDO AGLI ARTICOLI (.listcat)

   Portate dal CSS del sito vecchio il 12/08/2026, poi RISCRITTE lo stesso
   giorno perche' nel frattempo e' stato raddrizzato il markup che le
   costringeva a essere storte.

   COM'ERA. sidebar.php passava il titolo dentro 'title_li', e
   wp_list_categories() restituisce in quel caso UN <li> che avvolge tutto,
   perche' si aspetta di finire dentro un <ul>. Finiva invece dentro un <div>:

       <div class="listcat">
         <li class="first categories">        <- <li> figlio diretto di un div
           <h4>CATEGORIE</h4>
           <ul> ...le categorie... </ul>
         </li>
       </div>

   Le regole del sito vecchio compensavano proprio quello: spegnevano il
   segno di elenco sull'<li> orfano e lo restituivano all'<ul> interno.
   Erano una COPPIA nata da un difetto, non due scelte di stile.

   COM'E' ORA (sidebar.php, 12/08/2026): titolo fuori dal title_li, elenco
   dentro il suo <ul>. Markup valido, e queste regole tornano ordinarie:
   sono rimaste solo quelle che dicono davvero qualcosa sull'aspetto.
   E' sparita `.listcat li.first.categories { list-style:none }`: esisteva
   solo per spegnere un pallino che adesso non c'e' piu'.

   ⚠ SE UN GIORNO SI TORNA INDIETRO sul PHP, vanno ripristinate anche qui:
   l'originale sta in assets/style-vecchio.css, righe 52-55.

   L'ultima riga cita anche .widget_categories: e' il widget della sidebar
   (#categories-2), che il markup l'ha sempre avuto regolare perche' lo
   stampa WordPress. Lasciata com'era.
   ========================================================= */
.listcat ul { list-style: disc; margin-left: 15px; }
.listcat ul li { margin-top: 5px; }
.listcat ul.children,
.widget_categories ul.children { margin-top: 0; }


/* =========================================================
   38. WIDGET CATEGORIE E PAGINAZIONE (sidebar e archivi)

   Portate dal CSS del sito vecchio il 12/08/2026. Nel passaggio a Divi 5 non
   erano arrivate, e si vedeva: l'elenco categorie della sidebar senza rientro
   ne' dischetti e coi link del colore sbagliato, e la paginazione ridotta a
   numeri nudi invece dei pallini tondi.

   ⚠ DUE REGOLE IN CONFLITTO NELL'ORIGINALE, tenute com'erano.
   Nel CSS vecchio .widget_categories ul e' dichiarata DUE volte, a riga 182 e
   a riga 778, con rientri diversi:
       riga 182:  list-style: disc !important;  margin-left: 15px
       riga 778:  list-style-type: disc;        padding-left: 45px
   Non si annullano: la prima usa margin, la seconda padding, e valgono
   entrambe -- il rientro reale e' la somma. Con !important solo sulla prima.
   Riprodotto identico: "sistemarlo" cambierebbe il rientro di una sidebar
   che oggi e' online e va bene cosi'.

   LA PAGINAZIONE E' A PALLINI TONDI, non a numeri. Tre cose da sapere:
     - "Pagina 1 di 97" e le frecce prec/succ sono NASCOSTE di proposito;
     - i pallini sono 40x40 con border-radius:100% e line-height:40px --
       le tre misure vanno insieme, cambiarne una sola sforma il cerchio;
     - l'arancione dell'attivo e' #feaa29, che NON e' --gb-arancio (#F07E00).
       Somigliano, non sono lo stesso colore: non "correggerlo".
   Il blu #C0D3E1 dello sfondo e #2B689E dell'hover: il secondo e' il token,
   il primo no (e' un azzurro chiaro senza corrispondenza) e resta letterale.
   ========================================================= */

/* --- widget categorie della sidebar --- */
.widget_search .widgettitle,
.widget_categories .widgettitle { text-transform: uppercase; color: #2B689E; }
.widget_categories ul { list-style: disc !important; margin-left: 15px; }
.widget_categories ul { list-style-type: disc; padding-left: 45px; }
.widget_categories ul li { margin-bottom: 0 !important; margin-top: 5px !important; }
.widget_categories ul li a { font-weight: 400 !important; color: #2B689E !important; }

/* --- paginazione WP-PageNavi --- */
.wp-pagenavi { text-align: center; }
.wp-pagenavi a, .wp-pagenavi span { border: none !important; }
.wp-pagenavi span.pages,
.wp-pagenavi .nextpostslink,
.wp-pagenavi .previouspostslink { display: none !important; }
.wp-pagenavi a { color: #fff; font-size: 18px !important; font-weight: 600 !important; background: #C0D3E1; padding: 0px; border-radius: 100%; line-height: 40px; width: 40px; height: 40px; display: inline-block; }
.wp-pagenavi a:hover { color: #2B689E !important; }
.wp-pagenavi span.current { color: #fff !important; font-size: 18px !important; font-weight: 600 !important; background: #feaa29; padding: 0px; border-radius: 100%; line-height: 40px; width: 40px; height: 40px; display: inline-block; }


/* =========================================================
   39. LARGHEZZE DI CONTENUTO E SIDEBAR (articoli e archivi)

   Portate dal CSS del sito vecchio il 12/08/2026. Senza, valgono le
   proporzioni di serie di Divi (79% / 21%) e la colonna destra risulta
   troppo stretta rispetto al sito vero.

   ⚠ MODIFICATO RISPETTO ALL'ORIGINALE, su richiesta: la sidebar passa da
   30% a 27% (e il contenuto da 70% a 73%). E' l'unica differenza voluta.

   ⚠⚠ TRE NUMERI ACCOPPIATI, non tre valori indipendenti:

        #left-area  width      73%
        #sidebar    width      27%
        .container:before  right  29%     <- il filetto grigio verticale

   Il filetto NON e' un bordo della sidebar: e' uno pseudo-elemento su
   #main-content .container, posizionato a destra in percentuale. Deve cadere
   nella gronda fra le due colonne, cioe' dentro il padding-right:40px del
   contenuto. Nell'originale era 30% di sidebar e 32% di filetto: due punti
   piu' a sinistra del confine. Qui 27% + 2 = 29%, stesso scarto.
   SE CAMBI UNA LARGHEZZA, RICALCOLA IL FILETTO: sidebar% + 2. Altrimenti la
   riga resta dov'era e si stacca dalla gronda, e nessuno capisce perche'.

   LE SOGLIE 980/981 RESTANO QUELLE DELL'ORIGINALE. Nel design system sarebbero
   fuori standard (REGOLE 4.11 ammette solo 980 e 767) ma questo e' legacy:
   qui si riproduce, non si normalizza. Il linter infatti non controlla
   questo file.
   ========================================================= */

/* la gronda a sinistra della sidebar, fuori dalle media query come nell'originale */
#sidebar { padding-left: 15px !important; }

@media (max-width: 980px) {
  #left-area, #sidebar { width: 100% !important; }
}

@media (min-width: 981px) {

  #left-area { padding-bottom: inherit; width: 73%; padding-right: 40px; }
  #sidebar   { padding-bottom: inherit; width: 27%; }

  /* il filetto grigio fra contenuto e sidebar */
  .et_right_sidebar #main-content .container:before { right: 29% !important; }
  #main-content .container:before {
    content: ""; position: absolute; top: 0;
    height: 100%; width: 1px; background-color: #e2e2e2;
  }

  /* pagine a tutta larghezza: il contenuto si riprende tutto */
  .et_full_width_page #left-area,
  .et_no_sidebar #left-area { float: none; width: 100% !important; }
  .et_full_width_page #left-area { padding-bottom: 0; }
}


/* =====================================================================
   40. FOOTER (numero assegnato il 16/09/2026, NON viene dall'originale)
   =====================================================================
   PERCHE' IL NUMERO E' NUOVO: i blocchi 1-39 riprendono la numerazione del
   CSS originale del sito vecchio. Quell'originale numerato pero' NON e' in
   cartella: cercato il 16/09/2026 in style-vecchio.css, nel style.css del
   child vecchio, nel CSS obsoleto e nel pannello Integrazione, zero
   intestazioni numerate. I numeri 1-39 esistono solo dentro questo file.
   Quindi al footer non si poteva dare un numero originale senza inventarlo:
   40 e' assegnato qui, ed e' dichiarato per non far credere il contrario.

   COSA COPRE: tutte le regole sul footer che stavano in style-vecchio.css,
   cioe' nell'interruttore diagnostico, e che quindi sul sito NON si vedevano
   piu' a interruttore spento. Verificato da Giuseppe con ?vecchio=1.

   NOTA SUI COLORI: il #ffffff qui non e' un colore di marca, e' bianco puro
   su fondo scuro. Resta letterale come tutto il resto del file.
   ===================================================================== */

/* -- la riga di copyright in fondo (#footer-info e' nativo di Divi) ----- */
#footer-info p {
  font-size: 14px;
  text-align: center;
  text-align-last: center;
  font-weight: 300;
  color: #ffffff;
}
#footer-info a { color: #ffffff; }
#footer-info   { float: none; }

/* -- le liste dentro i widget del footer ------------------------------- */
.footer-widget ul li { font-size: 14px; text-align: left; }

/* -- lo sfondo della fascia widget ------------------------------------- */
/* L'immagine di sfondo era gia' commentata nell'originale: lasciata com'era,
   perche' toglierla sarebbe una decisione, non un travaso. */
footer#main-footer #footer-widgets {
  /*background-image: url(https://www.softwaregb.it/wp-content/uploads/gb-footer.png);*/
  background-repeat: no-repeat;
  background-size: contain;
  background-position: center;
}

/* -- le icone social --------------------------------------------------- */
.footer-social-icon a { margin: 0 5px; }

/* -- le pagine che NON devono mostrare la fascia widget ----------------- */
/* Elenco di page-id copiato alla lettera dall'originale: 47 id, di cui DUE
   disattivati dentro il selettore stesso (55318 e 55819, cioe' la pagina
   prezzi). Quel commento a meta' selettore NON e' un refuso: e' il modo in
   cui su quelle due pagine il footer e' stato rimesso. Non "pulirlo".
   La riga e' lunga apposta: e' incollata identica, non riscritta. */
.page-id-52973 #footer-widgets, .page-id-52872 #footer-widgets, .page-id-52919 #footer-widgets, .page-id-52931 #footer-widgets, .page-id-52895 #footer-widgets, .page-id-52926 #footer-widgets, .page-id-52889 #footer-widgets, .page-id-52879 #footer-widgets, .page-id-52913 #footer-widgets, .page-id-52937 #footer-widgets, .page-id-52904 #footer-widgets, .page-id-3731 #footer-widgets, .page-id-53242 #footer-widgets, .page-id-52973 #footer-widgets, .page-id-22045 #footer-widgets, .page-id-17 #footer-widgets, .page-id-60270 #footer-widgets, /*.page-id-55318 #footer-widgets, .page-id-55819 #footer-widgets,*/ .page-id-60787 #footer-widgets, .page-id-60877 #footer-widgets, .page-id-60924 #footer-widgets, .page-id-60978 #footer-widgets, .page-id-242718 #footer-widgets, .page-id-242751 #footer-widgets, .page-id-242780 #footer-widgets, .page-id-242785 #footer-widgets, .page-id-242796 #footer-widgets, .page-id-242800 #footer-widgets, .page-id-242817 #footer-widgets, .page-id-242834 #footer-widgets, .page-id-242849 #footer-widgets, .page-id-242854 #footer-widgets, .page-id-242884 #footer-widgets, .page-id-242936 #footer-widgets, .page-id-242954 #footer-widgets, .page-id-242965 #footer-widgets, .page-id-242986 #footer-widgets, .page-id-243012 #footer-widgets, .page-id-243029 #footer-widgets, .page-id-243387 #footer-widgets, .page-id-243405 #footer-widgets, .page-id-245739 #footer-widgets, .page-id-987498133 #footer-widgets, .page-id-987498154 #footer-widgets, .page-id-987507111 #footer-widgets, .page-id-987516447 #footer-widgets, .page-id-987516449 #footer-widgets {display:none;}

