/* E-Figo — stile del sito. Generato da Layout E-figoWeb.
   Non modificare a mano: viene riscritto a ogni pubblicazione. */
:root{
  --efigo-sfondo:#FFFFFF;
  --efigo-superficie:#F4F7FB;
  --efigo-testo:#14213D;
  --efigo-testo-tenue:#6b707d;
  --efigo-bordo:#dcdee2;
  --efigo-primario:#1A56DB;
  --efigo-primario-leggibile:#1A56DB;
  --efigo-primario-azione:#1A56DB;
  --efigo-primario-scuro:#1547b4;
  --efigo-primario-tenue:#e4ebfb;
  --efigo-su-primario:#FFFFFF;
  --efigo-secondario:#14213D;
  --efigo-su-secondario:#FFFFFF;
  --efigo-accento:#F0B429;
  --efigo-accento-azione:#F0B429;
  --efigo-su-accento:#111827;
  --efigo-su-superficie:#14213D;
  --efigo-su-sfondo:#14213D;
}

body, .wp-site-blocks { background: var(--efigo-sfondo, #FFFFFF); color: var(--efigo-testo, #1C2B4B); }
.wp-block-group.has-background, .wp-block-column.has-background { background-color: var(--efigo-superficie, #F4F6F9) !important; }
/* Bug segnalato: questa riga, senza l'esclusione, dipingeva del colore
   "testo" anche i titoli DENTRO le cover -- cioe' scuro sopra una fotografia
   scura. Dentro una cover il colore lo decide il blocco piu' sotto. */
h1:not(.wp-block-cover h1), h2:not(.wp-block-cover h2),
h3:not(.wp-block-cover h3), h4:not(.wp-block-cover h4),
.wp-block-heading:not(.wp-block-cover .wp-block-heading) { color: var(--efigo-testo, #1C2B4B); }
a { color: var(--efigo-primario-leggibile, #1A73E8); }
.wp-block-button__link, .wp-element-button {
  background-color: var(--efigo-primario-azione, #1A73E8) !important;
  color: var(--efigo-su-primario, #FFFFFF) !important;
  border-color: var(--efigo-primario-azione, #1A73E8) !important;
  border-radius: 8px;
}
.wp-block-button__link:hover, .wp-element-button:hover { background-color: var(--efigo-primario-scuro, #1557B0) !important; }
.wp-block-button.is-style-outline .wp-block-button__link {
  background: transparent !important; color: var(--efigo-primario-leggibile, #1A73E8) !important;
  border: 2px solid var(--efigo-primario-azione, #1A73E8) !important;
}
.wp-block-separator { border-color: var(--efigo-bordo); }
/* Il footer porta sempre una coppia di riserva. Senza, bastava una variabile
   non valida perche' il fondo tornasse quello chiaro del tema mentre il testo
   restava bianco: invisibile. Il browser scarta un colore di sfondo non
   valido ma applica lo stesso quello del testo, quindi l'errore si manifesta
   SOLO come testo che sparisce -- il difetto segnalato. */
.wp-site-blocks > footer, footer.wp-block-template-part, .wp-block-template-part footer {
  background: var(--efigo-secondario, #1C2B4B);
  color: var(--efigo-su-secondario, #FFFFFF);
}
.wp-site-blocks > footer :where(p,li,h1,h2,h3,h4,span,td,th,figcaption),
footer.wp-block-template-part :where(p,li,h1,h2,h3,h4,span,td,th,figcaption) {
  color: var(--efigo-su-secondario, #FFFFFF);
}
.wp-site-blocks > footer a, footer.wp-block-template-part a, .wp-block-template-part footer a {
  color: var(--efigo-su-secondario, #FFFFFF); opacity:.85;
}


.wp-block-cover { position: relative; }
/* Perche' 0.62 e non "un po' scuro": sulla fotografia piu' chiara possibile
   (bianca) il bianco sopra un velo #0B1220 da' 3.51:1 a 0.50, 4.02 a 0.54,
   4.57 a 0.58 e 5.26 a 0.62. Il minimo di legge e' 4.5, quindi 0.58 passa di
   un'unghia e 0.62 passa con margine. Risolto, non indovinato. */
.wp-block-cover > .wp-block-cover__background,
.wp-block-cover > .has-background-dim { opacity: .62 !important; background-color: #0B1220 !important; }
.wp-block-cover .wp-block-cover__inner-container,
.wp-block-cover .wp-block-cover__inner-container
  *:not(.wp-block-button__link):not(.wp-element-button) {
  color: #FFFFFF !important;
}
.wp-block-cover .wp-block-cover__inner-container { text-shadow: 0 1px 16px rgba(0,0,0,.5); }
.wp-block-cover .wp-block-cover__inner-container
  a:not(.wp-block-button__link):not(.wp-element-button) { text-decoration: underline; }

/* layout: conversione */
.wp-block-cover:first-of-type { min-height: 84vh !important; }
.wp-block-cover:first-of-type .wp-block-cover__inner-container { max-width: 780px; }
.wp-block-buttons { justify-content: center; margin-top: 1.4rem; }
.wp-block-button__link, .wp-element-button { padding: 1rem 2.4rem !important; font-size: 1.05rem; }
.wp-block-columns .wp-block-column { text-align: center; padding: 1.5rem 1rem; }
.wp-block-group.has-background {
  background: var(--efigo-primario-azione, #1A73E8) !important; color: var(--efigo-su-primario, #fff);
  padding: 3rem 1.5rem; border-radius: 14px;
}
.wp-block-group.has-background h2, .wp-block-group.has-background h3,
.wp-block-group.has-background p { color: var(--efigo-su-primario); }
.wp-block-group.has-background .wp-block-button__link {
  background: var(--efigo-su-primario, #fff) !important; color: var(--efigo-primario-leggibile, #1A73E8) !important;
}

/* #task-video-nelle-bande-2026-10-10 — il filmato dietro al testo.
   Copre la banda come farebbe una fotografia e non intercetta i clic: chi
   passa di li' deve poter premere il pulsante dell'hero, non mettere in pausa
   la carta da parati. */
.efigo-blocco.efigo-con-video-sfondo { position: relative; overflow: hidden; }
/* Due classi nel selettore, non una. La regola gia' presente per lo sfondo
   fotografico (.efigo-con-foto-sfondo > *) e' piu' specifica di una classe
   sola, e rimetteva il contenitore del filmato in position:relative: da li'
   il video spariva, perche' un contenitore relativo che dentro ha solo
   elementi assoluti e' alto zero. Era il motivo per cui lo sfondo video non
   si vedeva, ne' con YouTube ne' con un file caricato. */
.efigo-blocco.efigo-con-video-sfondo > .efigo-video-sfondo {
  position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
}
.efigo-blocco.efigo-con-video-sfondo > .efigo-video-sfondo video,
.efigo-blocco.efigo-con-video-sfondo > .efigo-video-sfondo iframe,
.efigo-blocco.efigo-con-video-sfondo > .efigo-video-sfondo .efigo-video-poster {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 100%; height: 100%; min-width: 177.78vh; min-height: 56.25vw;
  border: 0; object-fit: cover;
}
/* Il fermo immagine sta SOTTO al filmato: quando il lettore parte lo copre,
   quando non parte resta lui. Nessuno dei due e' mai una banda bianca. */
.efigo-blocco.efigo-con-video-sfondo > .efigo-video-sfondo .efigo-video-poster { z-index: 0; }
.efigo-blocco.efigo-con-video-sfondo > .efigo-video-sfondo video,
.efigo-blocco.efigo-con-video-sfondo > .efigo-video-sfondo iframe { z-index: 1; }
/* Il velo scurente sta fra il filmato e le scritte: senza, il testo bianco
   sparisce ogni volta che passa un fotogramma chiaro. */
.efigo-blocco.efigo-con-video-sfondo > .efigo-blocco-velo { position: absolute; z-index: 1; }
.efigo-blocco.efigo-con-video-sfondo > *:not(.efigo-video-sfondo):not(.efigo-blocco-velo) {
  position: relative; z-index: 2;
}

/* Chi ha chiesto al proprio computer di ridurre le animazioni non vuole un
   filmato che parte da solo: resta il fermo immagine del poster. */
@media (prefers-reduced-motion: reduce) {
  .efigo-video-sfondo video { display: none; }
  .efigo-video-sfondo iframe { display: none; }
  /* ...ma il fermo immagine resta, altrimenti la banda e' bianca: era
     esattamente il caso segnalato. */
  .efigo-video-sfondo .efigo-video-poster { display: block; }
}

/* Il video dentro la banda, sotto alle scritte. */
.efigo-banda-video-dentro { position: relative; z-index: 2; width: min(760px, 92%); margin: 18px auto 0; }

/* #task-blocchi-video-testo-2026-10-10 — il video al posto della fotografia
   dentro ai blocchi "video e testo": il guscio proporzionato ce l'ha gia'
   .efigo-blocco-video, qui serve solo che non debordi dalla colonna. */
.efigo-videotesto-video { width: 100%; }
.efigo-videotesto-video .efigo-blocco-video { margin: 0; width: 100%; }

.efigo-blocco { margin: 2.5rem auto; }
.efigo-blocco > .wp-block-columns + .wp-block-columns { margin-top: 1.2rem; }
.efigo-blocco-etichetta { font-size: .72rem; font-weight: 800; letter-spacing: .06em;
  text-transform: uppercase; opacity: .75; margin: 0 0 .25rem; }
.efigo-blocco-prezzo { font-size: 1.22rem; font-weight: 800; margin: .5rem 0; }
.efigo-blocco-esaurito { font-size: .8rem; font-weight: 700; opacity: .7; margin: .2rem 0; }
.efigo-blocco-emoji { font-size: 2.6rem; line-height: 1; margin-bottom: .6rem; }
.efigo-blocco-vuoto { border: 1.5px dashed var(--efigo-bordo, #cbd5e1); border-radius: 12px;
  padding: 1.4rem; text-align: center; opacity: .85; }
.efigo-blocco .wp-block-post-title a { text-decoration: none; }

/* ── Le sezioni nuove ─────────────────────────────────────────────────
   Ogni fondo porta con se' il colore del testo: e' la regola nata dal
   difetto di leggibilita' segnalato sui layout, e vale anche qui. */
.efigo-blocco-icona { font-size: 2.1rem; line-height: 1; margin-bottom: .55rem; }
.efigo-blocco-cifra { font-size: 2.6rem; font-weight: 900; line-height: 1.05; margin: 0 0 .2rem;
  color: var(--efigo-primario-leggibile, #1A73E8); }
.efigo-blocco-didascalia { font-size: .82rem; opacity: .75; margin: 0; }
.efigo-blocco-loghi { display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: 1.6rem 2.4rem; padding: .6rem 0; }
.efigo-blocco-logo img { max-height: 42px; width: auto; filter: grayscale(1); opacity: .62;
  transition: filter .18s, opacity .18s; }
.efigo-blocco-logo:hover img { filter: none; opacity: 1; }
.efigo-blocco-ritratto { width: 92px; height: 92px; border-radius: 50%; object-fit: cover;
  margin: 0 auto .6rem; display: block; }
.efigo-blocco-ritratto.piccolo { width: 52px; height: 52px; margin: 0; }
.efigo-blocco-iniziali { display: flex; align-items: center; justify-content: center;
  font-size: 1.7rem; font-weight: 800; color: #1C2B4B; }
.efigo-blocco-citazione { margin: 0 auto; max-width: 760px; text-align: center; }
.efigo-blocco-citazione blockquote { margin: 0; border: none; padding: 0; }
.efigo-blocco-citazione blockquote p { font-size: 1.28rem; line-height: 1.6; font-style: italic; }
.efigo-blocco-citazione figcaption { display: flex; align-items: center; justify-content: center;
  gap: .7rem; margin-top: 1rem; text-align: left; }

.efigo-blocco-cta, .efigo-blocco-iscrizione {
  background: var(--efigo-primario-azione, #1A73E8); color: var(--efigo-su-primario, #fff);
  padding: 2.6rem 1.5rem; margin: 2.5rem 0; background-size: cover; background-position: center;
  position: relative;
}
.efigo-blocco-iscrizione { background: var(--efigo-secondario, #1C2B4B); color: var(--efigo-su-secondario, #fff); }
/* Con una fotografia sotto, il testo bianco non si legge piu' da solo:
   stesso velo usato per le copertine, stessa ragione. Ora e' l'elemento
   .efigo-blocco-velo e non piu' uno ::before: ::before sul blocco serviva
   anche ai separatori, e due usi dello stesso pseudo-elemento vogliono dire
   che uno dei due sparisce appena si usano insieme. */
.efigo-blocco-cta-dentro { position: relative; z-index: 2; max-width: 820px; margin: 0 auto;
  text-align: center; }
.efigo-blocco-cta h2, .efigo-blocco-cta p,
.efigo-blocco-iscrizione h2, .efigo-blocco-iscrizione p { color: inherit !important; margin-top: 0; }
.efigo-blocco-cta .wp-block-buttons { justify-content: center; margin-top: 1.1rem; }
.efigo-blocco-cta .wp-block-button__link {
  background: var(--efigo-su-primario, #fff) !important; color: var(--efigo-primario-leggibile, #1A73E8) !important;
}
.efigo-blocco-modulo { display: flex; gap: .55rem; flex-wrap: wrap; justify-content: center;
  margin-top: 1.1rem; }
.efigo-blocco-modulo input { flex: 1 1 210px; max-width: 290px; border: none; border-radius: 8px;
  padding: .78rem .95rem; font-size: 1rem; font-family: inherit; color: #1C2B4B; background: #fff; }
.efigo-blocco-modulo button { border: none; cursor: pointer; font-family: inherit; }
.efigo-blocco-nota-piccola { font-size: .76rem; opacity: .78; margin: .7rem 0 0; }
@media (max-width: 600px) { .efigo-blocco-modulo input { max-width: none; flex-basis: 100%; } }

/* ── Allineamento, colore, larghezza ──────────────────────────────────
   Richiesti dall'utente per OGNI blocco. Il colore si applica al testo e
   ai titoli dentro il blocco, non al fondo: un comando che cambia il colore
   del testo e per sbaglio anche quello dello sfondo e' un comando che non
   si usa piu'. */
.efigo-blocco[style*="--efigo-testo-blocco"],
.efigo-blocco[style*="--efigo-testo-blocco"] :where(h1,h2,h3,h4,h5,h6,p,li,td,th,dt,dd,
  figcaption,blockquote,time,span,b,strong,em,small,label,
  a:not(.wp-block-button__link):not(.wp-element-button)) {
  color: var(--efigo-testo-blocco) !important;
}
.efigo-all-sinistra, .efigo-all-sinistra :where(h1,h2,h3,h4,p) { text-align: left; }
.efigo-all-centro,   .efigo-all-centro   :where(h1,h2,h3,h4,p) { text-align: center; }
.efigo-all-destra,   .efigo-all-destra   :where(h1,h2,h3,h4,p) { text-align: right; }
.efigo-all-centro .wp-block-buttons { justify-content: center; }
.efigo-all-destra  .wp-block-buttons { justify-content: flex-end; }
.efigo-all-sinistra .wp-block-buttons { justify-content: flex-start; }

/* L'altezza delle fotografie nelle schede. object-fit:cover ritaglia invece
   di deformare: un prodotto schiacciato e' peggio di un prodotto tagliato.
   L'emoji di riserva (quando il prodotto non ha foto) segue la stessa
   altezza, altrimenti la scheda senza foto resterebbe piu' corta di tutte. */
.efigo-blocco[style*="--efigo-alt-foto"] :where(.wp-block-image, .wp-block-post-featured-image) img {
  /* !important perche' i temi dichiarano height:auto sulle immagini dei
     blocchi, e con la sola specificita' la vincerebbero a volte si' e a
     volte no, a seconda del tema del cliente. */
  height: var(--efigo-alt-foto) !important; width: 100% !important;
  object-fit: cover !important; display: block; border-radius: 10px;
}
/* #task-click-to-call-2026-10-07 — il numero da chiamare: grande, perche'
   e' il contenuto principale del blocco, non una nota a pie' di pagina. */
.efigo-blocco-numero { font-size: clamp(1.6rem, 4vw, 2.6rem); font-weight: 800;
  margin: .4rem 0 .9rem; letter-spacing: .01em; }
.efigo-blocco-numero a { color: inherit; text-decoration: none; }
.efigo-blocco-numero a:hover { text-decoration: underline; }
/* Da telefono il pulsante prende tutta la riga: il dito non deve mirare. */
@media (max-width: 600px) {
  .efigo-blocco-chiamaci .wp-block-button { width: 100%; }
  .efigo-blocco-chiamaci .wp-block-button__link { display: block; text-align: center; }
}

/* #task-blocchi-foto-testo-2026-10-06 — la fotografia con il suo testo. */
.efigo-fototesto-foto { margin: 0 0 .85rem; }
.efigo-fototesto-foto img { width: 100%; height: auto; display: block; border-radius: 10px; }
.efigo-fototesto-mancante { width: 100%; aspect-ratio: 4 / 3; border-radius: 10px;
  margin-bottom: .85rem; background: var(--efigo-superficie, #F4F6F9);
  border: 1px dashed rgba(0,0,0,.16); }
.efigo-blocco[style*="--efigo-alt-foto"] .efigo-fototesto-mancante {
  height: var(--efigo-alt-foto); aspect-ratio: auto;
}
/* Foto e parole affiancate si guardano negli occhi: allineate al centro, non
   appese in cima, altrimenti con un testo corto la foto sembra scivolata. */
.efigo-blocco-fototesto .efigo-fototesto-righe { align-items: center; gap: 2rem; }
.efigo-blocco-fototesto .efigo-fototesto-parole > :first-child { margin-top: 0; }
.efigo-blocco-fototesto.efigo-fototesto-sopra .efigo-fototesto-foto { margin-bottom: 1.1rem; }
/* Su telefono le colonne si impilano: la fotografia va sempre per prima,
   anche quando sta a destra. Leggere il testo e poi scoprire la foto e'
   l'ordine sbagliato su uno schermo stretto. */
@media (max-width: 781px) {
  .efigo-blocco-fototesto.efigo-foto-destra .efigo-fototesto-righe {
    display: flex; flex-direction: column-reverse;
  }
}

/* I ritratti sono cerchi: l'altezza ne cambia il diametro, larghezza e
   altezza insieme, altrimenti diventano ellissi. */
.efigo-blocco[style*="--efigo-alt-foto"] .efigo-blocco-ritratto:not(.piccolo) {
  width: var(--efigo-alt-foto) !important; height: var(--efigo-alt-foto) !important;
}
.efigo-blocco[style*="--efigo-alt-foto"] .efigo-blocco-emoji {
  height: var(--efigo-alt-foto); display: flex; align-items: center; justify-content: center;
  background: var(--efigo-superficie, #F4F6F9); border-radius: 10px; margin-bottom: .6rem;
}

/* Le larghezze: "piena" esce dalla colonna del contenuto come fa alignfull
   di WordPress, senza dover toccare il tema.

   #task-larghezza-piena-2026-10-14 — la versione precedente era
     width: 100vw; max-width: 100vw; margin-left: calc(50% - 50vw); ...
   e non funzionava, per due motivi indipendenti:

   1. WordPress mette i blocchi dentro .is-layout-constrained, che impone ai
      figli "margin-left: auto !important". Senza !important la nostra regola
      perdeva e i margini negativi non venivano mai applicati: il blocco
      restava incollato al bordo interno del contenitore e sbordava a destra.
   2. 100vw comprende la barra di scorrimento. Sul sito di prova la finestra
      utile era 723 px e 100vw ne valeva 738: anche vincendo la cascata, il
      blocco sarebbe stato 15 px troppo largo e avrebbe aggiunto una barra
      orizzontale.

   Ora usiamo lo stesso meccanismo di alignfull, che sulla stessa pagina
   funziona: sbordare esattamente del padding del tema, preso dalla sua
   variabile. Non nomina vw, quindi la barra di scorrimento non c'entra piu'.

   Se un tema non dichiara quella variabile il margine vale 0: il blocco
   riempie il suo contenitore invece di tutta la pagina. E' una resa
   elegante, non un guasto -- meglio di un blocco che sborda. Tutti i siti
   in produzione oggi usano temi a blocchi, che la dichiarano. */
.efigo-larg-piena {
  --efigo-sborda-sx: var(--wp--style--root--padding-left, 0px);
  --efigo-sborda-dx: var(--wp--style--root--padding-right, 0px);
  width: auto !important;
  max-width: none !important;
  margin-left: calc(var(--efigo-sborda-sx) * -1) !important;
  margin-right: calc(var(--efigo-sborda-dx) * -1) !important;
}
.efigo-larg-larga  { max-width: 1280px; margin-left: auto; margin-right: auto; }
.efigo-larg-normale{ max-width: 860px;  margin-left: auto; margin-right: auto; }
.efigo-larg-stretta{ max-width: 620px;  margin-left: auto; margin-right: auto; }

/* ── Immagine intera, apertura, galleria ─────────────────────────────── */
.efigo-blocco-immagine, .efigo-blocco-hero {
  position: relative; display: flex; align-items: center; justify-content: center;
  background-size: cover; background-position: center; background-repeat: no-repeat;
  padding: 2.5rem 1.5rem; color: #fff;
}
.efigo-blocco-velo { position: absolute; inset: 0; background: #0B1220; opacity: .62; }
.efigo-blocco-sopra-foto { position: relative; z-index: 2; max-width: 820px; text-align: center;
  text-shadow: 0 1px 16px rgba(0,0,0,.5); }
.efigo-blocco-sopra-foto :where(h1,h2,p) { color: #fff; }
/* L'apertura SENZA fotografia ha per fondo il colore secondario della
   palette, che e' scuro. Il titolo pero' lo dipingeva la regola dei colori
   del tema -- piu' specifica di questa -- e il risultato era testo scuro su
   fondo scuro: invisibile. Stessa classe di difetto del footer, trovata
   misurando i colori resi e non guardando la pagina.
   Qui serve !important perche' la regola della palette ha specificita' 0,3,0
   contro gli 0,1,0 di quella sopra: senza, vince di nuovo lei. */
.efigo-blocco-hero.efigo-hero-senza-foto,
.efigo-blocco-hero.efigo-hero-senza-foto :where(h1,h2,h3,p,span,li,figcaption,
  a:not(.wp-block-button__link):not(.wp-element-button)) {
  color: var(--efigo-su-secondario, #FFFFFF) !important;
}
.efigo-blocco-hero.efigo-hero-senza-foto {
  background-color: var(--efigo-secondario, #1C2B4B);
}
.efigo-blocco-hero h1 { font-size: clamp(1.9rem, 4.2vw, 3.1rem); line-height: 1.12; margin: 0 0 .6rem; }
.efigo-blocco-hero .wp-block-buttons { margin-top: 1.3rem; }
/* La parallasse solo da tablet in su: su telefono background-attachment
   fixed non funziona (iOS) o fa scorrere a scatti. Meglio niente che male. */
@media (min-width: 782px) { .efigo-parallasse { background-attachment: fixed; } }

/* ═══════════════════════════════════════════════════════════════════════
   I COMANDI CHE VALGONO PER OGNI BLOCCO
   #task-blocchi-stile-universale-2026-10-06 (richiesta utente)
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 1. Fondo a colore ───────────────────────────────────────────────── */
.efigo-con-fondo {
  background-color: var(--efigo-sfondo-blocco);
  padding: 2.2rem 1.5rem; border-radius: 14px;
}
.efigo-con-fondo.efigo-larg-piena { border-radius: 0; }

/* ── 2. Fondo a fotografia ───────────────────────────────────────────────
   Questa regola e' anche quella che da' la fotografia a "Immagine intera" e
   all'apertura: da oggi l'indirizzo non e' piu' scritto nello stile inline
   ma arriva da --efigo-img-sfondo, uno solo per tutti i blocchi. */
.efigo-con-foto-sfondo {
  position: relative; overflow: hidden;
  background-image: var(--efigo-img-sfondo);
  background-size: cover; background-position: center; background-repeat: no-repeat;
}
.efigo-blocco.efigo-con-foto-sfondo:not(.efigo-blocco-immagine):not(.efigo-blocco-hero):not(.efigo-blocco-cta) {
  padding: 2.6rem 1.6rem; border-radius: 14px;
}
.efigo-con-foto-sfondo.efigo-larg-piena { border-radius: 0; }
/* Il velo sta sotto al contenuto, non sopra: senza questo z-index il testo
   finirebbe dietro al velo e si vedrebbe soltanto il velo. */
.efigo-con-foto-sfondo > .efigo-blocco-velo { z-index: 1; }
.efigo-con-foto-sfondo > *:not(.efigo-blocco-velo):not(.efigo-video-sfondo) { position: relative; z-index: 2; }
/* "Immagine intera" senza titolo non porta testo sopra: velarla la
   scurirebbe senza motivo. */
.efigo-senza-velo > .efigo-blocco-velo { display: none; }

/* ── 2b. Altezza minima del blocco ───────────────────────────────────────
   Il contenuto si centra in verticale: un riquadro alto con il testo
   incollato in cima non e' quello che si cerca quando si alza un blocco.
   "Immagine intera" e "Apertura" restano fuori: hanno la loro altezza in
   percentuale di schermo e due comandi per la stessa cosa si contraddicono. */
.efigo-con-altezza:not(.efigo-blocco-immagine):not(.efigo-blocco-hero) {
  min-height: var(--efigo-alt-blocco);
  display: flex; flex-direction: column; justify-content: center;
}

/* ── 3. Grandezza del testo ──────────────────────────────────────────── */
.efigo-txt-piccolo { --efigo-scala: .88; }
.efigo-txt-normale { --efigo-scala: 1; }
.efigo-txt-grande  { --efigo-scala: 1.18; }
.efigo-txt-enorme  { --efigo-scala: 1.38; }
.efigo-blocco[class*="efigo-txt-"] :where(p,li,td,th,figcaption,blockquote,label,input,button) {
  font-size: calc(1rem * var(--efigo-scala, 1));
}
.efigo-blocco[class*="efigo-txt-"] :where(h1) { font-size: calc(2.45rem * var(--efigo-scala, 1)); }
.efigo-blocco[class*="efigo-txt-"] :where(h2) { font-size: calc(1.85rem * var(--efigo-scala, 1)); }
.efigo-blocco[class*="efigo-txt-"] :where(h3) { font-size: calc(1.32rem * var(--efigo-scala, 1)); }
.efigo-blocco[class*="efigo-txt-"] :where(h4) { font-size: calc(1.08rem * var(--efigo-scala, 1)); }
.efigo-blocco[class*="efigo-txt-"] .efigo-blocco-prezzo { font-size: calc(1.22rem * var(--efigo-scala, 1)); }
.efigo-blocco[class*="efigo-txt-"] .efigo-blocco-cifra { font-size: calc(2.6rem * var(--efigo-scala, 1)); }
.efigo-blocco[class*="efigo-txt-"] .efigo-blocco-etichetta { font-size: calc(.72rem * var(--efigo-scala, 1)); }
.efigo-blocco[class*="efigo-txt-"] .efigo-blocco-didascalia { font-size: calc(.82rem * var(--efigo-scala, 1)); }

/* ── 4. I separatori ─────────────────────────────────────────────────────
   Tredici effetti, tutto in CSS: niente immagini da caricare e seguono il
   colore del blocco. Le forme curve si ottengono mascherando una striscia
   colorata con una sagoma SVG scritta nel foglio: nessun file esterno. */
.efigo-sep {
  display: block; width: 100%; border: 0; flex-basis: 100%;
  --efigo-sep-col: var(--efigo-testo-blocco, var(--efigo-bordo, #CBD5E1));
}
.efigo-sep-su  { margin: 0 0 1.7rem; }
.efigo-sep-giu { margin: 1.7rem 0 0; }

.efigo-sep-spazio { height: 2.2rem; }
.efigo-sep-linea  { height: 1px; background: var(--efigo-sep-col); opacity: .28; }
.efigo-sep-doppia { height: 6px; border-top: 1px solid var(--efigo-sep-col);
  border-bottom: 1px solid var(--efigo-sep-col); opacity: .34; }
.efigo-sep-spessa { height: 4px; width: 104px; margin-left: auto; margin-right: auto;
  background: var(--efigo-sep-col); border-radius: 3px; opacity: .75; }
.efigo-sep-tratteggio { height: 0; border-top: 2px dashed var(--efigo-sep-col); opacity: .42; }
.efigo-sep-punti  { height: 0; border-top: 3px dotted var(--efigo-sep-col); opacity: .48; }
.efigo-sep-sfumata { height: 2px; opacity: .55;
  background: linear-gradient(90deg, transparent, var(--efigo-sep-col), transparent); }
.efigo-sep-pallini { height: 9px; width: 62px; margin-left: auto; margin-right: auto; opacity: .5;
  background-image: radial-gradient(circle, var(--efigo-sep-col) 46%, transparent 48%);
  background-size: 21px 9px; background-repeat: repeat-x; }
.efigo-sep-rombo { height: 12px; position: relative; }
.efigo-sep-rombo::before { content: ""; position: absolute; left: 50%; top: 0;
  width: 11px; height: 11px; margin-left: -5.5px; background: var(--efigo-sep-col);
  transform: rotate(45deg); opacity: .55; }
.efigo-sep-rombo::after { content: ""; position: absolute; left: 0; right: 0; top: 5px;
  height: 1px; background: var(--efigo-sep-col); opacity: .22; }

.efigo-sep-onda, .efigo-sep-zigzag, .efigo-sep-curva, .efigo-sep-diagonale {
  background: var(--efigo-sep-col); opacity: .4;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%; mask-size: 100% 100%;
}
.efigo-sep-onda { height: 26px;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 40' preserveAspectRatio='none'%3E%3Cpath d='M0,20 C150,42 300,-2 450,20 C600,42 750,-2 900,20 C1050,42 1140,6 1200,20 L1200,26 C1140,12 1050,48 900,26 C750,4 600,48 450,26 C300,4 150,48 0,26 Z' fill='black'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 40' preserveAspectRatio='none'%3E%3Cpath d='M0,20 C150,42 300,-2 450,20 C600,42 750,-2 900,20 C1050,42 1140,6 1200,20 L1200,26 C1140,12 1050,48 900,26 C750,4 600,48 450,26 C300,4 150,48 0,26 Z' fill='black'/%3E%3C/svg%3E"); }
.efigo-sep-zigzag { height: 18px;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 20'%3E%3Cpath d='M0,16 L15,2 L30,16 L45,2 L60,16 L60,20 L45,6 L30,20 L15,6 L0,20 Z' fill='black'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 20'%3E%3Cpath d='M0,16 L15,2 L30,16 L45,2 L60,16 L60,20 L45,6 L30,20 L15,6 L0,20 Z' fill='black'/%3E%3C/svg%3E");
  -webkit-mask-size: 60px 18px; mask-size: 60px 18px;
  -webkit-mask-repeat: repeat-x; mask-repeat: repeat-x; }
.efigo-sep-curva { height: 30px;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 60' preserveAspectRatio='none'%3E%3Cpath d='M0,56 Q600,-10 1200,56 L1200,60 Q600,-4 0,60 Z' fill='black'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 60' preserveAspectRatio='none'%3E%3Cpath d='M0,56 Q600,-10 1200,56 L1200,60 Q600,-4 0,60 Z' fill='black'/%3E%3C/svg%3E"); }
.efigo-sep-diagonale { height: 22px;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 20' preserveAspectRatio='none'%3E%3Cpath d='M0,18 L100,0 L100,4 L0,20 Z' fill='black'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 20' preserveAspectRatio='none'%3E%3Cpath d='M0,18 L100,0 L100,4 L0,20 Z' fill='black'/%3E%3C/svg%3E"); }

/* Dentro un blocco a fondo pieno o fotografico il separatore deve stare
   dentro ai margini, non incollato al bordo. */
.efigo-con-fondo > .efigo-sep-su, .efigo-con-foto-sfondo > .efigo-sep-su { margin-bottom: 1.2rem; }
.efigo-con-fondo > .efigo-sep-giu, .efigo-con-foto-sfondo > .efigo-sep-giu { margin-top: 1.2rem; }
/* I blocchi che centrano il contenuto con flex: il separatore non deve
   entrare nella fila orizzontale. */
.efigo-blocco-immagine, .efigo-blocco-hero { flex-wrap: wrap; }

/* ── 5. Il video ─────────────────────────────────────────────────────────
   aspect-ratio invece del vecchio trucco del padding percentuale: meno
   righe e nessun riquadro vuoto mentre il video carica. */
.efigo-blocco-video { position: relative; width: 100%; overflow: hidden;
  border-radius: 14px; background: #0B1220; }
.efigo-blocco-video > iframe, .efigo-blocco-video > video {
  position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: block;
  object-fit: cover;
}
.efigo-video-16-9 { aspect-ratio: 16 / 9; }
.efigo-video-4-3  { aspect-ratio: 4 / 3; }
.efigo-video-1-1  { aspect-ratio: 1 / 1; }
.efigo-video-21-9 { aspect-ratio: 21 / 9; }
.efigo-blocco-video.efigo-larg-piena, .efigo-larg-piena > .efigo-blocco-video { border-radius: 0; }

.efigo-blocco-galleria { display: grid; gap: .75rem;
  grid-template-columns: repeat(var(--efigo-gal-colonne, 3), minmax(0, 1fr)); }
.efigo-galleria-pezzo { margin: 0; }
.efigo-galleria-pezzo img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 4/3;
  border-radius: 10px; display: block; }
.efigo-galleria-pezzo figcaption { font-size: .78rem; opacity: .75; margin-top: .35rem; }
@media (max-width: 781px) { .efigo-blocco-galleria { grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (max-width: 480px) { .efigo-blocco-galleria { grid-template-columns: 1fr; } }
@media (max-width: 781px) {
  .efigo-blocco .wp-block-columns { flex-wrap: wrap; }
  .efigo-blocco .wp-block-column { flex-basis: calc(50% - .5rem) !important; }
}
@media (max-width: 480px) {
  .efigo-blocco .wp-block-column { flex-basis: 100% !important; }
}
