/*
Theme Name:  Hello Elementor Child — Disìu
Template:    hello-elementor
Description: Child theme for Disìu Pizzeria — implements the Disìu design system.
Version:     1.0.0
*/

/* =========================================================
   DESIGN TOKENS
   ========================================================= */
:root {
  /* Palette */
  --disiu-green:          #566236;
  --disiu-green-deep:     #3E4826;
  --disiu-green-light:    #6E7C47;
  --disiu-terracotta:     #B85C3C;
  --disiu-terracotta-deep:#9A4A30;
  --disiu-cream-light:    #FAF3E7;
  --disiu-cream:          #F4E9D8;
  --disiu-cream-deep:     #EADBC4;
  --disiu-ink:            #2B2A1E;
  --disiu-ink-soft:       #4E4C3B;
  --disiu-gold:           #C9A25A;
  --disiu-green-lime:     #A8C078;   /* accento chiaro su sfondi verde-deep (em, CTA) */
  --disiu-line:           rgba(43, 42, 30, 0.12);

  /* Typography */
  --font-display: 'Cormorant Garamond', Georgia, serif;
  --font-ui:      'Manrope', system-ui, sans-serif;
  --font-mono:    'JetBrains Mono', 'Courier New', monospace;

  /* Spacing */
  --section-pad-mobile: 52px 22px;
  --section-pad-desktop: 80px 60px;

  /* Radius */
  --radius-card: 18px;
  --radius-pill: 999px;
  --radius-sm:   8px;
}

/* =========================================================
   BASE RESETS & GLOBAL
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; }

body {
  font-family: var(--font-ui);
  background: var(--disiu-cream-light);
  color: var(--disiu-ink);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Elementor: remove default margins on inner sections */
.elementor-widget-wrap > .elementor-element { transition: opacity 0.7s, transform 0.7s; }

/* =========================================================
   ANIMATIONS
   ========================================================= */
@keyframes disiu-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .disiu-reveal,
  [data-disiu-animate] { animation: none !important; transition: none !important; opacity: 1 !important; transform: none !important; }
}

/* =========================================================
   REVEAL ON SCROLL
   (add class "disiu-reveal" to any Elementor container via Custom CSS)
   ========================================================= */
.disiu-reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
}
.disiu-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.disiu-reveal-delay-1 { transition-delay: 100ms; }
.disiu-reveal-delay-2 { transition-delay: 250ms; }
.disiu-reveal-delay-3 { transition-delay: 420ms; }
.disiu-reveal-delay-4 { transition-delay: 600ms; }

/* =========================================================
   TYPOGRAPHY HELPERS
   ========================================================= */

/* Eyebrow label (JetBrains Mono, UPPERCASE, with decorative lines) */
.disiu-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--disiu-green);
  line-height: 1;
}
.disiu-eyebrow::before,
.disiu-eyebrow::after {
  content: '';
  display: block;
  width: 18px;
  height: 1px;
  background: currentColor;
  flex-shrink: 0;
}
.disiu-eyebrow--cream  { color: var(--disiu-cream-deep); }
.disiu-eyebrow--terra  { color: var(--disiu-terracotta); }

/* =========================================================
   BUTTONS
   ========================================================= */
.disiu-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 48px;
  padding: 14px 28px;
  border-radius: var(--radius-pill);
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  border: 1px solid transparent;
  transition: transform 0.25s cubic-bezier(0.22,1,0.36,1),
              box-shadow 0.25s cubic-bezier(0.22,1,0.36,1),
              background 0.2s;
  white-space: nowrap;
}
.disiu-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(43, 30, 20, 0.15);
}
.disiu-btn:active { transform: translateY(0); box-shadow: none; }

/* Primary (green filled) */
.disiu-btn--primary {
  background: var(--disiu-green);
  color: var(--disiu-cream-light);
  border-color: transparent;
}
.disiu-btn--primary:hover { background: var(--disiu-green-deep); }

/* Secondary (outlined dark) */
.disiu-btn--secondary {
  background: transparent;
  color: var(--disiu-ink);
  border-color: var(--disiu-ink);
}
.disiu-btn--secondary:hover { background: var(--disiu-ink); color: var(--disiu-cream-light); }

/* =========================================================
   ELEMENTOR THEME BUILDER HEADER
   ========================================================= */

/* Hero info card (desktop only — hidden-mobile/tablet via Elementor) */
.disiu-hero-info { width: 100%; }
.disiu-hero-info__status {
  display: flex; align-items: center; gap: 10px;
  margin-bottom: 22px;
  font-family: var(--font-mono); font-size: 11px; letter-spacing: 2px;
  color: var(--disiu-cream-light); text-transform: uppercase;
}
.disiu-hero-info__dot {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
  background: var(--disiu-green-lime);
  box-shadow: 0 0 10px var(--disiu-green-lime);
  animation: pulse-dot 2.5s ease-in-out infinite;
}
@keyframes pulse-dot {
  0%, 100% { opacity: 1; box-shadow: 0 0 6px var(--disiu-green-lime); }
  50%       { opacity: 0.7; box-shadow: 0 0 14px var(--disiu-green-lime); }
}
.disiu-hero-info__item {
  display: flex; align-items: flex-start; gap: 14px;
  padding: 14px 0; border-top: 1px solid rgba(250,243,231,0.12);
}
.disiu-hero-info__icon {
  font-family: var(--font-display); font-size: 18px;
  color: var(--disiu-green-lime); width: 24px; flex-shrink: 0; line-height: 1.4;
}
.disiu-hero-info__label {
  font-family: var(--font-mono); font-size: 9px; letter-spacing: 1.5px;
  color: rgba(250,243,231,0.55); text-transform: uppercase; margin-bottom: 4px;
}
.disiu-hero-info__value {
  font-family: var(--font-ui); font-size: 14px;
  color: var(--disiu-cream-light); font-weight: 500; line-height: 1.35;
}

/* Header pill — nascosto su mobile e tablet (e-flexbox atomico non supporta hide_mobile classico) */
@media (max-width: 1024px) {
  .e-hdr-pill1 { display: none !important; }
}

/* Mobile bottom nav — fixed bar, solo tablet/mobile */
.disiu-mob-nav {
  position: fixed !important;
  bottom: 12px !important;
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%) !important;
  z-index: 9999 !important;
  background: #2B2A1E !important;
  border-radius: 20px !important;
  padding: 10px 6px !important;
  display: flex !important;
  flex-direction: row !important;
  justify-content: center !important;
  align-items: stretch !important;
  gap: 0 !important;
  box-shadow: 0 8px 32px rgba(0,0,0,0.35) !important;
  min-height: auto !important;
  width: calc(100% - 32px) !important;
  max-width: 400px !important;
}

/* Ogni item nav — reset e-con-boxed + e-con-inner */
.disiu-mob-nav .disiu-mob-nav__item,
.disiu-mob-nav .disiu-mob-nav__item.e-con-boxed {
  flex: 1 !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 2px !important;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  padding: 8px 2px !important;
  margin: 0 !important;
  background: transparent !important;
  border: none !important;
  border-radius: 14px !important;
  box-shadow: none !important;
  min-height: auto !important;
  max-width: none !important;
  width: auto !important;
  transition: background 0.3s ease;
}
.disiu-mob-nav .disiu-mob-nav__item > .e-con-inner {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 6px !important;
  padding: 0 !important;
  margin: 0 !important;
  width: 100% !important;
  max-width: none !important;
}

/* Reset TUTTI padding/margin/width su widget e container interni */
.disiu-mob-nav .disiu-mob-nav__item .elementor-element {
  margin: 0 !important;
  padding: 0 !important;
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
}
.disiu-mob-nav .disiu-mob-nav__item .elementor-widget-container {
  margin: 0 !important;
  padding: 0 !important;
}

/* Icona (widget Icon, Font Awesome) — Elementor converte alcune icone (bars,
   calendar-check, phone) in <svg> inline via JS a runtime invece di lasciare
   il glyph font <i> (dipende dal dataset icone convertibili della versione
   Font Awesome bundled, non è deterministico per ogni nome icona: "house" è
   rimasto <i>, le altre tre sono diventate <svg> — verificato via DOM). Le
   due sintassi si dimensionano in modo diverso (font-size vs width/height),
   quindi copriamo entrambe. */
.disiu-mob-nav .disiu-mob-nav__icon .elementor-icon-wrapper,
.disiu-mob-nav .disiu-mob-nav__icon .elementor-icon {
  display: block !important;
  line-height: 1 !important;
  text-decoration: none !important;
  text-align: center !important;
}
.disiu-mob-nav .disiu-mob-nav__icon i {
  font-size: 15px !important;
  color: rgba(250,243,231,0.55) !important;
  transition: color 0.3s;
}
.disiu-mob-nav .disiu-mob-nav__icon svg {
  width: 15px !important;
  height: 15px !important;
  fill: rgba(250,243,231,0.55) !important;
  transition: fill 0.3s;
}

