/*
 * Tema pubblico "Contrasto" — Volgo CMS.
 * Reskin flat/editoriale del tema Default: bordi netti al posto delle ombre,
 * bottoni pieni senza gradiente, angoli quasi squadrati, tipografia con
 * tracking più stretto e dettagli in maiuscolo. Stessa identica struttura
 * HTML e stesse classi del tema Default (i blocchi del page builder
 * generano il markup, non fanno parte del tema) — cambia solo questo file.
 *
 * Usa SOLO le custom properties generate da ThemeService in
 * public/assets/theme/site.css (colori/font di Impostazioni → Branding):
 * nessun colore hardcoded, così il tema resta compatibile con qualunque
 * brand lo installi. --radius/--shadow-1 di site.css NON sono usate qui
 * (sono pensate per il tema Default): questo tema definisce i propri
 * token strutturali qui sotto.
 */

:root {
  --t-radius: 2px;
  --t-border-w: 2px;
  --t-border: color-mix(in srgb, var(--color-ink) 16%, transparent);
  --t-border-soft: color-mix(in srgb, var(--color-ink) 10%, transparent);
}

/* ============ RESET ============ */

*, *::before, *::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: 1.65;
  color: var(--color-ink);
  background: var(--color-paper);
}

img, video { max-width: 100%; height: auto; display: block; }

.icon { width: 20px; height: 20px; display: inline-block; flex-shrink: 0; }

a { color: var(--color-primary); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: .2em; }

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  font-weight: 700;
  line-height: 1.12;
  letter-spacing: -.01em;
  margin: 0 0 .6em;
  color: var(--color-ink);
}

h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }

p { margin: 0 0 1em; }
ul, ol { margin: 0 0 1em; padding-left: 1.4em; }

/* ============ LAYOUT ============ */

.container {
  width: 100%;
  max-width: var(--container-width);
  margin-inline: auto;
  padding-inline: 1.25rem;
}

@media (min-width: 992px) {
  .container { padding-inline: 2rem; }
}

main { display: block; }

/* Spaziatura sezione (opzioni "Avanzate" di ogni blocco) */
.block { padding-top: 3.5rem; padding-bottom: 3.5rem; position: relative; }
.block--spacing-top-none    { padding-top: 0; }
.block--spacing-top-small   { padding-top: 1.5rem; }
.block--spacing-top-medium  { padding-top: 3.5rem; }
.block--spacing-top-large   { padding-top: 6rem; }
.block--spacing-bottom-none   { padding-bottom: 0; }
.block--spacing-bottom-small  { padding-bottom: 1.5rem; }
.block--spacing-bottom-medium { padding-bottom: 3.5rem; }
.block--spacing-bottom-large  { padding-bottom: 6rem; }

.block--bg-color   { background: var(--bg-color, var(--color-paper)); }
.block--bg-gradient { background: var(--bg-gradient, var(--color-primary)); color: #fff; }
.block--bg-gradient h1, .block--bg-gradient h2, .block--bg-gradient h3 { color: #fff; }
.block--bg-image {
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.block--hide-mobile  { display: none; }
.block--hide-desktop { display: block; }

@media (min-width: 768px) {
  .block--hide-mobile  { display: block; }
  .block--hide-desktop { display: none; }
}

/* ============ ANIMAZIONI SCROLL ============ */
/* Fade netto senza traslazione: coerente con l'impaginazione piatta. */

.reveal {
  opacity: 0;
  transition: opacity .5s ease;
}
.reveal.is-visible { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transition: none; }
}

/* ============ BOTTONI ============ */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  font-family: var(--font-heading);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  border-radius: var(--t-radius);
  border: var(--t-border-w) solid transparent;
  padding: .75rem 1.6rem;
  font-size: .9rem;
  cursor: pointer;
  transition: background-color .15s ease, color .15s ease, border-color .15s ease;
  text-decoration: none;
}
.btn:hover { text-decoration: none; }

.btn-primary   { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.btn-primary:hover   { background: transparent; color: var(--color-primary); }
.btn-secondary { background: var(--color-secondary); border-color: var(--color-secondary); color: #fff; }
.btn-secondary:hover { background: transparent; color: var(--color-secondary); }
.btn-outline   { background: transparent; border-color: var(--color-primary); color: var(--color-primary); }
.btn-outline:hover { background: var(--color-primary); color: #fff; }
.btn-ghost     { background: transparent; border-color: rgba(255,255,255,.7); color: #fff; }
.btn-ghost:hover { background: rgba(255,255,255,.14); }

.btn-sm { padding: .5rem 1.1rem; font-size: .8rem; }
.btn-lg { padding: 1rem 2.2rem; font-size: 1rem; }

.btn-group { display: flex; flex-wrap: wrap; gap: .8rem; }
.btn-group--center { justify-content: center; }
.btn-group--right  { justify-content: flex-end; }

/* ============ HEADER ============ */
/* Sfondo pieno (niente sfocatura/trasparenza) con una riga d'accento nel
   colore primario: è il dettaglio che identifica questo tema. */

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--header-bg, var(--color-surface));
  border-bottom: var(--t-border-w) solid var(--color-primary);
}

.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  min-height: 76px;
}

.site-header__logo {
  display: flex; align-items: center; gap: .6rem;
  font-family: var(--font-heading); font-weight: 700; letter-spacing: -.01em;
  font-size: 1.25rem; color: var(--header-text, var(--color-ink));
}
.site-header__logo img { max-width: 280px; max-height: 64px; width: auto; height: auto; }

.site-nav { display: none; align-items: center; gap: 1.8rem; }
.site-nav a {
  color: var(--header-text, var(--color-ink)); font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em; font-size: .85rem;
}
/* Ancorato a header-text (sempre leggibile su header-bg per costruzione)
   e solo sfumato verso il primario: var(--color-primary) da sola non ha
   nessuna garanzia di contrasto su un header scuro. */
.site-nav a:hover { color: color-mix(in srgb, var(--header-text, var(--color-ink)) 55%, var(--color-primary) 45%); text-decoration: none; }

@media (min-width: 992px) {
  .site-nav { display: flex; }
}

/* Menu Manager: voci con icona e sottomenu a tendina (vedi
   docs/10-CONTENT-TOOLS-MARKETING.md Parte D) */
.site-nav__item { position: relative; display: flex; align-items: center; }
.site-nav__link { display: inline-flex; align-items: center; gap: .4rem; }
.site-nav__icon { width: 18px; height: 18px; }
.site-nav__caret { width: 14px; height: 14px; transition: transform .2s ease; }

.site-nav__item--has-children .site-nav__submenu {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 200px;
  margin-top: .5rem;
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  padding: .5rem;
  display: flex;
  flex-direction: column;
  gap: .15rem;
  opacity: 0;
  visibility: hidden;
  transition: opacity .15s ease, visibility .15s ease;
  z-index: 60;
}

.site-nav__item--has-children:hover > .site-nav__submenu,
.site-nav__item--has-children:focus-within > .site-nav__submenu {
  opacity: 1;
  visibility: visible;
}

.site-nav__item--has-children:hover > .site-nav__link .site-nav__caret,
.site-nav__item--has-children:focus-within > .site-nav__link .site-nav__caret {
  transform: rotate(180deg);
}

.site-nav__submenu a {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .55rem .75rem;
  border-radius: 0;
  font-weight: 700;
  text-transform: none;
  letter-spacing: normal;
  white-space: nowrap;
}

.site-nav__submenu a:hover {
  background: var(--color-paper);
  text-decoration: none;
}

/* 3° livello (sottovoce di una sottovoce): flyout laterale invece che sotto,
   per non uscire dal sottomenu del 2° livello. */
.site-nav__item--nested {
  position: relative;
}
.site-nav__item--nested > .site-nav__submenu {
  top: 0;
  left: 100%;
  margin-top: 0;
  margin-left: .25rem;
}
.site-nav__item--nested > .site-nav__link {
  justify-content: space-between;
}

/* Hamburger a 2 linee (vedi docs/05-ADMIN-UX-GUIDELINES.md §1) */
.site-header__toggle {
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  width: 44px;
  height: 44px;
  border: none;
  background: transparent;
  cursor: pointer;
  padding: 0;
}
.site-header__toggle span {
  display: block;
  height: 3px;
  border-radius: 0;
  background: var(--header-text, var(--color-ink));
  width: 100%;
}
@media (min-width: 992px) {
  .site-header__toggle { display: none; }
}

/* Drawer off-canvas mobile */
.site-drawer {
  position: fixed;
  inset: 0;
  z-index: 100;
  visibility: hidden;
}
.site-drawer.is-open { visibility: visible; }

.site-drawer__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, .55);
  opacity: 0;
  transition: opacity .25s ease;
}
.site-drawer.is-open .site-drawer__overlay { opacity: 1; }

