.elementor-kit-3{--e-global-color-primary:#093c49;--e-global-color-secondary:#9ab35e;--e-global-color-text:#444444;--e-global-color-success:#9AB35D;--e-global-color-6929ada:#21606C;--e-global-color-1163f6e:#2A7C8B;--e-global-color-5a3c2ea:#002F41;--e-global-color-c9485f3:#78BC3D;--e-global-typography-primary-font-family:"Poppins";--e-global-typography-primary-font-weight:default;--e-global-typography-secondary-font-family:"default";--e-global-typography-secondary-font-weight:default;--e-global-typography-text-font-family:"default";--e-global-typography-text-font-weight:default;--e-global-typography-accent-font-family:"default";--e-global-typography-accent-font-weight:default;}.elementor-widget:not(:last-child){margin-block-end:0px;}.elementor-element{--widgets-spacing:0px 30px;--widgets-spacing-row:0px;--widgets-spacing-column:30px;}html body{--alpha-gap:calc(30px / 2);}.elementor-kit-3 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1290px;}.e-con{--container-max-width:1290px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1439px){.elementor-widget:not(:last-child){margin-block-end:0px;}.elementor-element{--widgets-spacing:0px 25px;--widgets-spacing-row:0px;--widgets-spacing-column:25px;}html body{--alpha-gap:calc(25px / 2);}}@media(max-width:1199px){.elementor-widget:not(:last-child){margin-block-end:0px;}.elementor-element{--widgets-spacing:0px 20px;--widgets-spacing-row:0px;--widgets-spacing-column:20px;}html body{--alpha-gap:calc(20px / 2);}}@media(max-width:991px){.elementor-widget:not(:last-child){margin-block-end:0px;}.elementor-element{--widgets-spacing:0px 15px;--widgets-spacing-row:0px;--widgets-spacing-column:15px;}html body{--alpha-gap:calc(15px / 2);}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}/* Start custom CSS *//* Aree toccabili del footer: le voci erano alte 21px */
@media (max-width: 991px) {
  .elementor-element-d5ea7c4 a,
  .elementor-element-cf52d78 a {
    display: inline-block;
    padding-top: 12px;
    padding-bottom: 12px;
  }
}
/* I menu a tendina dei form mostravano due frecce: quella del tema
   (immagine di sfondo) e il chevron di Elementor. Resta il chevron. */
.elementor-select-wrapper select.elementor-field-textual { background-image: none !important; }

/* ---- Page header (template 1749) e header su mobile, 3 agosto 2026 ----
   Il titolo della pagina finiva sotto l'header, che e' in position:absolute
   e si sovrappone al contenuto: il blocco titolo partiva a 131px mentre
   l'header arrivava a 157px. Valeva su tutte e undici le pagine interne.
   Il CSS sta qui e non nel template perche' i post udesign_template non
   emettono mai il loro CSS personalizzato.
   ATTENZIONE: il padding di 155px dipende dall'altezza dell'header mobile
   (132px dopo aver tolto il margine qui sotto). Se l'header cambia altezza,
   questo valore va rimisurato. */
@media (max-width: 767px) {

  /* La riga mobile dell'header aveva 24,75px di margine sopra, ereditato:
     il margine collassava verso l'alto e spingeva giu' tutto l'header,
     lasciando una fascia scura vuota in cima a ogni pagina. */
  .elementor-element-9a1e1ef { margin-top: 0 !important; }

  .elementor-element-07d7004 > .e-con-inner {
    padding-top: 155px !important;
    padding-bottom: 32px !important;
  }

  /* Titolo della pagina: ruolo "titolo pagina" della scala (26/700/1.2).
     Era 30px con interlinea 2.0, cioe' 30px di aria dentro il titolo. */
  .elementor-element-2b658f8 h1 {
    font-size: 26px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
  }

  /* Titolo e briciole sulla stessa riga quando ci stanno (Azienda, Servizi)
     e impilati quando non ci stanno: decide il browser col ritorno a capo,
     cosi' vale anche per le pagine future. */
  .elementor-element-de23ffd {
    flex-direction: row !important;
    flex-wrap: wrap !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    gap: 8px 16px !important;
  }
  .elementor-element-2b658f8 {
    width: auto !important;
    max-width: 100% !important;
    flex: 0 1 auto !important;
  }
  .elementor-element-ad69b11 {
    width: auto !important;
    flex: 0 0 auto !important;
  }
}

/* Briciole di pane: il link "Home" era alto 17px, sotto la soglia
   dei 44px di area toccabile. Vale su tutte le pagine interne. */
@media (max-width: 767px) {
  .elementor-element-ad69b11 a {
    display: inline-block;
    padding-top: 13px;
    padding-bottom: 13px;
  }
  .elementor-element-ad69b11 ol { align-items: center; }
}

/* ---- Header in flusso sotto il laptop, 5 agosto 2026 ----
   Sotto i 1200px (tablet orizzontale, tablet, mobile) l'header non si
   sovrappone piu' al contenuto: diventa la prima sezione della pagina e
   occupa il suo spazio, come deciso da Mateo (menu-mobile.md § D).
   A 768px il titolo era coperto per 32px; ogni volta che l'header
   cresceva di poco - un logo piu' grande, una riga in piu' - il difetto
   tornava. Con l'header in flusso non puo' piu' succedere.
   La sovrapposizione la impone il tema udesign, non Elementor:
   .sticky-header .custom-header { position: absolute; z-index: 1040 }
   in theme.min.css. Nessun controllo di udesign o di Elementor la governa
   per singola vista, per questo la regola sta qui.
   Desktop e laptop (oltre i 1199px) restano identici: li' l'header
   sovrapposto all'hero e' il layout approvato dal cliente.
   Il padding di 155px del page header 1749, qui sopra, era la
   compensazione della sovrapposizione: senza piu' l'header sopra torna a
   32px e la sezione del titolo si abbassa (a 768px da 254px a 131px). */
@media (max-width: 1199px) {
  body.sticky-header .custom-header { position: static !important; }

  .elementor-element-07d7004 > .e-con-inner {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
  }

  /* La riga del logo aveva 33px di margine sopra, ereditato: era gia' stato
     azzerato su mobile il 3 agosto, ma su tablet e tablet orizzontale
     restava e teneva l'header alto per niente (184px a 768px, con un logo
     di soli 65px). Ora vale fino al laptop. */
  .elementor-element-9a1e1ef { margin-top: 0 !important; }

  /* Gli 80px di padding del tema sopra il contenuto: sotto il riquadro del
     titolo diventano un vuoto che non appartiene a nessuna sezione. Erano
     tolti solo sotto i 767px, ma il difetto e' identico su tablet: a 768px
     fra la sezione del titolo e il primo contenuto c'erano 130px.
     La home resta esclusa: li' sopra c'e' l'hero. */
  body:not(.home) main { padding-top: 0 !important; }
}

/* Il tema mette 60px di padding sopra e 82,5 sotto al contenitore della
   pagina. Sulle pagine interne, sotto al riquadro scuro del titolo, quei
   60px diventano un vuoto che non appartiene a nessuna sezione; gli 82,5
   sotto staccano l'ultima sezione dal footer senza motivo.
   La home e' esclusa: li' sopra c'e' l'hero e lo spazio e' parte del
   layout approvato dal cliente. */
@media (max-width: 767px) {
  body:not(.home) main {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
  }
}

/* ---- Blocchi con animazione d'ingresso che non comparivano mai, 5 agosto 2026 ----
   Elementor mette la classe .elementor-invisible (visibility: hidden) sugli
   elementi a cui e' impostata un'animazione d'ingresso, e la toglie quando
   l'animazione parte. Qui l'animazione non parte mai: elementorFrontend.waypoint
   e jQuery.fn.waypoint non esistono piu' in Elementor 3.34, mentre udesign 4.15
   li presuppone - le animazioni sono le sue (fadeInDownShorter, revealInLeft,
   fadeInUpShorter).
   Restavano invisibili per sempre 25 contenitori su Manutenzioni, 15 in home,
   10 su Servizi, 4 su Azienda: le otto foto dei servizi e le immagini di sfondo
   delle sezioni. Erano loro le "bande grigio scuro" attribuite al caricamento.
   Con questa riga il contenuto si vede sempre. Le animazioni d'ingresso non
   ci sono piu', ma non funzionavano comunque.
   ATTENZIONE: non basta la visibilita'. Il tema, in assets/elementor.min.css,
   aggiunge anche opacity: 0 alla stessa classe. Con la sola visibility gli
   elementi restavano trasparenti - testi e foto "spenti" sul fondo scuro, che
   sembravano comparire in ritardo. Servono tutte e due le proprieta'. */
.elementor-invisible {
  visibility: visible !important;
  opacity: 1 !important;
}

/* ---- La pagina non parte piu' invisibile, 5 agosto 2026 ----
   Il tema serve ogni pagina con "body { opacity: 0 }" scritto inline
   nell'head, e la rivela solo dopo, aggiungendo la classe pre-loaded.
   E' un accorgimento contro lo sfarfallio, ma qui si paga caro: finche'
   quel passaggio non avviene la pagina e' del tutto invisibile, e su
   telefono si vede il contenuto comparire in ritardo, a pezzi, sul fondo
   scuro delle sezioni. Il sito non ha bisogno di quel velo: i fogli di
   stile sono gia' caricati quando il contenuto viene disegnato. */
body { opacity: 1 !important; }

/* ---- Le cinque foto di Servizi che non comparivano mai, 5 agosto 2026 ----
   Delle 52 regole con cui il tema nasconde contenuto (opacity 0 o
   visibility hidden) sul sito ne risultano attive quattro. Due sono volute
   (barra di amministrazione, pulsante "torna su") e .elementor-invisible e'
   gia' neutralizzata sopra. Resta questa: cinque immagini della pagina
   Servizi tenute trasparenti in attesa di un JavaScript che non gira. Non
   comparivano nemmeno scorrendo la pagina fino in fondo. */
.banner.banner-img-hidden > .banner-img img { opacity: 1 !important; }

/* ---- L'effetto dei pulsanti restava acceso dopo il tocco, 5 agosto 2026 ----
   Il tema accende lo "sweep" dei pulsanti non solo su :hover ma anche su
   :focus. Con il dito, dopo il tap il focus resta sul pulsante: l'effetto
   rimane acceso e sopravvive anche tornando indietro nella cronologia.
   Era questo il blocco che restava strano dopo il clic.
   Il focus da tastiera (:focus-visible) resta intatto. */
.btn-sweep-to-right:focus:not(:focus-visible)::before {
  transform: scaleX(0);
}
@media (hover: none) {
  .btn-sweep-to-right:hover::before { transform: scaleX(0); }
}

/* ---- Menu mobile: entrata e uscita fluide, 5 agosto 2026 ----
   L'animazione nativa dell'off-canvas non si puo' usare qui: e' una
   animazione di Elementor, e su questo sito non partono. Con slideInRight
   il pannello restava fermo al primo fotogramma, cioe' tutto fuori
   schermo: si apriva e non si vedeva. Una transizione CSS non dipende da
   JavaScript, quindi funziona. Pannello: widget off-canvas 99add8d. */
/* Attenzione: NON toccare il transform di .e-off-canvas__main. E' stato
   provato (translateX(100%) da chiuso, 0 da aperto) e il pannello restava
   fuori schermo anche da aperto: Elementor governa quel transform con
   regole piu' forti e vince. Qui si agisce solo su opacita' e visibilita'. */
#off-canvas-99add8d {
  transition: visibility 0.3s ease, opacity 0.3s ease;
}
#off-canvas-99add8d .e-off-canvas__overlay { transition: opacity 0.3s ease; }

/* I due pulsanti del menu mobile erano larghi 327px e 347px pur avendo
   entrambi allineamento "esteso": il contenitore del primo eredita dal tema
   un margine destro di 20px, che nessun controllo di Elementor raggiunge. */
#off-canvas-99add8d .elementor-element-1c6c6ce > .elementor-widget-container {
  margin-right: 0 !important;
}/* End custom CSS */