/* =====================================================================
   BEPLANO ACADEMY — Home
   Architettura: 1) Token  2) Base  3) Componenti riusabili  4) Sezioni
   Nessun valore "magico": tutto deriva dai token qui sotto.

   I TOKEN di base sono CONDIVISI con il sito Airport (../Airport/airport_style.css):
   stessi colori, tipografia, spaziatura, raggi e trattini — i due siti restano
   coerenti. Se cambia un token condiviso in un sito, replicarlo nell'altro.
   Academy si distingue da Airport per il colore d'accento: GIALLO (Yellow/Primary)
   al posto del blu, e per il font "Doto" usato nella sezione Corsi.
   ===================================================================== */

/* Mona Sans + Doto: font caricati da Google Fonts (vedi <link> in index.html).
   Doto è un font "a pallini" (dot-matrix) usato per i titoli/date dei corsi. */

/* ----------------------------- 1) TOKEN ----------------------------- */
:root {
  /* Colori (dalle variabili Figma) — blocco CONDIVISO con Airport */
  --blue-dark:    #304C5A;
  --blue-primary: #5C89A6;
  --blue-light:   #779FB5;
  --blue-white:   #BFCED6;
  --yellow-light: #DCC681;
  --yellow-dark:  #6C571B;
  --neutro-dark:  #4F4B43;
  --neutro-primary: #908A7E;

  /* Colori specifici Academy (variabili Figma "Yellow/Primary" e "Yellow/DarkSaturated") */
  --yellow-primary:  #D2B467;  /* accento principale Academy (≈ blue-primary di Airport) */
  --yellow-dark-sat: #9F7D23;

  /* Superfici / sfondi */
  --bg:           #1a1a18;
  --surface:      rgba(255, 255, 255, .05);  /* card neutra */
  --surface-frost: rgba(255, 255, 255, .30); /* pill smerigliata */
  --footer-bg:    #2a2a28;
  --footer-bar:   #4f4e4e;
  --card-bg:      #ffffff;
  --ticket-perf:  #1e1e1c;  /* linea di perforazione tratteggiata */
  --ink:          #ffffff;  /* testo su scuro  */
  --ink-dark:     #111111;  /* testo su chiaro */

  /* Tipografia (stili Figma → token) */
  --font:     "Mona Sans", "Helvetica Neue", Arial, system-ui, sans-serif;
  --font-dot: "Doto", "Courier New", ui-monospace, monospace; /* corsi: titoli/date dot-matrix */
  /* Scala fluida tra 360px e 1280px di viewport (poi restano fissi ai due estremi) */
  --fs-titlone: clamp(46px, 24.09px + 6.09vw, 102px); /* TITOLONE    — Regular */
  --fs-display: clamp(44px, 35.78px + 2.28vw, 65px);  /* TITOLI      — Regular   */
  --fs-heading: clamp(28px, 24.87px + 0.87vw, 36px);  /* TITOLETTO   — ExtraBold (corsi: Doto) */
  --fs-subtitle: clamp(20px, 22.09px + 1.09vw, 30px); /* Sottotitolo — Regular   */
  --fs-body: clamp(16px, 14.43px + 0.43vw, 20px);     /* Paragrafo   — Regular   */
  --fs-ui:   clamp(16px, 14.43px + 0.43vw, 20px);     /* Bottoni/Nav             */
  --lh-tight: 1;
  --lh-body: 1.6;

  /* Pesi (asse variabile Mona Sans) */
  --w-regular: 400;
  --w-medium: 500;
  --w-semibold: 600;
  --w-bold: 700;
  --w-extrabold: 800;

  /* Spaziatura (scala 8) */
  --s-1: 8px;  --s-2: 16px; --s-3: 24px; --s-4: 32px;
  --s-5: 40px; --s-6: 64px; --s-7: 96px; --s-8: 128px;

  /* Raggi */
  --r-card: 32px;
  --r-pill: 500px;

  /* Layout */
  --container: 1280px;
  --gutter: 24px;
  --header-h: 106px; /* altezza header: il media gli scorre dietro */
  --ctrl-h: 46px;    /* altezza unica di TUTTI i controlli pillola: .btn, .pill, .nav, hamburger */

  --blur: blur(7.5px);

  /* Trattini condivisi (separatori .section + anello di .pill__mark).
     Le border CSS "dashed" non sono regolabili: usiamo repeating-gradient
     (lineare per le righe rette, conico per il cerchio) così trattino, distanza
     e spessore vengono dalla STESSA unità in entrambi i contesti. */
  --dash-unit:  10;
  --dash-len:     calc(var(--dash-unit) * 1px);
  --dash-gap:     calc(var(--dash-unit) * 1px);
  --dash-len-deg: calc(var(--dash-unit) * 1deg);
  --dash-gap-deg: calc(var(--dash-unit) * 1deg);
  --dash-thick: 2px;
  --dash-color: rgba(255, 255, 255, .30);
}

/* ----------------------------- 2) BASE ------------------------------ */
* { box-sizing: border-box; }

/* Selezione testo */
::selection { background: var(--yellow-light); color: var(--yellow-dark); }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--font);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, p { margin: 0; }
a { color: inherit; text-decoration: none; }
a[href^="mailto:"] { text-decoration: underline; }
ul { margin: 0; padding: 0; list-style: none; }

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

.icon { width: 100%; height: 100%; display: block; color: currentColor; }

/* -------------------------- 3) COMPONENTI --------------------------- */

/* --- Bottone pillola (un'unica base + modificatori) --- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--ctrl-h);
  padding: 0 26px;
  border-radius: var(--r-pill);
  font-size: var(--fs-ui);
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  background-repeat: no-repeat;
  transition: background-color .2s ease, background-image .2s ease;
}
/* Nero / ghost: superficie chiara che si schiarisce */
.btn--ghost { background-color: rgba(255, 255, 255, .05); color: var(--ink); }
.btn--ghost:hover { background-color: rgba(255, 255, 255, .15); }
/* Accento Academy ("I tuoi corsi") e Accedi (header): stesso giallo frost translucido. */
.btn--accent,
.btn--book { background-color: rgba(220, 198, 129, .5); color: var(--ink); font-weight: var(--w-bold); backdrop-filter: var(--blur); }
.btn--accent:hover,
.btn--book:hover { background-image: linear-gradient(rgba(255, 255, 255, .15), rgba(255, 255, 255, .15)); }

/* "Contattaci" è un bottone con href mailto: niente sottolineatura
   come i link mail testuali. */
.btn[href^="mailto:"] { text-decoration: none; }