/* Label testo */
.disiu-mob-nav .disiu-mob-nav__label .elementor-heading-title,
.disiu-mob-nav .disiu-mob-nav__label .elementor-heading-title a {
  display: block !important;
  font-family: 'Manrope', sans-serif !important;
  font-size: 10px !important;
  font-weight: 600 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  color: rgba(250,243,231,0.45) !important;
  line-height: 1 !important;
  text-decoration: none !important;
  text-align: center !important;
  transition: color 0.3s;
}
/* Margine esplicito verso l'icona: il wrapper .disiu-mob-nav__icon collassa a
   0 di altezza (unico figlio ora fuori flusso per il fix del tap-target), per
   cui il "gap" del flex .e-con-inner non riflette più la distanza visiva
   reale dall'icona — la spingiamo giù con un margin-top fisso e misurato. */
.disiu-mob-nav .disiu-mob-nav__item .disiu-mob-nav__label.elementor-element {
  margin-top: 15px !important;
}

/* Stato attivo — pill terracotta su tutto l'item */
.disiu-mob-nav .disiu-mob-nav__item.active {
  background: #B85C3C !important;
  border-radius: 14px !important;
}
.disiu-mob-nav .disiu-mob-nav__item.active .disiu-mob-nav__icon i {
  color: #FAF3E7 !important;
}
.disiu-mob-nav .disiu-mob-nav__item.active .disiu-mob-nav__icon svg {
  fill: #FAF3E7 !important;
}
.disiu-mob-nav .disiu-mob-nav__item.active .disiu-mob-nav__label .elementor-heading-title,
.disiu-mob-nav .disiu-mob-nav__item.active .disiu-mob-nav__label .elementor-heading-title a {
  color: #FAF3E7 !important;
}

/* FIX tap dead-zone: il Link nativo del Container .disiu-mob-nav__item è
   salvato nei dati di Elementor (settings_summary.link.url, verificato via
   MCP get-page-structure) ma non viene compilato nel markup frontend —
   stesso tipo di bug di compilazione già documentato in questo file per il
   font-size responsive dell'H1 Contatti (vedi PAGINA CONTATTI più sotto).
   Nessun href/handler risulta sul Container reale, quindi solo l'icona e il
   testo erano cliccabili dentro un box da 82x51px — il resto era un punto
   morto. Stiriamo l'anchor reale dell'icona (widget Icon, .elementor-icon
   che FUNZIONA, verificato) a coprire l'intero item invece di dipendere dal
   Link del Container. */
.disiu-mob-nav .disiu-mob-nav__item { position: relative; }
/* Elementor imposta position:relative di default su ogni .elementor-element
   widget wrapper — senza override diventerebbe lui (non .disiu-mob-nav__item)
   il containing block dell'anchor stirato qui sotto, e collassando a 0x0
   (unico figlio ora fuori flusso) trascinerebbe l'anchor a 0x0 con sé. */
.disiu-mob-nav .disiu-mob-nav__item .disiu-mob-nav__icon {
  position: static !important;
}
.disiu-mob-nav .disiu-mob-nav__item .disiu-mob-nav__icon .elementor-icon {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  z-index: 2;
  /* flex con align-items:flex-start (non center): l'anchor copre l'intero
     item per il tap-target, ma il contenuto (icona) deve restare ancorato in
     alto com'era in origine — align-items:center lo ricentrava a metà
     dell'intero box, portandolo quasi a toccare l'etichetta sotto invece di
     lasciare il gap voluto. justify-content:center invece SERVE: senza,
     l'icona (< o svg, entrambi display:block) resta a filo del bordo
     sinistro invece che centrata — text-align:center sul genitore non ha
     alcun effetto su un figlio block (si applica solo a contenuto inline).
     Bug reale verificato: sull'item attivo (pillola arrotondata) l'icona
     a filo sinistro finiva tagliata dall'angolo curvo, quasi invisibile. */
  display: flex !important;
  align-items: flex-start !important;
  justify-content: center !important;
}

/* Nascosto su desktop/laptop */
@media (min-width: 1025px) {
  .disiu-mob-nav {
    display: none !important;
  }
}

/* La tab bar fissa in basso copre l'ultimo contenuto (footer) su mobile/tablet:
   riserviamo lo spazio sul footer così il colore ink resta continuo sotto la barra */
@media (max-width: 1024px) {
  .elementor-location-footer {
    padding-bottom: 90px !important;
  }
}

/* Stesso problema della tab bar fissa, ma a metà pagina: il bottone "Continua"
   dello step attivo della prenotazione è l'ultimo elemento della card, quindi
   scrollandolo naturalmente in vista finisce nascosto sotto la nav fissa
   (verificato: scrollIntoView({block:'end'}) lo sovrappone di ~50px). */
@media (max-width: 1024px) {
  .disiu-booking {
    padding-bottom: 90px;
  }
}

/* Il padding-bottom sopra non basta contro scrollIntoView({block:'end'}):
   allinea il bordo inferiore dell'elemento al bordo del viewport ignorando
   qualunque spazio *dopo* di esso nel DOM (verificato: overlap ~89px
   invariato anche con il padding). scroll-padding-bottom è l'unica proprietà
   che lo scroll nativo (tab da tastiera, focus su un campo del form,
   scrollIntoView) rispetta per riservare spazio sotto la nav fissa. */
@media (max-width: 1024px) {
  html {
    scroll-padding-bottom: 100px;
  }
}

/* Telefono in landscape (es. 844x390): l'altezza viewport crolla ma la barra
   resta piena (icona+etichetta, ~79px) e a quell'altezza copre in modo
   permanente l'ultimo ~20% dello schermo — verificato che ci finisce sotto
   sia il titolo dell'hero (Home) sia le tab categoria (Menù), rendendole
   non cliccabili (elementFromPoint su quel punto ritorna la nav, non il tab
   sottostante). Passiamo a una barra compatta solo-icona quando l'altezza
   disponibile è ridotta, indipendentemente dalla larghezza. */
@media (max-height: 480px) and (orientation: landscape) {
  .disiu-mob-nav {
    bottom: 6px !important;
    padding: 5px 4px !important;
  }
  .disiu-mob-nav .disiu-mob-nav__item {
    padding: 6px 2px !important;
  }
  .disiu-mob-nav .disiu-mob-nav__label {
    display: none !important;
  }
  .disiu-mob-nav .disiu-mob-nav__icon i {
    font-size: 18px !important;
  }
  .disiu-mob-nav .disiu-mob-nav__icon svg {
    width: 18px !important;
    height: 18px !important;
  }
  html {
    scroll-padding-bottom: 60px;
  }
}

/* Hero info card (Aperto/Telefono/Indirizzo/Recensioni): il widget interno è
   nascosto su tablet/mobile ma il container esterno no (classe elementor-hidden
   duplicata non funzionante), lasciando un riquadro vuoto — lo nascondiamo qui */
@media (max-width: 1024px) {
  .elementor-element-e8cfd07 {
    display: none !important;
  }
}

/* Menu header non centrato/menu compresso in verticale su TUTTI i desktop (non solo
   1025-1366px): gli atomic container di Elementor (.e-hdr-left1 blocco logo, .e-hdr-rght1
   blocco telefono+bottone) ereditano di default "width: var(--width, 100%)" dal motore
   atomic widgets. Senza una larghezza esplicita assegnata in editor, ciascuno dei due
   blocchi richiede il 100% dello spazio del flex a 3 colonne dell'header; il flexbox li
   restringe (flex-shrink) ma il nav-menu centrale (widget legacy, non atomic) finisce
   schiacciato in una porzione minima e i suoi 3 voci vanno a capo una sotto l'altra invece
   di restare in riga. A questo si aggiunge, solo nel range Laptop (1025-1366px), un CSS
   generato dal plugin MCP Elementor ("local-4343-frontend-laptop.css", fuori dal nostro
   controllo) che limita .e-hdr-left1 a max-width:283px senza un vincolo equivalente su
   .e-hdr-rght1, spostando il menu a sinistra invece che centrato.
   Forziamo entrambi i blocchi a dimensionarsi sul proprio contenuto (width:auto) su ogni
   breakpoint desktop/laptop, cosicché il nav-menu centrale riceva sempre lo spazio residuo
   necessario per restare su una riga sola. */
.elementor .e-hdr-left1 {
  width: auto !important;
  max-width: none !important;
}
.elementor .e-hdr-rght1 {
  width: auto !important;
  padding: 0 !important;
}

/* Header desktop: stesso contenitore flottante dello staging.
   Il menu conserva la propria larghezza; i due lati dividono lo spazio residuo. */
