:root{
  --navy-deep:#0a1440;
  --navy:#0f1f5e;
  --blue:#16247d;
  --blue-light:#1e3a8a;
  --red:#dc2626;
  --gold:#ffd24d;
  --muted:#9aa5d1;
}
*{box-sizing:border-box;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  background:#fff;
}
a{color:inherit;text-decoration:none;}
a:hover{opacity:0.85;}
button{font-family:inherit;cursor:pointer;}
input,textarea,select{font-family:inherit;font-size:13px;padding:10px 12px;border:1px solid #dfe2ee;border-radius:8px;width:100%;color:#1a2144;background:#fff;}
label{font-size:12.5px;font-weight:600;color:#3a4166;display:block;margin-bottom:6px;}
img{max-width:100%;display:block;}

/* Menu mobile (hamburger) partagé par l'en-tête de toutes les pages. Sur desktop, .nav-toggle-btn
   reste caché et le nav/actions du header s'affichent normalement en ligne. Sous 880px, ils sont
   masqués par défaut et ne réapparaissent (empilés, en pleine largeur) que lorsque le header porte
   la classe .is-open, basculée par le bouton hamburger. */
.nav-toggle-btn{display:none;background:transparent;border:none;padding:6px;margin:0 0 0 auto;cursor:pointer;flex-shrink:0;}
.nav-toggle-btn svg{display:block;}

/* Bannière "Dernière ligne droite" (urgence mobilisatrice de fin d'inscriptions) : accent doré
   (distinct du bleu marine/rouge de la charte, pour ne pas se confondre avec une alerte d'erreur),
   légère pulsation d'attention — jamais agressive, voir @keyframes urgence-pulse. */
.urgence-banniere{background:linear-gradient(90deg, #fde68a 0%, #fbbf24 50%, #fde68a 100%);background-size:200% 100%;animation:urgence-pulse 5s ease-in-out infinite;border-bottom:1px solid #f5c563;}
@keyframes urgence-pulse{0%,100%{background-position:0% 50%;}50%{background-position:100% 50%;}}
#urgence-message{transition:opacity 0.6s ease-in-out;}
#urgence-message.fade-out{opacity:0;}
@media (prefers-reduced-motion: reduce){
  .urgence-banniere{animation:none;}
}

/* Feu de circulation (Organisations Exposantes, suivi par secteur) : 3 pastilles empilées
   (rouge/jaune/verte), une seule allumée à la fois selon l'état du secteur. Vert et jaune
   clignotent doucement (secteur encore actif) ; le rouge reste fixe (secteur fermé). Ne révèle
   aucun chiffre — uniquement l'état, voir netlify/lib/secteurs.js pour la logique. */
.feu-tricolore{display:inline-flex;flex-direction:column;gap:3px;padding:4px;background:#1a1a1a;border-radius:5px;vertical-align:middle;flex-shrink:0;}
.feu-tricolore .lampe{width:8px;height:8px;border-radius:50%;background:#3a3a3a;opacity:0.35;}
.feu-tricolore .lampe.on.rouge{background:#ef4444;opacity:1;box-shadow:0 0 5px rgba(239,68,68,0.85);}
.feu-tricolore .lampe.on.jaune{background:#eab308;opacity:1;box-shadow:0 0 5px rgba(234,179,8,0.85);animation:feu-clignote 1.8s ease-in-out infinite;}
.feu-tricolore .lampe.on.vert{background:#22c55e;opacity:1;box-shadow:0 0 5px rgba(34,197,94,0.85);animation:feu-clignote 1.8s ease-in-out infinite;}
@keyframes feu-clignote{0%,100%{opacity:1;}50%{opacity:0.3;}}
@media (prefers-reduced-motion: reduce){
  .feu-tricolore .lampe.on.jaune,.feu-tricolore .lampe.on.vert{animation:none;}
}

/* Photos officielles (édition précédente) : cadre uniforme réutilisé partout où une photo du
   Salon est affichée (galerie, illustrations "Pourquoi participer", etc.). */
.photo-frame{display:block;width:100%;height:auto;border-radius:14px;box-shadow:0 10px 30px rgba(10,20,64,0.14);}
.gallery-grid{display:grid;grid-template-columns:repeat(3, minmax(0,1fr));gap:20px;}
.gallery-item{position:relative;}
.gallery-caption{margin-top:10px;font-size:13px;color:#5b6280;line-height:1.5;}
@media (max-width:880px){
  .gallery-grid{grid-template-columns:1fr;}
}

@media (max-width:880px){
  .nav-toggle-btn{display:flex;align-items:center;justify-content:center;}
  header.site-header-bar > nav,
  header.site-header-bar > .site-header-actions{
    display:none !important;
    width:100%;
    flex-direction:column !important;
    align-items:flex-start !important;
    gap:0 !important;
  }
  header.site-header-bar.is-open > nav,
  header.site-header-bar.is-open > .site-header-actions{
    display:flex !important;
  }
  header.site-header-bar > nav{padding-top:14px;}
  header.site-header-bar > nav a{display:block;width:100%;padding:12px 0;border-bottom:1px solid rgba(255,255,255,0.1) !important;}
  header.site-header-bar > .site-header-actions{
    flex-direction:row !important;
    flex-wrap:wrap;
    gap:14px !important;
    padding:16px 0 4px;
    margin-top:6px;
    border-top:1px solid rgba(255,255,255,0.14);
  }
}