.site-drawer__panel {
  position: absolute;
  top: 0; right: 0;
  height: 100%;
  width: min(86vw, 360px);
  background: var(--color-surface);
  border-left: var(--t-border-w) solid var(--color-primary);
  padding: 5.5rem 1.5rem 2rem;
  transform: translateX(100%);
  transition: transform .3s ease;
  overflow-y: auto;
}
.site-drawer.is-open .site-drawer__panel { transform: translateX(0); }

.site-drawer__panel a {
  display: block;
  padding: .85rem 0;
  font-family: var(--font-heading);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
  font-size: 1rem;
  color: var(--color-ink);
  border-bottom: 1px solid var(--t-border-soft);
}

.site-drawer__close {
  position: absolute;
  top: 1.25rem;
  right: 1.25rem;
  width: 40px; height: 40px;
  border-radius: var(--t-radius);
  border: var(--t-border-w) solid var(--t-border);
  background: var(--color-surface);
  display: flex; align-items: center; justify-content: center;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--color-ink);
  cursor: pointer;
}

/* Menu Manager: sottovoci nel drawer mobile (vedi
   docs/10-CONTENT-TOOLS-MARKETING.md Parte D) */
.site-drawer__item-row {
  display: flex;
  align-items: stretch;
  border-bottom: 1px solid var(--t-border-soft);
}
.site-drawer__item-row a { flex: 1; border-bottom: none; }
.site-drawer__submenu-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  border: none;
  background: transparent;
  color: var(--color-ink);
  cursor: pointer;
}
.site-drawer__submenu-toggle .site-nav__caret { transition: transform .2s ease; }
.site-drawer__item.is-open .site-drawer__submenu-toggle .site-nav__caret { transform: rotate(180deg); }

.site-drawer__submenu {
  display: none;
  flex-direction: column;
  padding-left: 1.25rem;
}
.site-drawer__item.is-open .site-drawer__submenu { display: flex; }
.site-drawer__submenu a { font-size: .85rem; }

/* ============ HERO ============ */

.block-hero {
  position: relative;
  display: flex;
  align-items: center;
  color: #fff;
  text-align: left;
  /* --footer-bg è sempre scuro "by design" (indipendente da ink/paper del
     dark mode): fallback corretto per il testo bianco senza immagine. */
  background-color: var(--footer-bg);
  background-size: cover;
  background-position: center;
  padding-top: 6rem;
  padding-bottom: 6rem;
  overflow: hidden;
  border-bottom: var(--t-border-w) solid var(--color-primary);
}
.block-hero--fullscreen { min-height: 92vh; }
.block-hero--large { min-height: 62vh; }
.block-hero--medium { min-height: 38vh; }

.block-hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 0;
}

.block-hero__content { position: relative; z-index: 1; max-width: 720px; }
.block-hero--center .block-hero__content { margin-inline: auto; text-align: center; }
.block-hero--right .block-hero__content { margin-inline-start: auto; text-align: right; }

.block-hero__eyebrow {
  display: inline-block;
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-size: .8rem;
  color: var(--color-primary);
  background: #fff;
  padding: .25rem .6rem;
  margin-bottom: 1.25rem;
}

