/* ============================================================ */
/* UYBHYS 2026 — Styles personnalisés                             */
/* Édition Jurassic · Full dark                                   */
/* ============================================================ */

/* ============================= */
/* PALETTE 2026                   */
/* ============================= */
:root {
  --uybhys-bg:        #14100D;   /* Noir tiédi, fond principal */
  --uybhys-bg-alt:    #1F3318;   /* Sous-bois, surfaces alternées */
  --uybhys-accent:    #5FB52E;   /* Vert vif, liens & CTA */
  --uybhys-glow:      #CFD243;   /* Lime glow, signatures rares */
  --uybhys-text:      #ECDFBC;   /* Crème, typographie */
  --uybhys-muted:     #6B7A5C;   /* Vert-gris, texte secondaire */
  --uybhys-warn:      #BC4E35;   /* Braise, alertes & badges */
  --uybhys-line:      #2F4823;   /* Séparateurs sur fond sombre */
}

/* ============================= */
/* FULL DARK — Body & Ananke      */
/* ============================= */
body {
  background-color: var(--uybhys-bg);
  color: var(--uybhys-text);
}

/* Override les classes Tachyons d'Ananke pour rester full dark */
.bg-white,
.bg-light-gray,
.bg-near-white {
  background-color: var(--uybhys-bg) !important;
  color: var(--uybhys-text);
}

.dark-gray,
.mid-gray,
.silver,
.gray {
  color: var(--uybhys-text) !important;
}

/* Liens globaux */
a {
  color: var(--uybhys-accent);
  text-decoration: none;
  transition: color 0.2s ease;
}

a:hover {
  color: var(--uybhys-glow);
}

/* Titres : forcer la couleur crème sur fond sombre */
h1, h2, h3, h4, h5, h6 {
  color: var(--uybhys-text);
}

/* ============================= */
/* TYPOGRAPHIE                    */
/* ============================= */
p, ul, li, h1, h2 {
  font-family: "Space Grotesk", sans-serif;
  font-optical-sizing: auto;
}

p, ul, li {
  font-size: 15px;
  text-align: left;
}

h2 {
  font-size: 18px;
  font-weight: bold;
}

/* ============================= */
/* HERO / HEADER                  */
/* ============================= */
header.cover {
  background-size: cover;
  background-position: center;
  position: relative;
}

/* Bannière de l'édition centrée dans le hero (header_logo) */
   .hero-banner {
     display: block;
     margin: 0;
     width: 100%;
     max-width: 100%;
     height: auto;
   }

   /* Neutralise le padding Tachyons autour du logo pour vrai bord-à-bord */
   header .tc.ph3.ph4-ns.pv3:has(.hero-banner) {
     padding: 0 !important;
   }

/* ============================= */
/* MENU DESKTOP : centré          */
/* (compense l'absence du         */
/*  site_logo Ananke)             */
/* ============================= */
@media (min-width: 1025px) {
  header .flex-l {
    justify-content: center;
  }

  #main-menu {
    display: flex !important;
    align-items: center;
    gap: 20px;
  }
}

/* ============================= */
/* MENU DESKTOP : style des liens */
/* ============================= */
#main-menu ul li a {
  text-decoration: none;
  color: var(--uybhys-text);
  font-weight: 500;
  padding: 8px 12px;
  border-radius: 6px;
  transition: all 0.3s ease;
  position: relative;
}

/* Hover avec underline animé */
#main-menu ul li a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 0%;
  height: 2px;
  background: var(--uybhys-accent);
  transition: width 0.3s ease;
}

#main-menu ul li a:hover {
  color: var(--uybhys-accent);
}

#main-menu ul li a:hover::after {
  width: 100%;
}

/* Hamburger caché sur desktop */
.menu-toggle {
  display: none;
}

/* ============================= */
/* MENU MOBILE / TABLETTE         */
/* (déclenché à 1024px pour gérer */
/*  les laptops étroits)          */
/* ============================= */
@media (max-width: 1024px) {
/* Hamburger visible : barre fixe en haut, au-dessus du hero */
  .menu-toggle {
    display: block !important;
    position: relative;
    z-index: 1001;
    background: transparent;
    border: none;
    font-size: 2rem;
    cursor: pointer;
    color: var(--uybhys-text);
    transition: transform 0.3s ease;
    padding: 12px 16px;
    margin: 0;
  }

  /* La barre de nav devient un bandeau plein au-dessus du hero */
  header .flex-l {
    position: relative;          /* référentiel pour le menu absolu */
    background: var(--uybhys-bg);
    padding: 4px 0;
    display: flex;
    justify-content: flex-end;  /* hamburger à droite, par défaut */
    align-items: center;
    width: 100%;
  }

  .menu-toggle:hover {
    transform: scale(1.1);
    color: var(--uybhys-accent);
  }

/* Menu mobile caché par défaut, se déploie SOUS la barre du hamburger */
  #main-menu {
    display: none !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    width: 100% !important;
    position: absolute !important;
    top: 100% !important;        /* sous la barre, pas au-dessus du hero */
    left: 0 !important;
    background-color: var(--uybhys-bg-alt) !important;
    z-index: 1000 !important;
    padding-top: 12px;
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4);
    border-bottom: 2px solid var(--uybhys-accent);
  }

  /* Menu mobile activé */
  #main-menu.is-active {
    display: flex !important;
    flex-direction: column !important;
    animation: fadeIn 0.3s ease-in-out;
  }

  /* Menu mobile vertical */
  #main-menu ul {
    flex-direction: column;
    list-style: none;
    padding: 0;
    margin: 0;
    width: 100%;
    text-align: left;
    gap: 15px;
  }

  #main-menu li {
    display: block !important;
    padding-left: 20px;
  }

  #main-menu a {
    display: block;
    color: var(--uybhys-text) !important;
    font-size: 1.2rem;
    padding: 12px;
    text-decoration: none;
    transition: background 0.3s;
    border-radius: 8px;
  }

  #main-menu a:hover {
    background: rgba(95, 181, 46, 0.15);
    color: var(--uybhys-accent) !important;
  }

  /* ====================================== */
  /* Icônes sociales en ligne, alignées     */
  /* avec les entrées de menu (20px mesuré) */
  /* ====================================== */
  #main-menu .ananke-socials {
    display: flex !important;
    flex-direction: row !important;
    gap: 8px;
    margin-left: 20px !important;
    margin-top: 8px !important;
    padding-left: 0 !important;
    width: auto !important;
  }

  /* Chaque lien : neutralise .dib + .pt3 d'Ananke */
  #main-menu .ananke-socials a.ananke-social-link {
    display: inline-flex !important;
    padding: 8px !important;
    margin: 0 !important;
    float: none !important;
  }
}

/* Animation pour l'ouverture du menu mobile */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ============================= */
/* SPONSORS                       */
/* ============================= */
.sponsor-level {
  margin-bottom: 30px;
}

.sponsor-level h2 {
  text-align: center;
  background: var(--uybhys-bg-alt);
  color: var(--uybhys-text);
  padding: 10px;
  border-left: 4px solid var(--uybhys-accent);
}

.sponsors {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 20px;
  padding: 20px;
}

.sponsor-card {
  border-radius: 8px;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);
  padding: 20px;
  text-align: center;
  transition: transform 0.3s;
  /* Texte sombre sur fonds clairs (silver/bronze) */
  color: var(--uybhys-bg);
}

.sponsor-card:hover {
  transform: scale(1.05);
}

.sponsor-card a {
  /* Sur fonds clairs, on neutralise le vert pour ne pas vibrer */
  color: var(--uybhys-bg);
}

.sponsor-card a:hover {
  color: var(--uybhys-warn);
}

.sponsor-logo {
  height: auto;
  object-fit: contain;
}

.sponsor-name {
  margin-bottom: 15px;
  font-weight: bold;
  color: var(--uybhys-bg);
}

.sponsor-description {
  margin-top: 10px;
  font-size: 14px;
  color: var(--uybhys-bg);
}