/* --- Pill con "mark" (selettore brand: ACADEMY / AIRPORT / BRAND) --- */
.pill {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  height: var(--ctrl-h);
  padding: 0 22px 0 0;
  border-radius: var(--r-pill);
  font-size: var(--fs-ui);
  line-height: 1;
  white-space: nowrap;
}
.pill--frost { background: var(--surface-frost); color: var(--ink); backdrop-filter: var(--blur); }
.pill__mark {
  display: grid;
  place-items: center;
  position: relative;
  width: var(--ctrl-h); height: var(--ctrl-h);
  padding: 11px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .25);
  color: var(--ink);
  flex: none;
}
/* Anello tratteggiato: stessa estetica dei separatori .section, in versione conica. */
.pill__mark::before {
  content: "";
  position: absolute; inset: 0;
  border-radius: 50%;
  background: repeating-conic-gradient(var(--dash-color) 0 var(--dash-len-deg),
    transparent var(--dash-len-deg) calc(var(--dash-len-deg) + var(--dash-gap-deg)));
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - var(--dash-thick)), #fff calc(100% - var(--dash-thick)));
          mask: radial-gradient(farthest-side, transparent calc(100% - var(--dash-thick)), #fff calc(100% - var(--dash-thick)));
  pointer-events: none;
}
/* Colore del mark per brand (selettore sedi). Academy = giallo (sede corrente). */
.pill__mark--academy { background: var(--yellow-light); color: var(--yellow-dark); }
.pill__mark--airport { background: var(--blue-primary); }
.pill__mark--house   { background: var(--neutro-dark); }

a.pill, button.pill { cursor: pointer; transition: background-color .2s ease; }
button.pill { appearance: none; -webkit-appearance: none; border: 0; font-family: inherit; }
a.pill--frost:hover, button.pill--frost:hover { background: rgba(255, 255, 255, .42); }

/* --- CTA con freccia ("SCOPRI DI PIÙ"): cerchio chiaro a SINISTRA, etichetta a destra.
       (In Airport il cerchio è a destra; in Academy il design lo vuole a sinistra.) --- */
.cta {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  padding: 6px 26px 6px 6px;          /* cerchio a sx, etichetta a dx */
  border-radius: var(--r-pill);
  font-size: var(--fs-ui);
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
  cursor: pointer;
  background: rgba(255, 255, 255, .2);
  backdrop-filter: var(--blur);
  transition: background-color .2s ease;
}
.cta:hover { background: rgba(255, 255, 255, .45); }
.cta__label { line-height: 1; }
.cta__mark {
  display: grid;
  place-items: center;
  width: calc(var(--fs-ui) + 18px); height: calc(var(--fs-ui) + 18px);
  padding: 9px;
  border-radius: 50%;
  background: #fff;                    /* cerchio chiaro, freccia scura (variante Academy) */
  color: var(--ink-dark);
  flex: none;
  transition: transform .25s ease;
}
.cta:hover .cta__mark { transform: rotate(45deg); }   /* ↗ ruota fino a → */

/* --- Intestazione di sezione (overline giallo + titolo) --- */
.section {
  padding-block: var(--s-7);
  background:
    repeating-linear-gradient(90deg,
      var(--dash-color) 0 var(--dash-len),
      transparent var(--dash-len) calc(var(--dash-len) + var(--dash-gap)))
    top / 100% var(--dash-thick) no-repeat;
}
.section:first-of-type { background: none; }
.section:last-of-type { padding-bottom: 0; }
.intro { background: none; margin-top: -390px;}  /* segue subito la hero, niente separatore tratteggiato in testa */
.section__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--s-4);
  margin-bottom: var(--s-6);
}
.overline { color: var(--yellow-primary); font-size: var(--fs-subtitle); text-transform: uppercase; }
.title    { font-size: var(--fs-display); font-weight: var(--w-regular); line-height: var(--lh-tight); text-transform: uppercase; }
/* Titoli dei gruppi eventi ("in programma"/"passati"): etichetta piccola e
   tutta maiuscola (più piccola del sottotitolo, usa il token UI). */
.subhead  { font-size: var(--fs-ui); font-weight: var(--w-medium); line-height: 1.15; text-transform: uppercase; }

/* Paragrafo "lead" sotto un titolo di sezione (es. "Persone insieme a cui…") */
.lead {
  font-size: var(--fs-subtitle); font-weight: var(--w-regular); line-height: 1.2;
  /* .intro__feature è absolute e non riduce lo spazio di un .lead normal-flow:
     senza questo limite il testo corre sotto la card invece di andare a capo
     prima. min(520px,46%) ripete la larghezza della card (vedi .intro__feature)
     per fermare il wrap appena prima, con un margine di respiro (--s-5). */
  max-width: 800px;
}
.lead__accent { color: var(--yellow-primary); }
.lead + .btn { margin-top: var(--s-5); }
.subtitle { max-width: 680px; margin-top: var(--s-2); }

/* --- Sezione FORMAZIONE: testo + bottoni a sinistra, illustrazione a destra --- */
.formazione {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--s-6);
  align-items: center;
}
.formazione__text { margin-top: var(--s-6); }
.formazione__lead { font-size: var(--fs-body); max-width: 680px; margin-bottom: var(--s-3); }
.formazione__actions { display: flex; flex-wrap: wrap; gap: var(--s-2); margin-top: var(--s-5); }
.formazione__diagram { display: flex; justify-content: center; }
.formazione__diagram img { display: block; width: 316px; max-width: 100%; height: auto; }

/* --- Corsi: lista di accordion (un solo template; aperto = card con immagine) --- */
.courses { margin-top: var(--s-7); max-width: 900px; margin-inline: auto; }
.course-group + .course-group { margin-top: var(--s-6); }
.course-group__title {
  display: flex; align-items: center; gap: var(--s-2);
  font-size: var(--fs-body); text-transform: uppercase;
  color: var(--neutro-primary);
  margin-bottom: var(--s-3);
}
.course-group__mark {
  display: grid; place-items: center;
  width: 34px; height: 34px; padding: 0;
  border-radius: 8px; background: var(--yellow-primary); color: var(--ink-dark);
  flex: none;
}
/* Aeroplano inclinato a 45° (effetto decollo ↗), bianco, centrato e ingrandito */
.course-group__mark .icon { width: 24px; height: 24px; transform: rotate(45deg); color: var(--ink); }
.course-list { display: flex; flex-direction: column; gap: var(--s-2); }

.course {
  position: relative;
  border-radius: 30px;
  background: var(--surface);
  overflow: hidden;
  /* iOS Safari: con un figlio sfocato (.course__bg) l'overflow:hidden smette di
     ritagliare gli angoli arrotondati. La maschera WebKit forza il clipping. */
  -webkit-mask-image: -webkit-radial-gradient(white, black);
  mask-image: radial-gradient(white, black);
  transition: background-color .3s ease;
}
/* Sfondo fotografico: sfocato + velo scuro, visibile solo da aperto. Inset negativo
   per evitare che la sfocatura lasci scoperti i bordi della card. */
.course__bg {
  position: absolute; inset: -24px;
  background: var(--bg) center/cover no-repeat;
  filter: blur(7px);
  opacity: 0;
  transition: opacity .35s ease;
  pointer-events: none;
}
.course__bg::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .45); }
.course.is-open { background: rgba(0, 0, 0, .15); }
.course.is-open .course__bg { opacity: 1; }

