/* ──────────────────────────────────────────────────────────
   BANNER FIXES — layer, contrasto testo, robustezza <picture>
   Valido per tutti i banner con markup .hero / .hero__*
   ────────────────────────────────────────────────────────── */

/* Gerarchia piani: media(0) → scrim(1) → content(2) */
.hero{
  position: relative;
  color: #fff;              /* default bianco (sovrascritto sotto per sicurezza) */
  isolation: isolate;       /* crea nuovo stacking context affidabile */
  min-height: clamp(360px, 56vh, 560px);
  display: grid;
  place-items: end start;
}
.hero__media{
  position: absolute;
  inset: 0;
  z-index: 0;
}
.hero__media picture,
.hero__media img{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: saturate(0.92) contrast(1.06);
  display: block;
}
.hero__scrim{
  position: absolute;
  inset: 0;
  z-index: 1;
  /* scrim adattivo per leggibilità anche su immagini chiare */
  background: linear-gradient(180deg, rgba(0,0,0,.35), rgba(0,0,0,.62) 70%);
}

/* Testi del banner forzati a bianco (vincono su h1 globali) */
.hero__kicker,
.hero__title,
.hero__subtitle,
.hero__abstract{
  color: #fff !important;
}

/* CTA: assicura che i bottoni abbiano contrasto corretto sul banner */
.hero .btn{ position: relative; z-index: 2; }

/* Micro-robustezza: se qualche pagina non ha .hero__scrim, aggiungi un fallback leggero */
.hero:not(:has(.hero__scrim))::after{
  content:"";
  position:absolute; inset:0; z-index:1;
  background: linear-gradient(180deg, rgba(0,0,0,.22), rgba(0,0,0,.55) 70%);
}

/* Varianti light/dark (opzionali ma utili) */
html.theme-light .hero__scrim{
  background: linear-gradient(180deg, rgba(0,0,0,.28), rgba(0,0,0,.62) 72%);
}
html.theme-dark .hero__scrim{
  background: linear-gradient(180deg, rgba(0,0,0,.40), rgba(0,0,0,.70) 72%);
}

/* NB: non tocchiamo lo slider home (.ptc...) per evitare effetti collaterali */