.block-hero__title { font-size: var(--fs-h1); color: #fff; margin-bottom: .75rem; }
.block-hero__subtitle { font-size: 1.15rem; color: rgba(255,255,255,.85); max-width: 56ch; }
.block-hero__subtitle p:last-child { margin-bottom: 0; }
.block-hero .btn-group { margin-top: 2rem; }

/* ============ TITOLO ============ */

.block-heading { text-align: left; }
.block-heading--center { text-align: center; }
.block-heading--right { text-align: right; }
.block-heading__eyebrow {
  display: block;
  font-family: var(--font-heading);
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-size: .8rem;
  color: var(--color-primary);
  margin-bottom: .6rem;
}
.block-heading h1, .block-heading h2, .block-heading h3, .block-heading h4 { margin-bottom: 0; }

/* ============ TESTO ============ */

.block-text__body { max-width: 76ch; }
.block-text--columns-2 .block-text__body {
  max-width: none;
}
@media (min-width: 768px) {
  .block-text--columns-2 .block-text__body {
    column-count: 2;
    column-gap: 2.5rem;
  }
}

/* ============ IMMAGINE ============ */

.block-image { text-align: center; }
.block-image--left { text-align: left; }
.block-image--right { text-align: right; }
.block-image figure { margin: 0; display: inline-block; max-width: 100%; }
.block-image img { border-radius: 0; }
.block-image figcaption { margin-top: .75rem; font-size: .9rem; color: var(--color-secondary); }

.block-image--full img { width: 100%; }
.block-image--large img { max-width: 920px; margin-inline: auto; }
.block-image--medium img { max-width: 640px; margin-inline: auto; }
.block-image--small img { max-width: 420px; margin-inline: auto; }

/* ============ IMMAGINE + TESTO ============ */

.block-image-text__grid {
  display: grid;
  gap: 2.5rem;
  align-items: center;
}
@media (min-width: 768px) {
  .block-image-text__grid { grid-template-columns: 1fr 1fr; }
  .block-image-text--ratio-40-60 .block-image-text__grid { grid-template-columns: 4fr 6fr; }
  .block-image-text--ratio-60-40 .block-image-text__grid { grid-template-columns: 6fr 4fr; }
  .block-image-text--right .block-image-text__grid > .block-image-text__media { order: 2; }
}
.block-image-text--top .block-image-text__grid { grid-template-columns: 1fr; }
.block-image-text__media img { border-radius: 0; width: 100%; }

@media (max-width: 767px) {
  .block-image-text--reverse-mobile .block-image-text__media { order: 2; }
}

/* ============ SEPARATORE ============ */

.block-divider__line {
  border: none;
  border-top: var(--t-border-w) solid var(--t-border);
  margin: 0 auto;
}
.block-divider__line--double { border-top-width: 4px; border-top-style: double; }
.block-divider--full .block-divider__line { width: 100%; }
.block-divider--50 .block-divider__line { width: 50%; }
.block-divider--25 .block-divider__line { width: 25%; }
.block-divider__icon {
  text-align: center;
  margin: 0 auto;
  color: var(--color-primary);
}

/* ============ SPAZIO ============ */

.block-spacer {
  padding: 0 !important;
  height: var(--spacer-mobile, 20px);
}
@media (min-width: 768px) {
  .block-spacer { height: var(--spacer-desktop, 40px); }
}

/* ============ CARD ============ */

.block-cards__grid {
  display: grid;
  gap: 1.75rem;
  grid-template-columns: repeat(var(--cards-cols-mobile, 1), 1fr);
}
@media (min-width: 768px) {
  .block-cards__grid { grid-template-columns: repeat(var(--cards-cols-desktop, 3), 1fr); }
}
.card {
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  padding: 2rem;
  text-align: left;
  transition: border-color .15s ease;
}
.card:hover { border-color: var(--color-primary); }
.card__icon { color: var(--color-primary); margin-bottom: 1rem; }
.card__icon svg, .card__icon img { width: 40px; height: 40px; }
.card__title { font-family: var(--font-heading); font-weight: 700; font-size: 1.2rem; margin-bottom: .5rem; }
.card__text { color: var(--color-secondary); margin-bottom: 0; }
.card__link { display: inline-flex; margin-top: 1rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; font-size: .85rem; }

/* ============ CALL TO ACTION ============ */

.block-cta {
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  text-align: center;
  padding: 3.5rem 2rem;
}
.block-cta .container { padding-inline: 0; }
.block-cta__title { margin-bottom: .75rem; }
.block-cta__text { max-width: 64ch; margin-inline: auto; }
.block-cta .btn-group { margin-top: 1.75rem; }

/* ============ FOOTER ============ */
/* Sfondo pieno (niente gradiente) con una riga d'accento in testa. */

.site-footer {
  background: var(--footer-bg);
  color: color-mix(in srgb, var(--footer-text) 85%, transparent);
  border-top: var(--t-border-w) solid var(--color-primary);
  padding: 4rem 0 1.5rem;
}
.site-footer__grid {
  display: grid;
  gap: 2.5rem;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  .site-footer__grid { grid-template-columns: 2fr repeat(auto-fit, minmax(140px, 1fr)); }
}
.site-footer h3 {
  color: var(--footer-text); font-size: .95rem; margin-bottom: 1rem;
  text-transform: uppercase; letter-spacing: .06em;
}
.site-footer__logo { display: inline-block; margin-bottom: 1rem; }
.site-footer__logo img { max-height: 40px; filter: brightness(0) invert(1); }
.site-footer a { color: color-mix(in srgb, var(--footer-text) 75%, transparent); }
.site-footer a:hover { color: var(--footer-text); }
.site-footer ul { list-style: none; padding: 0; margin: 0; }
.site-footer li { margin-bottom: .6rem; }
.site-footer__link-button {
  display: inline;
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  font: inherit;
  text-align: left;
  cursor: pointer;
  color: color-mix(in srgb, var(--footer-text) 75%, transparent);
}
.site-footer__link-button:hover { color: var(--footer-text); text-decoration: underline; }
.site-footer__bottom {
  margin-top: 3rem;
  padding-top: 1.5rem;
  border-top: 1px solid color-mix(in srgb, var(--footer-text) 15%, transparent);
  font-size: .8rem;
  text-align: center;
  letter-spacing: .03em;
  color: color-mix(in srgb, var(--footer-text) 55%, transparent);
}

/* ============ PLACEHOLDER (homepage non configurata) ============ */

.site-placeholder {
  min-height: 70vh;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 3rem 1.5rem;
}
.site-placeholder__box { max-width: 520px; }

/* ============ COLONNE ============ */

.block-columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}
.block-columns--gap-sm { gap: .75rem; }
.block-columns--gap-md { gap: 1.5rem; }
.block-columns--gap-lg { gap: 2.5rem; }
@media (min-width: 768px) {
  .block-columns { grid-template-columns: repeat(var(--columns-count, 2), 1fr); }
}
.block-columns__media img { border-radius: 0; width: 100%; margin-bottom: 1rem; }
.block-columns__content :last-child { margin-bottom: 0; }

/* ============ TABELLA ============ */