@media (min-width: 1025px) {
  body.disiu-site .elementor.elementor-location-header .e-hdr-pill1 {
    position: fixed;
    top: 38px;
    left: 0;
    right: 0;
    width: calc(100% - 80px);
    max-width: 1180px;
    margin: 0 auto;
    display: flex;
    flex-flow: row nowrap;
    align-items: center;
    backdrop-filter: blur(20px) saturate(150%);
    box-shadow: 0 12px 40px rgba(0, 0, 0, .22);
    z-index: 999;
    transform: none !important;
  }
  body.disiu-site .elementor.elementor-location-header .e-hdr-left1,
  body.disiu-site .elementor.elementor-location-header .e-hdr-rght1 {
    flex: 1 1 0;
    min-width: 0;
  }
  body.disiu-site .elementor.elementor-location-header .e-hdr-pill1 > .elementor-widget-nav-menu {
    flex: 0 0 auto;
    width: auto;
  }
  body.disiu-site .elementor.elementor-location-header .e-hdr-pill1 .elementor-nav-menu--main > .elementor-nav-menu {
    flex-wrap: nowrap;
  }
}

/* =========================================================
   SECTIONS — BACKGROUND UTILITIES
   ========================================================= */
.disiu-bg-cream       { background: var(--disiu-cream-light) !important; }
.disiu-bg-cream-2     { background: var(--disiu-cream) !important; }
.disiu-bg-green       { background: var(--disiu-green) !important; color: var(--disiu-cream-light) !important; }
.disiu-bg-green-deep  { background: var(--disiu-green-deep) !important; color: var(--disiu-cream-light) !important; }
.disiu-bg-ink         { background: var(--disiu-ink) !important; color: var(--disiu-cream-light) !important; }
.disiu-bg-terra       { background: var(--disiu-terracotta) !important; color: var(--disiu-cream-light) !important; }

/* Color overrides for text on dark sections */
.disiu-bg-green h1, .disiu-bg-green h2, .disiu-bg-green h3,
.disiu-bg-green-deep h1, .disiu-bg-green-deep h2, .disiu-bg-green-deep h3,
.disiu-bg-ink h1, .disiu-bg-ink h2, .disiu-bg-ink h3 {
  color: var(--disiu-cream-light);
}
.disiu-bg-green p, .disiu-bg-green-deep p, .disiu-bg-ink p {
  color: rgba(250, 243, 231, 0.78);
}
/* em/italic su sfondo verde-deep → lime accent (non verde su verde) */
.disiu-bg-green-deep em, .disiu-bg-green-deep i {
  color: var(--disiu-green-lime);
  font-style: italic;
}

/* =========================================================
   ELEMENTOR WIDGET OVERRIDES
   ========================================================= */

/* Headings */
.elementor-widget-heading .elementor-heading-title {
  font-family: var(--font-display) !important;
  line-height: 1.05 !important;
  letter-spacing: -0.5px !important;
}

/* Icon Box — feature cards */
.elementor-widget-icon-box .elementor-icon-box-title {
  font-family: var(--font-display) !important;
  font-weight: 500 !important;
}
.elementor-widget-icon-box .elementor-icon-box-description {
  font-family: var(--font-ui) !important;
  color: var(--disiu-ink-soft) !important;
}
.elementor-widget-icon-box .elementor-icon i,
.elementor-widget-icon-box .elementor-icon svg {
  color: var(--disiu-cream-light) !important;
}
.elementor-widget-icon-box.disiu-feature-icon .elementor-icon {
  background: var(--disiu-green) !important;
  border-radius: 50% !important;
  padding: 12px !important;
}

/* Counter widget (stat numbers) */
.elementor-widget-counter .elementor-counter-number-wrapper {
  font-family: var(--font-display) !important;
  color: var(--disiu-green) !important;
}
.elementor-widget-counter .elementor-counter-title {
  font-family: var(--font-mono) !important;
  font-size: 10px !important;
  letter-spacing: 2px !important;
  text-transform: uppercase !important;
  color: var(--disiu-ink-soft) !important;
}

/* Image widget — circular photo */
.disiu-img-circle .elementor-widget-container img {
  border-radius: 50% !important;
  object-fit: cover !important;
}
.disiu-img-circle-bordered .elementor-widget-container img {
  border-radius: 50% !important;
  border: 4px solid var(--disiu-cream-light) !important;
  box-shadow: 0 6px 24px rgba(43,42,30,0.16) !important;
}

/* Divider */
.elementor-divider-separator { border-color: var(--disiu-line) !important; }

/* Google Maps widget */
.elementor-widget-google_maps iframe {
  border-radius: var(--radius-card) !important;
}

/* Social Icons */
.elementor-widget-social-icons .elementor-icon {
  background: transparent !important;
  color: var(--disiu-green) !important;
  border: 1.5px solid var(--disiu-line) !important;
  border-radius: 50% !important;
  transition: all 0.25s !important;
}
.elementor-widget-social-icons .elementor-icon:hover {
  background: var(--disiu-green) !important;
  color: var(--disiu-cream-light) !important;
  border-color: var(--disiu-green) !important;
  transform: translateY(-2px) !important;
}

/* =========================================================
   RESPONSIVE — TABLET (768px – 1024px)
   ========================================================= */
@media (max-width: 1024px) and (min-width: 768px) {
  :root {
    --section-pad-mobile: 56px 28px;
  }

  /* Pizza del mese */
  .disiu-pdm-nome { font-size: 56px; }
  .disiu-pdm-price { font-size: 52px; }
  .disiu-pdm-img-wrap { max-width: 380px; }

  /* Contact — !important necessario: la regola base (riga ~2574, senza
     media query) ha la stessa specificità e viene dopo nel file, quindi
     vincerebbe comunque sui 200px anche dentro questo breakpoint 768-1024 */
  .disiu-contact-label { width: 110px !important; }

}

/* =========================================================
   RESPONSIVE — MOBILE (≤767px)
   ========================================================= */
@media (max-width: 767px) {
  :root {
    --section-pad-mobile: 40px 16px;
  }

  /* Tipografia */
  .disiu-eyebrow { font-size: 9px; letter-spacing: 2.5px; }

  /* Icon list (indirizzo/telefono/orario, ecc.): su mobile il testo va spesso
     a capo su 2 righe. Elementor centra l'icona sull'intero blocco di testo
     (align-items:center di default), facendola sembrare disallineata rispetto
     alla prima riga — la ancoriamo invece in alto. */
  .elementor-icon-list-item {
    align-items: flex-start !important;
  }
  .elementor-icon-list-icon {
    margin-top: 3px;
  }

  /* Pizza del mese */
  .disiu-pdm-nome { font-size: 42px; letter-spacing: -1.5px; margin: 16px 0 24px; }
  .disiu-pdm-price { font-size: 40px; }
  .disiu-pdm-img-wrap { max-width: 300px; }

  /* Pizza del mese — pagina Menù: card foto+testo. Un tentativo precedente
     forzava un layout orizzontale (foto 84px SX / testo DX) anche su mobile,
     ma con 7 pillole ingredienti + titolo + prezzo compressi in una colonna
     di ~168px il testo diventava illeggibile (pillole spezzate su 3 righe,
     layout percepito come rotto). Torniamo allo stack verticale naturale
     (foto sopra a piena larghezza, testo sotto), come già fa correttamente
     la sezione equivalente in Home. */
  .elementor-element-f220adf.elementor-element {
    flex-direction: column !important;
  }
  .elementor-element-ab1511a.elementor-element,
  .elementor-element-9f55395.elementor-element {
    width: 100% !important;
  }
  .elementor-element-f220adf .disiu-pdm-img-wrap { max-width: 220px !important; margin: 0 auto 20px; }

  /* "Mangia sereno" (allergeni) — ogni card icona+testo ha flex-wrap:wrap
     ereditato dal desktop: quando la card è stretta, l'icona va a capo sopra
     al testo invece di restargli affiancata orizzontalmente. */
  .elementor-element-3554ff8,
  .elementor-element-b104901,
  .elementor-element-b4c436d,
  .elementor-element-3de196e,
  .elementor-element-2e560ee,
  .elementor-element-5d10e68 {
    flex-wrap: nowrap !important;
  }

  /* Contact — !important necessario: la regola base senza media query
     (riga ~2735, width:200px) ha la stessa specificità e viene dopo nel
     file, quindi vincerebbe comunque su mobile (stesso problema già
     documentato sopra per .disiu-contact-label a 768-1024px). A 200px fissi
     l'etichetta "TELEFONO"/"EMAIL" occupa quasi tutta la larghezza della
     card su schermi stretti, lasciando pochissimo margine prima di andare
     realmente in overflow. */
  .disiu-contact-label { width: auto !important; flex-shrink: 1; }
  .disiu-contact-cta { margin-left: 0; width: 100%; }
  .disiu-contact-icon .elementor-icon { width: 44px !important; height: 44px !important; font-size: 20px !important; }

  /* Righe Telefono/Indirizzo/Email: la riga va a capo (flex-wrap) su mobile,
     icona+etichetta restano affiancate ma valore e pulsante (Chiama/Naviga/
     Scrivi) finiscono su una riga a parte allineati al bordo sinistro della
     card invece che sotto l'etichetta — sembrano "fuori posto". Li rientriamo
     per allinearli visivamente sotto TELEFONO/INDIRIZZO/EMAIL. */
  .elementor-element-86405ca.elementor-element,
  .elementor-element-094afd6.elementor-element,
  .elementor-element-cfddbb8.elementor-element,
  .elementor-element-deb46e5.elementor-element,
  .elementor-element-ccf9c8d.elementor-element,
  .elementor-element-b850ca8.elementor-element {
    margin-left: 85px;
    width: calc(100% - 85px) !important;
  }
  /* Telefono/Indirizzo/Email condividono lo stesso H3 da 34px in una colonna
     di ~180-220px: l'email (senza spazi) eccede e va spezzata a metà parola
     ("...pizz" / "eria.it"), telefono e indirizzo invece vanno semplicemente
     a capo su 2-3 righe ("Piazza" / "Rettore Evola" / "9") — stesso problema
     di fondo (font troppo grande per la colonna), stesso fix per tutti e tre. */
  .elementor-element-86405ca .disiu-contact-value,
  .elementor-element-cfddbb8 .disiu-contact-value,
  .elementor-element-ccf9c8d .disiu-contact-value {
    overflow-wrap: break-word;
    word-break: break-word;
  }
  /* Il font-size vive sull'H3 (.elementor-heading-title), non sul wrapper
     .disiu-contact-value: quest'ultimo eredita ma il widget CSS che Elementor
     stampa inline in <head> per ciascun elemento (.elementor-element.
     elementor-element-XXXXXXX .elementor-heading-title, specificità 0,3,0)
     lo sovrascrive di nuovo sull'H3 stesso — bisogna colpire l'H3 con pari
     o maggiore specificità. Verificato: impostare font-size sul solo wrapper
     non aveva alcun effetto (restava 34px). */
  .elementor-element-86405ca .disiu-contact-value .elementor-heading-title,
  .elementor-element-cfddbb8 .disiu-contact-value .elementor-heading-title,
  .elementor-element-ccf9c8d .disiu-contact-value .elementor-heading-title {
    font-size: 20px !important;
    line-height: 1.3 !important;
  }

  /* Marquee */
  .disiu-marquee-strip { padding: 14px 0; }
  .disiu-marquee-track .mq-text { font-size: 11px; }
  .disiu-marquee-track .mq-star { font-size: 17px; }

  /* Buttons */
  .disiu-btn { min-height: 44px; padding: 12px 22px; font-size: 12px; }


  /* Section eyebrow */
  .disiu-section-eyebrow { font-size: 10px; letter-spacing: 2.5px; }
}

