/* =========================================================
   P14 Hub — Components
   Boutons · badges · cards · logos studios
   Surbrillance « verre » partagée : pas de contour franc,
   highlight interne en haut + fin liseré lumineux + glow doux.
   ========================================================= */

/* recette de surbrillance réutilisable */
.surface-glow{
  border:0;
  background:
    radial-gradient(120% 85% at 50% 122%, rgba(var(--accent-rgb),.16), transparent 60%),
    linear-gradient(165deg, var(--blue-700) 0%, var(--blue-800) 75%);
  box-shadow:
    inset 0 1px 0 rgba(220,231,239,.14),          /* highlight haut */
    inset 0 0 0 1px rgba(123,160,190,.08),         /* liseré lumineux (remplace la bordure) */
    inset 0 -16px 40px rgba(8,20,32,.35),          /* ombrage interne bas */
    0 8px 26px rgba(8,20,32,.40),
    0 0 30px rgba(var(--accent-rgb),.10);          /* glow d'accent */
}

/* ---- Boutons ---- */
.btn{
  display:inline-flex;align-items:center;gap:var(--space-2);
  font-family:var(--font-mono);font-size:.78rem;font-weight:500;
  letter-spacing:var(--tracking-wide);text-transform:uppercase;
  padding:14px 22px;border-radius:var(--radius-ui);
  border:0;color:var(--text);cursor:pointer;
  background:linear-gradient(165deg, var(--blue-600), var(--blue-800));
  box-shadow:
    inset 0 1px 0 rgba(220,231,239,.14),
    inset 0 0 0 1px rgba(123,160,190,.10),
    0 6px 18px rgba(8,20,32,.4);
  transition:var(--dur) var(--ease-out);
}
.btn:hover{transform:translateY(-1px);
  box-shadow:
    inset 0 1px 0 rgba(220,231,239,.18),
    inset 0 0 0 1px rgba(var(--accent-rgb),.30),
    0 8px 22px rgba(8,20,32,.45),
    0 0 26px rgba(var(--accent-rgb),.18);}
.btn-primary{
  background:linear-gradient(165deg, var(--accent-soft), var(--accent));color:var(--on-accent);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.30),
    0 6px 20px rgba(8,20,32,.35),
    0 0 28px rgba(var(--accent-rgb),.40);
}
.btn-primary:hover{filter:brightness(1.05);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.35),
    0 8px 24px rgba(8,20,32,.4),
    0 0 38px rgba(var(--accent-rgb),.55);}
.btn-ghost{background:transparent;box-shadow:none;color:var(--text-secondary);}
.btn-ghost:hover{color:var(--text);background:rgba(123,160,190,.06);box-shadow:none;}

/* ---- Badge / chip (capsule en verre) ---- */
.badge{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.06em;text-transform:uppercase;
  padding:6px 12px;border-radius:var(--radius-ui);border:0;
  color:var(--text-secondary);
  background:linear-gradient(165deg, rgba(123,160,190,.10), rgba(11,30,46,.55));
  box-shadow:
    inset 0 1px 0 rgba(220,231,239,.16),
    inset 0 0 0 1px rgba(123,160,190,.10),
    0 2px 10px rgba(8,20,32,.35),
    0 0 18px rgba(var(--accent-rgb),.10);
}
.badge .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--glow);}

/* ---- Card de base (rendu identique aux cartes KPI) ---- */
.card{
  position:relative;overflow:hidden;border:0;
  border-radius:var(--radius-ui);
  background:
    radial-gradient(55% 40% at 50% 116%, rgba(var(--accent-rgb),.34), transparent 62%),
    radial-gradient(135% 72% at 50% 122%, rgba(var(--accent-rgb),.18), transparent 60%),
    linear-gradient(180deg, var(--blue-800) 0%, var(--blue-900) 78%);
  padding:var(--space-6);
  box-shadow:
    inset 0 1px 0 rgba(220,231,239,.12),
    inset 0 0 0 1px rgba(123,160,190,.08),
    var(--shadow-card),
    0 0 60px rgba(var(--accent-rgb),.14);
  transition:var(--dur) var(--ease-out);
}
.card:hover{transform:translateY(-3px);
  box-shadow:
    inset 0 1px 0 rgba(220,231,239,.18),
    inset 0 0 0 1px rgba(var(--accent-rgb),.26),
    var(--shadow-card),
    0 18px 46px rgba(8,20,32,.5),
    0 0 70px rgba(var(--accent-rgb),.22);}