/* Riga sempre visibile: freccia + titolo (Doto) + data + anno */
.course__head {
  position: relative; z-index: 1;
  display: flex; align-items: center; gap: var(--s-3);
  width: 100%; padding: var(--s-3) var(--s-5);
  background: transparent; border: 0; color: inherit; font: inherit; text-align: left;
  cursor: pointer;
}
.course__toggle {
  display: grid; place-items: center;
  width: 34px; height: 34px; padding: 9px;
  border-radius: 50%; background: rgba(255, 255, 255, .08); flex: none;
}
.course__toggle svg { width: 100%; height: 100%; transition: transform .3s ease; }
.course.is-open .course__toggle svg { transform: rotate(180deg); }   /* ▾ → ▴ */
.course__title {
  flex: 1; min-width: 0;
  font-family: var(--font-dot);
  font-weight: var(--w-extrabold);
  font-size: var(--fs-heading);
  line-height: 1.05;
  text-transform: uppercase;
  transition: color .25s ease;
}
.course.is-open .course__title { color: var(--yellow-primary); }   /* aperto = titolo giallo */
.course__date, .course__year {
  font-family: var(--font-dot);
  font-weight: var(--w-extrabold);
  font-size: var(--fs-heading);
  line-height: 1.05;
  flex: none;
  text-align: left;
}
.course__date { width: 6ch; }
.course__year { width: 5ch; }

/* Pannello che si apre (grid-rows 0fr → 1fr, come gli accordion di Airport) */
.course__panel { position: relative; z-index: 1; display: grid; grid-template-rows: 0fr; transition: grid-template-rows .35s ease; }
.course.is-open .course__panel { grid-template-rows: 1fr; }
.course__panel-inner { overflow: hidden; min-height: 0; }
.course__body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--s-3) var(--s-6);
  padding: 0 var(--s-5) var(--s-5) calc(var(--s-5) + 34px + var(--s-3)); /* allinea sotto il titolo */
}
.course__blurb, .course__note { font-size: var(--fs-body); max-width: 400px; }
/* La CTA resta nella prima colonna, sotto il blurb (la 2ª colonna ospita
   l'eventuale nota; senza nota la CTA non deve scivolare in alto a destra). */
.course__cta { margin-top: var(--s-3); width: fit-content; grid-column: 1; }

/* --- Banda partner ("Entra a far parte…"): fondo giallo, loghi monocromi --- */
.partners {
  background: var(--yellow-light);
  color: var(--yellow-dark);
  padding-block: var(--s-7);
}
.partners__title {
  font-size: var(--fs-heading);
  font-weight: var(--w-regular);
  line-height: var(--fs-heading);
  max-width: 28ch;
  margin-bottom: var(--s-4);
}
.partners__cta { background-color: var(--yellow-dark); color: var(--ink); margin-bottom: var(--s-6); }
.partners__cta:hover { background-image: linear-gradient(rgba(255, 255, 255, .15), rgba(255, 255, 255, .15)); }
.partners__logos {
  display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between;
  gap: var(--s-5) var(--s-6);
}
/* Su una riga (.partners__logos a riga singola) i gruppi sono trasparenti al
   layout; sotto la soglia in cui i 5 loghi non ci stanno in larghezza diventano
   due righe (3+2) centrate, vedi RESPONSIVE. */
.partners__group { display: contents; }
.partners__logos img {
  height: 38px; width: auto; display: block;
  filter: brightness(0);   /* i loghi sorgente sono bianchi: li rendiamo scuri sul giallo */
  opacity: .6;
}

/* --- Diagramma network (UNA PARTE) — copiato da Airport --- */
.diagram { position: relative; height: 480px; }
.diagram__lines { position: absolute; inset: 0; width: 100%; height: 100%; }
.diagram__lines line { stroke: var(--neutro-primary); stroke-width: 2; }
.diagram__core {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  display: grid; place-items: center;
  width: 96px; height: 96px; padding: 24px;
  border-radius: 50%; background: var(--surface-frost); color: var(--ink);
  z-index: 1;
}
.diagram__node { position: absolute; z-index: 1; }
.diagram__node--house   { left: 6%;  top: 62%; }
.diagram__node--academy { right: 12%; top: 22%; background: var(--yellow-light); color: var(--yellow-dark); }
.diagram__node--academy .pill__mark { background: var(--yellow-dark); color: var(--yellow-light); }
.diagram__node--airport { right: 4%; top: 70%; background: var(--blue-light); }

/* --- Mappa (iframe Google Maps reso monocromo/dark) — copiata da Airport --- */
.map {
  position: relative;
  height: 520px;
  margin-top: var(--s-6);
  overflow: hidden;
  background: var(--bg);
}
.map__frame {
  position: absolute; border: 0; display: block;
  filter: grayscale(1) invert(0.92) contrast(0.9) brightness(0.9);
  /* iframe più grande del contenitore invece di transform:scale (che sgranava il
     raster): i controlli di Google finiscono fuori e li ritaglia .map (overflow:hidden) */
  left: -64px; top: -64px;
  width: calc(100% + 128px); height: calc(100% + 128px);
  pointer-events: none;
}
.map__pin {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  display: grid; place-items: center;
  width: 64px; height: 64px; padding: 16px;
  border-radius: 50%; background: var(--yellow-primary); color: var(--ink-dark);
  box-shadow: 0 0 0 12px rgba(210, 180, 103, .25);
  pointer-events: none;
}
.map__link { position: absolute; inset: 0; cursor: pointer; }

/* ----------------------------- HEADER ------------------------------- */
.site-header { position: sticky; top: 0; z-index: 50; padding-block: var(--s-3); background: transparent; }
.site-header__bar { display: flex; align-items: center; justify-content: space-between; gap: var(--s-4); }
.nav {
  display: flex; gap: var(--s-5); align-items: center;
  height: var(--ctrl-h);
  padding: 0 33px; border-radius: var(--r-pill);
  background: var(--surface-frost); backdrop-filter: var(--blur);
  font-size: var(--fs-ui);
  line-height: 1;
}
.nav__link { transition: font-weight .15s ease, opacity .2s ease; }
.nav__link:hover { opacity: .7; }
.nav__link.is-active { font-weight: var(--w-extrabold); }

/* Sul media dell'hero gli elementi sfocati dell'header scuriscono anche lo sfondo dietro. */
.site-header .nav,
.site-header .pill--frost,
.site-header .btn--book,
.site-header .menu-toggle {
  backdrop-filter: var(--blur) brightness(80%);
}

/* --- Hamburger/X mobile + overlay menu (iniettati da academy_app.js) --- */
.menu-toggle {
  display: none;
  align-items: center; justify-content: center;
  width: var(--ctrl-h); height: var(--ctrl-h);
  padding: 6px;
  border: 0; border-radius: 50%;
  background: var(--surface-frost);
  color: var(--ink);
  cursor: pointer;
  appearance: none; -webkit-appearance: none;
}
.menu-toggle svg { width: 100%; height: 100%; display: block; }
.menu-toggle > svg[viewBox] { width: 20px; height: 20px; fill: currentColor; }

body.menu-open .site-header { z-index: 120; }