/* ── Silver : grandes cartes, fond argenté brillant ── */
.sponsors-silver .sponsor-card {
  flex: 0 0 calc(45% - 20px);
  max-width: calc(45% - 20px);
  height: 260px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: linear-gradient(135deg, #f0f0f0, #d8d8d8);
  border: 2px solid #c0c0c0;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
}

.sponsors-silver .sponsor-card .sponsor-logo {
  max-height: 200px;
}

/* ── Bronze : cartes plus petites, fond bronze ── */
.sponsors-bronze .sponsor-card {
  width: 180px;
  height: 180px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: linear-gradient(135deg, #f5e6cf, #e7cfae);
  border: 1px solid #c8a97a;
}

.sponsors-bronze .sponsor-card .sponsor-logo {
  max-height: 120px;
}

.sponsors-bronze .sponsor-card .sponsor-name {
  margin-bottom: 10px;
}

/* ── Soutien institutionnel : hors niveaux payants, donc fond neutre plutôt
   qu'argenté, mais à la taille des Silver : les montants apportés sont
   comparables et la rangée ne doit pas se lire comme un cran en dessous. ── */
.sponsors-soutien .sponsor-card {
  flex: 0 0 calc(45% - 20px);
  max-width: calc(45% - 20px);
  height: 260px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background: #f5ede0;
  border: 1px solid #d8c9ad;
}

.sponsors-soutien .sponsor-card .sponsor-logo {
  max-height: 200px;
  margin: 0 auto;
}

/* ── Sponsors mobile ── */
@media (max-width: 768px) {
  .sponsors-silver .sponsor-card {
    flex: auto;
    max-width: 280px;
    height: auto;
    min-height: 180px;
  }
  .sponsors-bronze .sponsor-card {
    width: 150px;
    height: 150px;
  }
  .sponsors-soutien .sponsor-card {
    flex: auto;
    max-width: 280px;
    height: auto;
    min-height: 180px;
  }
}

/* ============================= */
/* ÉCOLES                         */
/* ============================= */
.ecoles tr td {
  padding: 5px;
  text-align: center;
  font-size: 14px;
  min-width: 250px;
  color: var(--uybhys-text);
}

.ecoles img {
  max-width: 150px;
}

.ecoletitre {
  font-size: 24px;
  font-weight: bold;
  text-align: center;
  color: var(--uybhys-accent);
}

.petittitre {
  font-size: 12px;
  text-align: center;
  font-variant: small-caps slashed-zero;
  color: var(--uybhys-muted);
}

/* ============================= */
/* ACCESSIBILITÉ                  */
/* ============================= */
/* H1 caché visuellement mais lisible par les moteurs et lecteurs d'écran */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

/* ============================================================ */
/* PLANNING DES CONFÉRENCES / ATELIERS                           */
/* (anciennement schedule.css du thème Ananke)                   */
/* ============================================================ */
.table {
  padding: 10px;
  background: var(--uybhys-bg-alt);
  color: var(--uybhys-text);
  font-size: 14px;
  border-radius: 20px;
  border: 1px solid var(--uybhys-line);
}

.table th {
  border-bottom: 2px solid var(--uybhys-accent);
  text-shadow: 0 0 8px rgba(207, 210, 67, 0.4);
  background-color: rgba(95, 181, 46, 0.08);
  font-size: 1.2rem;
  padding: 10px;
  color: var(--uybhys-glow);
}

.table td {
  vertical-align: top;
  padding: 10px;
  border-top: 1px solid var(--uybhys-line);
}

/* Surcharge le text-align: justify hérité de la typographie générale */
.table p,
.table td,
.table th {
  text-align: left;
}

.titre {
  text-shadow: 0 0 6px rgba(207, 210, 67, 0.5);
  text-transform: uppercase;
  color: var(--uybhys-text);
}

a.titre-ws,
a.titre-ws:link,
a.titre-ws:visited {
  color: var(--uybhys-text);
  text-decoration: underline;
  text-decoration-color: var(--uybhys-accent);
}

a.titre-ws:hover {
  color: var(--uybhys-glow);
  text-decoration-color: var(--uybhys-glow);
}

.auteur {
  color: var(--uybhys-accent);
}

.salle {
  color: var(--uybhys-glow);
  text-align: center;
  text-shadow: 0 0 4px rgba(207, 210, 67, 0.3);
}

.horaires {
  color: var(--uybhys-muted);
}

/* ============================================================ */
/* BARRE DE NAVIGATION : effet pill arrondi translucide          */
/* (uniquement desktop, ne touche pas le menu mobile)            */
/* ============================================================ */
@media (min-width: 1025px) {
  /* Décale la barre du haut du hero sans révéler le body */
  header > div[class*="bg-"] {
    padding-top: 20px;
  }

  header .flex-l {
    background: rgba(20, 16, 13, 0.55);
    border-radius: 50px;
    padding: 8px 16px;
    margin: 0 16px;
    flex-wrap: nowrap;
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border: 1px solid rgba(236, 223, 188, 0.08);
  }

  /* Resserrer les espacements internes pour gagner de la place */
  #main-menu {
    flex-wrap: nowrap;
    gap: 12px;
  }

  #main-menu ul {
    flex-wrap: nowrap;
    margin: 0;
  }

  #main-menu ul li {
    padding-right: 0.5rem;
  }

  #main-menu ul li a {
    padding: 8px 8px;
    white-space: nowrap;
  }

  /* Bloc icônes sociales : ligne unique, pas de wrap */
  #main-menu .ananke-socials {
    flex-shrink: 0;
    white-space: nowrap;
  }

  #main-menu .ananke-socials a.ananke-social-link {
    margin-right: 6px;
  }
 }  
 /* ============================= */
 /* FOOTER                         */
 /* ============================= */
 footer a + a::before {
   content: " · ";
   color: var(--uybhys-muted);
   margin: 0 0.25em;
}

/* ============================================================ */
/* HOMEPAGE — Édition Jurassic                                   */
/* ============================================================ */

/* Typo display (lettrage type woodcut/horror, rappelle le logo "Unlock")
   Police "Frijole" chargée globalement via baseof.html. */

.home-main {
  /* léger overlay grain pour donner le feel "papier-affiche" */
  background:
    radial-gradient(ellipse at top, rgba(188, 78, 53, 0.06) 0%, transparent 60%),
    var(--uybhys-bg);
}

.home-section-title {
  font-family: 'Frijole', 'Space Grotesk', serif;
  font-size: clamp(1.6rem, 3vw, 2.4rem);
  letter-spacing: 2px;
  text-align: center;
  color: var(--uybhys-text);
  text-transform: uppercase;
  margin: 3rem auto 1.5rem;
  position: relative;
  padding-bottom: 0.6rem;
}
.home-section-title::after {
  content: "";
  display: block;
  width: 80px;
  height: 3px;
  margin: 0.6rem auto 0;
  background: linear-gradient(90deg, transparent, var(--uybhys-accent), transparent);
}
.home-section-title--muted {
  color: var(--uybhys-muted);
  font-size: clamp(1.3rem, 2.5vw, 1.9rem);
  letter-spacing: 4px;
}

/* ============================= */
/* BOUTONS                        */
/* ============================= */
.btn {
  display: inline-block;
  padding: 14px 28px;
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  border-radius: 6px;
  text-decoration: none;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}
.btn-primary {
  background: var(--uybhys-accent);
  color: var(--uybhys-bg);
  box-shadow: 0 0 0 1px var(--uybhys-accent), 0 6px 18px rgba(95, 181, 46, 0.35);
}
.btn-primary:hover {
  background: var(--uybhys-glow);
  color: var(--uybhys-bg);
  transform: translateY(-2px);
  box-shadow: 0 0 0 1px var(--uybhys-glow), 0 10px 24px rgba(207, 210, 67, 0.45);
}
.btn-ghost {
  background: transparent;
  color: var(--uybhys-text);
  box-shadow: 0 0 0 2px var(--uybhys-warn);
}
.btn-ghost:hover {
  background: var(--uybhys-warn);
  color: var(--uybhys-bg);
  transform: translateY(-2px);
}