/* =========================================================
   RESPONSIVE — MOBILE PICCOLO (≤480px)
   ========================================================= */
@media (max-width: 480px) {
  .disiu-pdm-nome { font-size: 36px; }
  .disiu-pdm-price { font-size: 34px; }
}

/* =========================================================
   GLOBAL — Rimuove underline hover da TUTTI i link e bottoni
   (override del Theme Style Elementor Kit)
   ========================================================= */
a,
a:hover,
a:focus,
a:active,
.elementor-button,
.elementor-button:hover,
.elementor-button:focus,
.elementor-button-wrapper a,
.elementor-button-wrapper a:hover,
.e-con a:hover,
.elementor-widget a:hover,
.elementor-widget-button a:hover,
.elementor-nav-menu a:hover,
.elementor-icon-list-item a:hover {
  text-decoration: none !important;
  box-shadow: none !important;
}

/* border-bottom:none va escluso dai bottoni: qui simula solo lo scomparire
   della sottolineatura hover sui link, ma su .elementor-button azzerava anche
   il bordo reale (1px solid) impostato nel widget, tagliando visivamente il
   contorno pill sul lato inferiore. */
a:not(.elementor-button),
a:not(.elementor-button):hover,
a:not(.elementor-button):focus,
a:not(.elementor-button):active,
.e-con a:not(.elementor-button):hover,
.elementor-widget a:not(.elementor-button):hover,
.elementor-widget-button a:not(.elementor-button):hover,
.elementor-nav-menu a:hover,
.elementor-icon-list-item a:hover {
  border-bottom: none !important;
}

/* =========================================================
   GLOBAL LAYOUT FIX — Rimuove bordi bianchi laterali
   ========================================================= */

/* Hello Elementor: header/footer statici (quando Theme Builder non è attivo) */
.site-header:not(.dynamic-header),
.site-footer:not(.dynamic-footer) {
  max-width: 100% !important;
  margin-inline: 0 !important;
}

/* Fix: margin-top sull'header Template Builder crea bordo bianco in cima alla pagina.
   Lo spazio visivo va messo come padding sul container interno, non come margin sull'header. */
.e-location-header,
.site-header.dynamic-header {
  margin-top: 0 !important;
}

/* Elementor sezioni legacy boxed (vecchio sistema sezioni) */
.elementor-section.elementor-section-boxed > .elementor-container {
  max-width: 100% !important;
}

/* Elementor Flexbox Container — boxed: lascio il comportamento nativo.
   I container boxed usano max-width dal pannello Elementor (es. 1280px).
   Lo sfondo va full-width, i contenuti restano centrati. */

/* =========================================================
   BLOCCO 2 — PIZZA DEL MESE
   ========================================================= */

/* Ingredient pills */
.disiu-ing-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 36px;
  min-width: 0;
  max-width: min(480px, 100%);
}

.disiu-ing-pill {
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 500;
  padding: 8px 16px;
  border-radius: 999px;
  background: var(--disiu-cream-light);
  color: var(--disiu-ink);
  border: 1px solid rgba(43, 42, 30, 0.15);
  min-width: 0;
  max-width: 100%;
  white-space: normal;
  overflow-wrap: anywhere;
}

@media (max-width: 767px) {
  .disiu-ing-pills { gap: 6px; margin-bottom: 28px; }
  .disiu-ing-pill { font-size: 12px; padding: 6px 12px; }
}

/* Circular pizza photo with green glow */
.disiu-pdm-img-wrap {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  max-width: 480px;
  margin: 0 auto;
}

.disiu-pdm-img-glow {
  position: absolute;
  inset: -8%;
  border-radius: 50%;
  background: var(--disiu-green);
  opacity: 0.18;
  filter: blur(44px);
  z-index: 0;
}

.disiu-pdm-img {
  position: relative;
  z-index: 1;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 50%;
  display: block;
}

/* Nome pizza del mese */
.disiu-pdm-nome {
  font-family: var(--font-display);
  font-size: 48px;
  font-weight: 400;
  font-style: italic;
  color: var(--disiu-green);
  line-height: 0.94;
  letter-spacing: -2.5px;
  margin: 20px 0 30px;
}

@media (min-width: 1025px) {
  .disiu-pdm-nome { font-size: 80px; }
}

/* Price line */
.disiu-pdm-price {
  font-family: var(--font-display);
  font-size: 48px;
  font-weight: 500;
  color: var(--disiu-ink);
  line-height: 1;
  letter-spacing: -1px;
  margin: 0;
}

@media (min-width: 1025px) {
  .disiu-pdm-price { font-size: 64px; }
}

/* =========================================================
   MARQUEE STRIP
   ========================================================= */
.disiu-marquee-strip {
  overflow: hidden;
  background: var(--disiu-green);
  padding: 18px 0;
}

.disiu-marquee-track {
  display: flex;
  gap: 40px;
  white-space: nowrap;
  width: max-content;
  animation: disiu-marquee 35s linear infinite;
}

.disiu-marquee-track span {
  color: var(--disiu-cream-light);
  font-weight: 500;
}

.disiu-marquee-track .mq-text {
  font-family: var(--font-ui);
  font-size: 12px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
}

.disiu-marquee-track .mq-star {
  font-family: var(--font-display);
  font-size: 20px;
  font-style: italic;
}

/* =========================================================
   SHARED SECTION HELPERS
   ========================================================= */
.disiu-section-eyebrow {
  font-family: var(--font-mono);
  font-size: 11px; letter-spacing: 3px;
  text-transform: uppercase;
  margin-bottom: 14px;
}

.disiu-section-h2 {
  font-family: var(--font-display);
  font-weight: 400; line-height: 0.95;
  letter-spacing: -2px; margin: 0;
}

.disiu-section-h2 em {
  color: var(--disiu-green);
  font-style: italic;
}

/* =========================================================
   PAGINA MENÙ
   ========================================================= */

/* Badge terracotta "Pizza del mese · Mese" */
.disiu-pdm-badge-label {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 2px;
  text-transform: uppercase;
  background: var(--disiu-terracotta);
  color: var(--disiu-cream-light);
  padding: 6px 12px;
  border-radius: 7px;
  line-height: 1;
}

/* Emoji allergene — cerchio bianco con bordo */
.disiu-allergen-emoji .elementor-heading-title {
  width: 44px;
  height: 44px;
  border-radius: 999px;
  background: white;
  border: 1px solid var(--disiu-line);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  flex-shrink: 0;
  line-height: 1;
}