.mobile-menu {
  position: fixed; inset: 0; z-index: 100;
  display: flex; flex-direction: column;
  gap: var(--s-4);
  padding: var(--header-h) var(--gutter) var(--s-6);
  background: var(--bg);
  overflow-y: auto;
}
.mobile-menu[hidden] { display: none; }
.mobile-menu__nav {
  flex: 1;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--s-4);
}
.mobile-menu__nav a { font-size: var(--fs-display); font-weight: var(--w-regular); }
.mobile-menu__nav a:hover { color: var(--yellow-primary); }
.mobile-menu__section { text-align: center; }
.mobile-menu__divider {
  display: flex; align-items: center; justify-content: center; gap: var(--s-2);
  margin-bottom: var(--s-3);
  color: var(--yellow-primary); text-transform: uppercase;
  font-size: var(--fs-body); letter-spacing: .05em;
}
.mobile-menu__divider::before,
.mobile-menu__divider::after { content: ""; width: 48px; height: 1px; background: currentColor; opacity: .6; }
.mobile-menu__section p,
.mobile-menu__section a { font-size: var(--fs-body); }
.mobile-menu__social { display: flex; justify-content: center; gap: var(--s-5); margin-top: var(--s-1); }

/* --- Selettore sedi: rete che si espande in hover/focus (copiato da Airport) --- */
.brand { position: relative; z-index: 2; }
.brand__current { position: relative; z-index: 2; }
.brand__menu {
  position: absolute; left: 0; top: 0;
  width: 200px; height: 220px;
  /* none da chiusa: l'hitbox hover è SOLO la pill (.brand__current), così
     passare il mouse vicino al selettore non apre il ventaglio per sbaglio.
     Diventa auto solo da aperta (sotto), per non perdere l'hover nei "vuoti"
     tra un item e l'altro mentre si scende verso AIRPORT/BRAND. */
  pointer-events: none;
}
.brand__lines {
  position: absolute; left: 0; top: 0;
  width: 200px; height: 220px;
  opacity: 0; transition: opacity .3s ease;
}
.brand__lines line { stroke: var(--neutro-primary); stroke-width: 2; }
.brand__item {
  position: absolute;
  opacity: 0;
  transform: translate(-14px, -14px) scale(.92);
  transition: opacity .3s ease, transform .3s ease;
  pointer-events: none;
}
.brand__item--airport { left: 58px;  top: 72px;  transition-delay: .03s; }
.brand__item--house   { left: 29px;  top: 144px; transition-delay: .07s; }

@media (hover: hover) and (pointer: fine) {
  .brand:hover .brand__menu { pointer-events: auto; }
  .brand:hover .brand__item { opacity: 1; transform: none; pointer-events: auto; }
  .brand:hover .brand__lines { opacity: 1; }
}
.brand.is-open .brand__menu { pointer-events: auto; }
.brand.is-open .brand__item { opacity: 1; transform: none; pointer-events: auto; }
.brand.is-open .brand__lines { opacity: 1; }

/* ------------------------------ HERO -------------------------------- */
/* Foto full-bleed dietro l'header trasparente; sopra ci galleggia solo il lockup.
   La card "corso in evidenza" NON sta qui: vive nella prima sezione (.intro). */