.card-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;}
.card-body{color:var(--text-secondary);font-size:var(--text-sm);margin-top:var(--space-3);}

/* ---- Stat (count-up) ---- */
.stat{display:flex;flex-direction:column;gap:6px;}
.stat-num{font-family:var(--font-mono);font-weight:700;font-size:var(--text-4xl);color:#fff;line-height:1;}
.stat-num .unit{color:var(--accent);}            /* accent blue-300 */
.stat-label{font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);}

/* ---- KPI card (dashboard) ---- */
.kpi-card{
  position:relative;width:380px;max-width:100%;
  border-radius:var(--radius-ui);overflow:hidden;
  padding:22px 22px 26px;
  color:var(--text);
  background:
    radial-gradient(55% 38% at 50% 113%, rgba(122,160,190,.42), transparent 62%),
    radial-gradient(135% 70% at 50% 120%, rgba(72,120,162,.20), transparent 60%),
    linear-gradient(180deg, var(--blue-800) 0%, var(--blue-900) 75%);
  border:0;
  box-shadow:
    inset 0 1px 0 rgba(220,231,239,.12),
    inset 0 0 0 1px rgba(123,160,190,.08),
    var(--shadow-card), 0 0 70px rgba(var(--accent-rgb),.14);
}
.kpi-head{display:flex;align-items:center;justify-content:space-between;}
.kpi-id{font-family:var(--font-mono);font-size:var(--text-sm);letter-spacing:.04em;color:var(--text-secondary);}
.kpi-live{
  display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--text);
  padding:7px 12px;border-radius:var(--radius-ui);border:0;
  background:linear-gradient(165deg, rgba(123,160,190,.12), rgba(11,30,46,.5));
  box-shadow:inset 0 1px 0 rgba(220,231,239,.16), inset 0 0 0 1px rgba(123,160,190,.10);
  transition:var(--dur);
}
.kpi-live:hover{box-shadow:inset 0 1px 0 rgba(220,231,239,.2), inset 0 0 0 1px rgba(var(--accent-rgb),.3), 0 0 18px rgba(var(--accent-rgb),.18);}
.kpi-live .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--glow);animation:kpiPulse 1.8s ease-in-out infinite;}
@keyframes kpiPulse{0%,100%{opacity:1}50%{opacity:.35}}

