/* Ω-BOXE-CLUB · Composants partages — Phase V3, remplace 3 copies derivees
   par 1 seule source canonique. Importe apres tokens.css sur toute page
   qui utilise le bandeau defilant ou les pastilles croisees. */

/* utilitaire generique — sections/elements conditionnels caches jusqu'a contenu reel
   (plus specifique que .reveal seul, gagne toujours sur les regles combinees ci-dessous) */
.hidden{display:none !important}

/* bandeau defilant — tableau d'affichage vivant du club */
.marquee-wrap{position:relative;z-index:1;width:100vw;margin-left:calc(50% - 50vw);
  overflow:hidden;background:rgba(255,255,255,.025);border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);padding:20px 0;white-space:nowrap}
.marquee-track{display:inline-flex;animation:marquee-scroll 30s linear infinite}
@media(prefers-reduced-motion:reduce){.marquee-track{animation:none}}
.marquee-item{display:inline-flex;align-items:baseline;gap:10px;padding:0 32px;flex-shrink:0}
.marquee-item .n{font-family:'Anton',Impact,sans-serif;font-size:26px;color:var(--red)}
.marquee-item .l{font-family:'Overpass Mono',monospace;font-size:11.5px;color:var(--muted);
  text-transform:uppercase;letter-spacing:.08em}
.marquee-sep{padding:0 18px;color:rgba(255,255,255,.15);font-size:18px;flex-shrink:0}
@keyframes marquee-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* pastille de pouls croise — signal vivant entre les univers Boxe/Podcast */
.cross-pulse{display:inline-flex;align-items:center;gap:6px;margin-top:22px;font-size:13px;
  color:var(--muted);text-decoration:none;background:rgba(255,255,255,.03);
  border:1px solid var(--line);border-radius:20px;padding:8px 16px;
  transition:border-color var(--t-base) ease}
.cross-pulse:hover{border-color:rgba(226,38,88,.4);color:var(--fg)}
.cross-pulse span{color:var(--red);font-weight:700;font-family:'Overpass Mono',monospace}

/* bandeau d'annonce — communication admin vers la communaute, visible meme sans compte */
.announcement-banner{display:flex;align-items:center;justify-content:center;gap:16px;
  background:var(--red);color:#fff;font-size:13.5px;font-weight:600;padding:10px 20px;
  text-align:center;position:relative;z-index:70}
.announcement-banner.hidden{display:none}
.announcement-banner #announcement-close{background:none;border:none;color:#fff;opacity:.75;
  cursor:pointer;font-size:13px;padding:2px 6px;flex-shrink:0}
.announcement-banner #announcement-close:hover{opacity:1}

/* cartes d'evenements generiques — tout evenement au-dela du gala principal */
.other-events-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.other-event-card{background:rgba(255,255,255,.03);border:1px solid var(--line);border-radius:10px;
  padding:22px}
.other-event-card h3{font-family:'Anton',Impact,sans-serif;font-weight:400;text-transform:uppercase;
  font-size:18px;margin:0 0 6px}
.other-event-card .date{font-family:'Overpass Mono',monospace;font-size:12px;color:var(--red);
  margin-bottom:14px}
.other-event-card .rsvp-btn{font-family:inherit;font-size:12.5px;font-weight:700;padding:8px 14px;
  border-radius:20px;background:transparent;border:1px solid rgba(226,38,88,.4);color:var(--red);
  cursor:pointer}
.other-event-card .rsvp-btn.joined{background:var(--red);color:#fff;border-color:var(--red);cursor:default}
.other-event-card .rsvp-count{font-size:12px;color:var(--muted);margin-left:8px}