.table-block__scroll { overflow-x: auto; }
.table-block {
  width: 100%;
  border-collapse: collapse;
  text-align: left;
}
.table-block th,
.table-block td {
  padding: .75rem 1rem;
  border: 1px solid var(--t-border);
}
.table-block thead th {
  background: var(--footer-bg);
  color: var(--footer-text);
  font-family: var(--font-heading);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .03em;
  font-size: .85rem;
}
.table-block--striped tbody tr:nth-child(even) { background: var(--color-paper); }

/* ============ SEDI ============ */

.block-locations--grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.75rem;
}
@media (min-width: 768px) {
  .block-locations--grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1200px) {
  .block-locations--grid { grid-template-columns: repeat(3, 1fr); }
}
.block-locations--list {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.location-card {
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  padding: 1.75rem;
}
.location-card__name { margin-bottom: .75rem; }
.location-card p {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  margin-bottom: .5rem;
  color: var(--color-secondary);
}
.location-card p .icon { flex-shrink: 0; width: 20px; height: 20px; margin-top: .15em; color: var(--color-primary); }
.location-card__map-link { margin-top: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; font-size: .85rem; }

/* ============ FAQ ============ */

.block-faq {
  display: flex;
  flex-direction: column;
  gap: .75rem;
  max-width: 64rem;
  margin-inline: auto;
}
.block-faq__item {
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  padding: 1rem 1.25rem;
}
.block-faq__question {
  cursor: pointer;
  font-family: var(--font-heading);
  font-weight: 700;
  color: var(--color-ink);
  list-style: none;
}
.block-faq__question::-webkit-details-marker { display: none; }
.block-faq__question::after {
  content: '+';
  float: right;
  font-weight: 400;
  color: var(--color-primary);
}
.block-faq__item[open] .block-faq__question::after { content: '–'; }
.block-faq__answer { margin-top: .75rem; }
.block-faq__answer :last-child { margin-bottom: 0; }

/* ============ DOWNLOAD ============ */

.block-download {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  background: var(--color-paper);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  padding: 1.75rem;
  flex-wrap: wrap;
}
.block-download__icon { color: var(--color-primary); flex-shrink: 0; }
.block-download__icon .icon { width: 40px; height: 40px; }
.block-download__body { flex: 1 1 auto; min-width: 0; }
.block-download__title { margin-bottom: .25rem; }
.block-download__description { margin-bottom: .25rem; color: var(--color-secondary); }
.block-download__meta { margin: 0; font-size: .85rem; color: var(--color-secondary); }
.block-download__btn { flex-shrink: 0; display: inline-flex; align-items: center; gap: .5rem; }

/* ============ NUMERI / STATISTICHE ============ */

.block-stats {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  text-align: center;
}
@media (min-width: 768px) {
  .block-stats { grid-template-columns: repeat(var(--stats-cols, 3), 1fr); }
}
.block-stats__icon { color: var(--color-primary); margin-bottom: .75rem; display: flex; justify-content: center; }
.block-stats__icon .icon { width: 36px; height: 36px; }
.block-stats__number {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: clamp(2rem, 4vw, 3rem);
  color: var(--color-ink);
  line-height: 1;
}
.block-stats__suffix { font-size: 0.6em; margin-left: .15em; }
.block-stats__label {
  margin-top: .5rem; color: var(--color-secondary);
  text-transform: uppercase; letter-spacing: .04em; font-size: .85rem;
}

/* ============ TESTIMONIANZE ============ */

.block-testimonials--grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.75rem;
}
@media (min-width: 768px) {
  .block-testimonials--grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1200px) {
  .block-testimonials--grid { grid-template-columns: repeat(3, 1fr); }
}
.testimonial-card {
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.testimonial-card__rating { color: var(--color-primary); letter-spacing: .15em; }
.testimonial-card__text :last-child { margin-bottom: 0; }
.testimonial-card__author { display: flex; align-items: center; gap: .75rem; margin-top: auto; }
.testimonial-card__avatar { width: 48px; height: 48px; border-radius: var(--t-radius); object-fit: cover; }
.testimonial-card__identity { display: flex; flex-direction: column; }
.testimonial-card__name { color: var(--color-ink); font-weight: 700; }
.testimonial-card__role { font-size: .85rem; color: var(--color-secondary); }

/* ============ NEWSLETTER ============ */

.block-newsletter {
  max-width: 40rem;
  margin-inline: auto;
  text-align: center;
}
.block-newsletter__title { margin-bottom: .5rem; }
.block-newsletter__text { color: var(--color-secondary); margin-bottom: 1.5rem; }
.block-newsletter__row {
  display: flex;
  gap: .75rem;
  flex-wrap: wrap;
}
.block-newsletter__row .form-control { flex: 1 1 220px; }
.block-newsletter__row .btn { flex-shrink: 0; }
.block-newsletter__consent {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  margin-top: 1rem;
  text-align: left;
  font-size: .85rem;
  color: var(--color-secondary);
}
.block-newsletter__consent input { margin-top: .25em; flex-shrink: 0; }
.block-newsletter__message {
  margin: 0 0 1rem;
  padding: .65rem 1rem;
  border-radius: 0;
  border: 1px solid transparent;
  font-size: .9rem;
}
.block-newsletter__message--success {
  background: color-mix(in srgb, #16a34a 12%, white);
  border-color: #16a34a;
  color: color-mix(in srgb, #16a34a 60%, black);
}
.block-newsletter__message--error {
  background: color-mix(in srgb, #dc2626 12%, white);
  border-color: #dc2626;
  color: color-mix(in srgb, #dc2626 60%, black);
}

/* ============ VIDEO ============ */

.block-video {
  position: relative;
  width: 100%;
  border-radius: 0;
  overflow: hidden;
  background: #000;
}
.block-video--16-9 { aspect-ratio: 16 / 9; }
.block-video--9-16 { aspect-ratio: 9 / 16; max-width: 480px; margin-inline: auto; }
.block-video--4-3 { aspect-ratio: 4 / 3; }
.block-video iframe,
.block-video video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  object-fit: cover;
}

/* ============ IFRAME ============ */

.block-iframe iframe {
  display: block;
  width: 100%;
  border: 0;
  border-radius: 0;
}

/* ============ EMBED / HTML ============ */

.block-embed { overflow-x: auto; }

/* ============ MAPPA ============ */

.block-map__title { margin-bottom: 1rem; text-align: center; }
.map-embed {
  position: relative;
  height: var(--map-height, 400px);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: 0;
  overflow: hidden;
  background: var(--color-paper, #f4f4f4);
}
.map-embed iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.map-embed__load {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  border: 0;
  cursor: pointer;
  background: color-mix(in srgb, var(--color-ink) 8%, transparent);
  color: var(--color-ink);
  font: inherit;
  text-align: center;
  padding: 1.5rem;
}
.map-embed__load .icon { width: 32px; height: 32px; }
.map-embed__load small { color: var(--color-secondary); max-width: 28rem; }
.map-embed.is-loaded .map-embed__load { display: none; }

/* ============ GALLERIA ============ */

.block-gallery {
  display: grid;
  grid-template-columns: repeat(var(--gallery-cols-mobile, 1), 1fr);
  gap: 1rem;
}
@media (min-width: 768px) {
  .block-gallery { grid-template-columns: repeat(var(--gallery-cols-desktop, 3), 1fr); }
}
.block-gallery__item {
  margin: 0;
  border-radius: 0;
  overflow: hidden;
}
.block-gallery__item img { display: block; width: 100%; height: 100%; object-fit: cover; }
.block-gallery--grid .block-gallery__item img { aspect-ratio: 1 / 1; }
.block-gallery--masonry { align-items: start; }
.block-gallery--masonry .block-gallery__item img { aspect-ratio: auto; }
.js-gallery .block-gallery__item { cursor: zoom-in; }

/* Lightbox (vedi public/assets/theme/js/site.js) */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, .9);
  padding: 2rem;
}
.lightbox[hidden] { display: none; }
.lightbox__image { max-width: 100%; max-height: 100%; border-radius: 0; display: block; }
.lightbox__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  width: 44px;
  height: 44px;
  border-radius: var(--t-radius);
  border: var(--t-border-w) solid rgba(255,255,255,.5);
  background: transparent;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
@media (max-width: 767px) {
  .lightbox__close {
    top: auto;
    bottom: 1.5rem;
    right: 50%;
    transform: translateX(50%);
  }
}

/* ============ SLIDESHOW ============ */

.block-slideshow {
  position: relative;
  overflow: hidden;
  background: var(--footer-bg);
}
.block-slideshow--large { height: 70vh; min-height: 420px; }
.block-slideshow--fullscreen { height: 100vh; }
.js-slideshow__track { position: relative; height: 100%; }
.block-slideshow[data-transition="slide"] .js-slideshow__track {
  display: flex;
  height: 100%;
  transition: transform .6s ease;
}
.block-slideshow__slide {
  position: absolute;
  inset: 0;
  height: 100%;
  opacity: 0;
  transition: opacity .6s ease;
}
.block-slideshow__slide.is-active { opacity: 1; z-index: 1; }
.block-slideshow[data-transition="slide"] .block-slideshow__slide {
  position: relative;
  flex: 0 0 100%;
  opacity: 1;
}
.block-slideshow__image {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.block-slideshow__content {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  z-index: 2;
  background: linear-gradient(90deg, rgba(0, 0, 0, .6), rgba(0, 0, 0, 0) 70%);
  color: #fff;
}
.block-slideshow__eyebrow {
  display: block;
  text-transform: uppercase;
  letter-spacing: .15em;
  font-size: .8rem;
  margin-bottom: .5rem;
  opacity: .9;
}
.block-slideshow__title {
  font-family: var(--font-heading);
  font-size: clamp(1.75rem, 4vw, 3rem);
  letter-spacing: -.01em;
  margin-bottom: .5rem;
}
.block-slideshow__text { max-width: 36rem; margin-bottom: 1.25rem; }
.js-slideshow__prev,
.js-slideshow__next {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 3;
  width: 44px;
  height: 44px;
  border-radius: var(--t-radius);
  border: 1px solid rgba(255,255,255,.5);
  background: transparent;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.js-slideshow__prev { left: 1rem; }
.js-slideshow__next { right: 1rem; }
.js-slideshow__prev .icon { transform: rotate(-90deg); }
.js-slideshow__next .icon { transform: rotate(90deg); }
.js-slideshow__dots {
  position: absolute;
  bottom: 1.25rem;
  left: 50%;
  transform: translateX(-50%);
  z-index: 3;
  display: flex;
  gap: .5rem;
}
.js-slideshow__dots button {
  width: 20px;
  height: 4px;
  padding: 0;
  border-radius: 0;
  border: 0;
  background: rgba(255, 255, 255, .4);
  cursor: pointer;
}
.js-slideshow__dots button.is-active { background: #fff; }

/* ============ CAROSELLO (generico: Carosello promo + Testimonianze) ============ */

.js-carousel__track {
  display: flex;
  gap: 1.5rem;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  padding-bottom: .5rem;
}
.js-carousel__track::-webkit-scrollbar { display: none; }
.js-carousel__slide {
  flex: 0 0 calc((100% - (var(--carousel-per-view-mobile, 1) - 1) * 1.5rem) / var(--carousel-per-view-mobile, 1));
  scroll-snap-align: start;
}
@media (min-width: 768px) {
  .js-carousel__slide {
    flex: 0 0 calc((100% - (var(--carousel-per-view-desktop, 3) - 1) * 1.5rem) / var(--carousel-per-view-desktop, 3));
  }
}

/* ============ CAROSELLO PROMO ============ */

.promo-card {
  display: block;
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: border-color .15s ease;
}
.promo-card:hover { border-color: var(--color-primary); }
.promo-card__image { aspect-ratio: 4 / 3; overflow: hidden; }
.promo-card__image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.promo-card__body { padding: 1.25rem; }
.promo-card__title { margin-bottom: .5rem; }
.promo-card__text { color: var(--color-secondary); margin-bottom: 0; }
.block-newsletter__consent-text :last-child { margin-bottom: 0; }

/* ============ FORM (campi generici, blocco Modulo contatti) ============ */

.form-group { margin-bottom: 1.1rem; text-align: left; }
.form-label {
  display: block; margin-bottom: .4rem; font-weight: 700; color: var(--color-ink);
  text-transform: uppercase; letter-spacing: .03em; font-size: .85rem;
}
.form-control {
  display: block;
  width: 100%;
  padding: .7rem .9rem;
  font: inherit;
  color: var(--color-ink);
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  transition: border-color .15s ease;
}
.form-control:focus {
  outline: none;
  border-color: var(--color-primary);
}
textarea.form-control { resize: vertical; }
.form-check { display: flex; align-items: flex-start; gap: .6rem; }
.form-check-input { margin-top: .3em; flex-shrink: 0; width: 1.1em; height: 1.1em; accent-color: var(--color-primary); }
.form-check-label { color: var(--color-secondary); }
.form-radio-group { display: flex; flex-direction: column; gap: .5rem; }
.form-honeypot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.form-message {
  border-radius: 0;
  border: 1px solid transparent;
  padding: .9rem 1.1rem;
  margin-bottom: 1.25rem;
  list-style: none;
}
.form-message--success { background: color-mix(in srgb, var(--color-success) 10%, white); border-color: var(--color-success); color: var(--color-success); }
.form-message--error { background: color-mix(in srgb, var(--color-error) 10%, white); border-color: var(--color-error); color: var(--color-error); }
.form-message--error li { margin: 0; }

/* ============ MODULO CONTATTI ============ */

.block-contact-form { max-width: 40rem; margin-inline: auto; text-align: center; }
.block-contact-form__title { margin-bottom: .5rem; }
.block-contact-form__text { color: var(--color-secondary); margin-bottom: 1.5rem; }
.block-contact-form__form { text-align: left; }
.block-contact-form__form .btn { width: 100%; }

/* ============ COOKIE CONSENT ============ */

.cookie-consent[hidden] { display: none; }
.cookie-consent {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 1000;
  /* --footer-bg è sempre scuro "by design", indipendente dal dark mode del
     contenuto: garantisce che il testo del banner resti leggibile. */
  background: var(--footer-bg);
  border-top: var(--t-border-w) solid var(--color-primary);
}
.cookie-consent__inner {
  max-width: var(--container-width);
  margin-inline: auto;
  padding: 1.25rem 1.5rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
}
.cookie-consent__text {
  flex: 1 1 320px;
  margin: 0;
  font-size: .9rem;
  color: color-mix(in srgb, var(--footer-text) 85%, transparent);
}
.cookie-consent__text a,
.cookie-consent__link {
  color: var(--footer-text);
  text-decoration: underline;
}
.cookie-consent__link {
  display: inline;
  background: none;
  border: none;
  padding: 0;
  margin: 0;
  font: inherit;
  cursor: pointer;
}
.cookie-consent__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
}
.cookie-consent .btn-outline {
  border-color: color-mix(in srgb, var(--footer-text) 50%, transparent);
  color: var(--footer-text);
}
.cookie-consent .btn-outline:hover {
  background: color-mix(in srgb, var(--footer-text) 14%, transparent);
  color: var(--footer-text);
}

/* ============ COOKIE CONSENT — MODALI ============ */

.cc-modal[hidden] { display: none; }
.cc-modal {
  position: fixed;
  inset: 0;
  z-index: 1100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.25rem;
}
.cc-modal__overlay {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, .6);
}
.cc-modal__dialog {
  position: relative;
  z-index: 1;
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  width: 100%;
  max-width: 32rem;
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.cc-modal__dialog--lg { max-width: 44rem; }
.cc-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 1.5rem;
  border-bottom: var(--t-border-w) solid var(--t-border-soft);
}
.cc-modal__title { margin: 0; font-size: 1.15rem; }
.cc-modal__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: none;
  background: transparent;
  font-size: 1.4rem;
  line-height: 1;
  color: var(--color-secondary);
  cursor: pointer;
  border-radius: var(--t-radius);
}
.cc-modal__close:hover { color: var(--color-ink); background: var(--color-paper); }
.cc-modal__body { padding: 1.5rem; overflow-y: auto; }
.cc-modal__body--prose .container { max-width: none; padding-inline: 0; }
.cc-modal__body--prose .block { padding: 0; }
.cc-modal__footer { padding: 0 1.5rem 1.5rem; }
.cc-modal__footer .btn { width: 100%; }

.cc-modal__category { padding: 1rem 0; border-bottom: 1px solid var(--t-border-soft); }
.cc-modal__category:last-child { border-bottom: none; }
.cc-modal__category-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  font-family: var(--font-heading);
  font-weight: 700;
}
.cc-modal__category p { margin: .5rem 0 0; font-size: .9rem; color: var(--color-secondary); }

.cc-modal-close--mobile-bottom { display: none; }

@media (max-width: 768px) {
  .cc-modal { padding: 0; align-items: flex-end; }
  .cc-modal__dialog {
    max-height: 92vh;
    border-radius: 0;
  }
  .cc-modal-close--mobile-bottom {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    margin: 1rem auto 1.25rem;
    border-radius: var(--t-radius);
    border: var(--t-border-w) solid var(--t-border);
    background: var(--color-surface);
    font-size: 1.4rem;
    line-height: 1;
    color: var(--color-ink);
    cursor: pointer;
  }
}

/* ============ COOKIE CONSENT — SWITCH ============ */
/* Unica eccezione "arrotondata" del tema: forma standard/riconoscibile di
   un toggle, per accessibilità e coerenza con le convenzioni d'interfaccia. */

.cc-switch {
  position: relative;
  display: inline-flex;
  flex-shrink: 0;
  width: 2.75rem;
  height: 1.6rem;
}
.cc-switch input {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  opacity: 0;
  cursor: pointer;
}
.cc-switch__track {
  position: absolute;
  inset: 0;
  background: var(--t-border);
  border-radius: 999px;
  transition: background .15s ease;
}
.cc-switch__track::before {
  content: '';
  position: absolute;
  top: 2px;
  left: 2px;
  width: calc(1.6rem - 4px);
  height: calc(1.6rem - 4px);
  background: #fff;
  border-radius: 50%;
  transition: transform .15s ease;
}
.cc-switch input:checked + .cc-switch__track { background: var(--color-primary); }
.cc-switch input:checked + .cc-switch__track::before { transform: translateX(calc(2.75rem - 1.6rem)); }
.cc-switch--disabled { opacity: .6; }

/* ============ BLOG ============ */

.blog-header { margin-bottom: 2rem; text-align: center; }
.blog-header h1 { margin-bottom: .4rem; }

.blog-layout {
  display: grid;
  gap: 2.5rem;
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .blog-layout { grid-template-columns: 1fr 280px; align-items: start; }
}

.blog-search {
  display: flex;
  gap: .6rem;
  margin-bottom: 2rem;
}
.blog-search input[type="search"] {
  flex: 1;
  padding: .75rem 1.1rem;
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  font-family: var(--font-body);
  font-size: 1rem;
}

.blog-empty { color: var(--color-secondary); }

.blog-grid {
  display: grid;
  gap: 1.75rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .blog-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 992px) {
  .blog-layout .blog-grid { grid-template-columns: repeat(2, 1fr); }
}

.blog-card {
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: border-color .15s ease;
}
.blog-card:hover { border-color: var(--color-primary); }
.blog-card__media { display: block; aspect-ratio: 16 / 9; overflow: hidden; }
.blog-card__media img { width: 100%; height: 100%; object-fit: cover; }
.blog-card__body { padding: 1.5rem; flex: 1; display: flex; flex-direction: column; }
.blog-card__category {
  display: inline-block;
  font-family: var(--font-heading);
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--color-primary);
  margin: 0 .5rem .5rem 0;
}
.blog-card__title { font-size: 1.2rem; margin-bottom: .5rem; }
.blog-card__title a { color: var(--color-ink); }
.blog-card__title a:hover { color: var(--color-primary); text-decoration: none; }
.blog-card__excerpt { color: var(--color-secondary); flex: 1; }
.blog-card__meta { font-size: .8rem; letter-spacing: .02em; color: var(--color-secondary); margin-top: auto; }

.blog-sidebar h2 { font-size: 1rem; margin-bottom: 1rem; text-transform: uppercase; letter-spacing: .04em; }
.blog-categories { list-style: none; margin: 0 0 1.5rem; padding: 0; }
.blog-categories li { margin-bottom: .5rem; }
.blog-categories a { color: var(--color-ink); font-weight: 700; }
.blog-categories a:hover, .blog-categories a.is-active { color: var(--color-primary); text-decoration: none; }
.blog-feed-link { font-weight: 700; text-transform: uppercase; letter-spacing: .03em; font-size: .85rem; }

.pagination {
  display: flex;
  flex-wrap: wrap;
  gap: .5rem;
  margin-top: 2.5rem;
}
.pagination__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  height: 2.5rem;
  padding: 0 .6rem;
  border-radius: var(--t-radius);
  border: var(--t-border-w) solid var(--t-border);
  color: var(--color-ink);
  font-weight: 700;
}
.pagination__link:hover { border-color: var(--color-primary); color: var(--color-primary); text-decoration: none; }
.pagination__link--active {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}
.pagination__link--active:hover { color: #fff; }

.blog-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  align-items: center;
  font-size: .85rem;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: var(--color-secondary);
  margin-bottom: 1.5rem;
}