/* ============================= */
/* HERO CTA                       */
/* ============================= */
.home-hero-cta {
  padding: 2.5rem 1.5rem 3rem;
  text-align: center;
  border-bottom: 1px solid var(--uybhys-line);
}
.home-hero-cta__inner {
  max-width: 880px;
  margin: 0 auto;
}
.home-hero-cta__eyebrow {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.85rem;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--uybhys-warn);
  margin: 0 0 0.8rem;
  text-align: center;
}
.home-hero-cta__title {
  font-family: 'Frijole', serif;
  font-size: clamp(2.2rem, 6vw, 4.2rem);
  line-height: 1.05;
  letter-spacing: 1px;
  color: var(--uybhys-text);
  margin: 0 0 0.4rem;
  text-shadow:
    0 0 30px rgba(95, 181, 46, 0.25),
    2px 2px 0 rgba(188, 78, 53, 0.4);
  text-align: center;
}
.home-hero-cta__title-alt {
  color: var(--uybhys-accent);
}
.home-hero-cta__dates {
  font-family: 'Space Grotesk', sans-serif;
  font-size: clamp(1rem, 1.5vw, 1.3rem);
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--uybhys-glow);
  margin: 0.6rem 0 1.5rem;
  text-align: center;
}
.home-hero-cta__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  justify-content: center;
  margin-top: 1.5rem;
}

/* ============================= */
/* STRIP BRAISE                   */
/* ============================= */
.home-strip {
  background: linear-gradient(180deg, var(--uybhys-warn) 0%, #8a3826 100%);
  border-top: 2px solid var(--uybhys-bg);
  border-bottom: 2px solid var(--uybhys-bg);
  overflow: hidden;
  position: relative;
  padding: 0.9rem 0;
}
.home-strip::before,
.home-strip::after {
  content: "";
  position: absolute;
  top: 0; bottom: 0;
  width: 60px;
  z-index: 2;
  pointer-events: none;
}
.home-strip::before {
  left: 0;
  background: linear-gradient(90deg, var(--uybhys-warn), transparent);
}
.home-strip::after {
  right: 0;
  background: linear-gradient(-90deg, var(--uybhys-warn), transparent);
}
.home-strip__track {
  display: flex;
  width: max-content;
  animation: strip-scroll 38s linear infinite;
}
.home-strip__items {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  list-style: none;
  margin: 0;
  padding: 0 1.5rem;
}
.home-strip__item {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 700;
  font-size: 1rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--uybhys-text);
  text-align: left;
  white-space: nowrap;
}
.home-strip__num {
  font-family: 'Frijole', serif;
  font-size: 1.4rem;
  margin-right: 0.4rem;
  color: var(--uybhys-bg);
  text-shadow: 1px 1px 0 var(--uybhys-text);
}
.home-strip__sep {
  font-size: 1.4rem;
  opacity: 0.85;
}
@keyframes strip-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .home-strip__track {
    animation: none;
    transform: translateX(0);
  }
}

/* ============================= */
/* PROGRAMME — 4 cartes           */
/* ============================= */
.home-programme {
  padding: 1rem 1.5rem 3rem;
  max-width: 1200px;
  margin: 0 auto;
}
.home-programme__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
}
.programme-card {
  display: flex;
  flex-direction: column;
  background: var(--uybhys-bg-alt);
  border: 1px solid var(--uybhys-line);
  border-radius: 12px;
  padding: 1.5rem 1.25rem;
  text-decoration: none;
  color: var(--uybhys-text);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
  position: relative;
  overflow: hidden;
}
.programme-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top right, rgba(95, 181, 46, 0.12) 0%, transparent 60%);
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}
.programme-card:hover {
  transform: translateY(-4px);
  border-color: var(--uybhys-accent);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.45), 0 0 0 1px var(--uybhys-accent);
}
.programme-card:hover::before {
  opacity: 1;
}
.programme-card__icon {
  color: var(--uybhys-accent);
  width: 56px;
  height: 56px;
  margin-bottom: 1rem;
}
.programme-card__icon svg {
  width: 100%;
  height: 100%;
}
.programme-card__title {
  font-family: 'Frijole', serif;
  font-size: 1.3rem;
  letter-spacing: 1px;
  margin: 0 0 0.6rem;
  color: var(--uybhys-text);
}
.programme-card__desc {
  font-size: 0.92rem;
  line-height: 1.5;
  color: var(--uybhys-text);
  flex-grow: 1;
  margin: 0 0 1rem;
  text-align: left;
}
.programme-card__cta {
  font-family: 'Space Grotesk', sans-serif;
  font-weight: 600;
  font-size: 0.9rem;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--uybhys-glow);
}

/* ============================= */
/* NEWS / ACTUALITÉS              */
/* ============================= */
.home-news {
  padding: 1rem 0 2rem;
}
.home-news__feed {
  /* fix anomalies de centrage Tachyons héritées */
  text-align: center;
}

/* ============================= */
/* HOMMAGE / IN MEMORIAM          */
/* ============================= */
.home-tribute {
  padding: 2rem 1.5rem 3rem;
  max-width: 1000px;
  margin: 0 auto;
  border-top: 1px solid var(--uybhys-line);
  border-bottom: 1px solid var(--uybhys-line);
  margin-top: 2rem;
}
.home-tribute__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  max-width: 800px;
  margin: 0 auto;
}
.tribute-card {
  text-align: center;
  padding: 1.5rem;
  background: rgba(31, 51, 24, 0.35);
  border: 1px solid var(--uybhys-line);
  border-radius: 12px;
}
.tribute-card__portrait {
  width: 120px;
  height: 120px;
  margin: 0 auto 1rem;
  border-radius: 50%;
  overflow: hidden;
  border: 3px solid var(--uybhys-warn);
  background: var(--uybhys-bg);
  display: flex;
  align-items: center;
  justify-content: center;
}
.tribute-card__portrait img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.tribute-card__name {
  font-family: 'Frijole', serif;
  font-size: 1.5rem;
  color: var(--uybhys-text);
  margin: 0 0 0.2rem;
  text-align: center;
}
.tribute-card__dates {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.95rem;
  letter-spacing: 3px;
  color: var(--uybhys-warn);
  margin: 0 0 1rem;
  text-align: center;
}
.tribute-card__text {
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--uybhys-text);
  font-style: italic;
  text-align: center;
  margin: 0;
}

/* ============================= */
/* SPONSORS TEASER                */
/* ============================= */
.home-sponsors-teaser {
  padding: 2.5rem 1.5rem 3rem;
  text-align: center;
}
.home-sponsors-teaser__lead {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--uybhys-text);
  max-width: 600px;
  margin: 0 auto 1.5rem;
  text-align: center;
}
.home-sponsors-teaser__cta {
  margin-top: 1rem;
}

/* ── Bandeau défilant des sponsors ──
   Même procédé que .home-strip : la piste porte deux copies de la liste et
   glisse de -50%, donc la boucle se referme sans saut. L'écart entre logos est
   porté par les items et non par un gap sur le conteneur, sinon la gouttière
   entre les deux copies fait sauter le raccord. */