.hero { position: relative; margin-top: -110px; overflow: hidden; }
.hero__media {
  position: absolute; inset: 0;
  background: var(--bg);
  overflow: hidden;
  z-index: 0;
}
.hero__media video {
  display: block;
  width: 100%; height: 100%;
  object-fit: cover;
}
.hero__media::after {   /* velo scuro per leggibilità del lockup e della card */
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0, 0, 0, .15) 0%, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, .25) 100%);
}
.hero__content { position: relative; z-index: 1; min-height: 700px; padding-top: 280px; }
.hero__logo {
  display: block; width: min(680px, 90%); height: auto; aspect-ratio: 869 / 540;
  /* Il blocco "B" del lockup è un glifo diagonale (apice a x≈326/869), non un
     rettangolo: lasciato a x=0 il testo "Beplano Academy" appare otticamente
     più a destra del titolo "Corsi / In partenza" sotto. Shift a sinistra
     proporzionale alla larghezza propria, per restare coerente da mobile a
     desktop; l'overflow a sinistra è tagliato da .hero { overflow: hidden }.
     L'svg sta nella section (non in .container) per restare fuori dal flusso
     del testo, quindi il riferimento per "x=0" è il bordo del viewport, non il
     box centrato a 1280px del container: senza correggerlo, allargando il
     viewport il lockup resta appiccicato la bordo mentre "Persone" sotto (che
     è dentro .container) si sposta verso il centro. Il margin-left replica a
     mano la stessa formula con cui il browser centra .container (metà della
     differenza tra viewport e --container, mai sotto zero) + il gutter, prima
     di applicare lo shift ottico di -210px. */
  margin-left: calc(max(0px, (100% - var(--container)) / 2) + var(--gutter) - 210px);
  /* Stesso trattamento del lockup di Airport: il backdrop dietro al logo viene
     sfocato e scurito, ma RITAGLIATO sulla sagoma del lockup. La maschera è una
     copia delle stesse path in bianco pieno (data-URI, non il file .svg così
     com'è): un riferimento diretto al file userebbe l'alpha reale delle sue
     fill-opacity, rimpicciolendo la zona mascherata invece di coprire tutto il
     lockup. Inoltre mask+backdrop-filter su un <img> non compositano (bug
     Chromium): va per forza inline come <svg>+<path>, non <img src="...svg">. */
  --logo-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 869 540'%3E%3Cg fill='%23fff'%3E%3Cpath d='M326.446 0L281.975 104.976H0V175.318H252.112L177.993 349.992H0V420.334H148.131L97.429 539.893H174.019L224.721 420.334H428.279L478.981 539.893H555.571L504.869 420.334H653V349.992H475.007L400.888 175.318H653V104.976H371.025L326.446 0ZM254.583 349.992L326.554 180.465L398.524 349.992H254.69H254.583Z'/%3E%3Cpath d='M297.75 380.186L317.965 332.801H325.765L346.045 380.186H339.805L324.66 343.656L322.06 337.286H321.735L319.135 343.786L303.99 380.186H297.75ZM308.15 368.551L309.71 363.936H334.085L335.58 368.551H308.15ZM372.118 380.771C368.391 380.771 365.011 380.207 361.978 379.081C358.944 377.911 356.344 376.264 354.178 374.141C352.011 371.974 350.343 369.417 349.173 366.471C348.046 363.481 347.483 360.166 347.483 356.526C347.483 352.842 348.046 349.527 349.173 346.581C350.343 343.591 352.011 341.034 354.178 338.911C356.344 336.787 358.944 335.162 361.978 334.036C365.011 332.866 368.391 332.281 372.118 332.281C376.234 332.281 379.896 332.952 383.103 334.296C386.309 335.639 388.931 337.524 390.968 339.951C393.004 342.334 394.283 345.172 394.803 348.466H388.888C388.411 346.212 387.414 344.241 385.898 342.551C384.381 340.861 382.453 339.561 380.113 338.651C377.773 337.697 375.108 337.221 372.118 337.221C368.304 337.221 364.989 338.001 362.173 339.561C359.399 341.121 357.254 343.352 355.738 346.256C354.264 349.116 353.528 352.539 353.528 356.526C353.528 359.516 353.961 362.202 354.828 364.586C355.694 366.926 356.929 368.941 358.533 370.631C360.136 372.277 362.086 373.556 364.383 374.466C366.679 375.332 369.258 375.766 372.118 375.766C375.151 375.766 377.838 375.311 380.178 374.401C382.561 373.447 384.511 372.104 386.028 370.371C387.544 368.637 388.498 366.622 388.888 364.326H394.803C394.369 367.662 393.134 370.566 391.098 373.036C389.061 375.506 386.418 377.412 383.168 378.756C379.918 380.099 376.234 380.771 372.118 380.771ZM396.646 380.186L416.861 332.801H424.661L444.941 380.186H438.701L423.556 343.656L420.956 337.286H420.631L418.031 343.786L402.886 380.186H396.646ZM407.046 368.551L408.606 363.936H432.981L434.476 368.551H407.046ZM450.752 380.186V332.801H470.837C475.734 332.801 479.894 333.776 483.317 335.726C486.784 337.676 489.405 340.427 491.182 343.981C493.002 347.534 493.912 351.716 493.912 356.526C493.912 360.122 493.392 363.394 492.352 366.341C491.312 369.287 489.795 371.779 487.802 373.816C485.809 375.852 483.382 377.434 480.522 378.561C477.662 379.644 474.434 380.186 470.837 380.186H450.752ZM456.537 375.246H470.057C472.917 375.246 475.452 374.834 477.662 374.011C479.915 373.144 481.8 371.909 483.317 370.306C484.834 368.659 485.982 366.666 486.762 364.326C487.585 361.986 487.997 359.342 487.997 356.396C487.997 352.279 487.26 348.856 485.787 346.126C484.314 343.352 482.234 341.251 479.547 339.821C476.86 338.391 473.697 337.676 470.057 337.676H456.537V375.246ZM501.152 380.186V332.801H537.032V337.741H505.247L506.937 336.051V376.936L505.247 375.181H537.097V380.186H501.152ZM505.507 358.281V353.666H533.847V358.281H505.507ZM543.553 380.186V332.801H552.783L563.768 360.296L568.773 373.621H569.228L574.233 360.296L585.218 332.801H594.448V380.186H588.858V355.941L589.053 337.936H588.533L582.813 352.886L571.698 380.186H566.238L555.318 353.341L549.468 338.001H548.948L549.208 356.006V380.186H543.553ZM619.132 380.186V361.271L599.957 332.801H606.717L616.727 348.011L621.927 356.331H622.252L627.452 348.011L637.592 332.801H644.287L624.982 361.271V380.186H619.132Z'/%3E%3Cpath d='M329.38 284.081H311.66V261.531H328.79C336.62 261.531 341.56 266.591 341.56 272.541C341.56 280.371 337.09 284.081 329.37 284.081M311.66 228.611H325.79C332.91 228.611 338.45 231.911 338.45 238.391C338.45 246.571 332.8 248.631 326.96 248.631H311.65V228.611H311.66ZM342.93 253.811C348.68 250.421 352.2 244.231 352.17 237.561C352.17 220.901 338.22 215.131 325.56 215.131H296.71V298.321H329.15C343.28 298.321 356.29 289.671 356.29 274.181C356.29 265.881 350.52 256.811 342.92 253.811'/%3E%3Cpath d='M371.7 298.321H427.05V284.191H386.66V263.581H424.28V249.871H386.66V228.851H427.05V215.131H371.7V298.321Z'/%3E%3Cpath d='M471.07 249.871H459.82V229.091H471.07C481.2 229.091 485.61 232.981 485.61 239.761C485.61 246.341 481.31 249.871 471.07 249.871ZM471.07 215.131H444.99V298.321H459.83V263.821H471.08C488.04 263.821 500.46 255.281 500.46 239.741C500.46 224.201 488.04 215.131 471.08 215.131'/%3E%3Cpath d='M529.81 215.131H514.85V298.321H565.37V284.191H529.81V215.131Z'/%3E%3Cpath d='M758.32 273.301L723.35 215.131H708.51V298.321H722.87V239.861L757.72 298.321H772.68V215.131H758.32V273.301Z'/%3E%3Cpath d='M828.36 286.251C810.51 286.251 803.99 272.421 803.99 256.701C803.99 240.981 810.52 227.201 828.36 227.201C846.2 227.201 852.74 241.031 852.74 256.701C852.74 272.371 846.2 286.251 828.36 286.251ZM828.36 213.901C800.87 213.901 788.21 234.031 788.21 256.701C788.21 279.371 800.87 299.501 828.36 299.501C855.85 299.501 868.51 279.371 868.51 256.701C868.51 234.031 855.85 213.901 828.36 213.901Z'/%3E%3Cpath d='M632.64 230.221L646.24 262.351H619.04L632.64 230.221ZM632.64 196.031L624.23 215.931H570.9V229.261H618.58L604.57 262.361H570.9V275.691H598.92L589.33 298.341H603.81L613.4 275.691H651.89L661.48 298.341H675.96L666.37 275.691H694.39V262.361H660.72L646.7 229.261H694.38V215.931H641.05L632.64 196.031Z'/%3E%3C/g%3E%3C/svg%3E");
  backdrop-filter: var(--blur) brightness(80%);
  -webkit-mask: var(--logo-mask) center / 100% 100% no-repeat;
          mask: var(--logo-mask) center / 100% 100% no-repeat;
}

/* --- Prima sezione (Corsi / In partenza): la card in evidenza galleggia in alto
       a destra e risale (margine negativo) fino a sovrapporsi alla foto della hero. --- */
.intro .container { position: relative; }
.intro__feature {
  position: absolute; right: var(--gutter); top: 0;
  transform: translateY(-62%);
  width: min(520px, 46%);
  z-index: 2;
}
.feature {
  display: none;
  position: relative;
  flex-direction: column; justify-content: space-between; gap: var(--s-6);
  min-height: 400px;
  padding: var(--s-4);
  border-radius: 30px;
  background: var(--surface);
  overflow: hidden;
}
.feature__bg {
  position: absolute; inset: -24px;
  background: var(--bg) center/cover no-repeat;
}
.feature__bg::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, .25); }
.feature__title {
  position: relative; z-index: 1;
  font-family: var(--font-dot);
  font-weight: var(--w-extrabold);
  font-size: var(--fs-heading);
  line-height: 1.1;
  text-transform: uppercase;
  color: var(--yellow-primary);
}
.feature__cta { position: relative; z-index: 1; align-self: flex-start; }