.blog-post-header { max-width: 76ch; margin: 0 auto 2rem; text-align: center; }
.blog-post-header h1 { margin-top: .5rem; }
.blog-post-meta { font-size: .85rem; letter-spacing: .02em; color: var(--color-secondary); }

.blog-post-cover {
  max-width: var(--container-width);
  margin: 0 auto 2rem;
  border-radius: 0;
  overflow: hidden;
}
.blog-post-cover img { width: 100%; }

.blog-post-tags { margin-bottom: 2rem; }
.blog-tag {
  display: inline-flex;
  align-items: center;
  padding: .25rem .75rem;
  border-radius: 0;
  border: 1px solid var(--t-border);
  background: transparent;
  color: var(--color-ink);
  font-size: .75rem;
  text-transform: uppercase;
  letter-spacing: .04em;
  margin: 0 .4rem .4rem 0;
}

.blog-related { margin-top: 2rem; }
.blog-related h2 { margin-bottom: 1.5rem; }

.blog-back { margin-top: 2.5rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; font-size: .85rem; }

/* ============ PWA: BANNER INSTALLAZIONE / NOTIFICHE ============ */
/* (Fase 4, vedi docs/09-PWA-PUSH.md §3 e §6) */

.pwa-banner[hidden] { display: none; }
.pwa-banner {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 990;
  background: var(--footer-bg);
  border-top: var(--t-border-w) solid var(--color-primary);
}
.pwa-banner__inner {
  max-width: var(--container-width);
  margin-inline: auto;
  padding: 1.25rem 1.5rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
}
.pwa-banner__text {
  flex: 1 1 320px;
  margin: 0;
  font-size: .9rem;
  color: color-mix(in srgb, var(--footer-text) 85%, transparent);
}
.pwa-banner__actions {
  display: flex;
  flex-wrap: wrap;
  gap: .6rem;
}
.pwa-banner .btn-outline {
  border-color: color-mix(in srgb, var(--footer-text) 50%, transparent);
  color: var(--footer-text);
}
.pwa-banner .btn-outline:hover {
  background: color-mix(in srgb, var(--footer-text) 14%, transparent);
  color: var(--footer-text);
}
.cc-switch input:disabled { cursor: not-allowed; }