.sponsor-marquee {
  position: relative;
  overflow: hidden;
  margin: 1.75rem -1.5rem 2rem;
  padding: 0.75rem 0;
  border-top: 1px solid var(--uybhys-line);
  border-bottom: 1px solid var(--uybhys-line);
  background: var(--uybhys-bg-alt);
}
.sponsor-marquee::before,
.sponsor-marquee::after {
  content: "";
  position: absolute;
  top: 0; bottom: 0;
  width: 70px;
  z-index: 2;
  pointer-events: none;
}
.sponsor-marquee::before {
  left: 0;
  background: linear-gradient(90deg, var(--uybhys-bg-alt), transparent);
}
.sponsor-marquee::after {
  right: 0;
  background: linear-gradient(-90deg, var(--uybhys-bg-alt), transparent);
}
.sponsor-marquee__track {
  display: flex;
  width: max-content;
  animation: sponsor-scroll 55s linear infinite;
}
.sponsor-marquee:hover .sponsor-marquee__track,
.sponsor-marquee:focus-within .sponsor-marquee__track {
  animation-play-state: paused;
}
.sponsor-marquee__group {
  display: flex;
  align-items: center;
}
.sponsor-marquee__item {
  flex: 0 0 auto;
  margin-right: 1.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem;
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.35);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.sponsor-marquee__item:hover,
.sponsor-marquee__item:focus-visible {
  transform: scale(1.05);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
}
.sponsor-marquee__logo {
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

/* Gabarits : Silver et soutiens à la même taille, Bronze un cran en dessous,
   comme sur la page Sponsors. */
.sponsor-marquee__item--grand {
  width: 208px;
  height: 116px;
}
.sponsor-marquee__item--grand .sponsor-marquee__logo {
  max-height: 86px;
}
.sponsor-marquee__item--petit {
  width: 158px;
  height: 88px;
}
.sponsor-marquee__item--petit .sponsor-marquee__logo {
  max-height: 60px;
}

/* Fonds repris des cartes de la page Sponsors : argenté, bronze, et crème
   neutre pour le soutien institutionnel, qui n'est pas un palier payant. */
.sponsor-marquee__item--silver {
  background: linear-gradient(135deg, #f0f0f0, #d8d8d8);
  border: 1px solid #c0c0c0;
}
.sponsor-marquee__item--bronze {
  background: linear-gradient(135deg, #f5e6cf, #e7cfae);
  border: 1px solid #c8a97a;
}
.sponsor-marquee__item--soutien {
  background: #f5ede0;
  border: 1px solid #d8c9ad;
}

@keyframes sponsor-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* Mouvement réduit : le bandeau devient une bande qu'on fait défiler à la main,
   et la copie de raccord disparaît pour ne pas doubler les logos. */
@media (prefers-reduced-motion: reduce) {
  .sponsor-marquee {
    overflow-x: auto;
  }
  .sponsor-marquee__track {
    animation: none;
    transform: translateX(0);
  }
  .sponsor-marquee__group[aria-hidden="true"] {
    display: none;
  }
  .sponsor-marquee__item:hover,
  .sponsor-marquee__item:focus-visible {
    transform: none;
  }
}

@media (max-width: 600px) {
  .sponsor-marquee::before,
  .sponsor-marquee::after {
    width: 36px;
  }
  .sponsor-marquee__item {
    margin-right: 0.9rem;
    padding: 0.5rem;
  }
  .sponsor-marquee__item--grand {
    width: 164px;
    height: 94px;
  }
  .sponsor-marquee__item--grand .sponsor-marquee__logo {
    max-height: 68px;
  }
  .sponsor-marquee__item--petit {
    width: 128px;
    height: 74px;
  }
  .sponsor-marquee__item--petit .sponsor-marquee__logo {
    max-height: 50px;
  }
}

/* ============================= */
/* RESPONSIVE                     */
/* ============================= */
@media (max-width: 900px) {
  .home-programme__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 600px) {
  .home-programme__grid {
    grid-template-columns: 1fr;
  }
  .home-tribute__grid {
    grid-template-columns: 1fr;
  }
  .home-hero-cta__buttons {
    flex-direction: column;
    align-items: stretch;
  }
  .home-hero-cta__buttons .btn {
    text-align: center;
  }
}

/* ============================================================ */
/* PAGE CFP — Call for Papers                                    */
/* ============================================================ */

/* ── Key dates timeline ── */
.key-dates {
  list-style: none;
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: 0.5rem;
  padding: 0;
  margin: 2rem auto;
  max-width: 1000px;
  position: relative;
}
.key-dates::before {
  /* ligne horizontale qui relie les points */
  content: "";
  position: absolute;
  top: 14px;
  left: 6%;
  right: 6%;
  height: 2px;
  background: linear-gradient(90deg,
    var(--uybhys-accent) 0%,
    var(--uybhys-warn) 50%,
    var(--uybhys-muted) 100%);
  opacity: 0.4;
  z-index: 0;
}
.key-dates__item {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  position: relative;
  z-index: 1;
  padding: 0 0.4rem;
}
.key-dates__node {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--uybhys-bg);
  border: 2px solid var(--uybhys-muted);
  color: var(--uybhys-muted);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.95rem;
  font-weight: 700;
  margin-bottom: 0.7rem;
  transition: all 0.3s ease;
}
.key-dates__item--passed .key-dates__node {
  border-color: var(--uybhys-accent);
  background: var(--uybhys-accent);
  color: var(--uybhys-bg);
}
.key-dates__item--active .key-dates__node {
  border-color: var(--uybhys-warn);
  background: var(--uybhys-warn);
  color: var(--uybhys-bg);
  box-shadow: 0 0 0 4px rgba(188, 78, 53, 0.25), 0 0 16px var(--uybhys-warn);
  animation: kd-pulse 2s ease-in-out infinite;
}
.key-dates__when {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.8rem;
  letter-spacing: 1.5px;
  color: var(--uybhys-glow);
  margin-bottom: 0.2rem;
  text-transform: uppercase;
}
.key-dates__item--passed .key-dates__when { color: var(--uybhys-muted); }
.key-dates__item--active .key-dates__when { color: var(--uybhys-warn); font-weight: 700; }
.key-dates__label {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.9rem;
  color: var(--uybhys-text);
  line-height: 1.3;
}
@keyframes kd-pulse {
  0%, 100% { box-shadow: 0 0 0 4px rgba(188, 78, 53, 0.25), 0 0 16px var(--uybhys-warn); }
  50%      { box-shadow: 0 0 0 8px rgba(188, 78, 53, 0.15), 0 0 24px var(--uybhys-warn); }
}

/* ── Topic pills ── */
.topic-pills > ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  padding: 0;
  margin: 1.5rem 0;
  justify-content: flex-start;
}
.topic-pills > ul > li {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.92rem;
  letter-spacing: 0.5px;
  padding: 0.5rem 1rem;
  background: var(--uybhys-bg-alt);
  border: 1px solid var(--uybhys-line);
  border-radius: 100px;
  color: var(--uybhys-text);
  transition: all 0.25s ease;
  cursor: default;
  text-align: left;
}
.topic-pills > ul > li::before {
  content: "#";
  color: var(--uybhys-accent);
  margin-right: 4px;
  font-family: 'Share Tech Mono', monospace;
  opacity: 0.7;
}
.topic-pills > ul > li:hover {
  border-color: var(--uybhys-accent);
  background: rgba(95, 181, 46, 0.12);
  color: var(--uybhys-glow);
  transform: translateY(-1px);
}

/* ── Perk grid ── */
.perk-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
  margin: 1.5rem 0 2rem;
}
.perk-card {
  background: var(--uybhys-bg-alt);
  border: 1px solid var(--uybhys-line);
  border-radius: 12px;
  padding: 1.4rem 1.2rem;
  text-align: center;
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.perk-card:hover {
  transform: translateY(-3px);
  border-color: var(--uybhys-accent);
  box-shadow: 0 10px 24px rgba(0,0,0,0.4), 0 0 0 1px var(--uybhys-accent);
}
.perk-card__icon {
  display: block;
  font-size: 2.2rem;
  margin: 0 auto 0.6rem;
  line-height: 1;
  filter: drop-shadow(0 0 8px rgba(95, 181, 46, 0.4));
}
.perk-card__title {
  font-family: 'Frijole', serif;
  font-size: 1.05rem;
  letter-spacing: 1px;
  color: var(--uybhys-text);
  margin: 0 0 0.5rem;
  text-align: center;
}
.perk-card__desc {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--uybhys-text);
  opacity: 0.9;
  text-align: center;
}
.perk-card__desc p { margin: 0; }