/* =========================================================
   Nested Tabs — stile tab dal mockup (pill, verde attivo)
   Selettori con alta specificità per sovrascrivere Elementor
   ========================================================= */

/* Barra tab — centrata, gap, scroll mobile */
.elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading {
  justify-content: center !important;
  gap: 10px !important;
  flex-wrap: wrap;
  padding: 20px 0 !important;
  border-bottom: 1px solid var(--disiu-line);
  margin-bottom: 40px;
}

@media (max-width: 767px) {
  .elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    justify-content: flex-start !important;
    gap: 8px !important;
    padding: 16px 0 !important;
    margin-bottom: 24px;
  }
  .elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading::-webkit-scrollbar { display: none; }

  /* Guida visiva: le categorie (Apericena, Antipasti, Pizze classiche...)
     scorrono in orizzontale. Sfumature a sx/dx (attive solo quando c'è altro
     contenuto in quella direzione, via classi aggiunte da scroll-reveal.js)
     + etichetta "Scorri" che sparisce al primo scroll dell'utente. */
  .disiu-menu-tabs { position: relative; }
  .disiu-menu-tabs::before,
  .disiu-menu-tabs::after {
    content: '';
    position: absolute;
    top: 16px;
    bottom: 24px;
    width: 32px;
    pointer-events: none;
    z-index: 2;
    opacity: 0;
    transition: opacity 0.25s ease;
  }
  .disiu-menu-tabs::before {
    left: 0;
    background: linear-gradient(to right, var(--disiu-cream-light), transparent);
  }
  .disiu-menu-tabs::after {
    right: 0;
    background: linear-gradient(to left, var(--disiu-cream-light), transparent);
  }
  .disiu-menu-tabs.has-scroll-left::before,
  .disiu-menu-tabs.has-scroll-right::after {
    opacity: 1;
  }
  .disiu-menu-tabs-hint {
    display: flex;
    align-items: center;
    gap: 4px;
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--disiu-terracotta);
    margin: 4px 0 8px;
  }
  .disiu-menu-tabs-hint svg {
    width: 12px;
    height: 12px;
    animation: disiu-hint-swipe 1.4s ease-in-out infinite;
  }
  @keyframes disiu-hint-swipe {
    0%, 100% { transform: translateX(0); opacity: 0.6; }
    50% { transform: translateX(4px); opacity: 1; }
  }
}

/* Singolo tab — pill arrotondato */
.elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title {
  padding: 12px 28px !important;
  border-radius: 999px !important;
  border: 1px solid var(--disiu-line) !important;
  background: transparent !important;
  color: var(--disiu-ink) !important;
  font-family: var(--font-ui) !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  cursor: pointer;
  transition: all 0.25s !important;
  white-space: nowrap;
  flex-shrink: 0;
}

@media (max-width: 767px) {
  .elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title {
    padding: 10px 20px !important;
    font-size: 11px !important;
  }
}

/* Tab hover */
.elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title:hover {
  background: rgba(86, 98, 54, 0.08) !important;
  border-color: var(--disiu-green) !important;
  color: var(--disiu-green) !important;
}

/* Tab attivo — sfondo verde, testo cream */
.elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title[aria-selected="true"],
.elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title.e-active {
  background: var(--disiu-green) !important;
  color: var(--disiu-cream-light) !important;
  border-color: var(--disiu-green) !important;
  box-shadow: 0 4px 14px rgba(86, 98, 54, 0.3) !important;
}

/* Rimuovo indicatore/underline default di Elementor */
.elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title::before,
.elementor-widget-n-tabs.disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title::after {
  display: none !important;
}

/* Sub-tabs bevande */
.elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title {
  padding: 10px 22px !important;
  border-radius: 999px !important;
  border: 1px solid var(--disiu-line) !important;
  background: transparent !important;
  color: var(--disiu-ink) !important;
  font-family: var(--font-ui) !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  letter-spacing: 1px !important;
  text-transform: uppercase !important;
  transition: all 0.25s !important;
  white-space: nowrap;
}

.elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title[aria-selected="true"],
.elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title.e-active {
  background: var(--disiu-green) !important;
  color: var(--disiu-cream-light) !important;
  border-color: var(--disiu-green) !important;
  box-shadow: 0 4px 14px rgba(86, 98, 54, 0.3) !important;
}

.elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title:hover:not([aria-selected="true"]) {
  background: rgba(86, 98, 54, 0.08) !important;
  border-color: var(--disiu-green) !important;
  color: var(--disiu-green) !important;
}

.elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title::before,
.elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title::after {
  display: none !important;
}

.elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading {
  border-bottom: none;
  margin-bottom: 24px;
  justify-content: center !important;
  gap: 8px !important;
  flex-wrap: wrap;
}

/* =========================================================
   CARD MENÙ — Cerchio decorativo verde (macchia in alto a destra)
   ========================================================= */
.e-loop-item .disiu-menu-card,
.disiu-menu-card {
  background-image: radial-gradient(circle 90px at calc(100% - 20px) 20px, rgba(86,98,54,0.12) 0%, rgba(86,98,54,0.12) 100%, transparent 100%) !important;
  background-repeat: no-repeat !important;
  background-color: #fff !important;
}

/* =========================================================
   CARD MENÙ — Badge speciali
   ========================================================= */