/* ============ WIDGET PRENOTAZIONE (Modulo Booking, vedi docs/11-MODULES-BOOKING.md) ============ */

.block-booking-widget { max-width: 40rem; margin-inline: auto; }
.block-booking-widget__title { margin-bottom: .5rem; text-align: center; }
.block-booking-widget__intro { color: var(--color-secondary); margin-bottom: 1.5rem; text-align: center; }
.block-booking-widget__intro :last-child { margin-bottom: 0; }
.block-booking-widget__message {
  margin: 0 0 1.25rem;
  padding: .65rem 1rem;
  border-radius: 0;
  border: 1px solid transparent;
  font-size: .9rem;
  text-align: center;
}
.block-booking-widget__message--success {
  background: color-mix(in srgb, var(--color-success) 12%, white);
  border-color: var(--color-success);
  color: color-mix(in srgb, var(--color-success) 60%, black);
}
.block-booking-widget__message--error {
  background: color-mix(in srgb, var(--color-error) 12%, white);
  border-color: var(--color-error);
  color: color-mix(in srgb, var(--color-error) 60%, black);
}

.booking-calendar {
  background: var(--color-surface);
  border: var(--t-border-w) solid var(--t-border);
  border-radius: var(--t-radius);
  padding: 1.25rem;
  margin-bottom: 1.5rem;
}
.booking-calendar__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1rem;
}
.booking-calendar__title {
  font-family: var(--font-heading); font-weight: 700; color: var(--color-ink);
  text-transform: uppercase; letter-spacing: .03em; font-size: .95rem;
}
.booking-calendar__nav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: var(--t-radius);
  border: var(--t-border-w) solid var(--t-border);
  background: transparent;
  color: var(--color-primary);
  font-weight: 700;
  text-decoration: none;
  transition: border-color .15s ease, background-color .15s ease;
}
.booking-calendar__nav:hover { border-color: var(--color-primary); background: var(--color-paper); text-decoration: none; }
.booking-calendar__nav--disabled { opacity: .35; pointer-events: none; }
.booking-calendar__grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: .35rem;
  text-align: center;
}
.booking-calendar__weekday {
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  color: var(--color-secondary);
  padding-bottom: .35rem;
}
.booking-calendar__day {
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 1 / 1;
  border-radius: var(--t-radius);
  font-size: .9rem;
  color: var(--color-ink);
  text-decoration: none;
}
.booking-calendar__day--empty { visibility: hidden; }
.booking-calendar__day--unavailable { color: var(--color-secondary); opacity: .35; }
.booking-calendar__day--available {
  background: var(--color-paper);
  font-weight: 700;
  transition: background-color .15s ease, color .15s ease;
}
.booking-calendar__day--available:hover {
  background: color-mix(in srgb, var(--color-primary) 14%, white);
  text-decoration: none;
}
.booking-calendar__day--available.is-selected {
  background: var(--color-primary);
  color: #fff;
}