/* ── CTA Big ── */
.cta-big {
  text-align: center;
  margin: 2rem 0;
  padding: 1.8rem 1.5rem;
  background:
    radial-gradient(ellipse at center, rgba(95, 181, 46, 0.12) 0%, transparent 70%),
    var(--uybhys-bg-alt);
  border: 1px solid var(--uybhys-line);
  border-radius: 14px;
}
.cta-big__btn {
  font-size: 1.1rem;
  padding: 16px 36px;
}
.cta-big__sub {
  margin: 1rem 0 0;
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.85rem;
  letter-spacing: 2px;
  color: var(--uybhys-warn);
  text-align: center;
}

/* ── Fineprint (légal, remerciements) ── */
.cfp-fineprint {
  margin: 3rem auto 1rem;
  padding: 1.5rem;
  max-width: 800px;
  background: rgba(31, 51, 24, 0.25);
  border-left: 3px solid var(--uybhys-muted);
  border-radius: 6px;
  font-size: 0.88rem;
  line-height: 1.6;
  color: var(--uybhys-muted);
}
.cfp-fineprint h3 {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.85rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--uybhys-text);
  margin: 0 0 0.5rem;
}
.cfp-fineprint h3:not(:first-child) { margin-top: 1.2rem; }
.cfp-fineprint a { color: var(--uybhys-accent); }
.cfp-fineprint a:hover { color: var(--uybhys-glow); }

/* ── Responsive CFP ── */
@media (max-width: 900px) {
  .perk-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 720px) {
  .key-dates { flex-wrap: wrap; gap: 1.2rem 0.5rem; }
  .key-dates::before { display: none; }
  .key-dates__item { flex: 0 0 calc(50% - 0.4rem); }
}
@media (max-width: 520px) {
  .perk-grid { grid-template-columns: 1fr; }
}

/* ============================================================ */
/* PAGE-HERO (générique) — partage la base visuelle de cfp-hero  */
/* ============================================================ */
.page-hero {
  position: relative;
  padding: 2.5rem 1.5rem 3rem;
  margin: 0 auto 2rem;
  max-width: 1100px;
  text-align: center;
  background:
    radial-gradient(ellipse at top, rgba(95, 181, 46, 0.12) 0%, transparent 60%),
    linear-gradient(180deg, transparent 0%, rgba(31, 51, 24, 0.25) 100%);
  border: 1px solid var(--uybhys-line);
  border-radius: 14px;
  overflow: hidden;
}
.page-hero::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: repeating-linear-gradient(to bottom, rgba(207, 210, 67, 0.03) 0, transparent 4px);
}
.page-hero__inner { position: relative; z-index: 1; max-width: 760px; margin: 0 auto; }
.page-hero__eyebrow {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.85rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--uybhys-warn);
  margin: 0 0 1rem;
  text-align: center;
}
.page-hero__title {
  font-family: 'Frijole', serif;
  font-size: clamp(1.8rem, 4.5vw, 3rem);
  line-height: 1.15;
  letter-spacing: 1px;
  color: var(--uybhys-text);
  margin: 0 0 1rem;
  text-shadow: 0 0 30px rgba(95, 181, 46, 0.2);
  text-align: center;
}
.page-hero__lead {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 1.05rem;
  line-height: 1.6;
  color: var(--uybhys-text);
  max-width: 620px;
  margin: 0 auto 2rem;
  text-align: center;
  opacity: 0.9;
}
.page-hero__lead p { margin: 0; }

.page-hero__chip {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.2rem;
  padding: 0.8rem 1.6rem;
  margin: 0 auto 1.5rem;
  background: rgba(20, 16, 13, 0.8);
  border: 2px solid var(--uybhys-warn);
  border-radius: 10px;
  box-shadow: 0 0 20px rgba(188, 78, 53, 0.25);
}
.page-hero__chip--accent {
  border-color: var(--uybhys-accent);
  box-shadow: 0 0 20px rgba(95, 181, 46, 0.3);
}
.page-hero__chip--accent .page-hero__chip-label { color: var(--uybhys-accent); }
.page-hero__chip--glow {
  border-color: var(--uybhys-glow);
  box-shadow: 0 0 20px rgba(207, 210, 67, 0.3);
}
.page-hero__chip--glow .page-hero__chip-label { color: var(--uybhys-glow); }
.page-hero__chip-label {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.75rem;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--uybhys-warn);
}
.page-hero__chip-value {
  font-family: 'Frijole', serif;
  font-size: clamp(1.4rem, 3.5vw, 2.2rem);
  letter-spacing: 2px;
  color: var(--uybhys-glow);
  text-shadow: 0 0 12px rgba(207, 210, 67, 0.4);
}
.page-hero__chip-sub {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.75rem;
  letter-spacing: 2px;
  color: var(--uybhys-muted);
}
.page-hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  justify-content: center;
  margin-top: 1.2rem;
}

/* ============================================================ */
/* STAT-STRIP                                                    */
/* ============================================================ */
.stat-strip {
  margin: 2rem auto 2.5rem;
  max-width: 1000px;
  padding: 1.5rem;
  background: rgba(31, 51, 24, 0.25);
  border-top: 1px solid var(--uybhys-line);
  border-bottom: 1px solid var(--uybhys-line);
  border-radius: 8px;
}
.stat-strip__eyebrow {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.75rem;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--uybhys-muted);
  text-align: center;
  margin: 0 0 1rem;
}
.stat-strip__grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}
.stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 0.5rem 0.3rem;
  border-left: 1px solid var(--uybhys-line);
}
.stat:first-child { border-left: none; }
.stat__num {
  font-family: 'Frijole', serif;
  font-size: clamp(1.8rem, 4vw, 2.6rem);
  color: var(--uybhys-glow);
  text-shadow: 0 0 14px rgba(207, 210, 67, 0.35);
  line-height: 1;
  margin-bottom: 0.4rem;
}
.stat__label {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.78rem;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--uybhys-text);
  opacity: 0.85;
}

/* ============================================================ */
/* TWO-PATHS — Entreprise / École                                */
/* ============================================================ */
.two-paths {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
  margin: 1.5rem auto 2.5rem;
  max-width: 1100px;
}
.path-card {
  display: flex;
  flex-direction: column;
  background: var(--uybhys-bg-alt);
  border: 1px solid var(--uybhys-line);
  border-radius: 14px;
  padding: 1.8rem 1.6rem;
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
  position: relative;
  overflow: hidden;
}
.path-card::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top right, rgba(95, 181, 46, 0.1) 0%, transparent 60%);
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
}
.path-card:hover {
  transform: translateY(-3px);
  border-color: var(--uybhys-accent);
  box-shadow: 0 14px 32px rgba(0,0,0,0.45), 0 0 0 1px var(--uybhys-accent);
}
.path-card:hover::before { opacity: 1; }
.path-card__head {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  margin-bottom: 1rem;
  padding-bottom: 0.9rem;
  border-bottom: 1px dashed var(--uybhys-line);
  position: relative;
}
.path-card__icon {
  font-size: 2rem;
  line-height: 1;
  filter: drop-shadow(0 0 8px rgba(95, 181, 46, 0.4));
}
.path-card__title {
  font-family: 'Frijole', serif;
  font-size: 1.25rem;
  letter-spacing: 1px;
  color: var(--uybhys-text);
  margin: 0;
  text-align: left;
}
.path-card__body {
  flex-grow: 1;
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.98rem;
  line-height: 1.6;
  color: var(--uybhys-text);
  text-align: left;
  position: relative;
}
.path-card__body p { margin: 0 0 0.8rem; }
.path-card__body p:last-child { margin-bottom: 0; }
.path-card__body strong { color: var(--uybhys-glow); }
.path-card__body code {
  background: rgba(95, 181, 46, 0.12);
  border: 1px solid var(--uybhys-line);
  padding: 0 6px;
  border-radius: 3px;
  font-size: 0.9em;
  color: var(--uybhys-glow);
}
.path-card__foot {
  margin-top: 1.2rem;
  text-align: center;
  position: relative;
}

