/* ============================================================
   JEC — Plugin « Annonce d'événement » — DA Halo
   Composants : bandeau, halo, card, pastille.
   Porté depuis design/handoff/reference-implementation.html
   (section « PLUGIN » du <style>), à l'identique.
   Dépend de tokens.css (variables --brand, --glass, --ink, etc.).
   ============================================================ */

.jec-announce { font-family:var(--font); }
.jec-announce button { font-family:inherit; }
.jec-announce :focus-visible { outline:2px solid var(--brand-deep); outline-offset:2px; }

/* ---- Bandeau ---- */
.ja-bar-wrap { position:fixed; inset:0 0 auto 0; z-index:9998; padding:var(--bar-inset);
  transition:opacity .2s var(--ease), transform .2s var(--ease); }
.ja-bar-wrap[hidden] { display:none; }
.ja-bar-wrap.is-out { opacity:0; transform:translateY(-8px); }
.ja-bar { display:flex; align-items:center; gap:var(--s-7); height:var(--bar-h);
  padding:0 var(--s-3) 0 var(--s-7); border-radius:var(--r-pill);
  background:var(--glass); backdrop-filter:var(--blur-bar); -webkit-backdrop-filter:var(--blur-bar);
  border:1px solid var(--glass-border); box-shadow:var(--sh-bar); }
.ja-live { flex:none; display:flex; align-items:center; gap:var(--s-3);
  padding:7px 13px; border-radius:var(--r-pill); background:var(--brand-12); color:var(--brand-deep);
  font:700 11px/1 var(--font); letter-spacing:.12em; text-transform:uppercase; }
.ja-dot { width:7px; height:7px; border-radius:50%; background:var(--brand);
  box-shadow:0 0 0 4px var(--brand-ring); animation:ja-pulse 1.9s ease-in-out infinite; }
.ja-track-mask { flex:1; overflow:hidden;
  mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 4%,#000 96%,transparent); }
.ja-track { display:flex; gap:80px; width:max-content;
  animation:ja-marquee var(--marquee-dur) linear infinite; }
.ja-bar:hover .ja-track, .ja-bar:focus-within .ja-track { animation-play-state:paused; }
.ja-track a { font:600 16px/var(--bar-h) var(--font); letter-spacing:-.01em; color:var(--ink);
  white-space:nowrap; text-decoration:none; }
.ja-bar-cta { flex:none; height:42px; display:flex; align-items:center; padding:0 20px;
  border-radius:var(--r-pill); background:var(--brand); color:var(--on-brand);
  font:700 13px/1 var(--font); letter-spacing:.02em; white-space:nowrap; text-decoration:none;
  box-shadow:0 6px 18px color-mix(in oklab, var(--brand) 38%, transparent);
  transition:background .15s ease; }
.ja-bar-cta:hover { background:var(--brand-deep); }
.ja-x { flex:none; width:var(--tap); height:var(--tap); border:none; border-radius:var(--r-pill);
  background:transparent; color:var(--ink-3); font-size:19px; cursor:pointer;
  transition:background .15s ease; }
.ja-x:hover { background:rgba(27,29,33,.07); }

/* ---- Halo décoratif ---- */
.ja-halo { position:fixed; right:-40px; bottom:-60px; width:320px; height:320px; border-radius:50%;
  background:var(--brand); filter:blur(90px); opacity:.35; pointer-events:none; z-index:9996; }

/* ---- Card ---- */
.ja-card { position:fixed; right:var(--edge); bottom:var(--edge); width:var(--card-w); z-index:9997;
  border-radius:var(--r-card); background:var(--glass);
  backdrop-filter:var(--blur-card); -webkit-backdrop-filter:var(--blur-card);
  border:1px solid var(--glass-border); box-shadow:var(--sh-card); overflow:hidden;
  transition:opacity .3s var(--ease), transform .3s var(--ease); }
.ja-card.is-enter { opacity:0; transform:translateY(16px); }
.ja-card.is-out { opacity:0; transform:scale(.96); transition-duration:.2s; }
.ja-media { padding:var(--s-4) var(--s-4) 0; }
.ja-media img { display:block; width:100%; height:var(--card-media-h);
  object-fit:cover; border-radius:var(--r-media); }

/* ---- Card media: speakers panel (composed style) ---- */
.ja-spk-panel { position:relative; overflow:hidden; border-radius:var(--r-media);
  padding:14px 12px 12px; background:linear-gradient(160deg, var(--brand-12), #fff 78%);
  border:1px solid var(--glass-border); }
.ja-spk-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:12px; }
.ja-spk-live { display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border-radius:var(--r-pill);
  background:var(--brand-12); color:var(--brand-deep);
  font:700 10px/1 var(--font); letter-spacing:.08em; text-transform:uppercase; }
.ja-spk-live i { width:6px; height:6px; border-radius:50%; background:var(--brand);
  box-shadow:0 0 0 3px var(--brand-ring); animation:ja-pulse 1.9s ease-in-out infinite; }
.ja-spk-row { display:flex; align-items:flex-start; gap:6px; }
.ja-spk { flex:1 1 0; min-width:0; display:flex; flex-direction:column; align-items:center;
  text-align:center; gap:6px; }
.ja-spk-av { position:relative; width:46px; height:46px; border-radius:50%; overflow:hidden; flex:none;
  display:grid; place-items:center; background:var(--brand-12);
  box-shadow:0 2px 8px rgba(27,29,33,.12), inset 0 0 0 2px rgba(255,255,255,.7); }
.ja-spk-av b { font:800 15px/1 var(--font); color:var(--brand-deep); }
.ja-spk-av img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  object-position:50% 50%; transform-origin:center; border-radius:50%; }
.ja-spk-name { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  font:700 11px/1.1 var(--font); color:var(--ink); }
.ja-spk-role { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  font:500 9px/1.2 var(--font); color:var(--ink-4); }
.ja-min { position:absolute; top:var(--s-7); right:var(--s-7); width:var(--tap); height:var(--tap);
  border:none; border-radius:var(--r-pill); background:rgba(255,255,255,.82);
  backdrop-filter:blur(10px); color:#4C4E53; font-size:18px; cursor:pointer;
  box-shadow:var(--sh-close); z-index:2; }