.booking-slots { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: 1.5rem; }
.booking-slots__slot {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .6rem 1.1rem;
  border-radius: var(--t-radius);
  border: var(--t-border-w) solid var(--t-border);
  background: var(--color-surface);
  color: var(--color-ink);
  font-weight: 700;
  font-size: .85rem;
  text-decoration: none;
  transition: border-color .15s ease, background-color .15s ease, color .15s ease;
}
.booking-slots__slot:hover { border-color: var(--color-primary); text-decoration: none; }
.booking-slots__slot.is-selected {
  background: var(--color-primary);
  border-color: var(--color-primary);
  color: #fff;
}
.booking-slots__slot--full {
  border-color: transparent;
  background: var(--color-paper);
  color: var(--color-secondary);
  opacity: .55;
  text-decoration: line-through;
  cursor: default;
}

.booking-form { background: var(--color-paper); border: var(--t-border-w) solid var(--t-border); border-radius: var(--t-radius); padding: 1.5rem; }
.booking-form__summary { font-size: 1.05rem; margin-bottom: .25rem; }

.btn-block { width: 100%; }

/* Navigazione multilivello: apertura indipendente e accordion mobile. */
.site-nav__item--nested { position: relative; width: 100%; }
.site-nav__item--nested > .site-nav__link { width: 100%; justify-content: space-between; padding: .55rem .75rem; transform: none; }
.site-nav__item--nested > .site-nav__submenu { top: 0; left: 100%; margin: 0 0 0 .25rem; opacity: 0; visibility: hidden; transform: translateX(8px); }
.site-nav__item--nested:hover > .site-nav__submenu, .site-nav__item--nested:focus-within > .site-nav__submenu { opacity: 1; visibility: visible; transform: translateX(0); }
.site-drawer__item > .site-drawer__submenu { display: none; }
.site-drawer__item.is-open > .site-drawer__submenu { display: flex; }