/* ============================================================ */
/* FLOW-STEPS                                                    */
/* ============================================================ */
.flow-steps {
  list-style: none;
  padding: 0;
  margin: 1.5rem auto 2.5rem;
  max-width: 800px;
  counter-reset: flow;
  position: relative;
}
.flow-steps::before {
  /* trait vertical reliant les numéros */
  content: "";
  position: absolute;
  left: 27px;
  top: 28px;
  bottom: 28px;
  width: 2px;
  background: linear-gradient(180deg, var(--uybhys-accent) 0%, var(--uybhys-warn) 100%);
  opacity: 0.35;
}
.flow-step {
  display: flex;
  align-items: flex-start;
  gap: 1.2rem;
  margin-bottom: 1.5rem;
  position: relative;
}
.flow-step:last-child { margin-bottom: 0; }
.flow-step__num {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  background: var(--uybhys-bg);
  border: 2px solid var(--uybhys-accent);
  color: var(--uybhys-glow);
  font-family: 'Frijole', serif;
  font-size: 1.4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 16px rgba(95, 181, 46, 0.3);
  position: relative;
  z-index: 1;
}
.flow-step__body {
  flex: 1;
  background: var(--uybhys-bg-alt);
  border: 1px solid var(--uybhys-line);
  border-radius: 10px;
  padding: 1rem 1.2rem;
  text-align: left;
}
.flow-step__title {
  font-family: 'Frijole', serif;
  font-size: 1.05rem;
  letter-spacing: 1px;
  color: var(--uybhys-text);
  margin: 0 0 0.4rem;
}
.flow-step__desc {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--uybhys-text);
  opacity: 0.9;
}
.flow-step__desc p { margin: 0; }
.flow-step__desc strong { color: var(--uybhys-glow); }

/* ============================================================ */
/* SCHOOL-GRID                                                   */
/* ============================================================ */
.school-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1rem;
  margin: 1.5rem auto 2.5rem;
  max-width: 1000px;
}
.school-card {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 180px;
  height: 120px;
  padding: 1rem;
  background: linear-gradient(135deg, #f0f0f0, #d8d8d8);
  border: 1px solid #c0c0c0;
  border-radius: 10px;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.school-card:hover {
  transform: translateY(-3px) scale(1.03);
  box-shadow: 0 10px 22px rgba(0,0,0,0.55), 0 0 0 2px var(--uybhys-accent);
}
.school-card__logo {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

/* ============================================================ */
/* BB-TESTIMONIAL                                                */
/* ============================================================ */
.bb-testimonial {
  position: relative;
  max-width: 800px;
  margin: 2rem auto;
  padding: 2rem 2rem 1.5rem;
  background:
    radial-gradient(ellipse at top left, rgba(95, 181, 46, 0.08) 0%, transparent 60%),
    var(--uybhys-bg-alt);
  border: 1px solid var(--uybhys-line);
  border-left: 4px solid var(--uybhys-accent);
  border-radius: 12px;
}
.bb-testimonial__head {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.2rem;
  position: relative;
}
.bb-testimonial__avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  object-fit: cover;
  border: 2px solid var(--uybhys-accent);
  box-shadow: 0 0 12px rgba(95, 181, 46, 0.4);
  flex-shrink: 0;
}
.bb-testimonial__who {
  display: flex;
  flex-direction: column;
  text-align: left;
}
.bb-testimonial__who strong {
  font-family: 'Frijole', serif;
  font-size: 1.05rem;
  color: var(--uybhys-text);
  letter-spacing: 0.5px;
}
.bb-testimonial__role {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.85rem;
  color: var(--uybhys-glow);
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-top: 0.2rem;
}
.bb-testimonial__quote-mark {
  position: absolute;
  top: -10px;
  right: 0;
  font-family: 'Frijole', serif;
  font-size: 5rem;
  line-height: 1;
  color: var(--uybhys-accent);
  opacity: 0.25;
  pointer-events: none;
}
.bb-testimonial__body {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 0.98rem;
  line-height: 1.65;
  color: var(--uybhys-text);
  border-left: none;
  margin: 0;
  padding: 0;
  text-align: left;
}
.bb-testimonial__body p { margin: 0 0 0.8rem; }
.bb-testimonial__body p:last-child { margin-bottom: 0; }
.bb-testimonial__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  margin-top: 1.5rem;
  padding-top: 1rem;
  border-top: 1px dashed var(--uybhys-line);
}
.bb-testimonial__date {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.8rem;
  letter-spacing: 1.5px;
  color: var(--uybhys-muted);
  text-transform: uppercase;
}
.bb-testimonial__tags {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.bb-testimonial__chip {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 1px;
  padding: 0.25rem 0.7rem;
  background: rgba(95, 181, 46, 0.12);
  border: 1px solid var(--uybhys-line);
  border-radius: 100px;
  color: var(--uybhys-glow);
  text-transform: uppercase;
}

/* ============================================================ */
/* RESPONSIVE BB                                                 */
/* ============================================================ */
@media (max-width: 900px) {
  .stat-strip__grid { grid-template-columns: repeat(2, 1fr); }
  .stat:nth-child(3) { border-left: none; }
  .two-paths { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .stat-strip__grid { grid-template-columns: repeat(2, 1fr); }
  .school-card { width: 140px; height: 90px; padding: 0.7rem; }
  .flow-step { gap: 0.8rem; }
  .flow-step__num { width: 44px; height: 44px; font-size: 1.1rem; }
  .flow-steps::before { left: 21px; }
  .bb-testimonial { padding: 1.5rem 1.2rem 1.2rem; }
  .bb-testimonial__head { flex-direction: row; }
  .bb-testimonial__quote-mark { font-size: 3rem; top: -5px; }
  .page-hero__cta { flex-direction: column; align-items: stretch; }
  .page-hero__cta .btn { text-align: center; }
}

/* ============================================================ */
/* COUNTDOWN — Jurassic Park control terminal                    */
/* Polices Orbitron + Share Tech Mono chargées via baseof.html.  */
/* ============================================================ */
.countdown-container {
  --cd-screen-bg: #0a1208;
  --cd-bezel:     #0e0c0a;
  --cd-bezel-2:   #1a1612;
  --cd-green:     #5FB52E;
  --cd-glow:      #CFD243;
  --cd-amber:     #BC4E35;
  --cd-ink:       #ECDFBC;
  --cd-line:      #2F4823;

  position: relative;
  max-width: 640px;
  margin: 2rem auto;
  padding: 0;
  font-family: 'Share Tech Mono', 'Orbitron', monospace;
  color: var(--cd-ink);
  background: linear-gradient(180deg, var(--cd-bezel) 0%, var(--cd-bezel-2) 100%);
  border: 2px solid #050403;
  border-radius: 14px;
  box-shadow:
    0 0 0 3px var(--cd-line),
    0 0 30px rgba(95, 181, 46, 0.35),
    inset 0 1px 0 rgba(236, 223, 188, 0.08);
  overflow: hidden;
}

/* ── Barre supérieure (bezel) ── */
.cd-bezel__topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  padding: 0.5rem 0.9rem;
  background: linear-gradient(180deg, #1a1612 0%, #0e0c0a 100%);
  border-bottom: 1px solid var(--cd-line);
  font-size: 0.75rem;
  letter-spacing: 2px;
  text-transform: uppercase;
}
.cd-leds { display: inline-flex; gap: 6px; }
.cd-led {
  display: inline-block;
  width: 9px;
  height: 9px;
  border-radius: 50%;
  box-shadow: inset 0 0 2px rgba(0,0,0,0.6);
}
.cd-led--red    { background: #6b1a14; box-shadow: 0 0 6px #BC4E35, inset 0 0 2px rgba(0,0,0,.6); }
.cd-led--amber  { background: #6b4a14; box-shadow: 0 0 5px #CFA243, inset 0 0 2px rgba(0,0,0,.6); }
.cd-led--green  { background: #1a4a14; box-shadow: 0 0 6px var(--cd-green), inset 0 0 2px rgba(0,0,0,.6);
                  animation: cd-led-pulse 1.6s ease-in-out infinite; }
.cd-bezel__id {
  flex: 1;
  text-align: center;
  color: var(--cd-ink);
  opacity: 0.7;
  font-size: 0.7rem;
}
.cd-bezel__rec {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: var(--cd-amber);
  font-size: 0.7rem;
}
.cd-rec-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--cd-amber);
  box-shadow: 0 0 6px var(--cd-amber);
  animation: cd-rec-blink 1s steps(2) infinite;
}
@keyframes cd-rec-blink { 50% { opacity: 0; } }
@keyframes cd-led-pulse {
  0%, 100% { box-shadow: 0 0 4px var(--cd-green), inset 0 0 2px rgba(0,0,0,.6); }
  50%      { box-shadow: 0 0 12px var(--cd-glow), inset 0 0 2px rgba(0,0,0,.6); }
}

/* ── Écran CRT ── */
.cd-screen {
  position: relative;
  padding: 1.2rem 1.4rem 1.4rem;
  background:
    radial-gradient(ellipse at center, rgba(95, 181, 46, 0.10) 0%, transparent 70%),
    linear-gradient(180deg, #0a1208 0%, #050803 100%);
  border-top: 1px solid #050403;
  text-align: left;
}
.cd-screen::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: repeating-linear-gradient(to bottom,
    rgba(207, 210, 67, 0.06) 0,
    rgba(207, 210, 67, 0.02) 2px,
    transparent 4px);
  animation: cd-scan 9s linear infinite;
  z-index: 1;
}
.cd-screen::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,0.55) 100%);
  z-index: 2;
}
.cd-screen > * { position: relative; z-index: 3; }
@keyframes cd-scan {
  from { background-position: 0 0; }
  to   { background-position: 0 100%; }
}

