/* ═══════════════════════════════════════════
   TEATRO AURORA — NAVIGATION
═══════════════════════════════════════════ */

/* ─── NAV ─── */
nav {
  position:        fixed;
  top: 0; left: 0; right: 0;
  z-index:         500;
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  padding:         1.6rem var(--pad-x);
  background:      rgba(8, 31, 33, .97);
  backdrop-filter: blur(14px);
  transition:      background      var(--transition-slow),
                   backdrop-filter var(--transition-slow);
}

/* ─── NAV SOPRA L'HERO ───
   Solo in home (js/shared.js mette .transparent finché scrollY < 60).
   Qui la nav non ha alcun fondo: la fascia scura di prima tagliava in
   due la locandina a tutto schermo del carosello. A far leggere le voci
   basta il velo dell'hero, che già scurisce il 22% in alto. Fondo opaco
   e sfocatura tornano appena si scorre, dove sotto passa il testo della
   pagina e servono davvero. */
nav.transparent {
  background:      transparent;
  backdrop-filter: none;
}
/* ⚠️ IL PANNELLO DEL MENU NON COPRIVA LO SCHERMO — non togliere questa regola.
   `backdrop-filter` crea il containing block per i discendenti
   `position: fixed`, esattamente come fa `transform` (è lo stesso difetto già
   annotato per il <body> in base.css, con un'altra proprietà). Il pannello
   `.nav-open .nav-links` è figlio della <nav>: con la sfocatura attiva veniva
   ritagliato alla barra — misurato **390×97 invece di 390×844** — e le voci
   spillavano fuori sopra la pagina, senza fondo dietro.
   Succedeva su TUTTE le pagine tranne la home, dove la nav è `.transparent` e
   quindi senza sfocatura: lì funzionava per puro caso. E sulla home stessa si
   rompeva appena si scorreva di 60px, perché lì la sfocatura torna.
   Spegnerla a menu aperto non si vede: il pannello copre comunque tutto.
   Si verifica con `document.getElementById('nav-links').offsetParent` a menu
   aperto: deve essere `null`. Se risponde `NAV`, il containing block è di
   nuovo sbagliato. */
.nav-open nav {
  backdrop-filter: none;
  /* ⚠️ E la transizione va tolta, non basta il valore. `backdrop-filter` verso
     `none` NON commuta di scatto: il browser interpola da blur(14px) a blur(0)
     lungo --transition-slow, e per tutti quei 600ms il valore non è `none`,
     quindi il containing block resta e il pannello resta alto 97px. Su un
     telefono vero si vedrebbe il menu rotto per mezzo secondo a ogni apertura.
     Il fondo continua a sfumare, la sfocatura no. */
  transition: background var(--transition-slow);
}

/* senza fondo il testo poggia sull'immagine: l'ombra lo tiene leggibile
   anche quando sotto capita una locandina chiara */
nav.transparent .nav-links a {
  text-shadow: 0 2px 14px rgba(4,16,17,.95), 0 1px 3px rgba(4,16,17,.8);
}
/* il marchio è un'immagine: qui serve drop-shadow, che segue la sagoma delle
   lettere, non text-shadow */
nav.transparent .nav-logo img {
  filter: drop-shadow(0 2px 14px rgba(4,16,17,.95))
          drop-shadow(0 1px 3px  rgba(4,16,17,.8));
}
nav.transparent .nav-toggle span {
  box-shadow: 0 1px 6px rgba(4,16,17,.9);
}

/* ─── LOGO ───
   Il marchio ufficiale, ridisegnato in vettoriale da tools-build-logo.py.
   L'SVG è già a due colori (crema + oro, per fondi scuri): non si ricolora
   da CSS e non serve, la nav è scura in tutte le pagine.
   `line-height: 0` toglie lo spazio fantasma che il <a> lascerebbe sotto
   l'immagine, altrimenti la nav risulta più alta di quello che si vede. */
.nav-logo {
  display:         block;
  line-height:     0;
  text-decoration: none;
  transition:      opacity var(--transition-normal);
}
.nav-logo:hover { opacity: .82; }
.nav-logo img {
  height: 46px;
  width:  auto;
}

/* Links */
.nav-links {
  display:    flex;
  gap:        2.6rem;
  list-style: none;
}
.nav-links a {
  font-family:    var(--font-label);
  font-size:      var(--fs-micro);
  letter-spacing: .25em;
  text-transform: uppercase;
  color:          var(--text-light);
  text-decoration: none;
  position:       relative;
  padding-bottom: 4px;
  transition:     color var(--transition-normal);
}
.nav-links a::after {
  content:    '';
  position:   absolute;
  bottom:     0; left: 0;
  width:      0;
  height:     1px;
  background: var(--gold);
  transition: width .38s ease;
}
.nav-links a:hover,
.nav-links a.active {
  color: var(--gold);
}
.nav-links a.active::after,
.nav-links a:hover::after {
  width: 100%;
}

