/* ── Bootcamps : règle de l'Académie (en-tête sombre et animé, contenu clair, cartes sombres) ──
   Les cartes gardent leurs couleurs ; le bouton du programme ouvert scintille. */
body { background: #f5f7fb; }

/* En-tête sombre, pleine largeur, avec le mirage */
.hero { background: radial-gradient(800px 420px at 50% 30%, rgba(0,212,255,.10), transparent 70%), #0a0a14;
  padding: 96px 48px 88px; isolation: isolate; border-bottom: 1px solid rgba(0,212,255,.15); }
.hero.ds-mirage-actif { background: #0a0a14; }
.hero .ds-mirage { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; display: block; }
.hero.ds-mirage-actif > .am-decor { display: none; }
.hero::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: radial-gradient(70% 90% at 50% 50%, rgba(10,10,20,.35), rgba(10,10,20,0) 70%), linear-gradient(0deg, rgba(10,10,20,.8), rgba(10,10,20,0) 30%); }
.hero::before { z-index: 1; }
.hero .ds-etincelles { z-index: 2 !important; }
.hero > h1, .hero > p { position: relative; z-index: 3; }
.hero h1 em { text-shadow: 0 0 28px rgba(0,212,255,.45); }
.hero .hero-sub { color: rgba(226,232,240,.78); }

/* Contenu clair */
.catalogue { padding-top: 64px; }
.cat-next h2 { color: #0f1523; }
.cat-next span { color: #5a6478; }
.cat-next::after { background: rgba(15,21,35,.12); }
.bc-open { box-shadow: 0 24px 60px rgba(15,21,35,.25); }
.bc-open:hover { box-shadow: 0 30px 80px rgba(15,21,35,.32), 0 0 0 1px rgba(232,192,125,.2); }
.bc-next { box-shadow: 0 10px 30px rgba(15,21,35,.14); }
.bc-next:hover { box-shadow: 0 22px 50px rgba(15,21,35,.24); }
.avis { border-top-color: rgba(15,21,35,.1); }
.avis h2 { color: #0f1523; }
.avis-intro { color: #4a5468; }
.avis-carte { box-shadow: 0 10px 30px rgba(15,21,35,.12); }
.avis-plus { border-color: rgba(15,21,35,.2); color: #1f2a3d; }
.avis-plus:hover { border-color: #0891b2; color: #0891b2; }

/* ── Le programme ouvert : bouton vivant et scintillant ── */
.bc-open-status i { animation: bc-pouls 2s ease-in-out infinite; }
@keyframes bc-pouls { 0%, 100% { box-shadow: 0 0 0 4px rgba(232,192,125,.16); } 50% { box-shadow: 0 0 0 8px rgba(232,192,125,.06), 0 0 14px rgba(245,220,176,.9); } }
.bc-open-side { position: relative; }
.bc-open-cta { position: relative; overflow: hidden; isolation: isolate; z-index: 2;
  animation: bc-lueur 2.6s ease-in-out infinite; transition: transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s; }
/* reflet qui traverse le bouton */
.bc-open-cta::before { content: ""; position: absolute; inset: -2px; z-index: -1; pointer-events: none;
  background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.75) 48%, rgba(255,250,235,.95) 50%, rgba(255,255,255,.75) 52%, transparent 70%);
  background-size: 250% 100%; background-position: 160% 0; mix-blend-mode: soft-light; animation: bc-reflet 3.2s cubic-bezier(.65,0,.35,1) infinite; }
/* scintillements : petites étoiles qui s'allument tour à tour sur le bouton */
.bc-open-cta .bc-scintille { position: absolute; width: 10px; height: 10px; pointer-events: none; opacity: 0;
  background: radial-gradient(circle, #fff 0 18%, transparent 20%), conic-gradient(from 45deg, transparent 0 12%, #fff 13% 14%, transparent 15% 37%, #fff 38% 39%, transparent 40% 62%, #fff 63% 64%, transparent 65% 87%, #fff 88% 89%, transparent 90%);
  filter: drop-shadow(0 0 4px rgba(255,255,255,.9)); animation: bc-etoile 2.4s ease-in-out infinite; }
.bc-open-cta .bc-scintille.s1 { top: 18%; left: 12%; animation-delay: .2s; }
.bc-open-cta .bc-scintille.s2 { top: 58%; left: 46%; animation-delay: 1s; width: 8px; height: 8px; }
.bc-open-cta .bc-scintille.s3 { top: 22%; right: 10%; animation-delay: 1.7s; }
.bc-open-cta .bc-fleche { display: inline-block; animation: bc-fleche 1.6s ease-in-out infinite; }
.bc-open-cta:hover { transform: translateY(-3px) scale(1.03); animation-play-state: paused; box-shadow: 0 16px 44px rgba(232,192,125,.5), 0 0 0 4px rgba(232,192,125,.18); }
@keyframes bc-lueur { 0%, 100% { box-shadow: 0 8px 24px rgba(232,192,125,.22), 0 0 0 0 rgba(232,192,125,.45); }
  50% { box-shadow: 0 12px 34px rgba(232,192,125,.4), 0 0 0 8px rgba(232,192,125,0); } }
@keyframes bc-reflet { 0% { background-position: 160% 0; } 45%, 100% { background-position: -60% 0; } }
@keyframes bc-etoile { 0%, 100% { opacity: 0; transform: scale(.3) rotate(0deg); } 45% { opacity: 1; transform: scale(1.15) rotate(45deg); } 60% { opacity: .8; transform: scale(.9) rotate(60deg); } }
@keyframes bc-fleche { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(4px); } }

/* Appel au clic : ondes qui partent du bouton, petit « coucou » régulier, bouton aimanté par la souris */
.bc-cta-zone { position: relative; display: block; margin-top: auto; }
.bc-cta-zone .bc-open-cta { margin-top: 0; }
/* Étincelles du bouton : zone un peu plus grande que lui, au-dessus, sans gêner le clic */
.bc-cta-feu { position: absolute; inset: -44px -26px -18px; z-index: 3; pointer-events: none; display: block; }
.bc-onde { position: absolute; inset: 0; border-radius: 11px; pointer-events: none; z-index: 1;
  border: 2px solid rgba(245,220,176,.75); opacity: 0; animation: bc-onde 2.8s cubic-bezier(.16,1,.3,1) infinite; }
.bc-onde.o2 { animation-delay: 1.4s; }
@keyframes bc-onde { 0% { opacity: .85; transform: scale(1); } 100% { opacity: 0; transform: scale(1.18, 1.6); } }
.bc-open-cta.bc-appel { animation: bc-appel .9s cubic-bezier(.34,1.56,.64,1), bc-lueur 2.6s ease-in-out infinite; }
@keyframes bc-appel { 0% { scale: 1; rotate: 0deg; } 25% { scale: 1.07; rotate: -1.5deg; } 45% { scale: .98; rotate: 1.2deg; }
  65% { scale: 1.04; rotate: -.6deg; } 100% { scale: 1; rotate: 0deg; } }
.bc-open-cta { will-change: transform; }
.bc-cta-zone:hover .bc-onde { animation-duration: 1.4s; border-color: rgba(255,240,210,.95); }
@media (prefers-reduced-motion: reduce) { .bc-onde { display: none; } .bc-open-cta.bc-appel { animation: none; } }

@media (max-width: 900px) { .hero { padding: 64px 22px 56px; } .avis { padding: 48px 20px 64px; } .avis-grille { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) {
  .bc-open-cta, .bc-open-cta::before, .bc-open-cta .bc-scintille, .bc-open-cta .bc-fleche, .bc-open-status i { animation: none; }
}

/* Deux programmes ouverts : Data Analyst prend une teinte émeraude, l'or reste celui de l'inscription */
.bc-open + .bc-open { margin-top: 28px; }
.bc-open-da { background: linear-gradient(135deg, #0f2b2a 0%, #0c2023 42%, #091519 100%); }
.bc-open-da h2 span { color: #6ee7b7; border-color: rgba(110,231,183,.35); background: rgba(16,185,129,.1); }
.bc-open-da .bc-open-side { background: rgba(4,14,16,.45); }