/* ── Boot sequence ── */
.cd-boot {
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.85rem;
  line-height: 1.5;
  color: var(--cd-green);
  margin: 0 0 0.8rem;
  white-space: pre-wrap;
  text-shadow: 0 0 6px rgba(95, 181, 46, 0.5);
  opacity: 0.9;
}
.cd-ok { color: var(--cd-glow); }
.cd-status {
  color: var(--cd-glow);
  text-shadow: 0 0 8px var(--cd-glow);
  animation: cd-flicker 2.5s infinite alternate;
}

/* ── Prompt + cursor ── */
.cd-prompt {
  font-family: 'Share Tech Mono', monospace;
  font-size: 1rem;
  letter-spacing: 2px;
  color: var(--cd-ink);
  margin: 0.4rem 0 1rem;
  text-shadow: 0 0 8px rgba(95, 181, 46, 0.4);
}
.cd-cursor {
  display: inline-block;
  color: var(--cd-glow);
  margin-left: 4px;
  animation: cd-blink 1s steps(2) infinite;
}
@keyframes cd-blink { 50% { opacity: 0; } }

/* ── Grille des digits ── */
.countdown-grid {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 0.4rem;
  margin: 0 auto;
}
.countdown-box {
  flex: 1;
  min-width: 0;
  background: linear-gradient(180deg, rgba(20,16,13,0.95) 0%, rgba(10,18,8,0.95) 100%);
  border: 1px solid var(--cd-green);
  border-radius: 6px;
  padding: 0.6rem 0.4rem 0.4rem;
  box-shadow:
    inset 0 0 12px rgba(95, 181, 46, 0.25),
    0 0 8px rgba(95, 181, 46, 0.35);
  position: relative;
}
.countdown-box::before,
.countdown-box::after {
  content: "";
  position: absolute;
  width: 8px;
  height: 8px;
  border: 1px solid var(--cd-glow);
  opacity: 0.7;
}
.countdown-box::before { top: 3px; left: 3px; border-right: none; border-bottom: none; }
.countdown-box::after  { bottom: 3px; right: 3px; border-left: none; border-top: none; }
.cd-digit {
  display: block;
  font-family: 'Orbitron', monospace;
  font-weight: 700;
  font-size: clamp(1.6rem, 4.5vw, 2.4rem);
  text-align: center;
  color: var(--cd-glow);
  text-shadow:
    0 0 6px var(--cd-green),
    0 0 12px rgba(207, 210, 67, 0.6);
  letter-spacing: 1px;
  font-variant-numeric: tabular-nums;
  animation: cd-digit-flicker 1.5s infinite;
}
.countdown-box small {
  display: block;
  margin-top: 0.35rem;
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.65rem;
  letter-spacing: 2px;
  text-align: center;
  color: var(--cd-green);
  text-transform: uppercase;
}
.cd-colon {
  align-self: center;
  font-family: 'Orbitron', monospace;
  font-size: clamp(1.4rem, 3.5vw, 2rem);
  font-weight: 700;
  color: var(--cd-green);
  text-shadow: 0 0 6px var(--cd-green);
  animation: cd-blink 1s steps(2) infinite;
  user-select: none;
  padding: 0 0.1rem;
}

/* ── Flavor line ── */
.cd-flavor {
  margin: 1rem 0 0;
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.8rem;
  text-align: right;
  color: var(--cd-green);
  opacity: 0.65;
  font-style: italic;
  letter-spacing: 1px;
}

/* ── Done message ── */
.countdown-done {
  display: none;
  padding: 1rem;
  margin: 0;
  background: var(--cd-screen-bg);
  border-top: 1px solid var(--cd-line);
  font-family: 'Orbitron', monospace;
  font-size: 1.2rem;
  font-weight: bold;
  text-align: center;
  color: var(--cd-glow);
  text-shadow: 0 0 10px var(--cd-glow), 0 0 20px var(--cd-green);
  animation: cd-flicker 1.2s infinite alternate;
}

/* ── Animations ── */
@keyframes cd-flicker {
  0%, 18%, 22%, 25%, 53%, 57%, 100% { opacity: 1; }
  20%, 24%, 55% { opacity: 0.55; }
}
@keyframes cd-digit-flicker {
  0%, 5%, 10%, 15%, 20%, 100% { opacity: 1; }
  3%   { opacity: 0.75; }
  8%   { opacity: 0.9;  }
  13%  { opacity: 0.8;  }
}

@media (prefers-reduced-motion: reduce) {
  .cd-led--green,
  .cd-rec-dot,
  .cd-status,
  .cd-cursor,
  .cd-colon,
  .cd-digit,
  .countdown-done,
  .cd-screen::before {
    animation: none !important;
  }
}

@media (max-width: 520px) {
  .countdown-container { max-width: 96%; }
  .cd-screen { padding: 1rem 0.9rem; }
  .cd-boot { font-size: 0.75rem; }
  .cd-prompt { font-size: 0.9rem; letter-spacing: 1px; }
  .countdown-box { padding: 0.5rem 0.2rem 0.35rem; }
  .countdown-box small { font-size: 0.55rem; letter-spacing: 1px; }
  .cd-colon { font-size: 1.3rem; padding: 0 0.05rem; }
}

/* ============================================================ */
/* CINETICKET — Bulletin JP terminal                             */
/* ============================================================ */
.ticket {
  --tk-bezel:   #0e0c0a;
  --tk-bezel-2: #1a1612;
  --tk-screen:  #0a1208;
  --tk-green:   #5FB52E;
  --tk-glow:    #CFD243;
  --tk-amber:   #BC4E35;
  --tk-ink:     #ECDFBC;
  --tk-line:    #2F4823;
  --tk-accent:  var(--tk-green);

  position: relative;
  max-width: 720px;
  margin: 2rem auto;
  font-family: 'Share Tech Mono', 'Space Grotesk', monospace;
  color: var(--tk-ink);
  background: linear-gradient(180deg, var(--tk-bezel) 0%, var(--tk-bezel-2) 100%);
  border: 2px solid #050403;
  border-radius: 12px;
  box-shadow:
    0 0 0 2px var(--tk-line),
    0 8px 24px rgba(0,0,0,0.55),
    0 0 20px rgba(95, 181, 46, 0.18);
  overflow: hidden;
}