.disiu-badges {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.disiu-badge {
  width: 32px;
  height: 32px;
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  line-height: 1;
  cursor: default;
  box-shadow: 0 2px 8px rgba(0,0,0,0.12);
}

.disiu-badge--mese {
  background: var(--disiu-terracotta);
}

.disiu-badge--star {
  background: var(--disiu-gold);
}

.disiu-badge--hot {
  background: #C0392B;
}

.disiu-badge--veg {
  background: var(--disiu-green-light);
}

/* Icone allergeni nella card */
.disiu-allergen-icons {
  display: flex;
  gap: 6px;
  justify-content: center;
  margin-top: 8px;
}

.disiu-allergen-icon {
  width: 28px;
  height: 28px;
  border-radius: 999px;
  border: 1px solid var(--disiu-line);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  cursor: default;
}

/* =========================================================
   PAGINA CONTATTI
   ========================================================= */

/* CTA arrow text */
.disiu-contact-cta {
  opacity: 0.5;
  transition: opacity 0.3s ease;
  white-space: nowrap;
  flex-shrink: 0;
  margin-left: auto;
}
.disiu-contact-cta a,
.disiu-contact-cta .elementor-heading-title a {
  text-decoration: none !important;
  color: var(--disiu-green) !important;
}

/* Label column fixed width */
.disiu-contact-label {
  flex-shrink: 0;
  width: 200px;
}

/* Value + sub grow */
.disiu-contact-value,
.disiu-contact-sub {
  flex-shrink: 1;
}

/* Il preset tipografico globale "Corpo" eredita un line-height:1.6px rotto
   (vedi anche .disiu-book-hint) che collassa il box del paragrafo a ~3px:
   il testo trabocca visivamente e si sovrappone alla riga del valore sopra
   quando quest'ultima va a capo su 2 righe (es. telefono a tablet) */
.disiu-contact-sub,
.disiu-contact-sub p {
  line-height: 1.5 !important;
}
.disiu-contact-sub {
  margin-top: 8px !important;
}

/* Icon sizing */
.disiu-contact-icon .elementor-icon {
  width: 52px !important;
  height: 52px !important;
  font-size: 24px !important;
}

/* Hours card — orari text fix colore */
.disiu-contact-hours,
.disiu-contact-hours .elementor-widget-text-editor {
  color: #FAF3E7;
}

/* Social icons — sfondo crema su sfondi scuri */
.disiu-social-icons .elementor-social-icon {
  background: var(--disiu-cream-light) !important;
  border: 1px solid var(--disiu-line);
  transition: transform 0.25s ease;
  /* Dimensione widget di default 32x32, sotto la soglia di tap consigliata
     44x44 (verificato via audit automatico): ingrandiamo l'area cliccabile. */
  width: 44px !important;
  height: 44px !important;
}
.disiu-social-icons .elementor-social-icon:hover {
  transform: scale(1.1);
}
.disiu-social-icons .elementor-social-icon i {
  color: var(--disiu-ink) !important;
}

/* Contact section social — card bianca */
.disiu-contact-social {
  box-shadow: 0 8px 30px rgba(43,42,30,0.06);
}

/* Map container — round corners */
.disiu-contact-map .elementor-widget-google_maps iframe {
  border-radius: 24px;
}

/* Senza consenso marketing, il placeholder Complianz al posto della mappa
   usa la sua altezza naturale (~222px) invece di riempire la colonna che il
   layout a fianco (Orari) stira in altezza via flexbox — lascia un vuoto
   bianco sotto (verificato: card 480px, contenuto reale 222px). */
.disiu-contact-map-widget,
.disiu-contact-map-widget .elementor-widget-container,
.disiu-contact-map-widget .elementor-custom-embed,
.disiu-contact-map-widget .cmplz-placeholder-parent {
  height: 100% !important;
}
.disiu-contact-map-widget .cmplz-placeholder-parent {
  border-radius: 24px;
  overflow: hidden;
}

/* Responsive mobile — Contatti */
@media (max-width: 767px) {
  .disiu-contact-social {
    margin-left: 16px !important;
    margin-right: 16px !important;
    padding: 32px 24px !important;
  }
}

/* "Resta in contatto" (blocco social in fondo pagina): il container Elementor
   porta un margin-left fisso pensato per il desktop (625px) che a mobile/tablet
   lo spinge fuori schermo e fa traboccare orizzontalmente l'intera pagina */
@media (max-width: 1024px) {
  .elementor-element-7332804 {
    width: 100% !important;
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}

/* =========================================================
   PAGINA PRENOTA — Booking Form
   ========================================================= */

/* Progress bar */
.disiu-book-progress {
  display: flex;
  gap: 6px;
  margin-bottom: 8px;
}
.disiu-book-bar {
  flex: 1;
  height: 3px;
  border-radius: 99px;
  background: rgba(43,42,30,0.12);
  transition: background 0.3s;
}
.disiu-book-bar.active {
  background: #566236;
}

.disiu-book-step-label {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #566236;
  margin-bottom: 30px;
}

/* Step titles */
.disiu-book-title {
  font-family: 'Cormorant Garamond', serif !important;
  font-weight: 400 !important;
  font-size: 48px !important;
  line-height: 1 !important;
  color: var(--disiu-ink);
  margin: 0 0 36px;
  letter-spacing: -1px;
}

/* Labels (Data, Orario) */
.disiu-book-label {
  font-family: 'JetBrains Mono', monospace !important;
  font-size: 10px !important;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #4E4C3B !important;
  margin-bottom: 12px;
}

/* Button grid */
.disiu-book-grid {
  display: grid;
  gap: 12px;
}
/* minmax(0, 1fr) invece del solo 1fr: senza, un contenuto più lungo in una
   cella (es. "Chiuso") alza il minimo di quella colonna oltre la sua quota
   equa e la allarga a scapito delle altre, rendendo le caselle diseguali. */
.disiu-book-people {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.disiu-book-dates {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}
.disiu-book-times {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
}

/* Selector buttons */
.disiu-booking .disiu-book-btn {
  padding: 24px 12px !important;
  border-radius: 14px !important;
  border: 1px solid rgba(43,42,30,0.12) !important;
  background: #FAF3E7 !important;
  color: #2B2A1E !important;
  cursor: pointer;
  font-family: 'Cormorant Garamond', serif !important;
  font-size: 32px !important;
  font-weight: 500 !important;
  transition: all 0.2s;
  text-align: center;
  line-height: 1;
}
.disiu-booking .disiu-book-btn:hover {
  border-color: #566236 !important;
}
.disiu-booking .disiu-book-btn.active {
  border: 2px solid #566236 !important;
  background: #566236 !important;
  color: #FAF3E7 !important;
}

/* Date buttons (smaller) */
.disiu-booking .disiu-book-btn--date,
.disiu-booking .disiu-book-btn--time {
  padding: 14px 4px !important;
  border-radius: 12px !important;
  font-family: 'Manrope', sans-serif !important;
  font-size: 12px !important;
  font-weight: 600 !important;
}
.disiu-booking .disiu-book-btn--time {
  font-size: 14px !important;
}
.disiu-booking .disiu-book-btn--date.is-closed {
  opacity: 0.4;
  cursor: not-allowed;
  background: transparent !important;
}
.disiu-booking .disiu-book-btn--date.is-closed:hover {
  border-color: rgba(43,42,30,0.12) !important;
}

/* Hint text */
.disiu-book-hint {
  font-family: 'Manrope', sans-serif !important;
  font-size: 12px !important;
  line-height: 1.5 !important; /* il preset globale "Corpo" eredita un line-height:1.6px rotto che collassa le righe */
  color: #4E4C3B !important;
  margin: 16px 0 0;
}

/* Il container del widget di prenotazione ha un padding orizzontale fisso da
   60px pensato per desktop, mai ridotto per mobile: schiaccia la card wizard
   e fa andare a capo il testo dell'hint su troppe righe */
@media (max-width: 767px) {
  .elementor-element-cce3622 {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }
}

/* Stesso problema del container sopra, ma sul wrapper interno della card
   wizard (padding fisso 50px per lato, mai ridotto per mobile): a 390px di
   viewport lasciava solo ~200px di larghezza utile alla griglia data/orario,
   che con caselle di contenuto diverso (es. "Chiuso" vs "MER 29") si spezzava
   in colonne di larghezza diseguale invece di restare allineata. */
@media (max-width: 767px) {
  .elementor-element-3936376 {
    padding: 28px 20px !important;
  }
}

/* Navigation buttons */
.disiu-book-nav {
  display: flex;
  gap: 12px;
  margin-top: 36px;
}
.disiu-booking .disiu-book-next,
.disiu-booking .disiu-book-confirm {
  flex: 1;
  margin-top: 36px;
  padding: 18px 36px !important;
  border-radius: 999px !important;
  border: none !important;
  background: #566236 !important;
  color: #FAF3E7 !important;
  cursor: pointer;
  font-family: 'Manrope', sans-serif !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 2px;
  text-transform: uppercase;
  width: 100%;
  transition: opacity 0.2s;
}
.disiu-booking .disiu-book-nav .disiu-book-next,
.disiu-booking .disiu-book-nav .disiu-book-confirm {
  margin-top: 0;
}
.disiu-booking .disiu-book-next:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.disiu-booking .disiu-book-back {
  padding: 18px 28px !important;
  border-radius: 999px !important;
  border: 1px solid rgba(43,42,30,0.12) !important;
  background: transparent !important;
  color: #2B2A1E !important;
  cursor: pointer;
  font-family: 'Manrope', sans-serif !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  letter-spacing: 2px;
  text-transform: uppercase;
  flex-shrink: 0;
}
.disiu-book-back:hover {
  background: var(--disiu-cream-light);
}

/* Form fields — Step 3 */
.disiu-book-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.disiu-book-field {
  display: block;
}
.disiu-book-field--full {
  margin-top: 18px;
}
.disiu-book-field-label {
  font-family: 'JetBrains Mono', monospace !important;
  font-size: 10px !important;
  letter-spacing: 2px;
  color: #4E4C3B !important;
  text-transform: uppercase;
  display: block;
  margin-bottom: 8px;
}
.disiu-book-input {
  width: 100%;
  padding: 14px 16px !important;
  border: 1px solid rgba(43,42,30,0.12) !important;
  border-radius: 10px !important;
  /* min 16px: sotto questa soglia iOS Safari fa auto-zoom sul viewport al
     focus del campo — con 15px scattava su ogni tap in Nome/Cognome/
     Telefono/Email/Note dello step 3 della prenotazione. */
  font-size: 16px !important;
  font-family: 'Manrope', sans-serif !important;
  background: #FAF3E7 !important;
  color: #2B2A1E !important;
  outline: none;
  box-sizing: border-box;
  transition: border-color 0.2s;
}
.disiu-book-input:focus {
  border-color: #566236 !important;
}
.disiu-book-textarea {
  resize: vertical;
}

/* Sidebar summary */
.disiu-book-summary-rows {
  display: flex;
  flex-direction: column;
}
.disiu-book-summary-row {
  display: flex;
  justify-content: space-between;
  padding: 14px 0;
  border-bottom: 1px solid rgba(250,243,231,0.18);
}
.disiu-book-summary-label {
  font-family: var(--font-mono);
  font-size: 12px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: rgba(250,243,231,0.7);
}
.disiu-book-summary-value {
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 500;
  color: #FAF3E7;
}

/* Sidebar sticky */
.disiu-book-sidebar {
  position: sticky;
  top: 100px;
}

/* Help buttons */
.disiu-book-help-btn .elementor-button {
  justify-content: flex-start !important;
}

/* Keep booking breakpoints after base styles so the cascade preserves them. */
@media (min-width: 768px) and (max-width: 1024px) {
  .disiu-book-title { font-size: 36px !important; }
  .disiu-book-dates { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .disiu-book-times { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Responsive mobile — Prenota */
@media (max-width: 767px) {
  .disiu-book-content {
    flex-direction: column !important;
  }
  .disiu-book-title {
    font-size: 32px !important;
  }
  .disiu-book-people {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .disiu-book-dates {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .disiu-book-fields {
    grid-template-columns: 1fr;
  }
  .disiu-book-times {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .disiu-book-sidebar {
    position: static;
  }

  /* Pulsanti Continua/Indietro (Step 2 e 3): affiancati con flex:1 + padding
     generoso (36px/28px) più flex-shrink:0 sul back button, il contenuto non
     riesce a restringersi abbastanza e i due bottoni escono dalla card. Su
     mobile li impiliamo a piena larghezza, Continua sopra come azione primaria. */
  .disiu-book-nav {
    flex-direction: column-reverse;
  }
  .disiu-booking .disiu-book-back {
    width: 100%;
    flex-shrink: 1;
  }
}

@media (max-width: 480px) {
  .disiu-book-people,
  .disiu-book-dates { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .disiu-book-times { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* =========================================================
   PAGINA MENU
   ========================================================= */

/* Hero Menu: sfondo foto di un'insegna al neon senza overlay scuro — su
   mobile/tablet (dove l'header trasparente non copre più la scritta) il
   titolo H1 diventa illeggibile sovrapposto all'insegna. Aggiungiamo lo
   stesso tipo di scrim scuro già usato nella hero Home per leggibilità. */
@media (max-width: 1024px) {
  .elementor-element-c04ca94 {
    position: relative;
  }
  .elementor-element-c04ca94::before {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    background: linear-gradient(180deg, rgba(43,42,30,0.82) 0%, rgba(43,42,30,0.72) 60%, rgba(43,42,30,0.55) 100%) !important;
    pointer-events: none !important;
    z-index: 0 !important;
  }
  .elementor-element-c04ca94 > * {
    position: relative;
    z-index: 1;
  }
}

/* Tab categorie del Menu (widget Nested Tabs Elementor): di default su
   mobile Elementor impila le tab in verticale a piena larghezza invece di
   restare una riga orizzontale scorrevole come da progetto */
@media (max-width: 767px) {
  .e-n-tabs-heading {
    display: flex !important;
    flex-wrap: nowrap !important;
    align-items: flex-start !important;
    overflow-x: auto !important;
    max-width: 100% !important;
    min-width: 0 !important;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .e-n-tabs-heading::-webkit-scrollbar {
    display: none;
  }
  .e-n-tabs-heading .e-n-tab-title {
    flex: 0 0 auto !important;
    align-self: flex-start !important;
    height: auto !important;
    white-space: nowrap !important;
  }
}

/* =========================================================
   PAGINA CONTATTI
   ========================================================= */

/* Hero "Vieni a trovarci a Balestrate.": il widget ha impostazioni
   responsive title_typography_font_size_tablet/_mobile salvate in
   Elementor, ma per un'anomalia nella struttura dati del widget (un
   oggetto "settings" duplicato/annidato) non vengono compilate nel CSS
   generato — resta sempre il font-size base (96px), enorme su schermi
   piccoli. Applichiamo qui direttamente i valori equivalenti. */
@media (max-width: 1024px) and (min-width: 768px) {
  .elementor-element-a630b6b .elementor-heading-title {
    font-size: 64px !important;
  }
}
@media (max-width: 767px) {
  .elementor-element-a630b6b .elementor-heading-title {
    font-size: 42px !important;
  }
}

/* =========================================================
   COOKIE BANNER (Complianz)
   ========================================================= */

/* Pulsante di chiusura ~20x20 (sotto la soglia di tap 44x44, verificato via
   audit): Complianz fissa width/height con box-sizing:border-box, quindi
   il solo padding viene assorbito dentro il box invece di ingrandirlo.
   Forziamo width/height e ricentriamo con margine negativo per non
   spostare il layout. */
.cmplz-close {
  width: 44px !important;
  height: 44px !important;
  margin: -12px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

/* =========================================================
   FRONTEND REPAIR — verified against the rendered Elementor pages
   ========================================================= */

/* Use existing media on this installation, not an expired Local Live Link. */
.disiu-site .elementor-element-1f5fad3 {
  background-image: url('../../uploads/2026/03/1257330-2-scaled.jpg') !important;
}
.disiu-site .elementor-element-157f0a6 {
  max-width: 100%;
  min-width: 0;
}
.disiu-site .elementor-element-c04ca94 {
  background-image: url('../../uploads/2026/03/1257209-scaled.jpg') !important;
}
.disiu-site .elementor-element-edfb8fd {
  background-image: url('../../uploads/2026/03/1257384-scaled.jpg') !important;
}
.disiu-site :is(.elementor-element-1f5fad3, .elementor-element-c04ca94,
  .elementor-element-edfb8fd, .elementor-element-2058b98) {
  position: relative;
  isolation: isolate;
  background-size: cover;
  background-position: center;
  background-color: var(--disiu-green-deep);
}
.disiu-site :is(.elementor-element-1f5fad3, .elementor-element-c04ca94,
  .elementor-element-edfb8fd, .elementor-element-2058b98)::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background: linear-gradient(110deg, rgba(25, 29, 17, .82), rgba(25, 29, 17, .5)) !important;
  opacity: 1 !important;
  z-index: -1 !important;
  pointer-events: none;
}
.disiu-site :is(.elementor-element-edfb8fd, .elementor-element-2058b98) h1 em {
  color: var(--disiu-green-lime) !important;
}

/* Elementor's saved pixel line-heights compress multiline copy and shortcodes. */
.disiu-site .elementor-widget-text-editor,
.disiu-site .elementor-widget-text-editor p {
  line-height: 1.65 !important;
}
.disiu-site .elementor-icon-box-title { line-height: 1.2 !important; }
.disiu-site .disiu-pdm-nome {
  font-family: var(--font-display) !important;
  font-size: clamp(36px, 5vw, 72px) !important;
  line-height: 1.08 !important;
  letter-spacing: -.025em;
  overflow-wrap: anywhere;
}
.disiu-site .elementor-button {
  font-family: var(--font-ui) !important;
  line-height: 1.4 !important;
  min-height: 44px;
  max-width: 100%;
  white-space: normal;
}
.disiu-site .elementor-button-content-wrapper { align-items: center; }
.disiu-site :is(a, button, input, textarea, summary):focus-visible {
  outline: 3px solid var(--disiu-terracotta) !important;
  outline-offset: 4px;
}
.disiu-contact-cta { opacity: 1; }

/* wpautop inserts BR nodes between controls; they must not become grid cells. */
.disiu-booking br { display: none; }
.disiu-book-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.disiu-book-field, .disiu-book-form-widget { min-width: 0; }
.disiu-booking .disiu-book-input[aria-invalid='true'] {
  border-color: var(--disiu-terracotta) !important;
}
.disiu-book-summary-row { gap: 12px; align-items: baseline; }
.disiu-book-summary-value { text-align: right; }
.disiu-booking .disiu-book-confirm { white-space: normal; overflow-wrap: anywhere; }

/* Fade only the category strip, not the entire height of the menu cards. */
@media (max-width: 767px) {
  .disiu-menu-tabs::before, .disiu-menu-tabs::after {
    bottom: auto;
    height: 64px;
  }
  .disiu-book-fields { grid-template-columns: minmax(0, 1fr); }
  .disiu-book-page h1.elementor-heading-title {
    font-size: clamp(42px, 11vw, 64px) !important;
  }
  .disiu-booking { padding-bottom: 0; }
  .disiu-site .elementor-element-3936376 { padding: 28px 20px !important; }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .disiu-book-page h1.elementor-heading-title { font-size: 64px !important; }
}
@media (max-width: 1024px) {
  .disiu-mob-nav { bottom: calc(12px + env(safe-area-inset-bottom, 0px)) !important; }
  html { scroll-padding-bottom: calc(110px + env(safe-area-inset-bottom, 0px)); }
  .disiu-booking { padding-bottom: 0; }
  .elementor-location-footer {
    padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px)) !important;
    background: var(--disiu-ink);
  }
}
@media (max-height: 480px) and (orientation: landscape) {
  .disiu-mob-nav { bottom: calc(6px + env(safe-area-inset-bottom, 0px)) !important; }
  .disiu-mob-nav .disiu-mob-nav__item,
  .disiu-mob-nav .disiu-mob-nav__item.e-con-boxed { min-height: 44px !important; }
  html { scroll-padding-bottom: calc(76px + env(safe-area-inset-bottom, 0px)); }
}
@media (prefers-reduced-motion: reduce) {
  .disiu-marquee-track, .disiu-hero-info__dot, .disiu-menu-tabs-hint svg {
    animation: none !important;
  }
}

/* Mobile contact rows: one alignment shared by label, detail and action. */
@media (max-width: 767px) {
  .disiu-contact-page :is(.elementor-element-b79f973, .elementor-element-c4eafff, .elementor-element-6dd5846) {
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr);
    column-gap: 14px !important;
    row-gap: 8px !important;
    align-items: start !important;
    padding: 24px 0 !important;
  }
  .disiu-contact-page .disiu-contact-icon {
    grid-column: 1;
    grid-row: 1 / 3;
    width: 44px !important;
    line-height: 1;
  }
  .disiu-contact-page .disiu-contact-label {
    grid-column: 2;
    align-self: center;
    margin: 0 !important;
  }
  .disiu-contact-page :is(.elementor-element-86405ca, .elementor-element-cfddbb8,
    .elementor-element-ccf9c8d, .disiu-contact-cta) {
    grid-column: 2;
    width: 100% !important;
    min-width: 0;
    margin: 0 !important;
    padding: 0 !important;
  }
  .disiu-contact-page .disiu-contact-sub p { margin-bottom: 0; }
  .disiu-contact-page .disiu-contact-cta a {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
  }

  /* Centering an overflowing flex row puts its first items outside scroll reach. */
  .elementor-widget-n-tabs.disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading {
    justify-content: flex-start !important;
    flex-wrap: nowrap;
  }
  .disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading,
  .disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading {
    overscroll-behavior-x: contain;
    scroll-padding-inline: 8px;
    padding-inline: 4px !important;
    scrollbar-width: thin;
    scrollbar-color: var(--disiu-green) transparent;
  }
  .disiu-menu-tabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title,
  .disiu-menu-subtabs > .e-n-tabs > .e-n-tabs-heading > .e-n-tab-title {
    min-height: 44px;
    margin: 0 !important;
  }
}

/* Fluid signature heading: keep the longer title balanced at intermediate widths. */
.disiu-homepage .elementor-element-fd33923 .elementor-heading-title {
  font-size: clamp(34px, calc(22px + 3vw), 64px) !important;
  line-height: 1.12 !important;
  text-wrap: balance;
}

/* Emphasis stays distinct even when the widget's typography is set to italic. */
.disiu-site .elementor-heading-title:has(em) { font-style: normal !important; }
.disiu-site .elementor-heading-title em {
  font-family: inherit;
  font-size: 1em;
  font-weight: inherit;
  font-style: italic !important;
  line-height: inherit;
  color: var(--disiu-green) !important;
}
.disiu-site :is(.elementor-element-1f5fad3, .elementor-element-c04ca94,
  .elementor-element-edfb8fd, .elementor-element-2058b98,
  .disiu-bg-green, .disiu-bg-green-deep, .disiu-bg-ink) .elementor-heading-title em {
  color: var(--disiu-green-lime) !important;
}

/* Complianz removes its sizing class after consent; the iframe then reverted
   to Elementor's fixed 480px while the desktop card grew to match the hours. */
.disiu-contact-page .disiu-contact-map-widget iframe {
  display: block;
  width: 100% !important;
  height: 100% !important;
  border: 0;
}
.disiu-contact-page .disiu-contact-map-widget {
  overflow: hidden;
  border-radius: 24px;
}
/* Menu availability, tap-accessible allergen legend and return to top. */
.disiu-unavailable { display:inline-block; padding:6px 10px; border:1px solid #8b3828; border-radius:8px; background:#fff0e9; color:#752c20; font:600 12px/1.4 Manrope,sans-serif; }
.disiu-badges { flex-wrap:wrap; }
.disiu-menu-card .disiu-unavailable { display:table; max-width:100%; margin-top:8px; padding:5px 9px; border-radius:6px; white-space:normal; text-align:left; overflow-wrap:normal; }
.disiu-allergen-details { width:100%; text-align:left; font:500 12px/1.5 Manrope,sans-serif; color:#27362b; }
.disiu-allergen-details summary { display:flex; align-items:center; gap:8px; min-height:44px; padding:4px; cursor:pointer; border-radius:6px; }
.disiu-allergen-details summary::after { content:'+'; margin-left:auto; font-size:18px; }
.disiu-allergen-details[open] summary::after { content:'−'; }
.disiu-allergen-details summary:focus-visible,.disiu-back-top:focus-visible { outline:3px solid #a85a40; outline-offset:3px; }
.disiu-allergen-details .disiu-allergen-icons { display:flex; flex-wrap:wrap; gap:4px; }
.disiu-allergen-details ul { margin:4px 0 8px; padding:10px 14px; list-style:none; background:#f5f3ec; border-radius:8px; }
.disiu-allergen-details li { margin:3px 0; }
.disiu-back-top { position:fixed; right:20px; bottom:24px; z-index:90; display:flex; align-items:center; justify-content:center; width:48px; height:48px; padding:0; border:1px solid #eee9dd; border-radius:50%; background:#243b2b; color:#fff; box-shadow:0 3px 14px #0003; cursor:pointer; }
.disiu-back-top[hidden] { display:none; }
.disiu-back-top { padding:0 !important; min-width:48px; }
.disiu-back-top svg { display:block; flex:0 0 24px; width:24px !important; height:24px !important; }
.disiu-book-request-note { margin:14px 0 0; color:var(--disiu-ink-soft); font:400 13px/1.6 var(--font-ui); }
.disiu-booking .disiu-book-nav { align-items:stretch; }
.disiu-booking .disiu-book-nav .disiu-book-confirm { min-width:0; padding:16px 20px !important; line-height:1.5; letter-spacing:1px; overflow-wrap:normal; }
.disiu-back-top:hover,.disiu-back-top:focus { background:#36573e; color:#fff; }
@media(max-width:767px) { .disiu-back-top { right:16px; bottom:calc(88px + env(safe-area-inset-bottom,0px)); } }

/* Audit 2026-09: shared menu legend and readable legal pages. */
.disiu-main { width:100%; max-width:none; min-width:0; }
.disiu-menu-grid .e-loop-item { min-width:0; }
.disiu-menu-card .elementor-heading-title,
.disiu-menu-card .elementor-widget-text-editor { overflow-wrap:anywhere; }
.disiu-allergen-legend { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:0; margin:0; list-style:none; width:100%; }
.disiu-allergen-legend li { display:flex; align-items:center; gap:10px; padding:12px; min-width:0; border:1px solid var(--disiu-line); border-radius:14px; background:var(--disiu-cream-light); font:500 13px/1.5 var(--font-ui); overflow-wrap:anywhere; }
.disiu-allergen-legend li > span:first-child { flex:0 0 32px; font-size:22px; text-align:center; }
.disiu-legal-links { display:flex; flex-wrap:wrap; gap:8px 20px; margin-top:16px; }
.disiu-legal-links a,.disiu-legal-links button { display:inline-flex; align-items:center; min-height:44px; color:inherit; font:inherit; text-decoration:underline !important; }
.disiu-legal-links button { border:0; padding:0; background:transparent; cursor:pointer; }
.disiu-privacy { max-width:860px; margin:0 auto; padding:160px 24px 70px; overflow-wrap:anywhere; }
.disiu-privacy h1 { font:400 clamp(38px,7vw,64px)/1.1 var(--font-display); }
.disiu-privacy h2 { margin-top:32px; font:500 28px/1.2 var(--font-display); }
.disiu-privacy p,.disiu-privacy li { font:400 16px/1.7 var(--font-ui); }
.disiu-privacy a { text-decoration:underline !important; }
.disiu-book-privacy { margin:0 0 20px; }
.disiu-book-privacy a { text-decoration:underline !important; }
.disiu-privacy .disiu-privacy-review { padding:16px; border-left:4px solid var(--disiu-terracotta); background:var(--disiu-cream); }
@media(max-width:767px) {
  .disiu-allergen-legend { grid-template-columns:minmax(0,1fr); }
  .disiu-privacy { padding:40px 20px 70px; }
}

/* =========================================================
   SELETTORE LINGUA IT · EN (markup da inc/i18n.php)
   ========================================================= */
.disiu-lang {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.12em;
  line-height: 1;
}
.disiu-lang__item {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  min-height: 32px;
  padding: 0 8px;
  border-radius: 999px;
  color: inherit;
  text-decoration: none;
  opacity: 0.7;
  transition: opacity 0.2s ease, background-color 0.2s ease;
}
a.disiu-lang__item:hover,
a.disiu-lang__item:focus-visible { opacity: 1; text-decoration: none; }
a.disiu-lang__item:focus-visible { outline: 2px solid var(--disiu-green-lime); outline-offset: 2px; }
.disiu-lang__item.is-active {
  opacity: 1;
  background: var(--disiu-green-lime);
  color: var(--disiu-green-deep);
}
.disiu-lang__sep { opacity: 0.4; }

/* Nella barra header desktop */
.disiu-lang--header {
  color: var(--disiu-cream-light);
  margin-right: 8px;
  flex: 0 0 auto;
}
/* Specificità alta: il colore link globale di Elementor (verde) non è leggibile sul fondo scuro */
body.disiu-site .disiu-lang a.disiu-lang__item,
body.disiu-site .disiu-lang a.disiu-lang__item:visited { color: var(--disiu-cream-light); }
body.disiu-site .disiu-lang .disiu-lang__item.is-active { color: var(--disiu-green-deep); }

/* Versione flottante: solo tablet/mobile, dove la barra header è nascosta */
.disiu-lang--floating {
  position: absolute;
  top: 16px;
  right: 16px;
  z-index: 1000;
  padding: 4px;
  border-radius: 999px;
  background: rgba(43, 42, 30, 0.55);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(250, 243, 231, 0.18);
  color: var(--disiu-cream-light);
}
@media (min-width: 1025px) {
  .disiu-lang--floating { display: none; }
}