/* ----------------------------- FOOTER ------------------------------- */
.footer { background: var(--footer-bg); }
.footer__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s-6); padding-block: var(--s-7); }
.footer__title { font-size: var(--fs-heading); font-weight: var(--w-extrabold); text-transform: uppercase; line-height: var(--fs-heading); }
.footer__logo  { display: inline-flex; margin: var(--s-5) 0 var(--s-3); }
.footer__wordmark { height: 34px; aspect-ratio: 201 / 38; color: var(--ink); }
.footer__brands { display: flex; flex-direction: column; gap: var(--s-2); font-size: var(--fs-body); }
.footer__brands a { display: flex; align-items: center; gap: var(--s-2); transition: opacity .2s ease; }
.footer__brands a:hover { opacity: .75; }
.dot { display: grid; place-items: center; width: 35px; height: 35px; padding: 9px; border-radius: 50%; flex: none; color: var(--ink); }
.dot--neutral { background: var(--neutro-primary); }
.dot--blue    { background: var(--blue-primary); }
.dot--yellow  { background: var(--yellow-light); color: var(--yellow-dark); }

.footer__cols { display: grid; grid-template-columns: 1fr; gap: var(--s-5); }
.footer__col h3 { font-size: var(--fs-body); font-weight: var(--w-bold); margin-bottom: var(--s-1); }
.footer__col p,
.footer__col a { display: block; font-size: var(--fs-body); }
.footer__col a:hover { opacity: .75; }

.footer__bar {
  display: flex; justify-content: space-between; gap: var(--s-4);
  padding: 27px var(--s-5); background: var(--footer-bar); font-size: var(--fs-body);
}

/* =====================================================================
   PAGINA EVENTI (academy_eventi.html) — in comune con Airport, stessa
   lista (EVENTS di events_data.js) con header/footer Academy.
   ===================================================================== */
/* Testata pagina (NON il .intro della home, che si sovrappone all'hero video:
   qui niente hero sopra, serve solo lo spazio dall'header). Titolo come
   .title ma più grande (titlone), ultima parola in giallo. */
.events-head { padding-top: var(--s-7); padding-bottom: 0; }
.intro__title {
  font-size: var(--fs-titlone);
  font-weight: var(--w-regular);
  line-height: .9;
  text-transform: uppercase;
  margin-bottom: var(--s-6);
}
.intro__title span { color: var(--yellow-primary); }
.intro__text { font-size: var(--fs-subtitle); margin-bottom: var(--s-4); max-width: 900px; }
.section.section--events { padding-bottom: var(--s-7); }

/* --- Card evento: locandina a sfondo + tag di provenienza in alto a sx; sui
   PROSSIMI eventi, in fondo, il box data/luogo (.event-date, esiste solo in
   questo contesto: l'overflow:hidden + border-radius della card ne taglia da
   soli gli angoli inferiori). Sui CONCLUSI manca: la locandina riempie tutto. */
.events-grid { display: flex; flex-wrap: wrap; gap: var(--s-4); }
.events-grid + .subhead { margin-top: var(--s-5); }
/* Conclusi: colonne indipendenti (stile Pinterest), non righe. Sfalsare una
   CARD dentro un flex-wrap a righe (provato prima) allarga quella riga e
   lascia un vuoto strano prima della riga dopo — qui invece ogni colonna è un
   mini flex-column a sé: si sposta la colonna intera, le card dentro restano
   compatte. Il JS (events_data.js, renderEventsPage) distribuisce le card
   nelle colonne; il numero di colonne (3 desktop / 2 mobile, vedi RESPONSIVE)
   lo decide lì via matchMedia, qui si stila solo il contenitore. */
.events-grid--upcoming { margin-top: var(--s-2); }
.events-grid--concluded { flex-wrap: nowrap; align-items: flex-start; margin-top: var(--s-2); }
.events-col { display: flex; flex-direction: column; flex: 1 1 0; min-width: 0; gap: var(--s-4); }
.events-grid--concluded .event-card { flex: none; width: 100%; }
.events-col:nth-child(2) { margin-top: var(--s-5); } /* desktop: colonna centrale delle 3 */
.event-card {
  position: relative;
  display: flex;
  flex-direction: column;
  flex: 0 1 calc(33.333% - var(--s-4) * 2 / 3); /* grow:0 — niente stiramento delle card orfane su righe incomplete */
  aspect-ratio: 409 / 545;
  border-radius: var(--r-card);
  overflow: hidden;
  background: var(--bg);
  border: 1px solid rgba(255,255,255,.18);
}
.event-card__media { flex: 1 1 auto; min-height: 0; background: var(--bg) center/cover no-repeat; }
/* Tag di provenienza: sola scritta (la category dell'evento), niente stemma.
   Colore PIENO per sito (azzurro=airport, giallo=academy) -> distingue il sito
   e resta leggibile su qualsiasi locandina di sfondo. Maiuscolo come le altre
   pill/etichette del progetto. */
.event-card__tag {
  position: absolute;
  top: var(--s-3); left: var(--s-3);
  z-index: 1;
  height: 40px;
  padding: 0 18px;
  font-size: 14px;
  font-weight: var(--w-medium);
  text-transform: uppercase;
}
.event-card__tag--airport { background: var(--blue-primary); color: var(--ink); }
.event-card__tag--academy { background: var(--yellow-light); color: var(--yellow-dark); }
.event-date {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  width: 100%;
  padding: var(--s-2) var(--s-3);
  background: var(--card-bg);
  color: var(--ink-dark);
}
.event-date__cal {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  align-self: stretch;
  gap: 2px;
  text-align: center;
  padding-right: var(--s-3);
  border-right: 1.5px dashed var(--ticket-perf);
}
.event-date__month { font-size: var(--fs-body); font-weight: var(--w-medium); text-transform: uppercase; line-height: 1; }
.event-date__day { font-size: var(--fs-subtitle); font-weight: var(--w-medium); line-height: 1; color: var(--yellow-primary); }
.event-date__info { display: flex; flex-direction: column; gap: 2px; white-space: nowrap; }
.event-date__time { font-size: var(--fs-body); color: var(--yellow-primary); }
.event-date__venue-name { font-size: var(--fs-body); font-weight: var(--w-semibold); line-height: 1.3; }
.event-date__venue-address { font-size: var(--fs-body); opacity: .7; }
/* La card è un link: niente sottolineatura/colore-link, eredita lo stile. */
a.event-card { text-decoration: none; color: inherit; }

/* =====================================================================
   PAGINA EVENTO (academy_evento.html) — il singolo evento.
   Stesso layout interno di Airport (markup condiviso da event_detail.js):
   cambiano solo i colori (accento giallo Academy) e header/footer.
   Hero fotografico full-bleed, blocco titolo + locandina che "galleggia"
   sull'hero, badge data, poi racconto (testo sticky + galleria).
   ===================================================================== */