/* Perforations latérales (clin d'œil "ticket") */
.ticket::before,
.ticket::after {
  content: "";
  position: absolute;
  width: 18px;
  height: 18px;
  top: 50%;
  transform: translateY(-50%);
  background: #050403;
  border: 1px solid var(--tk-line);
  border-radius: 50%;
  box-shadow: inset 0 0 6px rgba(0,0,0,0.8);
  z-index: 4;
}
.ticket::before { left: -10px; }
.ticket::after  { right: -10px; }

/* ── Bezel header ── */
.ticket__bezel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.6rem;
  padding: 0.45rem 0.9rem;
  background: linear-gradient(180deg, #1a1612 0%, #0e0c0a 100%);
  border-bottom: 1px solid var(--tk-line);
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.72rem;
  letter-spacing: 2px;
  text-transform: uppercase;
}
.ticket__tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--tk-accent);
  text-shadow: 0 0 6px var(--tk-accent);
}
.ticket__dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--tk-accent);
  box-shadow: 0 0 6px var(--tk-accent);
  animation: tk-pulse 1.8s ease-in-out infinite;
}
.ticket__node {
  flex: 1;
  text-align: center;
  color: var(--tk-ink);
  opacity: 0.55;
}
.ticket__date {
  color: var(--tk-glow);
  opacity: 0.75;
}
.ticket__date-dim { opacity: 0.4; }
@keyframes tk-pulse {
  0%, 100% { box-shadow: 0 0 4px var(--tk-accent); }
  50%      { box-shadow: 0 0 12px var(--tk-glow); }
}

/* ── Écran (corps de la transmission) ── */
.ticket__screen {
  position: relative;
  padding: 1.4rem 1.6rem 1rem;
  background:
    radial-gradient(ellipse at top, rgba(95, 181, 46, 0.08) 0%, transparent 70%),
    linear-gradient(180deg, var(--tk-screen) 0%, #050803 100%);
  border-top: 1px solid #050403;
  overflow: hidden;
}
.ticket__screen::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: repeating-linear-gradient(to bottom,
    rgba(207, 210, 67, 0.05) 0,
    rgba(207, 210, 67, 0.02) 2px,
    transparent 4px);
  z-index: 1;
}
.ticket__screen::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: radial-gradient(ellipse at center, transparent 60%, rgba(0,0,0,0.55) 100%);
  z-index: 2;
}
.ticket__screen > * { position: relative; z-index: 3; }

/* coins ticks */
.ticket__screen > .ticket__title::before,
.ticket__screen > .ticket__title::after {
  content: "";
  position: absolute;
  width: 10px;
  height: 10px;
  border: 1px solid var(--tk-accent);
  opacity: 0.55;
}
.ticket__screen > .ticket__title::before {
  top: 8px; left: 8px;
  border-right: none; border-bottom: none;
}
.ticket__screen > .ticket__title::after {
  bottom: 8px; right: 8px;
  border-left: none; border-top: none;
}

/* ── Titre ── */
.ticket__title {
  font-family: 'Frijole', 'Space Grotesk', serif;
  font-size: clamp(1.1rem, 2.2vw, 1.4rem);
  letter-spacing: 1px;
  color: var(--tk-ink);
  margin: 0 0 1rem;
  text-align: left;
  text-shadow: 0 0 12px rgba(95, 181, 46, 0.25);
  position: relative;
  padding-left: 0.4rem;
}
.ticket__title::first-letter { color: var(--tk-glow); }

/* ── Corps ── */
.ticket__body {
  font-family: 'Space Grotesk', sans-serif;
  font-size: 1rem;
  line-height: 1.65;
  color: var(--tk-ink);
  text-align: left;
}
.ticket__body p { margin: 0.5rem 0; }
.ticket__body p:first-child { margin-top: 0; }
.ticket__body p:last-child  { margin-bottom: 0; }
.ticket__body a {
  color: var(--tk-glow);
  text-decoration: underline;
  text-decoration-color: var(--tk-accent);
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  transition: color 0.2s ease;
}
.ticket__body a:hover {
  color: var(--tk-amber);
  text-decoration-color: var(--tk-amber);
}
.ticket__body strong { color: var(--tk-glow); }
.ticket__body code {
  background: rgba(95, 181, 46, 0.12);
  border: 1px solid var(--tk-line);
  padding: 0 4px;
  border-radius: 3px;
  font-size: 0.9em;
  color: var(--tk-glow);
}

/* ── Footer ── */
.ticket__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.55rem 0.9rem;
  background: linear-gradient(180deg, #0e0c0a 0%, #1a1612 100%);
  border-top: 1px dashed var(--tk-line);
  font-family: 'Share Tech Mono', monospace;
  font-size: 0.75rem;
  letter-spacing: 2px;
  text-transform: uppercase;
}
.ticket__sig {
  color: var(--tk-green);
  opacity: 0.85;
}
.ticket__cursor {
  display: inline-block;
  color: var(--tk-glow);
  margin-left: 2px;
  animation: tk-blink 1s steps(2) infinite;
}
.ticket__hash {
  color: var(--tk-amber);
  opacity: 0.85;
}
@keyframes tk-blink { 50% { opacity: 0; } }

/* ── Variantes de type ── */
.ticket--alert {
  --tk-accent: var(--tk-amber);
  box-shadow:
    0 0 0 2px #5a2418,
    0 8px 24px rgba(0,0,0,0.55),
    0 0 20px rgba(188, 78, 53, 0.25);
}
.ticket--priority {
  --tk-accent: var(--tk-glow);
  box-shadow:
    0 0 0 2px var(--tk-line),
    0 8px 28px rgba(0,0,0,0.6),
    0 0 28px rgba(207, 210, 67, 0.3);
}

@media (prefers-reduced-motion: reduce) {
  .ticket__dot,
  .ticket__cursor { animation: none !important; }
}

@media (max-width: 600px) {
  .ticket { margin: 1.2rem 0.5rem; }
  .ticket__bezel { font-size: 0.65rem; padding: 0.35rem 0.6rem; }
  .ticket__node { display: none; }
  .ticket__screen { padding: 1.1rem 1rem 0.8rem; }
  .ticket__title { font-size: 1.05rem; }
  .ticket__body { font-size: 0.95rem; }
  .ticket__footer { font-size: 0.7rem; padding: 0.45rem 0.7rem; }
}

/* ============================================================ */
/* A11Y — Global reduced-motion overrides                        */
/* (animations qui ne sont pas déjà gérées localement)           */
/* ============================================================ */
@media (prefers-reduced-motion: reduce) {
  #main-menu.is-active             { animation: none !important; }
  .key-dates__item--active .key-dates__node { animation: none !important; }
  .programme-card,
  .perk-card,
  .path-card,
  .school-card,
  .btn { transition: none !important; }
}

/* ── Dropdown Éditions ───────────────────────────── */
.editions-menu { position: relative; }

.editions-dropdown {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background: #1F3318;
  border: 1px solid #5FB52E;
  border-radius: 6px;
  padding: 0.4rem 0;
  list-style: none;
  min-width: 90px;
  z-index: 100;
}

.editions-menu:hover .editions-dropdown,
.editions-menu:focus-within .editions-dropdown { display: block; }

.editions-dropdown li a {
  display: block;
  padding: 0.4rem 1rem;
  color: #ECDFBC;
  text-decoration: none;
  font-size: 0.9rem;
  white-space: nowrap;
}

.editions-dropdown li a:hover { color: #5FB52E; }

/* Fix mobile : le déroulant Éditions passe en statique (plus de chevauchement avec les réseaux sociaux) */
@media (max-width: 60em) {
  .editions-menu { position: static; }
  .editions-dropdown { position: static; display: block; border: none; background: transparent; box-shadow: none; min-width: 0; padding: 0 0 .3rem 1rem; }
  .editions-dropdown li a { padding: .35rem 0; }
}