/* Accesso amministratore pubblico: allineamento e popup ad alto contrasto. */
.site-admin-access { margin-left: auto; flex: 0 0 auto; }
.site-admin-access__trigger { display: inline-flex; align-items: center; gap: .4rem; padding: .55rem .8rem; border: 1px solid color-mix(in srgb, var(--header-text, var(--color-ink)) 38%, transparent); border-radius: 999px; color: var(--header-text, var(--color-ink)); background: transparent; font: inherit; font-weight: 700; cursor: pointer; text-decoration: none; }
.site-admin-access__trigger:hover { color: var(--header-text, var(--color-ink)); background: color-mix(in srgb, var(--header-text, var(--color-ink)) 12%, transparent); text-decoration: none; }
.site-admin-access__trigger .icon { width: 18px; height: 18px; }
.site-admin-login[hidden] { display: none; }
.site-admin-login { position: fixed; inset: 0; z-index: 3000; display: grid; place-items: center; padding: 1.25rem; }
.site-admin-login__overlay { position: absolute; inset: 0; background: rgba(0,0,0,.58); backdrop-filter: blur(3px); }
.site-admin-login__dialog { --login-text: #182230; --login-border: #cbd3df; --login-link: #084fb5; position: relative; width: min(390px, 100%); max-height: calc(100vh - 2.5rem); overflow: auto; padding: 1.4rem; border: 1px solid var(--login-border); border-radius: 14px; color: var(--login-text); background: #fff; box-shadow: 0 24px 70px rgba(0,0,0,.36); text-align: left; }
.site-admin-login__dialog h2 { margin-right: 2rem; color: var(--login-text); font-size: 1.35rem; }
.site-admin-login__close { position: absolute; top: .65rem; right: .7rem; width: 2.3rem; height: 2.3rem; border: 0; background: transparent; color: var(--login-text); font-size: 1.8rem; cursor: pointer; }
.site-admin-login .form-group { margin-bottom: .9rem; }
.site-admin-login .form-group label { display: block; margin-bottom: .3rem; color: var(--login-text); font-weight: 700; }
.site-admin-login .form-group input { width: 100%; padding: .7rem .8rem; border: 1px solid var(--login-border); border-radius: 8px; color: var(--login-text); background: #fff; font: inherit; }
.site-admin-login .form-group input:focus { outline: 3px solid rgba(8,79,181,.24); border-color: var(--login-link); }
.site-admin-login__remember { display: flex; align-items: center; gap: .45rem; margin-bottom: 1rem; color: var(--login-text); }
.site-admin-login__forgot, .site-admin-login__forgot:visited { display: inline-block; margin-top: 1rem; color: var(--login-link); font-weight: 700; text-decoration: underline; text-underline-offset: .2em; }
.site-admin-login__forgot:hover { color: #063b86; }
.site-modal-open { overflow: hidden; }
.block-heading__eyebrow { color: var(--color-ink); }
@media (min-width: 992px) { .site-header:not(.atelier-rail) .site-nav { margin-left: auto; } .site-header:not(.atelier-rail) .site-admin-access { margin-left: 0; } }
.site-admin-login { place-items: center; padding: 1.25rem; }
.site-admin-login__dialog { max-height: calc(100vh - 2.5rem); }
@media (max-width: 560px) { .site-admin-access__trigger span { display: none; } .site-admin-login { padding: 1rem; } .site-admin-login__dialog { max-height: calc(100vh - 2rem); } }