/* Linea divisoria tratteggiata (larghezza container) tra hero e racconto. */
.rule {
  border: 0;
  height: 1px;
  margin-block: var(--s-7);
  background-image: repeating-linear-gradient(90deg,
    rgba(255, 255, 255, .5) 0 10px, transparent 10px 20px);
}
.event-top { position: relative; }
.event-top__hero {
  height: 512px;
  background: var(--bg) center/cover no-repeat;
  margin-top: -110px;   /* sotto l'header trasparente, come l'hero della home */
}
.event-top__hero::after {
  content: "";
  position: absolute; left: 0; right: 0; top: 0; height: 512px;
  background: linear-gradient(180deg, rgba(0, 0, 0, .35) 0%, rgba(0, 0, 0, .12) 45%, rgba(0, 0, 0, 0) 88%);
  pointer-events: none;
}
.event-top__inner {
  position: relative;
  display: grid;
  grid-template-columns: 1fr minmax(0, 520px);
  gap: var(--s-6);
  align-items: start;
  padding-top: var(--s-7);
}
.event-head { display: flex; flex-direction: column; gap: var(--s-5); }
.event-head__meta {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  font-size: var(--fs-body);
  text-transform: uppercase;
}
.event-head__mark { width: 40px; height: 40px; margin-left: auto; color: var(--ink); flex: none; }
.event-head__title {
  font-size: var(--fs-titlone);
  font-weight: var(--w-regular);
  line-height: .9;
  text-transform: uppercase;
}
.event-head__title span { color: var(--yellow-primary); }   /* nome evento giallo */
.event-head__lead {
  font-size: var(--fs-subtitle);
  font-weight: var(--w-regular);
  line-height: 1.15;
  max-width: 32ch;
}
/* Locandina: galleggia sopra l'hero, tirata su con margine negativo */
.event-poster { margin-top: -240px; }
.event-poster img {
  width: 100%;
  display: block;
  border-radius: var(--r-card);
  border: 1px solid rgba(255,255,255,.18);
  box-shadow: 0 0 45px rgba(0, 0, 0, .25);
}
/* Badge data a cavallo del bordo inferiore dell'hero (la versione "card" di
   .event-date resta statica perché vive dentro .event-card, non in .event-top). */
.event-top .event-date {
  position: absolute;
  left: var(--gutter);
  top: 0;
  transform: translateY(-50%);
  width: auto;
  border-radius: var(--r-card);
  box-shadow: 0 0 45px rgba(0, 0, 0, .25);
}
.event-date__add {
  display: grid;
  place-items: center;
  width: var(--ctrl-h); height: var(--ctrl-h);
  border-radius: 50%;
  background: rgba(0, 0, 0, .1);
  color: var(--ink-dark);
  flex: none;
  transition: background-color .2s ease;
}
.event-date__add:hover { background: rgba(0, 0, 0, .18); }
.event-date__add svg { width: 22px; height: 22px; }
/* Racconto: colonna testo (sticky) + galleria fotografica */
.event-story {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-left: var(--gutter);
  display: grid;
  grid-template-columns: minmax(0, 460px) 1fr;
  gap: var(--s-6);
  align-items: start;
  padding-bottom: var(--s-7);
}
.event-story--text-only {
  padding-right: var(--gutter);
  grid-template-columns: 1fr;
}
.event-story--text-only .event-story__text { position: static; }
.event-story__text {
  position: sticky;
  top: var(--s-7);
  align-self: start;
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  font-size: var(--fs-body);
  max-width: 600px;
}
.event-story__gallery {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-2);
}
.event-story__gallery img {
  width: 100%;
  display: block;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}
.event-story__gallery img:nth-child(3n+1) {
  grid-column: 1 / -1;
}
/* Pagina evento — responsive (allineato al breakpoint generale 900px) */
@media (max-width: 900px) {
  .event-top__hero { height: 320px; }
  .event-top__hero::after { height: 320px; }
  .event-top__inner { grid-template-columns: 1fr; gap: var(--s-5); margin-top: -200px; }
  .event-poster { margin-top: var(--s-3); order: -1; } /* locandina sopra il titolo */
  .event-top .event-date { position: static; transform: none; width: 100%; margin-bottom: var(--s-3); }
  .event-date__info { flex: 1; min-width: 0; }
  .event-date__venue-address { white-space: normal; }
  .event-story { grid-template-columns: 1fr; padding-right: var(--gutter); }
  .event-story__text { position: static; }
  .event-story__gallery { grid-template-columns: 1fr; }
  .event-story__gallery img:nth-child(3n+1) { grid-column: 1; }
}

/* ===== Pagina CORSO — sezione "Il programma" =========================
   Stessa griglia/card di "I servizi inclusi" della pagina spazio Airport
   (.services-grid/.service-card), in tema Academy. Resa da event_detail.js
   solo per i corsi (vedi `program` in events_data.js). */
.services-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s-3); }
.service-card { display: flex; flex-direction: column; gap: var(--s-3); padding: var(--s-4); border-radius: var(--r-card); background: var(--surface); }
/* Il riquadro icona: in Airport il bordo è dentro l'SVG; qui il glifo Material
   usa currentColor e il bordo lo dà il box CSS, così segue il tema giallo. */
.service-card__icon { display: grid; place-items: center; width: 78px; height: 78px; border: 2px solid var(--yellow-primary); color: var(--yellow-primary); }
.service-card__icon svg { width: 46px; height: 46px; }
.service-card__title { font-size: var(--fs-heading); font-weight: var(--w-regular); line-height: 1.1; }
.service-card__text { font-size: var(--fs-body); opacity: .85; }
.title--accent { color: var(--yellow-light); }
/* "Il programma" è l'ultima .section: ripristina lo stacco dal footer che
   .section:last-of-type azzererebbe (stesso accorgimento di .section--subscribe). */
.section.section--program { padding-bottom: var(--s-7); }
/* La CTA "Contattaci e prenota" è l'ULTIMA .section della detail page (vedi
   event_detail.js): ripristina lo stacco dal footer che .section:last-of-type
   azzererebbe (stesso accorgimento di --program/--syllabus). */
.section.section--contact { padding-bottom: var(--s-7); }

@media (max-width: 900px) {
  .services-grid { grid-template-columns: 1fr; }
  .service-card__icon { width: 60px; height: 60px; }
  .service-card__icon svg { width: 36px; height: 36px; }
}

/* ===== Pagina CORSO — sezione "Il programma" (syllabus) =============
   A sinistra un accordion per appuntamento (titolo + sintesi → lista lezioni
   con durata), a destra la scheda del docente. Riusa il meccanismo accordion
   dei corsi della home (grid-rows 0fr→1fr + .is-open). È l'ultima .section:
   ripristina lo stacco dal footer che .section:last-of-type azzererebbe. */
.section--syllabus { padding-bottom: var(--s-7); }
.syllabus__head { display: flex; flex-direction: column; gap: var(--s-3); margin-bottom: var(--s-5); }
.syllabus__meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s-1) var(--s-3); font-size: var(--fs-body); }
.syllabus__meta li { display: inline-flex; align-items: center; gap: 8px; }
.syllabus__meta li:not(:last-child)::after { content: "·"; margin-left: var(--s-3); opacity: .5; }
.syllabus__meta b { font-weight: var(--w-bold); }
.syllabus__meta .icon { width: 20px; height: 20px; color: var(--yellow-primary); flex: none; }