/* CTA */
.nav-cta {
  font-family:    var(--font-label);
  font-size:      var(--fs-micro);
  letter-spacing: .2em;
  text-transform: uppercase;
  color:          var(--petrolio-dark);
  background:     var(--gold);
  padding:        .7rem 1.5rem;
  text-decoration: none;
  transition:     background var(--transition-normal),
                  transform  var(--transition-fast);
}
.nav-cta:hover {
  background: var(--gold-light);
  transform:  translateY(-1px);
}

/* Mobile hamburger.
   L'area era 32×21px: sotto la metà dei 44px raccomandati, ed è l'UNICO comando
   di navigazione su telefono. Ora il bersaglio è 44×44 mentre le tre lineette
   restano da 24px — cambia quello che il dito colpisce, non il disegno. */
.nav-toggle {
  display:         none;
  flex-direction:  column;
  align-items:     center;
  justify-content: center;
  gap:             5px;
  background:      none;
  border:          none;
  padding:         0;
  min-width:       44px;
  min-height:      44px;
  cursor:          pointer;
  /* ⚠️ NON togliere queste due righe: senza, il menu mobile è una trappola.
     Il pannello a tutto schermo (`.nav-open .nav-links`) è figlio della <nav>,
     che ha già `z-index: 500` e crea quindi il proprio contesto di
     impilamento. Lì dentro il pannello è posizionato con z-index 498 mentre
     l'hamburger era statico e a z-index `auto`, cioè SOTTO: a menu aperto la X
     non veniva nemmeno disegnata e il tocco finiva sul pannello. Su telefono
     l'hamburger è l'unico modo di annullare l'apertura — Escape non esiste —
     quindi si usciva soltanto scegliendo una voce.
     Si verifica con `document.elementFromPoint()` sul centro del bottone a
     menu aperto: deve rispondere il bottone, non `nav-links`. */
  position:        relative;
  z-index:         499;
}
.nav-toggle span {
  display:          block;
  width:            24px;
  height:           1px;
  background:       var(--gold);
  transition:       transform var(--transition-normal),
                    opacity   var(--transition-normal);
}
/* A menu aperto le lineette diventano una X: lo stato è leggibile a colpo
   d'occhio, non solo con aria-expanded. Il centro sparisce, le altre due
   ruotano. `translateY` di 6px = altezza lineetta (1) + gap (5). */
.nav-open .nav-toggle span:nth-child(1) { transform: translateY(6px)  rotate(45deg); }
.nav-open .nav-toggle span:nth-child(2) { opacity: 0; }
.nav-open .nav-toggle span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* Mobile nav open */
.nav-open .nav-links {
  display:         flex;
  flex-direction:  column;
  position:        fixed;
  inset:           0;
  background:      rgba(8,31,33,.98);
  align-items:     center;
  justify-content: center;
  gap:             2.5rem;
  z-index:         498;
}
.nav-open .nav-links a {
  font-size:   .95rem;
  padding:     .5rem 1rem;
}

/* ⚠️ SOGLIE RITARATE IL 23 AGO 2026 — non riabbassarle senza rimisurare.
   È la TERZA taratura: 1250/1000 con 7 voci a corpo .55rem, poi 1250/1050 con
   6 voci a --fs-micro, ora 1360/1150 con SETTE voci a --fs-micro (è tornata
   "Concerti" accanto a "Musical"). La settima voce allarga il menu di ~95px e
   riapre esattamente il difetto già visto: misurato prima della correzione,
   fra 1060 e 1100px le voci TOCCAVANO logo e CTA (gap 0) e la barra sbordava
   crescendo da 97 a 106px.

   Due zone da tenere d'occhio, non una:
   · la soglia dell'hamburger — a 1120px restavano 5px di margine, a 1150 ne
     restano 19: l'hamburger parte quindi da 1150;
   · il gradino del `gap` — sopra la sua soglia le voci tornano a 2.6rem e il
     menu si riallarga di colpo. Con la soglia a 1250 il margine a 1260px
     crollava a 6px. Spostata a 1360, dove il gap largo lascia 51px.

   Misurato in Chrome a passi di 10-20px su 1000-1500. Se si tocca il numero
   di voci o --fs-micro, la misura va rifatta su TUTTO quell'intervallo. */
@media (max-width: 1360px) {
  .nav-links { gap: 1.3rem; }
}

@media (max-width: 1150px) {
  .nav-links  { display: none; }
  .nav-toggle { display: flex; }
  .nav-cta    { display: none; }
  .nav-open .nav-links { gap: 2rem; }
}