.kpi-chart{position:relative;height:150px;margin-top:16px;}
.kpi-grid{
  position:absolute;left:-22px;right:-22px;bottom:-26px;height:190px;pointer-events:none;
  background-image:
    linear-gradient(to right, rgba(123,160,190,.12) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(123,160,190,.10) 1px, transparent 1px);
  background-size:40px 32px;
  -webkit-mask-image:linear-gradient(to bottom, transparent 0%, #000 38%, #000 78%, transparent 100%);
  mask-image:linear-gradient(to bottom, transparent 0%, #000 38%, #000 78%, transparent 100%);
}
.kpi-spark{position:absolute;inset:0;width:100%;height:100%;overflow:visible;}
.spark-line{fill:none;stroke:url(#kpiStroke);stroke-width:2.4;stroke-linecap:round;
  filter:drop-shadow(0 0 6px rgba(72,120,162,.7));}
.spark-area{fill:url(#kpiFill);opacity:.9;}
.spark-dot{opacity:0;transition:opacity .4s var(--ease-out);}
.spark-dot.on{opacity:1;}
.spark-dot .halo{fill:var(--accent);opacity:.4;animation:sparkHalo 2.2s ease-out infinite;}
.spark-dot .ring{fill:none;stroke:var(--accent-soft);stroke-width:2;opacity:.85;}
.spark-dot .core{fill:#fff;filter:drop-shadow(0 0 7px var(--accent));}
@keyframes sparkHalo{0%{r:5;opacity:.5}100%{r:20;opacity:0}}

.kpi-body{position:relative;text-align:center;margin-top:14px;}
.kpi-label{color:var(--text-secondary);font-size:var(--text-base);}
.kpi-value{
  display:inline-flex;align-items:flex-start;justify-content:center;gap:2px;
  font-family:var(--font-mono);font-weight:700;font-size:78px;line-height:1;color:#fff;
  text-shadow:0 0 34px rgba(72,120,162,.55);margin-top:4px;
}
.kpi-arrow{font-family:var(--font-display);font-size:28px;color:var(--accent);margin-left:4px;margin-top:6px;
  filter:drop-shadow(0 0 8px var(--glow));}
.kpi-caption{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--text-muted);margin-top:12px;}

/* ---- Logo studio (marquee) ---- */
.studio-logo{
  font-family:var(--font-mono);font-weight:700;font-size:var(--text-lg);
  letter-spacing:.14em;color:var(--text);
  opacity:.7;transition:var(--dur);white-space:nowrap;
}
.studio-logo:hover{opacity:1;color:#fff;transform:translateY(-2px) scale(1.06);}

/* =========================================================
   MODE CLAIR — surcharges des composants
   Ces recettes en verre utilisent des fonds sombres codés en
   dur (blue-700/800/900, #fff) qui NE suivent pas les tokens.
   On les repasse sur surfaces claires + texte sombre.
   ========================================================= */
:root.light .surface-glow{
  background:
    radial-gradient(120% 85% at 50% 122%, rgba(var(--accent-rgb),.10), transparent 60%),
    linear-gradient(165deg, #ffffff 0%, var(--surface) 78%);
  box-shadow:var(--shadow-card-light), 0 0 30px rgba(var(--accent-rgb),.06);
}

:root.light .btn{
  color:var(--text);
  background:linear-gradient(165deg, #ffffff, var(--surface));
  box-shadow:var(--shadow-card-light), inset 0 0 0 1px var(--border);
}
:root.light .btn:hover{
  box-shadow:var(--shadow-card-light),
    inset 0 0 0 1px rgba(var(--accent-rgb),.35),
    0 0 20px rgba(var(--accent-rgb),.14);
}
/* Les variants doivent battre la spécificité de `:root.light .btn`
   sinon le CTA primaire perd son fond d'accent en mode clair. */
:root.light .btn-primary{
  background:linear-gradient(165deg, var(--accent-soft), var(--accent));
  color:var(--on-accent);
  box-shadow:var(--shadow-card-light), 0 0 26px rgba(var(--accent-rgb),.28);
}
:root.light .btn-primary:hover{filter:brightness(1.03);
  box-shadow:var(--shadow-card-light), 0 0 34px rgba(var(--accent-rgb),.4);}
:root.light .btn-ghost{background:transparent;box-shadow:none;color:var(--text-secondary);}
:root.light .btn-ghost:hover{color:var(--text);background:rgba(21,49,74,.05);box-shadow:none;}

:root.light .badge{
  color:var(--text-secondary);
  background:linear-gradient(165deg, #ffffff, var(--surface));
  box-shadow:var(--shadow-card-light), inset 0 0 0 1px var(--border);
}

:root.light .card,
:root.light .kpi-card{
  background:
    radial-gradient(55% 40% at 50% 116%, rgba(var(--accent-rgb),.12), transparent 62%),
    linear-gradient(180deg, #ffffff 0%, var(--surface) 82%);
  box-shadow:var(--shadow-card-light), 0 0 40px rgba(var(--accent-rgb),.06);
}
:root.light .card:hover{
  box-shadow:var(--shadow-card-light),
    inset 0 0 0 1px rgba(var(--accent-rgb),.24),
    0 18px 40px rgba(21,49,74,.12), 0 0 50px rgba(var(--accent-rgb),.10);
}

:root.light .stat-num,
:root.light .kpi-value{color:var(--text);text-shadow:none;}
:root.light .kpi-live{
  color:var(--text);
  background:linear-gradient(165deg, #ffffff, var(--surface));
  box-shadow:inset 0 0 0 1px var(--border);
}
:root.light .studio-logo:hover{color:var(--text);}

/* =========================================================
   GLASSMORPHISME · GLOW · FOMO   (passe UI modernité)
   ========================================================= */

/* Cards — backdrop blur (verre dépoli) avec fallback */
@supports (backdrop-filter: blur(1px)) {
  .card {
    backdrop-filter:blur(6px) saturate(120%);
    -webkit-backdrop-filter:blur(6px) saturate(120%);
    background:
      radial-gradient(55% 40% at 50% 116%, rgba(var(--accent-rgb),.36), transparent 62%),
      radial-gradient(135% 72% at 50% 122%, rgba(var(--accent-rgb),.20), transparent 60%),
      linear-gradient(180deg, rgba(14,36,56,.80) 0%, rgba(11,30,46,.86) 78%);
  }
}

/* Badge FOMO (urgence / places limitées) */
.badge-urgence {
  display:inline-flex;align-items:center;gap:7px;
  padding:4px 10px;
  background:linear-gradient(135deg,rgba(var(--fomo-rgb),.16),rgba(var(--fomo-rgb),.06));
  border:1px solid rgba(var(--fomo-rgb),.34);
  border-radius:var(--radius-ui);
  color:var(--fomo);
  font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;
  letter-spacing:var(--tracking-wide);text-transform:uppercase;
  white-space:nowrap;
}
.badge-urgence .dot-pulse {
  width:6px;height:6px;border-radius:50%;flex-shrink:0;
  background:var(--fomo);
  box-shadow:0 0 6px var(--fomo-glow);
  animation:kpiPulse 1.6s ease-in-out infinite;
}
@media (prefers-reduced-motion:reduce) {
  .badge-urgence .dot-pulse { animation:none; }
}

/* Badge session FOMO (places limitées / cohorte) */
.badge-session {
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 10px;
  background:linear-gradient(135deg,rgba(var(--fomo-rgb),.13),rgba(var(--fomo-rgb),.04));
  border:1px solid rgba(var(--fomo-rgb),.26);
  border-radius:var(--radius-ui);
  color:var(--fomo);
  font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;
  letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;
}

/* Rangée FOMO sous le prog-head des cartes parcours */
.fc-fomo-row {
  display:flex;flex-wrap:wrap;gap:var(--space-2);
  margin-top:var(--space-3);margin-bottom:var(--space-2);
}

/* Proof-strip (Qualiopi · France 2030 · Qualiopi) */
.proof-strip {
  display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-3);
  margin-top:var(--space-3);
  font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);
}
.proof-strip strong { color:var(--text-secondary); }
.proof-strip .dot { width:4px;height:4px;border-radius:50%;background:var(--text-muted);flex-shrink:0; }

/* Pulse glow sur bouton primaire CTA — accent univers + touche FOMO ambrée */
@keyframes ctaGlow {
  0%,100% { box-shadow:inset 0 1px 0 rgba(255,255,255,.30),0 6px 20px rgba(8,20,32,.35),0 0 20px rgba(var(--accent-rgb),.28),0 0 0px rgba(var(--fomo-rgb),0); }
  55%      { box-shadow:inset 0 1px 0 rgba(255,255,255,.35),0 8px 24px rgba(8,20,32,.42),0 0 36px rgba(var(--accent-rgb),.50),0 0 18px rgba(var(--fomo-rgb),.20); }
}
.btn-primary { animation:ctaGlow 3.8s ease-in-out infinite; }
.btn-primary:hover,
.btn-primary:focus-visible { animation:none; }
@media (prefers-reduced-motion:reduce) {
  .btn-primary { animation:none; }
}

/* Compteur à rebours */
.countdown-strip {
  display:inline-flex;align-items:center;gap:var(--space-3);
  padding:10px 18px;
  background:linear-gradient(135deg,rgba(var(--accent-rgb),.12),rgba(var(--accent-rgb),.04));
  border:1px solid rgba(var(--accent-rgb),.22);
  border-radius:var(--radius-ui);
  font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary);
  white-space:nowrap;
}
.countdown-strip .cd-label { color:var(--text-muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em; }
.countdown-strip .cd-val { color:var(--text);font-weight:700; }

/* Sticky CTA mobile */
.sticky-cta-mobile {
  position:fixed;bottom:0;left:0;right:0;z-index:300;
  padding:12px var(--space-5) calc(12px + env(safe-area-inset-bottom,0px));
  background:rgba(11,30,46,.92);
  backdrop-filter:blur(18px) saturate(160%);
  -webkit-backdrop-filter:blur(18px) saturate(160%);
  border-top:1px solid var(--border-strong);
  box-shadow:0 -8px 32px rgba(8,20,32,.50);
  display:none;          /* affiché seulement sous 760px via JS */
}
.sticky-cta-inner {
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  max-width:560px;margin:0 auto;
}
.sticky-cta-sub {
  font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);
  flex:1;min-width:0;
}
@media (max-width:760px) {
  .sticky-cta-mobile { display:block; }
  body.has-sticky-cta { padding-bottom:calc(72px + env(safe-area-inset-bottom,0px)); }
}

/* ===== CERTIFICATION LOGOS ===== */
.certif-logo-strip {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:var(--space-3);
}
.certif-logo-item {
  display:inline-flex;
  align-items:center;
  gap:6px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.12);
  border-radius:8px;
  padding:5px 10px;
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
}
.certif-logo-item img {
  height:26px;
  width:auto;
  object-fit:contain;
  display:block;
}
.certif-logo-item span {
  font-size:var(--text-xs);
  color:var(--text-secondary);
  white-space:nowrap;
}
/* Footer logo strip */
.footer-certif-logos {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:var(--space-3);
  padding:var(--space-4) 0 var(--space-3);
  border-top:1px solid rgba(255,255,255,.08);
  margin-bottom:var(--space-3);
}
.footer-certif-logos img {
  height:32px;
  width:auto;
  object-fit:contain;
  opacity:.80;
  filter:brightness(1.1);
  transition:opacity .2s;
}
.footer-certif-logos img:hover { opacity:1; }

/* ===== LIGHT MODE OVERRIDES — sections ajoutées passe UI ===== */
:root.light .certif-logo-item {
  background:rgba(14,36,56,.07);
  border-color:rgba(14,36,56,.15);
}
:root.light .certif-logo-item span { color:var(--text-secondary); }
:root.light .footer-certif-logos {
  border-top-color:rgba(14,36,56,.12);
}
:root.light .footer-certif-logos img {
  filter:brightness(.85) contrast(1.1);
  opacity:.80;
}
:root.light .badge-urgence {
  background:rgba(var(--fomo-rgb),.10);
  border-color:rgba(var(--fomo-rgb),.26);
  color:var(--fomo);
}
:root.light .badge-urgence .dot-pulse {
  background:var(--fomo);
  box-shadow:0 0 0 0 var(--fomo-glow);
}
:root.light .badge-session {
  background:rgba(var(--fomo-rgb),.09);
  border-color:rgba(var(--fomo-rgb),.22);
  color:var(--fomo);
}
:root.light .countdown-strip {
  background:linear-gradient(135deg,rgba(var(--accent-rgb),.08),rgba(var(--accent-rgb),.03));
  border-color:rgba(var(--accent-rgb),.25);
  color:var(--text);
}
:root.light .countdown-strip .cd-label { color:var(--text-muted); }
:root.light .countdown-strip .cd-val { color:var(--text); }
:root.light .sticky-cta-mobile {
  background:rgba(240,246,251,.96);
  border-top-color:rgba(14,36,56,.14);
  box-shadow:0 -6px 24px rgba(14,36,56,.12);
}
:root.light .sticky-cta-sub { color:var(--text-secondary); }
:root.light .proof-strip { color:var(--text-secondary); }
:root.light .proof-strip .dot { background:var(--text-muted); }
:root.light .fc-fomo-row .badge-session { color:var(--fomo); }
:root.light .card:hover {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.90),
    inset 0 0 0 1px rgba(var(--accent-rgb),.22),
    0 10px 30px rgba(14,36,56,.12),
    0 0 40px rgba(var(--accent-rgb),.10);
}