.syllabus__layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: var(--s-5); align-items: start; }
.syllabus__layout--no-instructor { grid-template-columns: 1fr; }
.syllabus__list { display: flex; flex-direction: column; gap: var(--s-2); }

/* Accordion appuntamento */
.syllabus__item { border-radius: var(--r-card); background: var(--surface); overflow: hidden; transition: background-color .3s ease; }
.syllabus__item.is-open { background: rgba(255, 255, 255, .08); }
.syllabus__row {
  display: flex; align-items: flex-start; gap: var(--s-3);
  width: 100%; padding: var(--s-3) var(--s-4);
  background: transparent; border: 0; color: inherit; font: inherit; text-align: left; cursor: pointer;
}
.syllabus__heading { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.syllabus__title { font-size: var(--fs-body); font-weight: var(--w-semibold); line-height: 1.2; }
.syllabus__sub { font-size: var(--fs-body); opacity: .65; line-height: 1.3; }
.syllabus__toggle { display: grid; place-items: center; width: 34px; height: 34px; padding: 8px; border-radius: 50%; background: rgba(255, 255, 255, .08); flex: none; }
.syllabus__toggle svg { width: 100%; height: 100%; transition: transform .3s ease; }
.syllabus__item.is-open .syllabus__toggle svg { transform: rotate(180deg); }

/* Pannello lezioni (grid-rows 0fr → 1fr) */
.syllabus__panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .35s ease; }
.syllabus__item.is-open .syllabus__panel { grid-template-rows: 1fr; }
.syllabus__panel-inner { overflow: hidden; min-height: 0; }
.syllabus__lessons { padding: 0 var(--s-4) var(--s-3); display: flex; flex-direction: column; }
.syllabus__lesson {
  display: flex; align-items: center; gap: var(--s-2);
  padding: 12px 0; font-size: var(--fs-body);
  border-top: 1px solid rgba(255, 255, 255, .08);
}
.syllabus__lesson-ico { display: grid; place-items: center; color: var(--yellow-primary); flex: none; }
.syllabus__lesson-ico svg { width: 22px; height: 22px; }
.syllabus__lesson-name { flex: 1; min-width: 0; }
.syllabus__lesson-dur { flex: none; opacity: .6; white-space: nowrap; }

/* Scheda docente */
.instructor {
  align-self: start; position: sticky; top: var(--s-4);
  display: flex; flex-direction: column; gap: var(--s-3);
  padding: var(--s-4); border-radius: var(--r-card);
  background: rgba(220, 198, 129, .08);
  border: 1px solid rgba(220, 198, 129, .25);
}
.instructor__label { font-size: var(--fs-body); font-weight: var(--w-bold); }
.instructor__head { display: flex; align-items: center; gap: var(--s-2); }
.instructor__avatar {
  display: grid; place-items: center; flex: none;
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--yellow-light); color: var(--yellow-dark);
  font-weight: var(--w-bold); font-size: var(--fs-body);
}
.instructor__id { min-width: 0; }
.instructor__name { font-weight: var(--w-semibold); line-height: 1.2; }
.instructor__role { font-size: var(--fs-body); opacity: .65; line-height: 1.25; }
.instructor__bio { font-size: var(--fs-body); opacity: .85; line-height: 1.4; }
.instructor__chips { display: flex; flex-wrap: wrap; gap: 8px; }
.instructor__chips li {
  font-size: 14px; padding: 5px 12px; border-radius: 999px;
  background: rgba(255, 255, 255, .07);
}
.instructor__cta { margin-top: var(--s-1); justify-content: center; }

@media (max-width: 900px) {
  .syllabus__layout { grid-template-columns: 1fr; }
  .instructor { position: static; }
}

/* ---------------------------- RESPONSIVE ---------------------------- */
/* Loghi partner: sotto i 1280px il container si restringe 1:1 col viewport e i
   5 loghi in riga unica non ci stanno più (vanno in overflow). Sotto questa
   soglia passano a due righe centrate, raggruppate 3 sopra / 2 sotto. */
@media (max-width: 1280px) {
  .partners__logos { flex-direction: column; align-items: flex-start; gap: var(--s-4); }
  .partners__group { display: flex; flex-wrap: wrap; justify-content: flex-start; align-items: center; gap: var(--s-4) var(--s-5); }
}

@media (max-width: 900px) {
  :root { --s-7: 64px; }
  .nav { display: none; }
  .site-header .btn--book { display: none; }
  .menu-toggle { display: inline-flex; }
  .section__head { flex-direction: column; }

  /* Hero: foto in flusso, lockup a tutta larghezza sotto */
  .hero__media { position: relative; inset: auto; height: 320px; }
  .hero__media::after { display: none; }
  .hero__content { position: static; min-height: 0; padding-top: 0; margin-top: -63px; }
  .hero__logo { width: 100%; margin-left: -120px; }
  /* Card in evidenza: torna nel flusso, niente sovrapposizione. "In partenza"
     (testata + lead + cta) passa prima della card (.intro non ha più border-top
     già di base, vedi .intro sopra). */
  .intro{margin-top: -135px; }
  .intro .container { position: static; display: flex; flex-direction: column; }
  .intro__feature { position: static; width: 100%; transform: none; order: 1; margin-top: var(--s-5); }
  /* La card non è più absolute: niente rischio di sovrapposizione, il limite
     calc() di .lead (pensato per fermarsi prima della card a fianco) non serve
     più e va tolto, altrimenti il testo si stringe senza motivo. */
  .lead { max-width: none; }
  .feature { min-height: 280px; }
  .lead + .btn { order: 1; margin-top: var(--s-2); }

  /* Formazione: illustrazione sopra, testo sotto, colonna unica */
  .formazione { grid-template-columns: 1fr; gap: var(--s-5); }
  .formazione__diagram { order: -1; }
  .formazione__diagram img { width: 220px; }

  /* Corsi: data/anno vanno a capo sotto il titolo */
  .course__head { flex-wrap: wrap; }
  .course__title { flex: 1 1 100%; order: 2; margin-top: var(--s-1); }
  .course__toggle { order: 1; }
  .course__date { order: 3; width: auto; }
  .course__year { order: 4; width: auto; margin-left: auto; }
  .course__body { grid-template-columns: 1fr; padding-left: var(--s-5); }

  .footer__grid { grid-template-columns: 1fr; }
  .diagram { height: 380px; }

  /* Griglia eventi: prossimi a colonna unica (card più grandi), conclusi a due colonne */
  .events-grid { gap: var(--s-2); }
  .events-grid--upcoming .event-card { flex-basis: 100%; }
  .events-col { gap: var(--s-2); }
  .events-col:nth-child(2) { margin-top: 0; }
  .events-col:nth-child(1) { margin-top: var(--s-4); } /* mobile: prima delle due colonne */
  /* Tag più piccolo: a 2 colonne la card è larga ~160px, la pill a dimensione
     desktop sfora la card e l'overflow:hidden la taglia. */
  .event-card__tag { top: var(--s-2); left: var(--s-2); height: 32px; padding: 0 12px; font-size: 12px; }
  .footer__bar { padding: var(--s-3); flex-direction: column; }
}