.ja-body { padding:var(--s-7) var(--s-8) var(--s-8); display:flex; flex-direction:column; gap:var(--s-5); }
.ja-chip { align-self:flex-start; display:flex; align-items:center; gap:var(--s-3);
  padding:6px 12px; border-radius:16px; background:var(--brand-12);
  font:700 11px/1 var(--font); letter-spacing:.1em; text-transform:uppercase; color:var(--brand-deep); }
.ja-chip i { width:6px; height:6px; border-radius:50%; background:var(--brand); }
.ja-title { margin:0; font:800 25px/1.15 var(--font); letter-spacing:-.025em; color:var(--ink);
  text-wrap:balance; }
.ja-text { margin:0; font:400 14px/1.6 var(--font); color:var(--ink-2); text-wrap:pretty; }
.ja-cta { display:flex; align-items:center; justify-content:center; gap:var(--s-3); height:48px;
  border-radius:var(--r-pill); background:var(--brand); color:var(--on-brand);
  font:700 14px/1 var(--font); text-decoration:none; box-shadow:var(--sh-cta);
  transition:background .15s ease; }
.ja-cta:hover { background:var(--brand-deep); }
.ja-logos { display:flex; align-items:center; gap:var(--s-7); padding:var(--s-5) var(--s-6);
  border-radius:var(--r-media); background:var(--glass-inner); border:1px solid var(--glass-border); }
.ja-logos span { font:700 10px/1 var(--font); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-4); }
.ja-logos img { height:20px; width:auto; }

/* ---- Pastille (card réduite) ---- */
.ja-pastille { position:fixed; right:var(--edge); bottom:var(--edge); z-index:9997;
  display:flex; align-items:center; gap:11px; min-height:52px; padding:0 var(--s-3) 0 var(--s-7);
  border-radius:var(--r-pill); background:var(--glass);
  backdrop-filter:var(--blur-bar); -webkit-backdrop-filter:var(--blur-bar);
  border:1px solid var(--glass-border); box-shadow:var(--sh-pastille); cursor:pointer;
  font:700 13px/1 var(--font); letter-spacing:-.01em; color:var(--ink);
  transition:opacity .22s var(--ease), transform .22s var(--ease); }
.ja-pastille.is-enter { opacity:0; transform:translateY(10px); }
.ja-pastille b { white-space:nowrap; font-weight:700; }
.ja-pastille i { width:8px; height:8px; border-radius:50%; background:var(--brand);
  box-shadow:0 0 0 5px var(--brand-ring); animation:ja-pulse 1.9s ease-in-out infinite; }
.ja-pastille u { width:36px; height:36px; border-radius:50%; display:grid; place-items:center;
  background:var(--brand); color:var(--on-brand); text-decoration:none; font-size:15px; }

@keyframes ja-marquee { from { transform:translateX(0); } to { transform:translateX(-50%); } }
@keyframes ja-pulse { 0%,100% { opacity:1; } 50% { opacity:.35; } }

@media (max-width:767px) {
  .ja-bar { gap:var(--s-4); padding:0 var(--s-1) 0 var(--s-5); }
  .ja-live { padding:0; background:none; }
  .ja-live b { display:none; }
  .ja-bar-cta { display:none; }
  .ja-track a { font-size:13px; line-height:var(--bar-h); }
  .ja-card { left:var(--edge); right:var(--edge); width:auto; }
  .ja-title { font-size:19px; }
  .ja-text.is-mobile-hidden { display:none; }
  .ja-cta { height:44px; font-size:13px; }
}
@media (max-width:767px) {
  /* Speakers panel: compact to photos only on mobile. */
  .ja-spk-name, .ja-spk-role { display:none; }
  .ja-spk-av { width:40px; height:40px; }
  .ja-spk-av b { font-size:13px; }
  .ja-spk-head { margin-bottom:10px; }
}
@media (prefers-reduced-motion:reduce) {
  .ja-track { animation:none; }
  .ja-track a:nth-child(2) { display:none; }
  .ja-track { width:100%; }
  .ja-track a { overflow:hidden; text-overflow:ellipsis; max-width:100%; }
}
