/* =========================================================
   Parallel 14 — Site layout (nav, footer, pages)
   S'appuie sur le design system (tokens/base/effects/components)
   ========================================================= */

:root{--nav-h:84px;}

/* ---------- Navigation ---------- */
/* Le header (#site-nav) porte le sticky : c'est un enfant direct de <body>, donc
   son bloc conteneur est la page entière et il reste épinglé sur tout le scroll.
   Poser le sticky sur .nav (enfant d'un header qui l'enveloppe à sa hauteur
   exacte) ne laissait aucune marge de déplacement → la nav défilait avec la page. */
#site-nav{position:sticky;top:0;z-index:40;}
.nav{
  position:relative;z-index:40;
  /* Taille de typo unifiée pour tous les libellés du header (onglets méga-menu,
     liens directs, bascule langue, CTA). Contrainte : jusqu'à 5 onglets de
     méga-menu par univers (Academy, Formation Continue) → valeur compacte
     calée sur le plus long libellé d'onglet (« Parcours certifiants ») dans une
     grille à 5 colonnes égales, pour éviter tout chevauchement. */
  --nav-text:.61rem;
  /* Glass cohérent avec .glass-vignette (effects.css) + glow par univers (--glow) */
  -webkit-backdrop-filter:blur(22px) saturate(180%);
  backdrop-filter:blur(22px) saturate(180%);
  background:linear-gradient(180deg, rgba(8,20,32,.78), rgba(8,20,32,.55));
  border-bottom:1px solid var(--border);
  box-shadow:
    0 10px 30px rgba(8,20,32,.45),
    0 8px 28px -10px var(--glow),
    inset 0 1px 0 rgba(220,231,239,.10);
}
.nav-inner{
  max-width:1200px;margin-inline:auto;padding:14px var(--space-5);
  display:flex;align-items:center;gap:var(--space-4);
}
.brand{display:flex;align-items:center;gap:12px;font-family:var(--font-display);font-weight:700;
  font-size:var(--text-lg);letter-spacing:-.01em;color:var(--text);white-space:nowrap;}
.brand .mark{
  width:34px;height:34px;border-radius:9px;display:grid;place-items:center;
  font-family:var(--font-mono);font-weight:700;font-size:13px;color:var(--on-accent);
  background:linear-gradient(150deg, var(--accent-soft), var(--accent));
  box-shadow:0 0 18px rgba(var(--accent-rgb),.5);
}
.brand small{display:block;font-family:var(--font-mono);font-weight:400;font-size:10px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--text-muted);margin-top:2px;}
.nav-collapse{display:flex;align-items:center;gap:var(--space-4);flex:1;min-width:0;}
.nav-menu{display:flex;align-items:center;gap:2px;flex:1;min-width:0;}
.nav-link{
  font-family:var(--font-mono);font-size:var(--nav-text);letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-secondary);padding:9px 13px;border-radius:var(--radius-ui);
  transition:var(--dur) var(--ease-out);cursor:pointer;white-space:nowrap;border:0;background:transparent;
}
.nav-link:hover{color:var(--text);background:rgba(123,160,190,.08);}
.nav-link.active{color:var(--text);background:rgba(var(--accent-rgb),.14);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.30);}
.nav-tools{display:flex;align-items:center;gap:8px;}
.nav-cta{
  font-family:var(--font-mono);font-size:var(--nav-text);font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  padding:8px 11px;border-radius:var(--radius-ui);white-space:nowrap;cursor:pointer;
  color:#fff;background:rgba(var(--accent-rgb),.92);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.5),0 4px 14px rgba(var(--accent-rgb),.28);
  transition:transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),background var(--dur);
}
.nav-cta:hover{background:rgb(var(--accent-rgb));transform:translateY(-1px);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.6),0 6px 20px rgba(var(--accent-rgb),.38);}
.lang-toggle{display:inline-flex;border-radius:var(--radius-ui);overflow:hidden;
  box-shadow:inset 0 0 0 1px var(--border-strong);}
.lang-toggle button{
  font-family:var(--font-mono);font-size:var(--nav-text);font-weight:600;letter-spacing:.08em;
  padding:7px 11px;border:0;cursor:pointer;background:transparent;color:var(--text-muted);transition:var(--dur);
}
.lang-toggle button.active{background:linear-gradient(165deg,var(--accent-soft),var(--accent));color:var(--on-accent);}
/* ---- Bascule thème clair / sombre ---- */
.theme-toggle{display:grid;place-items:center;flex:0 0 auto;width:38px;height:38px;
  border:0;border-radius:var(--radius-ui);cursor:pointer;background:transparent;color:var(--text-secondary);
  box-shadow:inset 0 0 0 1px var(--border-strong);
  transition:color var(--dur),background var(--dur),box-shadow var(--dur),transform var(--dur);}
.theme-toggle:hover{color:var(--text);background:rgba(var(--accent-rgb),.10);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.5);}
.theme-toggle:active{transform:translateY(1px);}
.theme-toggle:focus-visible{outline:2px solid rgba(var(--accent-rgb),.6);outline-offset:2px;}
.theme-toggle-icon{display:grid;place-items:center;width:18px;height:18px;}
.theme-toggle-icon svg{grid-area:1/1;display:block;
  transition:opacity var(--dur),transform var(--dur);}
/* On affiche l'icône de la CIBLE : soleil en mode sombre (→ passe en clair),
   lune en mode clair (→ passe en sombre). L'autre icône se fond en crossfade. */
.theme-toggle .ico-sun{opacity:1;transform:none;}
.theme-toggle .ico-moon{opacity:0;transform:rotate(-45deg) scale(.55);pointer-events:none;}
html.light .theme-toggle .ico-sun{opacity:0;transform:rotate(45deg) scale(.55);pointer-events:none;}
html.light .theme-toggle .ico-moon{opacity:1;transform:none;}
.nav-burger{display:none;margin-left:auto;background:transparent;border:0;cursor:pointer;
  width:42px;height:42px;border-radius:var(--radius-ui);color:var(--text);
  box-shadow:inset 0 0 0 1px var(--border-strong);font-size:18px;}
.caret{font-size:.62rem;color:var(--text-muted);transition:transform .25s var(--ease-out);}

/* ---- Sélecteur d'univers (volet à gauche) ---- */
.nav-switcher{position:relative;}
.universe-trigger{display:flex;align-items:center;gap:10px;background:transparent;cursor:pointer;
  padding:6px 12px;border-radius:var(--radius-ui);border:0;color:var(--text);
  box-shadow:inset 0 0 0 1px var(--border-strong);transition:var(--dur);}
.universe-trigger:hover{background:rgba(123,160,190,.08);}
.universe-brand{height:36px;width:auto;max-width:200px;object-fit:contain;display:block;}
.universe-brand.is-tinted{aspect-ratio:var(--ar,1144/280);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat;}
.universe-panel{position:absolute;top:calc(100% + 8px);left:0;z-index:50;display:none;width:300px;padding:8px;
  border-radius:14px;
  background:linear-gradient(180deg, rgba(8,20,32,.97), rgba(8,20,32,.93));
  -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
  box-shadow:0 24px 60px rgba(8,20,32,.55), 0 0 28px var(--glow),
    inset 0 1px 0 rgba(220,231,239,.10), inset 0 0 0 1px var(--border);}
.nav-switcher:hover .universe-panel,.nav-switcher.hover-open .universe-panel,.nav-switcher.open .universe-panel{display:block;}
.universe-panel-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--text-muted);padding:6px 10px 8px;margin:0;}
.universe-row{display:flex;align-items:center;padding:12px 14px;border-radius:10px;transition:background .2s;}
.universe-row:hover{background:rgba(var(--u),.12);}
.universe-row.active{background:rgba(var(--u),.14);box-shadow:inset 0 0 0 1px rgba(var(--u),.45);}
.universe-row-logo{height:36px;width:auto;max-width:100%;object-fit:contain;display:block;}
.universe-row-logo.is-tinted{aspect-ratio:var(--ar,1144/280);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat;}

/* ---- Méga menu déroulant ---- */
.nav-item{position:relative;}
.nav-toggle{display:inline-flex;align-items:center;gap:6px;}
.nav-dropdown{position:absolute;top:calc(100% + 8px);left:0;z-index:50;display:none;min-width:240px;padding:8px;
  border-radius:14px;
  background:linear-gradient(180deg, rgba(8,20,32,.97), rgba(8,20,32,.93));
  -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
  box-shadow:0 24px 60px rgba(8,20,32,.55), 0 0 28px var(--glow),
    inset 0 1px 0 rgba(220,231,239,.10), inset 0 0 0 1px var(--border);}
.nav-dropdown::before{content:"";position:absolute;top:-8px;left:0;right:0;height:8px;}
.nav-item.has-children:hover .nav-dropdown,.nav-item.has-children.hover-open .nav-dropdown,.nav-item.open .nav-dropdown{display:block;}
.nav-dropdown-link{display:block;padding:10px 12px;border-radius:8px;
  font-family:var(--font-mono);font-size:.74rem;letter-spacing:.04em;color:var(--text-secondary);
  transition:background .2s,color .2s;}
.nav-dropdown-link:hover{background:rgba(var(--accent-rgb),.12);color:var(--text);}
.nav-mega-head{font-family:var(--font-mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--accent);padding:6px 12px 8px;margin:0 0 2px;
  border-bottom:1px solid rgba(var(--accent-rgb),.18);}
.nav-mega-grid{display:grid;grid-template-columns:1fr;gap:1px;padding-top:4px;}
/* Un seul méga-menu par univers : toutes les rubriques en colonnes */
.nav-mega{right:0;left:auto;max-width:min(1060px,94vw);}
.nav-mega .nav-mega-grid{grid-template-columns:repeat(var(--nav-cols,3),minmax(0,1fr));gap:2px 6px;align-items:start;padding-top:2px;}
.nav-mega-col{display:flex;flex-direction:column;min-width:0;}

/* ---- Barre méga « déroulante » : les titres de rubriques vivent dans le header,
   le panneau de liens descend en s'alignant sous chaque titre. ---- */
.nav-megabar{position:relative;flex:1 1 auto;min-width:0;}
.nav-megabar-row{display:grid;grid-template-columns:repeat(var(--nav-cols,3),minmax(0,1fr));
  gap:2px 6px;align-items:center;width:100%;padding:6px 4px;background:transparent;border:0;cursor:pointer;
  /* le <button> hérite text-align:center → les titres se centraient au-dessus de
     colonnes de liens alignées à gauche ; on force l'alignement à gauche. */
  text-align:left;}
.nav-megabar-mlabel{display:none;}
.nav-megabar-tab{font-family:var(--font-mono);font-size:var(--nav-text);letter-spacing:.02em;text-transform:uppercase;
  line-height:1.2;color:var(--text-secondary);padding:8px 5px;border-radius:var(--radius-ui);
  white-space:nowrap;transition:color var(--dur),background var(--dur);}
.nav-megabar-row:hover .nav-megabar-tab,.nav-megabar.hover-open .nav-megabar-tab,.nav-megabar.open .nav-megabar-tab{color:var(--text);}
.nav-megabar-caret{display:none;}
/* le panneau prend la largeur exacte de la barre → colonnes alignées sous les titres.
   L'inset horizontal DOIT être identique à celui de .nav-megabar-row (4px) sinon
   les colonnes de liens décalent par rapport aux titres. */
.nav-megabar .nav-mega{left:0;right:auto;width:100%;max-width:none;padding:8px 4px;}
.nav-megabar .nav-mega .nav-mega-head{display:none;}
.nav-switcher.open>.universe-trigger .caret,.nav-switcher.hover-open>.universe-trigger .caret,.nav-item.open .caret,.nav-item.hover-open .caret{transform:rotate(180deg);}

@media(max-width:920px){
  .nav-burger{display:grid;place-items:center;}
  .nav-inner{flex-wrap:wrap;position:relative;}
  .nav-collapse{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;
    gap:var(--space-3);padding:var(--space-4) var(--space-6);
    background:linear-gradient(180deg, rgba(8,20,32,.82), rgba(8,20,32,.7));
    -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
    border-bottom:1px solid var(--border);
    box-shadow:0 24px 60px rgba(8,20,32,.5), 0 0 28px var(--glow), inset 0 1px 0 rgba(220,231,239,.10);
    max-height:calc(100vh - 70px);overflow:auto;}
  .nav-collapse.open{display:flex;}
  .nav-switcher{margin-right:auto;}
  .universe-brand{max-width:42vw;}
  .nav-menu{flex-direction:column;align-items:stretch;margin-left:0;gap:2px;}
  .nav-link,.nav-toggle{width:100%;text-align:left;justify-content:space-between;padding:12px 14px;}
  .nav-tools{margin-left:0;}
  /* Le sélecteur d'univers reste un volet flottant (il vit dans l'en-tête) */
  .universe-panel{left:0;right:auto;max-width:calc(100vw - 2 * var(--space-5));}
  /* Méga menu (dans le collapse) : accordéon en flux, ouvert par .open uniquement */
  .nav-dropdown{position:static;width:auto;min-width:0;display:none;
    background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
    padding:2px 0 6px var(--space-4);}
  .nav-item.has-children:hover .nav-dropdown,.nav-item.has-children.hover-open .nav-dropdown{display:none;}
  .nav-item.open .nav-dropdown{display:block;}
  .nav-mega{max-width:none;}
  .nav-mega .nav-mega-grid{grid-template-columns:1fr;}
  .nav-mega-head{padding-left:0;border-bottom:0;padding-top:2px;}
  /* Barre méga : sur mobile, un déclencheur simple « Explorer » ; les titres de
     rubriques reviennent DANS le panneau (accordéon) pour garder le regroupement. */
  .nav-megabar-row{display:flex;grid-template-columns:none;justify-content:space-between;
    align-items:center;width:100%;text-align:left;padding:12px 14px;}
  .nav-megabar-mlabel{display:inline-flex;font-family:var(--font-mono);font-size:.74rem;
    letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);}
  .nav-megabar-tab{display:none;}
  .nav-megabar-caret{display:inline-flex;}
  .nav-megabar .nav-mega .nav-mega-head{display:block;}
}

/* ---------- Page scaffolding ---------- */
.page{animation:pageIn .5s var(--ease-out);}
@keyframes pageIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}

.page-hero{position:relative;overflow:hidden;padding:var(--space-10) 0 var(--space-9);}
.page-hero-art{min-height:clamp(560px,74vh,840px);display:flex;align-items:center;}
.page-hero .hero-bg{position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(60% 90% at 82% 6%, rgba(var(--accent-rgb),.30), transparent 60%),
    radial-gradient(55% 80% at 8% 96%, rgba(var(--accent-rgb),.18), transparent 60%),
    var(--bg-deep);}
.page-hero h1{max-width:18ch;}
.hero-sub{max-width:60ch;margin-top:var(--space-5);font-size:var(--text-lg);color:var(--text-secondary);}
.hero-loc{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted);
  letter-spacing:.08em;margin-top:var(--space-4);}
.hero-cta{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-top:var(--space-6);}
.badge-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:var(--space-5);}

section.section{padding:var(--space-9) 0;border-top:1px solid var(--border);}
.section-head{display:flex;flex-direction:column;gap:var(--space-3);margin-bottom:var(--space-7);max-width:64ch;}
.section-head .num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent);letter-spacing:.2em;}
.section-head h2{font-size:var(--text-3xl);}
.section-head p{color:var(--text-secondary);}

/* image placeholder */
.img-ph{position:relative;border-radius:var(--radius-photo);overflow:hidden;min-height:240px;
  display:grid;place-items:center;text-align:center;
  background:
    repeating-linear-gradient(135deg, rgba(123,160,190,.06) 0 2px, transparent 2px 16px),
    linear-gradient(165deg, var(--blue-700), var(--blue-900));
  box-shadow:inset 0 0 0 1px var(--border);}
.img-ph span{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-muted);max-width:30ch;padding:var(--space-4);}
.img-ph::before{content:"";position:absolute;width:54px;height:54px;border-radius:50%;
  border:1px solid rgba(var(--accent-rgb),.4);top:calc(50% - 46px);
  background:radial-gradient(circle,rgba(var(--accent-rgb),.18),transparent 70%);}

/* Image de couverture réelle (cartes projets / blog, affiches, articles) */
.cover-img{display:block;width:100%;height:100%;object-fit:cover;
  transition:transform .6s cubic-bezier(.16,1,.3,1);}

/* Photo réelle qui remplit une colonne (remplace .img-ph dans les pages programme) */
.program-media{position:relative;margin:0;height:100%;min-height:240px;overflow:hidden;
  border-radius:var(--radius-photo);box-shadow:inset 0 0 0 1px var(--border);}
.program-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 60%,rgba(11,30,46,.45) 100%);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.14);}
.program-media:hover .cover-img{transform:scale(1.04);}
.project-card-thumb,.blog-card-thumb,.project-cover,.article-cover{overflow:hidden;}
.project-card-thumb .cover-img{aspect-ratio:3/4;}
.project-cover{margin:0;border-radius:var(--radius-photo);}
.project-cover .cover-img{aspect-ratio:16/9;}
.article-cover{border-radius:var(--radius-photo);}
.article-cover .cover-img{aspect-ratio:16/9;}
.blog-card-thumb .cover-img{position:absolute;inset:0;width:100%;height:100%;min-height:160px;}
.project-card:hover .cover-img,.blog-card:hover .cover-img{transform:scale(1.05);}

/* Portrait réel d'un formateur (remplace .img-ph dans la carte) */
.teacher-photo{position:relative;border-radius:var(--radius-photo);overflow:hidden;
  aspect-ratio:4/5;background:linear-gradient(165deg,var(--blue-700),var(--blue-900));
  box-shadow:inset 0 0 0 1px var(--border);}
.teacher-photo img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 18%;}
.teacher-photo::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 55%,rgba(var(--accent-rgb),.12) 100%);}

/* actualités : portraits réels côte à côte (remplace .img-ph) */
.actu-duo{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);}
.actu-photo{position:relative;margin:0;border-radius:var(--radius-photo);overflow:hidden;
  aspect-ratio:4/5;background:linear-gradient(165deg,var(--blue-700),var(--blue-900));
  box-shadow:inset 0 0 0 1px var(--border);}
.actu-photo img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 18%;}
.actu-photo::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 55%,rgba(var(--accent-rgb),.12) 100%);}

/* testimonial author + avatar */
.quote-author{display:flex;align-items:center;gap:var(--space-3);
  margin-top:var(--space-4);}
.quote-avatar{flex:0 0 auto;width:52px;height:52px;border-radius:var(--radius-pill);
  overflow:hidden;background:linear-gradient(165deg,var(--blue-700),var(--blue-900));
  box-shadow:inset 0 0 0 1px var(--border);}
.quote-avatar img{width:100%;height:100%;object-fit:cover;object-position:center 18%;}

/* formateur LinkedIn link */
.teacher-linkedin{display:inline-flex;align-items:center;gap:.4em;
  margin-top:var(--space-3);font-size:var(--text-sm);font-weight:600;
  letter-spacing:.01em;color:rgb(var(--accent-rgb));text-decoration:none;
  transition:opacity var(--dur-fast,.15s) ease;}
.teacher-linkedin:hover{text-decoration:underline;opacity:.85;}

/* grids */
.grid{display:grid;gap:var(--space-5);}
.cols-2{grid-template-columns:repeat(2,1fr);}
.cols-3{grid-template-columns:repeat(3,1fr);}
.cols-4{grid-template-columns:repeat(4,1fr);}
@media(max-width:920px){.cols-3,.cols-4{grid-template-columns:repeat(2,1fr);}}
@media(max-width:680px){.cols-2,.cols-3,.cols-4{grid-template-columns:1fr;}}

/* universe / program card */
.u-card{display:flex;flex-direction:column;gap:var(--space-4);height:100%;cursor:pointer;}
.u-card .tag{align-self:flex-start;}
.u-card-logo{height:30px;width:auto;max-width:72%;object-fit:contain;display:block;align-self:flex-start;}
.u-card-logo.is-tinted{aspect-ratio:var(--ar,1144/280);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) left center/contain no-repeat;mask:var(--logo) left center/contain no-repeat;}
.u-card-media{position:relative;border-radius:var(--radius-ui);overflow:hidden;
  aspect-ratio:5/4;display:flex;align-items:flex-end;justify-content:center;
  background:
    radial-gradient(120% 95% at 50% 0%, rgba(var(--accent-rgb),.28), transparent 68%),
    linear-gradient(165deg, var(--blue-700), var(--blue-900));
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.35);}
.u-card-media::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
  background:linear-gradient(180deg, transparent 60%, rgba(11,30,46,.55) 100%);}
/* Vidéo de fond par card (YouTube masquée + teinte univers) */
.u-card-video{position:absolute;inset:0;z-index:0;overflow:hidden;border-radius:inherit;}
.u-card-video iframe{position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%) scale(1.55);
  height:100%;width:auto;aspect-ratio:16/9;min-width:100%;border:0;pointer-events:none;}
.u-card-tint{position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(180deg, rgba(11,30,46,1) 0%, rgba(11,30,46,0) 22%),
    radial-gradient(120% 95% at 50% 0%, rgba(var(--accent-rgb),.45), transparent 74%),
    linear-gradient(165deg, rgba(11,30,46,.5), rgba(11,30,46,.8));}
.u-card-tint::after{content:"";position:absolute;inset:0;
  background:rgba(var(--accent-rgb),.55);mix-blend-mode:multiply;}
.u-card-media img{position:relative;z-index:3;width:90%;height:94%;
  object-fit:contain;object-position:bottom center;
  filter:drop-shadow(0 18px 30px rgba(0,0,0,.55));
  transition:transform var(--dur) var(--ease-out);}
.u-card:hover .u-card-media img{transform:translateY(-8px) scale(1.04);}
/* Cartes « Pourquoi P14 » avec visuel */
.pourquoi-card.has-img{display:flex;flex-direction:column;gap:0;overflow:hidden;padding:0;}
.pourquoi-media{position:relative;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;
  overflow:hidden;
  background:
    radial-gradient(120% 95% at 50% 0%, rgba(var(--accent-rgb),.26), transparent 70%),
    linear-gradient(165deg, var(--blue-700), var(--blue-900));
  box-shadow:inset 0 -1px 0 0 rgba(var(--accent-rgb),.3);}
.pourquoi-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg, transparent 62%, rgba(11,30,46,.6) 100%);}
.pourquoi-media img{position:relative;z-index:1;width:100%;height:100%;object-fit:cover;object-position:center;
  transition:transform var(--dur) var(--ease-out);}
.pourquoi-card.has-img:hover .pourquoi-media img{transform:translateY(-6px) scale(1.03);}
.pourquoi-body{padding:var(--space-5);display:flex;flex-direction:column;gap:10px;}
.u-card .u-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:600;}
.u-card .u-desc{color:var(--text-secondary);font-size:var(--text-sm);}
.u-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.u-card ul li{position:relative;padding-left:18px;font-size:var(--text-sm);color:var(--text-secondary);}
.u-card ul li::before{content:"";position:absolute;left:0;top:8px;width:7px;height:7px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 8px var(--glow);}
.u-card .u-cta{margin-top:auto;font-family:var(--font-mono);font-size:.74rem;letter-spacing:.06em;
  text-transform:uppercase;color:var(--accent);display:inline-flex;align-items:center;gap:6px;}
.u-card:hover .u-cta{gap:10px;}

/* Hub — bandes « Au programme » (vitrines des 3 univers) */
.hub-decouverte .hub-band{margin-top:var(--space-8);padding-top:var(--space-7);
  border-top:1px solid rgba(var(--accent-rgb),.22);}
.hub-decouverte .hub-band:first-of-type{margin-top:var(--space-6);}
.hub-band-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);
  flex-wrap:wrap;margin-bottom:var(--space-5);}
.hub-band-head h3{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:600;margin:0;}
.hub-band-eyebrow{display:block;font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;}
.hub-band-logo.is-tinted{display:block;aspect-ratio:var(--ar,706/163);height:34px;width:auto;
  margin-bottom:var(--space-3);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) left center/contain no-repeat;mask:var(--logo) left center/contain no-repeat;}
.hub-atelier{align-items:center;text-align:center;gap:10px;}
.hub-atelier-ic{width:54px;height:54px;object-fit:contain;
  filter:drop-shadow(0 8px 16px rgba(0,0,0,.4));}
.hub-atelier-name{font-weight:600;font-size:var(--text-sm);}
.hub-atelier-meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent);
  letter-spacing:.04em;}
.hub-atelier-price{margin-top:2px;font-weight:600;font-size:var(--text-sm);color:var(--text);}
.hub-cursus{gap:10px;}
.hub-cursus .tag{align-self:flex-start;}
.hub-cursus-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;}
.hub-cursus-accroche{color:var(--text-secondary);font-size:var(--text-sm);}
.hub-cursus-meta{list-style:none;margin:auto 0 0;padding:0;display:flex;flex-direction:column;gap:6px;}
.hub-cursus-meta li{position:relative;padding-left:16px;font-size:var(--text-xs);color:var(--text-secondary);}
.hub-cursus-meta li::before{content:"";position:absolute;left:0;top:7px;width:6px;height:6px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 8px var(--glow);}
.hub-parc{gap:10px;}
.hub-parc-top{display:flex;align-items:center;gap:10px;}
.hub-parc-title{font-family:var(--font-display);font-size:var(--text-base);font-weight:600;line-height:1.2;}
.hub-parc-tag{color:var(--text-secondary);font-size:var(--text-sm);}
.hub-parc-cert{margin-top:auto;font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.04em;color:var(--accent);}
/* Visuels intégrés aux cartes (bandes « Au programme », preuves, concours) */
.hub-atelier.has-img,.hub-cursus.has-img,.hub-parc.has-img,
.stat.has-img,#concours .card.has-img{overflow:hidden;}
.hub-card-media,.stat-media,.concours-media{
  position:relative;align-self:stretch;display:flex;align-items:center;justify-content:center;overflow:hidden;
  aspect-ratio:16/10;
  margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-4);
  background:
    radial-gradient(120% 95% at 50% 0%, rgba(var(--accent-rgb),.26), transparent 70%),
    linear-gradient(165deg, var(--blue-700), var(--blue-900));
  box-shadow:inset 0 -1px 0 0 rgba(var(--accent-rgb),.3);}
.hub-card-media::after,.stat-media::after,.concours-media::after{content:"";position:absolute;inset:0;
  pointer-events:none;background:linear-gradient(180deg, transparent 62%, rgba(11,30,46,.6) 100%);}
.hub-card-media img,.stat-media img,.concours-media img{position:relative;z-index:1;
  width:92%;height:92%;object-fit:contain;object-position:bottom center;
  filter:drop-shadow(0 16px 28px rgba(0,0,0,.5));transition:transform var(--dur) var(--ease-out);}
.card.has-img:hover .hub-card-media img,
.card.has-img:hover .stat-media img,
.card.has-img:hover .concours-media img{transform:translateY(-6px) scale(1.03);}
.stat.has-img{text-align:center;}
/* Section « Au programme dans chaque univers » : cadres image uniformes et
   arrondis. Dérogation volontaire au rayon 2px du design system (demande
   produit) : ici on veut un cadre visiblement arrondi, taille homogène. */
.hub-decouverte .hub-card-media{
  margin:0 0 var(--space-4);
  border-radius:16px;
  aspect-ratio:16/10;
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.25);}
.hub-decouverte .hub-card-media img{
  width:100%;height:100%;object-fit:cover;object-position:center;
  filter:none;}
/* Cartes à image de couverture (leviers de financement) */
.card.prog.has-cover{overflow:hidden;}
.prog-cover{position:relative;aspect-ratio:16/10;overflow:hidden;
  margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-5);
  background:linear-gradient(165deg, var(--blue-700), var(--blue-900));
  box-shadow:inset 0 -1px 0 0 rgba(var(--accent-rgb),.3);}
.prog-cover::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg, transparent 58%, rgba(11,30,46,.62) 100%);}
.prog-cover img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;
  transition:transform var(--dur) var(--ease-out);}
.card.prog.has-cover:hover .prog-cover img{transform:scale(1.04);}
/* Logos de labels dans le hero du Hub (France 2030, Qualiopi) */
.hero-certs{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;margin-top:var(--space-5);}
.hero-cert{height:clamp(52px,6vw,74px);width:auto;object-fit:contain;
  filter:drop-shadow(0 6px 14px rgba(0,0,0,.35));}
@media(max-width:720px){
  .hub-band-head{align-items:flex-start;}
}

/* pastille d'icône (cartes génériques, lignes info) */
.ic-chip{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;
  color:var(--accent);background:rgba(var(--accent-rgb),.1);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.28);transition:var(--dur);}
.ic-chip svg{width:21px;height:21px;}
.ic-chip-sm{width:34px;height:34px;border-radius:10px;}
.ic-chip-sm svg{width:18px;height:18px;}
.prog:hover .ic-chip{background:rgba(var(--accent-rgb),.16);box-shadow:inset 0 0 0 1px var(--accent),0 0 16px rgba(var(--accent-rgb),.25);}
.ic-chip-logo{width:52px;height:52px;background:transparent;box-shadow:none;border-radius:0;overflow:visible;}
.ic-chip-logo img{width:100%;height:100%;object-fit:contain;display:block;filter:drop-shadow(0 4px 10px rgba(0,0,0,.28));}
.prog:hover .ic-chip-logo{background:transparent;box-shadow:none;transform:translateY(-2px);}

/* feature / info list */
.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--space-4);}
.info-item{padding:var(--space-5);display:flex;gap:var(--space-3);align-items:flex-start;}
.info-item-tx{min-width:0;}
.info-item .k{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;
  text-transform:uppercase;color:var(--text-muted);}
.info-item .v{font-size:var(--text-base);color:var(--text);margin-top:6px;}

/* program detail card */
.prog.has-img,.card.has-img{overflow:hidden;}
.prog-media{position:relative;align-self:stretch;overflow:hidden;aspect-ratio:16/10;
  margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-4);
  box-shadow:inset 0 -1px 0 0 rgba(var(--accent-rgb),.3);}
.card.has-img .prog-media{margin-bottom:var(--space-4);}
.prog.has-img .prog-media{margin-bottom:0;}
.prog-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 58%,rgba(11,30,46,.55) 100%);}
.prog-media .cover-img{width:100%;height:100%;object-fit:cover;}
.prog.has-img:hover .cover-img,.card.has-img:hover .cover-img{transform:scale(1.04);}
.prog{display:flex;flex-direction:column;gap:var(--space-4);height:100%;}
.prog .prog-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);}
.prog .prog-head-l{display:flex;align-items:center;gap:var(--space-3);min-width:0;}
.prog h3{font-size:var(--text-xl);}
.prog .meta{display:flex;flex-direction:column;gap:6px;font-size:var(--text-sm);color:var(--text-secondary);}
.prog .price{font-family:var(--font-mono);color:var(--accent);font-weight:600;}

/* small looping video header inside program cards */
.prog-has-video{padding-top:0;}
.prog-video{
  display:block;position:relative;overflow:hidden;pointer-events:none;
  margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) 0;
  aspect-ratio:16/9;border-radius:var(--radius-ui) var(--radius-ui) 0 0;
  background:var(--blue-900);
}
.prog-video::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg, transparent 55%, rgba(var(--accent-rgb),.10) 78%, var(--blue-800) 100%);
}
.prog-video iframe{
  position:absolute;top:50%;left:50%;
  width:100%;height:56.25vw;min-height:100%;
  transform:translate(-50%,-50%) scale(1.06);
  border:0;pointer-events:none;
}
@media (prefers-reduced-motion:reduce){
  .prog-has-video{padding-top:var(--space-6);}
  .prog-video{display:none;}
}

/* timeline / steps */
.steps{display:flex;flex-direction:column;gap:var(--space-4);}
.step{display:flex;gap:var(--space-4);padding:var(--space-5);}
.step .n{flex:none;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;
  font-family:var(--font-mono);font-weight:700;color:var(--on-accent);
  background:linear-gradient(150deg,var(--accent-soft),var(--accent));box-shadow:0 0 18px rgba(var(--accent-rgb),.4);}
.step h4{font-size:var(--text-lg);}
.step p{color:var(--text-secondary);font-size:var(--text-sm);margin-top:4px;}

/* faq */
.faq{display:flex;flex-direction:column;gap:var(--space-3);}
.faq details{padding:var(--space-5);}
.faq summary{cursor:pointer;font-family:var(--font-display);font-weight:600;font-size:var(--text-lg);
  list-style:none;display:flex;justify-content:space-between;gap:var(--space-4);}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";color:var(--accent);font-family:var(--font-mono);}
.faq details[open] summary::after{content:"−";}
.faq details p{color:var(--text-secondary);margin-top:var(--space-3);font-size:var(--text-sm);}

/* liste générique (bloc "list") */
.gp-list{list-style:none;display:flex;flex-direction:column;gap:var(--space-3);margin:0;padding:0;}
.gp-list li{position:relative;padding-left:var(--space-5);color:var(--text-secondary);line-height:1.6;}
.gp-list li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;border-radius:2px;
  background:var(--accent);}

/* testimonials */
.quote{display:flex;flex-direction:column;gap:var(--space-3);height:100%;}
.quote .stars{color:var(--accent);letter-spacing:2px;}
.quote .text{font-size:var(--text-base);color:var(--text);}
.quote .who{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);
  letter-spacing:.08em;text-transform:uppercase;margin-top:auto;}

/* témoignages enrichis : image + univers (hub) */
.quote-rich .quote-media{align-self:stretch;overflow:hidden;aspect-ratio:16/10;
  border-radius:16px;background:linear-gradient(165deg,var(--blue-700),var(--blue-900));
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.28);}
.quote-rich .quote-media img{width:100%;height:100%;object-fit:cover;object-position:center;
  transition:transform .4s ease;}
.quote-rich:hover .quote-media img{transform:scale(1.03);}
.quote-eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);}

/* programmes — fiches profil / prérequis / débouchés */
.prog-facts{display:flex;flex-direction:column;gap:10px;margin-top:var(--space-4);
  padding-top:var(--space-4);border-top:1px solid var(--border);}
.prog-facts dt{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent);}
.prog-facts dd{margin:2px 0 0;font-size:var(--text-sm);color:var(--text-secondary);line-height:1.45;}
.prog-pricing{color:var(--text-muted);}

/* journée portes ouvertes — déroulé horaire */
.jpo-schedule{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;}
.jpo-row{display:flex;gap:var(--space-4);align-items:baseline;padding:var(--space-3) 0;
  border-bottom:1px solid var(--border);}
.jpo-row:last-child{border-bottom:0;}
.jpo-time{flex:none;width:64px;font-family:var(--font-mono);font-weight:700;color:var(--accent);}
.jpo-label{color:var(--text-secondary);}

/* contact */
.contact-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5);}
@media(max-width:820px){.contact-grid{grid-template-columns:1fr;}}
.contact-grid.contact-stack{grid-template-columns:1fr 1fr;}
.contact-grid.contact-stack > .card:first-child{grid-column:1 / -1;}
@media(max-width:820px){.contact-grid.contact-stack{grid-template-columns:1fr;}}
.contact-link{display:inline-block;margin-top:var(--space-2);font-family:var(--font-display);
  font-weight:700;font-size:var(--text-lg);color:var(--text);}
.contact-link:hover{color:var(--accent);}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-4);}
.field label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);}
.field input,.field select,.field textarea{
  font-family:var(--font-body);font-size:var(--text-base);color:var(--text);
  background:rgba(8,20,32,.5);border:0;border-radius:var(--radius-ui);padding:12px 14px;
  box-shadow:inset 0 0 0 1px var(--border-strong);transition:var(--dur);}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;
  box-shadow:inset 0 0 0 1px var(--accent);}
.field textarea{resize:vertical;min-height:120px;}
.form-note{font-size:var(--text-sm);color:var(--text-muted);margin-top:var(--space-3);}

/* Feedback callouts + spinner (contact + pré-inscription cablés backend) */
.form-status{margin-top:var(--space-4);padding:12px 14px;border-radius:var(--radius-ui);
  font-size:var(--text-sm);line-height:1.5;display:flex;flex-direction:column;gap:4px;
  border:1px solid transparent;background:rgba(8,20,32,.4);color:var(--text);}
.form-status[hidden]{display:none;}
.form-status a{color:currentColor;text-decoration:underline;}
.form-status strong{font-family:var(--font-display);font-weight:700;}
.form-status.is-loading{border-color:rgba(148,163,184,.35);color:var(--text-muted);
  flex-direction:row;align-items:center;gap:10px;}
.form-status.is-success{border-color:rgba(34,197,94,.45);
  background:rgba(34,197,94,.12);color:#bbf7d0;}
.form-status.is-error{border-color:rgba(248,113,113,.45);
  background:rgba(248,113,113,.12);color:#fecaca;}
.form-spinner{display:inline-block;vertical-align:-3px;margin-right:6px;
  animation:form-spin .8s linear infinite;}
.form-btn-label{margin-left:2px;}
button[aria-busy="true"]{cursor:progress;opacity:.85;}
@keyframes form-spin{to{transform:rotate(360deg);}}
@media(prefers-reduced-motion:reduce){.form-spinner{animation-duration:2.4s;}}

/* pré-inscription band */
.nk-preins{display:grid;grid-template-columns:1.05fr .95fr;gap:var(--space-7);align-items:center;
  background:var(--surface-raised);border:1px solid rgba(var(--tint),.06);
  border-radius:var(--radius-lg);padding:var(--space-7);}
.nk-preins-title{font-size:var(--text-3xl);line-height:1.1;margin:0 0 var(--space-4);}
.nk-preins-lead{color:var(--text-muted);max-width:46ch;margin:0 0 var(--space-5);}
.nk-preins-media{margin:0 0 var(--space-5);}
.nk-preins-media img{width:100%;max-width:520px;height:auto;display:block;
  filter:drop-shadow(0 20px 40px rgba(0,0,0,.45));}
.nk-preins-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);}
.nk-preins-submit{width:100%;justify-content:center;}
@media(max-width:820px){.nk-preins{grid-template-columns:1fr;gap:var(--space-5);padding:var(--space-5);}}

/* campus card */
.campus{display:flex;flex-direction:column;}
.campus h4{font-size:var(--text-xl);}
.campus .role{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent);
  letter-spacing:.1em;text-transform:uppercase;margin-top:4px;}
.campus address{font-style:normal;color:var(--text-secondary);font-size:var(--text-sm);margin-top:var(--space-3);
  display:flex;flex-direction:column;gap:4px;}
.campus a{color:var(--accent);}
.campus-map{margin-top:var(--space-4);border-radius:var(--radius-ui);overflow:hidden;
  box-shadow:inset 0 0 0 1px var(--border);}
.campus-map iframe{display:block;width:100%;height:200px;border:0;
  filter:grayscale(.2) contrast(1.05);}

/* cta final */
.cta-final{position:relative;overflow:hidden;border-radius:var(--radius-ui);text-align:center;
  padding:var(--space-9) var(--space-7);
  background:radial-gradient(90% 120% at 50% 130%, rgba(var(--accent-rgb),.22), transparent 60%),
    linear-gradient(165deg,var(--blue-700),var(--blue-900) 80%);
  box-shadow:inset 0 0 0 1px var(--border-strong), var(--shadow-card);}
.cta-final h2{font-size:var(--text-4xl);max-width:20ch;margin-inline:auto;}
.cta-final p{color:var(--text-secondary);max-width:52ch;margin:var(--space-4) auto 0;}
.cta-final .hero-cta{justify-content:center;margin-top:var(--space-6);}

/* footer */
.footer-main{border-top:1px solid var(--border);padding:var(--space-8) 0 var(--space-6);
  background:linear-gradient(180deg,transparent,rgba(8,20,32,.6));}
.footer-cols{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:var(--space-6);}
@media(max-width:820px){.footer-cols{grid-template-columns:1fr 1fr;}}
@media(max-width:520px){.footer-cols{grid-template-columns:1fr;}}
.footer-col h5{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;
  text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-4);}
.footer-col a,.footer-col p{display:block;color:var(--text-secondary);font-size:var(--text-sm);
  margin-bottom:10px;transition:var(--dur);}
.footer-col a:hover{color:var(--accent);}
.footer-social{display:flex;gap:10px;}
.footer-social a{width:38px;height:38px;border-radius:var(--radius-ui);display:grid;place-items:center;
  box-shadow:inset 0 0 0 1px var(--border-strong);margin:0;}
.footer-social a:hover{box-shadow:inset 0 0 0 1px var(--accent);}
.footer-bottom{max-width:1200px;margin:var(--space-7) auto 0;padding:var(--space-5) var(--space-6) 0;
  border-top:1px solid var(--border);display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);
  font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);}
.footer-bottom a{color:var(--text-muted);}
.footer-bottom a:hover{color:var(--accent);}

/* helper */
.lead{font-size:var(--text-lg);color:var(--text-secondary);max-width:62ch;}
.tag{display:inline-flex;}
.center{text-align:center;}
.mt-6{margin-top:var(--space-6);}
.mt-8{margin-top:var(--space-8);}
.section-light-block{background:var(--blue-050);color:var(--blue-600);border-radius:var(--radius-lg);
  padding:var(--space-8);}
.section-light-block h2,.section-light-block h3,.section-light-block h4{color:var(--blue-600);}
.section-light-block .muted{color:rgba(21,49,74,.6);}

/* ===================== Numériklub — visuels ===================== */
/* Cadre image générique */
.img-figure{margin:0;border-radius:var(--radius-photo);overflow:hidden;
  box-shadow:inset 0 0 0 1px var(--border);background:var(--surface-2,rgba(var(--tint),.02));}
.img-figure img{display:block;width:100%;height:100%;object-fit:cover;}

/* Ateliers — scène centrale détourée + cartes dynamiques en orbite */
.nk-orbit{position:relative;min-height:820px;}
.nk-orbit-stage{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  z-index:1;width:clamp(640px,92%,1320px);
  display:flex;flex-direction:column;align-items:center;text-align:center;}
.nk-orbit-stage::before{content:"";position:absolute;inset:-22% -26%;z-index:0;
  background:radial-gradient(58% 52% at 50% 46%,rgba(var(--accent-rgb),.24),transparent 72%);
  filter:blur(10px);pointer-events:none;}
.nk-orbit-img{position:relative;z-index:1;display:block;width:100%;height:auto;
  filter:drop-shadow(0 26px 48px rgba(0,0,0,.5));}
.nk-orbit-hint{position:relative;z-index:1;margin-top:var(--space-3);font-size:var(--text-sm);
  color:var(--text-secondary);max-width:34ch;}
.nk-orbit-cta{justify-content:center;flex-wrap:wrap;margin-top:var(--space-7);}

/* Anneau d'« univers » : cartes réparties autour de l'image, superposées dessus */
.nk-orbit-ring{position:absolute;inset:0;z-index:2;perspective:1100px;}
.nk-orbit-ring .nk-orbit-card{position:absolute;width:clamp(210px,21vw,278px);
  animation:nk-float 7s var(--ease,ease) infinite;}
.nk-orbit-ring .nk-orbit-card:nth-child(1){top:4%;left:2%;animation-delay:-.2s;}
.nk-orbit-ring .nk-orbit-card:nth-child(2){top:4%;right:2%;animation-delay:-1.4s;}
.nk-orbit-ring .nk-orbit-card:nth-child(3){top:34%;left:9%;animation-delay:-2.6s;}
.nk-orbit-ring .nk-orbit-card:nth-child(4){top:30%;right:9%;animation-delay:-3.8s;}
.nk-orbit-ring .nk-orbit-card:nth-child(5){bottom:8%;left:3%;animation-delay:-5s;}
.nk-orbit-ring .nk-orbit-card:nth-child(6){bottom:8%;right:3%;animation-delay:-6.2s;}
.nk-orbit-ring .nk-orbit-card:nth-child(7){bottom:2%;left:50%;animation-delay:-3.2s;
  transform:translateX(-50%) translateY(calc(var(--lift,0px) + var(--float,0px))) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));}
.nk-orbit-ring .nk-orbit-card:hover,
.nk-orbit-ring .nk-orbit-card:focus-within{z-index:5;}
@property --float{syntax:"<length>";inherits:false;initial-value:0px;}
@keyframes nk-float{0%,100%{--float:0px;}50%{--float:-14px;}}
.nk-orbit-card{position:relative;display:flex;flex-direction:column;gap:var(--space-2);
  padding:var(--space-3);border-radius:var(--radius-md);
  background:rgba(9,13,21,.68);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:inset 0 0 0 1px rgba(var(--tint),.1),0 14px 34px rgba(0,0,0,.5);
  transition:transform .35s var(--ease,ease),box-shadow .35s var(--ease,ease),background .35s var(--ease,ease);
  transform-style:preserve-3d;will-change:transform;cursor:pointer;outline:none;
  transform:translateY(calc(var(--lift,0px) + var(--float,0px))) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));}
.nk-orbit-card>*{position:relative;z-index:1;}
.nk-orbit-card::after{content:"";position:absolute;inset:0;z-index:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(240px circle at var(--mx,50%) var(--my,0%),rgba(var(--accent-rgb),.18),transparent 62%);
  opacity:0;transition:opacity .35s var(--ease,ease);}
.nk-orbit-card:hover,.nk-orbit-card:focus-visible{--lift:-5px;
  background:rgba(12,17,27,.82);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.6),0 22px 44px rgba(0,0,0,.55);}
.nk-orbit-card:hover::after,.nk-orbit-card:focus-visible::after{opacity:1;}
.nk-orbit-card-head{display:flex;align-items:center;gap:var(--space-3);}
.nk-orbit-ic{flex:none;width:52px;height:52px;display:flex;align-items:center;justify-content:center;}
.nk-orbit-ic img{width:100%;height:100%;object-fit:contain;
  filter:drop-shadow(0 8px 16px rgba(0,0,0,.35));transition:transform .35s var(--ease,ease);}
.nk-orbit-card:hover .nk-orbit-ic img,.nk-orbit-card:focus-visible .nk-orbit-ic img{
  transform:translateY(-3px) scale(1.08) rotate(-4deg);}
.nk-orbit-card-titles{min-width:0;flex:1;}
.nk-orbit-name{font-size:var(--text-lg);line-height:1.15;margin:0;}
.nk-orbit-chev{flex:none;margin-left:auto;width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;color:var(--accent);
  border:1px solid rgba(var(--accent-rgb),.4);background:rgba(var(--accent-rgb),.06);
  transition:transform .35s var(--ease,ease),background .35s var(--ease,ease);}
.nk-orbit-chev::before{content:"";width:6px;height:6px;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;
  transform:rotate(45deg) translate(-1px,-1px);}
.nk-orbit-card:hover .nk-orbit-chev,.nk-orbit-card:focus-within .nk-orbit-chev{
  transform:rotate(180deg);background:rgba(var(--accent-rgb),.16);}
.nk-orbit-desc{font-size:var(--text-sm);color:var(--text-secondary);margin:0;}

/* Programme révélé dynamiquement au survol / focus */
.nk-orbit-prog{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);
  max-height:0;opacity:0;overflow:hidden;
  transition:max-height .45s var(--ease,ease),opacity .35s var(--ease,ease),
    margin-top .45s var(--ease,ease),padding-top .45s var(--ease,ease);}
.nk-orbit-card:hover .nk-orbit-prog,.nk-orbit-card:focus-within .nk-orbit-prog{
  max-height:320px;opacity:1;margin-top:var(--space-1);padding-top:var(--space-3);
  border-top:1px solid var(--border,rgba(var(--tint),.1));}
.nk-orbit-prog li{position:relative;padding-left:1.4em;font-size:var(--text-sm);color:var(--text-secondary);}
.nk-orbit-prog li::before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:2px;
  background:var(--accent);}

@media (hover:none){
  .nk-orbit-prog{max-height:none;opacity:1;margin-top:var(--space-1);padding-top:var(--space-3);
    border-top:1px solid var(--border,rgba(var(--tint),.1));}
}
@media (max-width:1024px){
  .nk-orbit{display:flex;flex-direction:column;gap:var(--space-4);min-height:0;}
  .nk-orbit-stage{position:static;transform:none;order:-1;width:auto;max-width:620px;
    margin:0 auto var(--space-2);}
  .nk-orbit-stage::before{inset:-12% -16%;}
  .nk-orbit-ring{position:static;perspective:none;
    display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);}
  .nk-orbit-ring .nk-orbit-card{position:static;width:auto;animation:none;}
  .nk-orbit-ring .nk-orbit-card:nth-child(n){top:auto;left:auto;right:auto;bottom:auto;
    transform:translateY(var(--lift,0)) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));}
}
@media (prefers-reduced-motion:reduce){
  .nk-orbit-ring .nk-orbit-card{animation:none;}
}
@media (max-width:640px){
  .nk-orbit-ring{grid-template-columns:1fr;}
}

/* Esprit Numériklub */
.nk-esprit h3{font-size:var(--text-lg);margin-bottom:var(--space-3);}
.nk-esprit-media{margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-4);
  aspect-ratio:16/10;overflow:hidden;
  background:rgba(var(--tint),.04);}
.nk-esprit-media img{width:100%;height:100%;object-fit:contain;display:block;}

/* Atouts de la formation (cartes Academy) */
.atout-media{margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-4);
  aspect-ratio:4/3;overflow:hidden;
  background:rgba(var(--tint),.04);}
.atout-media img{width:100%;height:100%;object-fit:contain;display:block;}

/* Cartes tarifs */
.nk-plan{display:flex;flex-direction:column;gap:var(--space-3);height:100%;position:relative;}
.nk-plan-hl{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 70%,transparent),0 18px 44px rgba(0,0,0,.4);}
.nk-plan-badge{position:absolute;top:calc(-1 * var(--space-3));right:var(--space-5);
  background:var(--accent);color:#0a0a0a;border:none;}
.nk-plan-name{font-size:var(--text-xl);}
.nk-plan-price{font-family:var(--font-display);font-weight:700;font-size:var(--text-3xl,2rem);color:var(--accent);
  line-height:1;}
.nk-features{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);}
.nk-features li{position:relative;padding-left:1.5em;font-size:var(--text-sm);}
.nk-features li::before{content:"✓";position:absolute;left:0;color:var(--accent);font-weight:700;}
.nk-plan-cta{margin-top:auto;padding-top:var(--space-4);}

/* Équipe pédagogique */
.nk-member{display:flex;flex-direction:column;gap:var(--space-2);height:100%;}
.nk-member-name{font-size:var(--text-lg);}
.nk-avatar{width:56px;height:56px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-weight:700;font-size:var(--text-base);
  background:color-mix(in srgb,var(--accent) 22%,transparent);color:var(--accent);
  border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);margin-bottom:var(--space-2);}
.nk-avatar-photo{padding:0;overflow:hidden;background:color-mix(in srgb,var(--accent) 12%,transparent);}
.nk-avatar-photo img{width:100%;height:100%;object-fit:cover;object-position:center 22%;}

/* Témoignages */
.nk-quote{display:flex;flex-direction:column;gap:var(--space-5);height:100%;}
.nk-quote blockquote{margin:0;font-size:var(--text-base);line-height:1.6;font-style:italic;}
.nk-quote figcaption{display:flex;align-items:center;gap:var(--space-3);margin-top:auto;}
.nk-avatar-sm{width:44px;height:44px;font-size:var(--text-sm);margin-bottom:0;flex:0 0 auto;}
.nk-quote-who{display:flex;flex-direction:column;font-size:var(--text-sm);color:var(--text-secondary);}
.nk-quote-who strong{color:var(--text-primary);font-size:var(--text-base);}

/* ===================== Marque / logos ===================== */
/* Picto P14 blanc dans le badge accent (nav + footer) */
.brand .mark img{width:64%;height:64%;object-fit:contain;display:block;}

/* Lockup horizontal "Parallel 14" (footer) */
.footer-brand{display:inline-flex;}
.footer-lockup{height:40px;width:auto;display:block;opacity:.95;transition:opacity .25s ease;}
.footer-lockup.is-tinted{aspect-ratio:var(--ar,1144/280);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) left center/contain no-repeat;mask:var(--logo) left center/contain no-repeat;}
.footer-brand:hover .footer-lockup{opacity:1;}

/* Logo de marque dans le hero (Numériklub) */
.hero-logo{display:block;height:clamp(56px,9vw,96px);width:auto;margin-bottom:var(--space-5);
  filter:drop-shadow(0 12px 28px rgba(0,0,0,.45));}

/* Illustration personnages dans le hero (Numériklub) */
.page-hero-art .container{position:relative;z-index:1;width:100%;}
.hero-art{position:absolute;right:clamp(0px,3vw,56px);bottom:0;z-index:1;
  height:clamp(360px,46vw,600px);width:auto;object-fit:contain;pointer-events:none;
  filter:drop-shadow(0 22px 48px rgba(0,0,0,.5));}
.page[data-page="/temoignages"] .hero-art{height:clamp(440px,58vw,760px);}
.page[data-page="/numeriklub/entreprises"] .hero-art{height:clamp(460px,62vw,820px);}
@media(max-width:1100px){ .hero-art{opacity:.22;right:-4%;} }
@media(max-width:760px){ .hero-art{display:none;}
  .page-hero-art{min-height:auto;align-items:flex-start;} }

/* Révélation au défilement des blocs des pages génériques (gérée par effects.js :
   la classe .gp-anim n'est ajoutée que si le mouvement est autorisé → contenu
   visible par défaut si JS off ou reduced-motion). */
@media(prefers-reduced-motion:no-preference){
  [data-gp].gp-anim:not(.is-in) .card,
  [data-gp].gp-anim:not(.is-in) > .container > .lead,
  [data-gp].gp-anim:not(.is-in) .prose{opacity:0;transform:translateY(20px);}
  [data-gp].gp-anim .card,
  [data-gp].gp-anim > .container > .lead,
  [data-gp].gp-anim .prose{transition:opacity .55s var(--ease-out),transform .55s var(--ease-out);}
  [data-gp].gp-anim .grid>*:nth-child(2),[data-gp].gp-anim .steps>*:nth-child(2),[data-gp].gp-anim .info-grid>*:nth-child(2),[data-gp].gp-anim .faq>*:nth-child(2){transition-delay:.07s;}
  [data-gp].gp-anim .grid>*:nth-child(3),[data-gp].gp-anim .steps>*:nth-child(3),[data-gp].gp-anim .info-grid>*:nth-child(3),[data-gp].gp-anim .faq>*:nth-child(3){transition-delay:.14s;}
  [data-gp].gp-anim .grid>*:nth-child(n+4),[data-gp].gp-anim .info-grid>*:nth-child(n+4),[data-gp].gp-anim .faq>*:nth-child(n+4){transition-delay:.21s;}
}

/* Écrans KPI flottants — cartes HUD futuristes (Formation Continue) */
.page-hero-screens .container{position:relative;z-index:2;}
.hero-screens{position:absolute;inset:0;z-index:2;pointer-events:none;}
.hero-screen{position:absolute;display:flex;flex-direction:column;gap:9px;
  min-width:148px;padding:13px 15px 15px;border-radius:14px;overflow:hidden;
  background:linear-gradient(150deg, rgba(26,8,22,.82), rgba(10,5,12,.6));
  border:1px solid rgba(var(--accent-rgb),.45);
  box-shadow:0 20px 46px rgba(0,0,0,.5), 0 0 0 1px rgba(var(--tint),.04) inset,
    0 0 36px rgba(var(--accent-rgb),.28);
  backdrop-filter:blur(13px) saturate(1.25);-webkit-backdrop-filter:blur(13px) saturate(1.25);
  animation:heroScreenFloat 6s ease-in-out infinite;will-change:transform;}
/* coins HUD */
.hero-screen::before,.hero-screen::after{content:"";position:absolute;width:13px;height:13px;
  border:2px solid rgb(var(--accent-rgb));pointer-events:none;opacity:.9;}
.hero-screen::before{top:6px;left:6px;border-right:0;border-bottom:0;border-top-left-radius:5px;}
.hero-screen::after{bottom:6px;right:6px;border-left:0;border-top:0;border-bottom-right-radius:5px;}
/* reflet qui balaie la carte */
.hs-scan{position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(115deg, transparent 32%, rgba(var(--tint),.16) 48%, transparent 62%);
  transform:translateX(-120%);animation:hsScan 4.6s ease-in-out infinite;}
.hs-top{display:flex;align-items:center;gap:7px;}
.hs-dot{width:7px;height:7px;border-radius:50%;background:rgb(var(--accent-rgb));
  box-shadow:0 0 10px rgb(var(--accent-rgb));animation:hsPulse 1.8s ease-in-out infinite;}
.hs-lab{font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:rgba(var(--tint),.66);white-space:nowrap;}
.hs-val{font-weight:800;font-size:clamp(22px,2.1vw,32px);line-height:1;color:#fff;
  display:inline-flex;align-items:baseline;letter-spacing:-.01em;
  text-shadow:0 0 18px rgba(var(--accent-rgb),.5);}
.hs-unit{font-size:.6em;margin-left:2px;color:rgb(var(--accent-rgb));}
.hs-bar{position:relative;height:4px;border-radius:999px;overflow:hidden;
  background:rgba(var(--tint),.1);}
.hs-bar i{position:absolute;inset:0 auto 0 0;width:var(--w,70%);border-radius:inherit;
  transform-origin:left;animation:hsBar 1.1s ease-out both;
  background:linear-gradient(90deg, rgba(var(--accent-rgb),.5), rgb(var(--accent-rgb)));
  box-shadow:0 0 10px rgba(var(--accent-rgb),.8);}
.hero-screen-1{top:11%;right:23%;animation-delay:0s;}
.hero-screen-2{top:26%;right:2%;animation-delay:.6s;}
.hero-screen-3{top:45%;right:17%;animation-delay:1.1s;}
.hero-screen-4{top:63%;right:4%;animation-delay:.3s;}
@keyframes heroScreenFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-12px);}}
@keyframes hsScan{0%,55%{transform:translateX(-120%);}82%,100%{transform:translateX(120%);}}
@keyframes hsPulse{0%,100%{opacity:1;}50%{opacity:.35;}}
@keyframes hsBar{from{transform:scaleX(0);}to{transform:scaleX(1);}}
@media(max-width:1100px){ .hero-screen-3,.hero-screen-4{display:none;}
  .hero-screen-1{top:11%;right:6%;} .hero-screen-2{top:25%;right:3%;} }
@media(max-width:760px){ .hero-screens{display:none;} }
@media(prefers-reduced-motion:reduce){ .hero-screen{animation:none;}
  .hs-scan{display:none;} .hs-dot,.hs-bar i{animation:none;} }

/* Cartes outils / IA flottantes autour du personnage (Formation Continue) */
.page-hero-tools .container{position:relative;z-index:2;}
.hero-tools{position:absolute;inset:0;z-index:2;pointer-events:none;}
.hero-tool{position:absolute;display:flex;align-items:center;gap:10px;
  padding:9px 14px 9px 9px;border-radius:15px;overflow:hidden;white-space:nowrap;
  background:linear-gradient(150deg, rgba(26,8,22,.86), rgba(10,5,12,.62));
  border:1px solid rgba(var(--accent-rgb),.42);
  box-shadow:0 16px 38px rgba(0,0,0,.5), 0 0 0 1px rgba(var(--tint),.04) inset,
    0 0 28px rgba(var(--accent-rgb),.26);
  backdrop-filter:blur(12px) saturate(1.25);-webkit-backdrop-filter:blur(12px) saturate(1.25);
  animation:heroToolFloat 6s ease-in-out infinite;will-change:transform;}
/* coin HUD */
.hero-tool::before{content:"";position:absolute;top:5px;left:5px;width:11px;height:11px;
  border:2px solid rgb(var(--accent-rgb));border-right:0;border-bottom:0;border-top-left-radius:5px;
  opacity:.85;pointer-events:none;}
.ht-ic{display:grid;place-items:center;width:36px;height:36px;flex:0 0 auto;border-radius:11px;
  color:rgb(var(--accent-rgb));
  background:radial-gradient(120% 120% at 30% 20%, rgba(var(--accent-rgb),.3), rgba(var(--accent-rgb),.05));
  box-shadow:0 0 16px rgba(var(--accent-rgb),.4), 0 0 0 1px rgba(var(--accent-rgb),.5) inset;
  animation:htIcPulse 3.4s ease-in-out infinite;}
.ht-ic svg{width:20px;height:20px;filter:drop-shadow(0 0 6px rgba(var(--accent-rgb),.75));}
.ht-ic.is-img{width:44px;height:44px;border-radius:13px;background:radial-gradient(120% 120% at 30% 20%, rgba(var(--accent-rgb),.18), rgba(var(--accent-rgb),.02));}
.ht-ic.is-img img{width:38px;height:38px;object-fit:contain;filter:drop-shadow(0 4px 10px rgba(0,0,0,.45));}
.ht-lab{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  font-weight:600;color:rgba(var(--tint),.84);}
.ht-scan{position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(115deg, transparent 34%, rgba(var(--tint),.14) 50%, transparent 64%);
  transform:translateX(-120%);animation:hsScan 5.2s ease-in-out infinite;}
.hero-tool-1{top:4%;right:8%;animation-delay:.2s;}
.hero-tool-2{top:18%;right:40%;animation-delay:1s;animation-duration:6.7s;}
.hero-tool-3{top:38%;right:0%;animation-delay:.5s;animation-duration:7s;}
.hero-tool-4{top:55%;right:30%;animation-delay:1.3s;animation-duration:6.4s;}
.hero-tool-5{top:73%;right:19%;animation-delay:.8s;animation-duration:7.4s;}
.hero-tool-6{top:84%;right:3%;animation-delay:.35s;animation-duration:6.2s;}
@keyframes heroToolFloat{0%,100%{transform:translateY(0) rotate(-.5deg);}50%{transform:translateY(-14px) rotate(.6deg);}}
@keyframes htIcPulse{0%,100%{box-shadow:0 0 16px rgba(var(--accent-rgb),.4), 0 0 0 1px rgba(var(--accent-rgb),.5) inset;}
  50%{box-shadow:0 0 26px rgba(var(--accent-rgb),.7), 0 0 0 1px rgba(var(--accent-rgb),.7) inset;}}
@media(max-width:1100px){ .hero-tool-2,.hero-tool-4,.hero-tool-5{display:none;}
  .hero-tool-1{top:5%;right:4%;} .hero-tool-3{top:40%;right:3%;} .hero-tool-6{top:76%;right:3%;} }
@media(max-width:760px){ .hero-tools:not(.hero-orbit){display:none;}
  /* En mobile, l'orbite reste visible mais allégée : 4 icônes plus petites */
  .hero-orbit .hero-tool{width:40px;height:40px;}
  .hero-orbit .hero-tool:nth-child(2),.hero-orbit .hero-tool:nth-child(5){display:none;}
  .ho-spark-2,.ho-spark-4{display:none;} }
@media(prefers-reduced-motion:reduce){ .hero-tool,.ht-ic{animation:none;} .ht-scan{display:none;} }

/* Hero Formation Continue : icônes en orbite autour du personnage (sans card) */
.hero-orbit{position:absolute;inset:0;z-index:3;pointer-events:none;}
/* Les cartes stats passent devant les icônes en orbite (cohérence de lecture) */
.page-hero-tools .hero-screens{z-index:4;}
.hero-orbit .hero-tool{position:absolute;top:0;left:0;right:auto;bottom:auto;
  width:clamp(46px,4.6vw,72px);height:clamp(46px,4.6vw,72px);
  display:grid;place-items:center;padding:0;border:0;border-radius:0;
  background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;
  animation:none;opacity:0;transform:translate3d(-100px,-100px,0) scale(.4);
  will-change:transform,opacity;transform-origin:50% 50%;
  filter:drop-shadow(0 12px 26px rgba(0,0,0,.55)) drop-shadow(0 0 16px rgba(var(--accent-rgb),.32));}
.hero-orbit .hero-tool::before{display:none;}
.hero-orbit .hero-tool img{width:100%;height:100%;object-fit:contain;display:block;}
.hero-orbit .hero-tool svg{width:62%;height:62%;color:rgb(var(--accent-rgb));
  filter:drop-shadow(0 0 9px rgba(var(--accent-rgb),.8));}
@media(prefers-reduced-motion:reduce){ .hero-orbit .hero-tool{transition:none;} }
/* Sparkles décoratifs "galaxie d'outils IA" (positions %, hors orbite JS) */
.ho-spark{position:absolute;font-style:normal;color:rgb(var(--accent-rgb));
  text-shadow:0 0 12px rgba(var(--accent-rgb),.75);pointer-events:none;
  animation:hoTwinkle 3.4s ease-in-out infinite;opacity:.65;}
.ho-spark-1{top:14%;right:6%;font-size:18px;animation-delay:.2s;}
.ho-spark-2{top:34%;right:44%;font-size:12px;animation-delay:1.4s;animation-duration:4.1s;}
.ho-spark-3{top:62%;right:9%;font-size:14px;animation-delay:.8s;animation-duration:3.8s;}
.ho-spark-4{top:78%;right:36%;font-size:11px;animation-delay:2s;animation-duration:4.6s;}
@keyframes hoTwinkle{0%,100%{opacity:.25;transform:scale(.8) rotate(0deg);}50%{opacity:.9;transform:scale(1.15) rotate(18deg);}}
@media(prefers-reduced-motion:reduce){ .ho-spark{animation:none;opacity:.5;} }

/* Composition Formation Continue : figure à droite, texte lisible à gauche */
.page-hero-screens::after{content:"";position:absolute;right:0;bottom:0;width:62%;height:92%;
  z-index:0;pointer-events:none;
  background:radial-gradient(58% 60% at 72% 72%, rgba(var(--accent-rgb),.24), transparent 70%);}
.page-hero-screens .hero-art{height:clamp(360px,44vw,620px);right:clamp(-16px,0.5vw,16px);
  filter:drop-shadow(0 26px 54px rgba(0,0,0,.6)) saturate(.88) brightness(.9) contrast(.97);
  -webkit-mask-image:linear-gradient(to left, #000 58%, transparent 99%);
  mask-image:linear-gradient(to left, #000 58%, transparent 99%);}
.page-hero-screens h1,.page-hero-screens .lead,.page-hero-screens .hero-sub{max-width:600px;}

/* Bande concept « Mon Activité Augmentée » : sphère sociale (Formation Continue) */
.fc-concept .concept-orb,.fc-cs-art{position:relative;margin:var(--space-7) auto 0;max-width:740px;}
.fc-concept .concept-orb img,.fc-cs-art img{display:block;width:100%;height:auto;border-radius:24px;
  -webkit-mask-image:radial-gradient(125% 125% at 50% 46%, #000 52%, transparent 100%);
  mask-image:radial-gradient(125% 125% at 50% 46%, #000 52%, transparent 100%);}
.fc-concept .concept-orb::after,.fc-cs-art::after{content:"";position:absolute;inset:-12% -8%;z-index:-1;
  background:radial-gradient(closest-side, rgba(var(--accent-rgb),.3), transparent 72%);
  filter:blur(26px);}

/* ===== Formation Continue — « Mon Activité Augmentée » (theme-magenta) ===== */
/* Bande de réassurance (Qualiopi / RS6776 / France 2030 / CPF) */
.eyebrow.center{text-align:center;display:block;}
.fc-reassure-title{text-align:center;display:block;margin:0 0 var(--space-5);font-size:var(--text-sm);}
.fc-reassure-marquee{height:auto;padding-block:var(--space-2);}
.fc-reassure-marquee .marquee-track{gap:clamp(48px,7vw,112px);animation-duration:38s;}
.fc-reassure-item{display:flex;align-items:center;gap:var(--space-4);}
.fc-reassure-logo{display:flex;align-items:center;justify-content:center;width:72px;height:72px;flex:none;}
.fc-reassure-logo img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 6px 14px rgba(0,0,0,.35));}
.fc-reassure-txt{display:flex;flex-direction:column;line-height:1.1;}
.fc-reassure-k{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);color:var(--accent);}
.fc-reassure-v{font-size:var(--text-sm);color:var(--text-secondary);}
@media(max-width:640px){
  .fc-reassure-logo{width:56px;height:56px;}
  .fc-reassure-k{font-size:var(--text-xl);}
}

/* Constat + Solution côte à côte avec la sphère */
.fc-cs{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--space-7);align-items:center;}
.fc-cs-text{display:flex;flex-direction:column;gap:var(--space-6);}
.fc-cs-block h2{font-size:var(--text-2xl);margin:var(--space-2) 0 var(--space-3);}
.fc-cs-art{margin:0;}
/* Équation Vous + métier + IA = … */
.fc-eq{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-5);}
.fc-eq-term{font-family:var(--font-display);font-weight:600;padding:6px 14px;border-radius:var(--radius-pill);
  background:rgba(var(--accent-rgb),.12);border:1px solid rgba(var(--accent-rgb),.3);}
.fc-eq-op{font-family:var(--font-mono);color:var(--accent);font-weight:700;}
.fc-eq-res{font-family:var(--font-display);font-weight:700;color:var(--accent);}

/* Objections — idée reçue ✕ / en réalité ✓ */
.fc-obj{display:flex;flex-direction:column;gap:var(--space-3);}
.fc-obj .badge{align-self:flex-start;}
.fc-obj-idee,.fc-obj-real{margin:0;font-size:var(--text-sm);line-height:1.5;}
.fc-obj-idee{color:var(--text-secondary);}
.fc-obj-real{font-weight:600;}
.fc-obj-x,.fc-obj-ok{display:block;font-family:var(--font-mono);font-size:var(--text-xs);
  text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px;}
.fc-obj-x{color:#e06a8a;}
.fc-obj-ok{color:var(--accent);}

/* Parcours détaillés */
.fc-parcours{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-5);}
.fc-parc{display:flex;flex-direction:column;gap:var(--space-3);height:auto;}
.fc-parc-img{margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) 0;
  aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;overflow:hidden;
  border-radius:var(--radius-lg) var(--radius-lg) 0 0;
  background:radial-gradient(120% 120% at 50% 0%,rgba(var(--accent-rgb),.18),transparent 70%),var(--surface-raised);}
.fc-parc-img img{width:100%;height:100%;object-fit:cover;}
.fc-parc-tag{font-family:var(--font-display);font-weight:600;color:var(--accent);font-size:var(--text-lg);}
.fc-parc-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);}
.fc-parc-h{font-size:var(--text-sm);font-family:var(--font-mono);text-transform:uppercase;
  letter-spacing:.04em;color:var(--text-secondary);margin-top:var(--space-2);}
.fc-list{display:flex;flex-direction:column;gap:6px;padding-left:0;list-style:none;}
.fc-list li{position:relative;padding-left:var(--space-5);font-size:var(--text-sm);color:var(--text-secondary);}
.fc-list li::before{content:"→";position:absolute;left:0;color:var(--accent);font-family:var(--font-mono);}
.fc-parc-det{margin-top:var(--space-3);border-top:1px solid var(--border);padding-top:var(--space-3);}
.fc-parc-det summary{cursor:pointer;font-family:var(--font-display);font-weight:600;
  list-style:none;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);}
.fc-parc-det summary::-webkit-details-marker{display:none;}
.fc-parc-det summary::after{content:"+";color:var(--accent);font-family:var(--font-mono);}
.fc-parc-det[open] summary::after{content:"−";}
.fc-parc-body{display:flex;flex-direction:column;gap:var(--space-4);margin-top:var(--space-4);}
.fc-prog{display:flex;flex-direction:column;gap:var(--space-2);}
.fc-prog-row{display:flex;gap:var(--space-3);font-size:var(--text-sm);}
.fc-prog-j{flex:none;font-family:var(--font-mono);font-weight:700;color:var(--accent);min-width:30px;}
.fc-info{gap:var(--space-3) var(--space-4);}
.fc-info > div{display:flex;flex-direction:column;gap:2px;font-size:var(--text-sm);}
.fc-info-k{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;
  letter-spacing:.04em;color:var(--text-secondary);}
.fc-modules{display:flex;flex-direction:column;gap:8px;padding-left:0;list-style:none;}
.fc-modules li{display:flex;justify-content:space-between;gap:var(--space-3);align-items:baseline;
  font-size:var(--text-sm);padding-bottom:8px;border-bottom:1px dashed var(--border);}
.fc-mod-meta{flex:none;font-family:var(--font-mono);color:var(--text-secondary);white-space:nowrap;}
.fc-mod-meta strong{color:var(--accent);}
.fc-crosssell{margin-top:var(--space-5);text-align:center;font-family:var(--font-display);
  font-weight:600;color:var(--accent);}

/* Financement — bande de leviers */
.fc-fin-item{display:flex;flex-direction:column;gap:4px;}
.fc-fin-k{font-family:var(--font-display);font-weight:700;color:var(--accent);}
.fc-fin-v{font-size:var(--text-sm);color:var(--text-secondary);}
.fc-fin-note{margin-top:var(--space-5);font-size:var(--text-sm);color:var(--text-secondary);max-width:80ch;}

/* Packs entreprise */
.fc-pack{display:flex;flex-direction:column;gap:var(--space-3);}
.fc-pack-img{margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) 0;
  aspect-ratio:21/9;display:flex;align-items:center;justify-content:center;overflow:hidden;
  border-radius:var(--radius-lg) var(--radius-lg) 0 0;
  background:radial-gradient(120% 130% at 50% 0%,rgba(var(--accent-rgb),.20),transparent 70%),var(--surface-raised);}
.fc-pack-img img{height:84%;width:auto;max-width:100%;object-fit:contain;
  filter:drop-shadow(0 18px 32px rgba(0,0,0,.45));}
.fc-pack-price{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap;}
.fc-pack-price .price{font-size:var(--text-2xl);}
.fc-pack-old{font-family:var(--font-mono);color:var(--text-secondary);text-decoration:line-through;}
.fc-pack .hero-cta{margin-top:auto;}

/* Teaser Bâtisseurs */
.fc-bat-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);}
.fc-bat h2{font-size:var(--text-2xl);margin:var(--space-3) 0;}
.fc-bat-has-img{display:grid;grid-template-columns:1.4fr 1fr;gap:var(--space-6);align-items:center;}
.fc-bat-img{display:flex;align-items:center;justify-content:center;}
.fc-bat-img img{width:100%;max-width:360px;height:auto;object-fit:contain;
  filter:drop-shadow(0 22px 40px rgba(0,0,0,.5));}

@media(max-width:900px){
  .fc-cs{grid-template-columns:1fr;}
  .fc-cs-art{order:-1;max-width:520px;}
  .fc-parcours{grid-template-columns:1fr;}
  .fc-bat-has-img{grid-template-columns:1fr;}
  .fc-bat-img{order:-1;}
  .fc-bat-img img{max-width:280px;}
}

/* La mascotte, à droite, qui pointe la vidéo en se déplaçant (Numériklub) */
.hero-rider{position:absolute;right:clamp(8px,2.5vw,64px);top:clamp(190px,30vh,400px);bottom:auto;z-index:2;--rot:-3deg;
  height:clamp(310px,44vh,560px);width:auto;object-fit:contain;pointer-events:none;
  image-rendering:auto;
  transform-origin:50% 50%;transform:rotate(var(--rot));
  filter:drop-shadow(0 26px 46px rgba(0,0,0,.55));
  animation:nkRiderRide 3.6s ease-in-out infinite;will-change:transform;}
@keyframes nkRiderRide{
  0%,100%{transform:translateY(0) rotate(var(--rot));}
  50%{transform:translateY(-14px) rotate(calc(var(--rot) + 2deg));}}
@media(max-width:1280px){ .hero-rider{right:clamp(0px,1.5vw,32px);} }
@media(max-width:1100px){ .hero-rider{display:none;} }
@media(prefers-reduced-motion:reduce){ .hero-rider{animation:none;} }

/* Reveal « coup de pinceau » 2D → 3D : on peint avec la souris (Numériklub) */
.hero-flip{pointer-events:auto;cursor:pointer;}
.hero-flip:focus-visible{outline:2px solid rgb(var(--accent-rgb));outline-offset:6px;border-radius:14px;}
.hero-flip > img{display:block;height:100%;width:auto;object-fit:contain;will-change:opacity;
  transition:opacity .45s ease;}
.hero-flip .hero-flip-rev{position:absolute;top:0;left:50%;transform:translateX(-50%) translateX(var(--rev-dx,0));opacity:0;z-index:1;}

/* Fallback (sans JS) : survol = crossfade simple */
.hero-flip:hover .hero-flip-rev,.hero-flip:focus-visible .hero-flip-rev{opacity:1;}
.hero-flip:hover .hero-flip-base,.hero-flip:focus-visible .hero-flip-base{opacity:0;}

/* Mode pinceau actif (JS) : la 3D est dessous, on peint le croquis 2D par-dessus */
.hero-flip.has-brush{cursor:crosshair;}
.hero-flip.has-brush .hero-flip-base{opacity:0;}
.hero-flip.has-brush .hero-flip-rev{opacity:1;}
.hero-flip.has-brush:hover .hero-flip-rev{opacity:1;}
.hero-brush{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none;}
/* En navigation clavier : on révèle toute la 3D et on masque le calque pinceau */
.hero-flip.has-brush:focus-visible .hero-brush{opacity:0;}
.hero-flip.has-brush:focus-visible .hero-flip-base{opacity:0;}
/* Tactile / sans survol : 3D affichée directement */
.hero-flip.is-3d .hero-flip-base{opacity:0;}
.hero-flip.is-3d .hero-flip-rev{opacity:1;}

/* Indice « passe ta souris » — ancré au hero (toujours visible), près du personnage */
.hero-flip-hint{position:absolute;right:clamp(20px,4vw,72px);left:auto;bottom:clamp(150px,30vh,300px);z-index:4;
  display:inline-flex;align-items:center;gap:8px;white-space:nowrap;pointer-events:none;
  padding:7px 13px 7px 11px;border-radius:999px;
  font:600 12.5px/1 var(--font-ui, inherit);letter-spacing:.01em;color:#fff;
  background:rgba(10,14,20,.66);backdrop-filter:blur(8px);
  border:1px solid rgba(var(--tint),.16);box-shadow:0 10px 26px rgba(0,0,0,.4);
  transition:opacity .4s ease, transform .4s ease;
  animation:heroHintBob 2.4s ease-in-out infinite;}
.hero-flip-hint .hero-flip-brush{width:14px;height:14px;flex:0 0 auto;border-radius:50%;
  background:rgb(var(--accent-rgb));box-shadow:0 0 0 3px rgba(var(--accent-rgb),.3);}
.hero-flip-hint.is-off{opacity:0;transform:translateY(10px);}
@keyframes heroHintBob{0%,100%{transform:translateY(0);}50%{transform:translateY(-5px);}}
@media(max-width:1100px){ .hero-flip-hint{display:none;} }
@media(prefers-reduced-motion:reduce){ .hero-flip-hint{animation:none;} }

/* Composants 3D flottants dans le hero (Numériklub) */
.page-hero-floats .container{position:relative;z-index:1;}
.hero-floats{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;}
.hero-float{position:absolute;width:clamp(54px,6.5vw,104px);height:auto;
  filter:drop-shadow(0 12px 24px rgba(0,0,0,.45));
  animation:heroFloat 6.5s ease-in-out infinite;will-change:transform;}
.hero-float-1{top:9%;right:10%;animation-duration:6.5s;}
.hero-float-2{top:6%;left:8%;animation-duration:7.5s;animation-delay:.4s;}
.hero-float-3{top:26%;right:32%;animation-duration:5.5s;animation-delay:.8s;}
.hero-float-4{top:47%;left:2%;animation-duration:8s;animation-delay:.2s;}
.hero-float-5{top:15%;right:23%;animation-duration:6s;animation-delay:1s;}
.hero-float-6{top:60%;left:5%;animation-duration:7s;animation-delay:.6s;}
.hero-float-7{bottom:16%;right:43%;animation-duration:6.8s;animation-delay:1.2s;}
.hero-float-8{top:20%;right:4%;animation-duration:7.2s;animation-delay:.3s;}
@keyframes heroFloat{0%{transform:translateY(0) rotate(-3deg);}50%{transform:translateY(-15px) rotate(3deg);}100%{transform:translateY(0) rotate(-3deg);}}
@media(max-width:1100px){ .hero-float-4,.hero-float-6,.hero-float-7,.hero-float-8{display:none;} }
@media(max-width:760px){ .hero-float{display:none;} }
@media(prefers-reduced-motion:reduce){ .hero-float{animation:none;} }

/* L'été en images — étagère « bibliothèque » : reels en panneaux inclinés (fan 3D).
   IG embeds noircissent sous ~326px : chaque carte garde l'iframe à 330px. */
.nk-shelf{margin-top:var(--space-7);display:flex;justify-content:center;align-items:center;
  perspective:2000px;padding-block:var(--space-6);}
.nk-shelf-card{flex:none;width:330px;margin:0;margin-inline:-46px;
  display:flex;flex-direction:column;gap:var(--space-3);
  transform-origin:center;backface-visibility:hidden;
  transition:transform .55s var(--ease-out),box-shadow .55s var(--ease-out);}
.nk-shelf-card:first-child{margin-left:0;}
.nk-shelf-card:last-child{margin-right:0;}
.nk-shelf-card .ig-embed{width:330px;max-width:none;margin:0;}
.nk-shelf-card .ig-embed iframe{height:560px;}
.nk-shelf-cap{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.03em;
  text-transform:uppercase;color:rgba(var(--tint),.62);text-align:center;}
.nk-shelf-card:nth-child(1){transform:rotateY(26deg) translateZ(-40px);z-index:1;}
.nk-shelf-card:nth-child(2){transform:rotateY(9deg);z-index:2;}
.nk-shelf-card:nth-child(3){transform:rotateY(-9deg);z-index:2;}
.nk-shelf-card:nth-child(4){transform:rotateY(-26deg) translateZ(-40px);z-index:1;}
.nk-shelf-card:hover,.nk-shelf-card:focus-within{
  transform:rotateY(0) translateZ(60px) translateY(-10px);z-index:5;}
@media(max-width:920px){
  .nk-shelf{flex-wrap:wrap;perspective:none;gap:var(--space-6);padding-block:0;}
  .nk-shelf-card{margin-inline:auto;width:min(330px,90vw);transform:none!important;z-index:auto!important;}
}
@media(prefers-reduced-motion:reduce){ .nk-shelf-card{transition:none;} }

/* Habillage : flottants 3D décoratifs en coin de section (mêmes assets que le hero). */
.nk-sec{position:relative;overflow:hidden;}
.nk-sec > .container{position:relative;z-index:1;}
.nk-sec-deco{position:absolute;z-index:0;pointer-events:none;user-select:none;
  width:clamp(78px,9vw,148px);height:auto;opacity:.5;
  filter:drop-shadow(0 12px 22px rgba(0,0,0,.38));
  animation:heroFloat 7s ease-in-out infinite;will-change:transform;}
.nk-sec-deco-tr{top:8%;right:3%;}
.nk-sec-deco-bl{bottom:8%;left:3%;}
@media(prefers-reduced-motion:reduce){ .nk-sec-deco{animation:none;} }
@media(max-width:760px){ .nk-sec-deco{display:none;} }

/* Personnage (mascotte) posé sur la scène/île d'une section NK */
.nk-annuels-scene.has-char{position:relative;overflow:visible;}
.nk-scene-char{position:absolute;z-index:2;pointer-events:none;user-select:none;
  width:46%;height:auto;left:4%;bottom:34%;opacity:1;
  filter:drop-shadow(0 16px 26px rgba(0,0,0,.5));
  animation:heroFloat 6.5s ease-in-out infinite;will-change:transform;}
@media(prefers-reduced-motion:reduce){ .nk-scene-char{animation:none;} }

/* Écran vidéo live (embed Instagram) entre les personnages du hero.
   Instagram impose une largeur mini (~326px) : on rend l'iframe à 360px
   puis on la met à l'échelle pour remplir l'écran du téléphone. */
.hero-reel{--rw:clamp(176px,18vw,224px);position:absolute;right:13%;bottom:6%;z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:var(--space-3);
  transform:rotate(-4deg);transition:transform .35s var(--ease-out);}
.hero-reel:hover{transform:rotate(-2deg) translateY(-5px);}
.hero-reel-screen{position:relative;width:var(--rw);height:calc(var(--rw) * 1.07);
  border-radius:22px;overflow:hidden;background:#000;border:3px solid rgba(var(--tint),.9);
  box-shadow:0 26px 60px rgba(0,0,0,.55), 0 0 0 6px rgba(var(--accent-rgb),.18);}
.hero-reel .ig-embed{position:absolute;top:0;left:0;width:360px;max-width:none;margin:0;
  border:0;border-radius:0;box-shadow:none;background:#000;overflow:hidden;
  transform-origin:top left;transform:scale(calc(var(--rw) / 360px)) translateY(-84px);}
.hero-reel .ig-embed iframe{position:static;display:block;width:360px;height:760px;border:0;background:#000;}
.hero-reel-tag{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;
  text-transform:uppercase;color:#fff;background:rgba(0,0,0,.55);text-decoration:none;
  border:1px solid rgba(var(--tint),.18);padding:4px 12px;border-radius:999px;
  transition:border-color .2s var(--ease-out),background .2s var(--ease-out);}
.hero-reel-tag:hover{border-color:rgba(var(--accent-rgb),.7);background:rgba(0,0,0,.72);}
@media(max-width:1100px){ .hero-reel{right:5%;bottom:6%;} }
@media(max-width:760px){ .hero-reel{display:none;} }

/* Embeds Instagram (reels & posts) */
.ig-embed{position:relative;width:100%;max-width:340px;margin-inline:auto;
  border-radius:18px;overflow:hidden;background:#000;
  box-shadow:0 18px 44px rgba(0,0,0,.4);border:1px solid rgba(var(--tint),.08);}
.ig-embed iframe{display:block;width:100%;height:560px;border:0;background:#fff;}


/* Bande marques de confiance & partenaires */
.nk-trust{padding:var(--space-5) 0;}
.nk-trust-label{text-align:center;font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-4);}
.nk-trust-marquee{height:auto;padding-block:var(--space-2);}
.nk-trust-marquee .marquee-track{gap:clamp(48px,7vw,104px);}
.nk-trust-logo{height:clamp(52px,7vw,88px);width:auto;object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 8px 18px rgba(0,0,0,.4));transition:transform .25s var(--ease,ease);}
.nk-trust-logo:hover{transform:translateY(-4px) scale(1.06);}

/* ===================== Numériklub — nouvelles sections ===================== */
/* Ancrage du menu contextuel : décalage sous la nav fixe */
section.section[id],.nk-format[id]{scroll-margin-top:84px;}

/* Formats d'ateliers */
.nk-format{display:flex;flex-direction:column;gap:var(--space-2);height:100%;}
.nk-format .card-body{flex:1;}
.nk-format-cta{margin-top:var(--space-4);}

/* Prix « à partir de… » mis en évidence */
.nk-format-price{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);
  color:var(--accent);line-height:1.1;margin-top:var(--space-1);
  text-shadow:0 0 18px rgba(var(--accent-rgb),.35);}
/* Prochaines dates — étiquette + puces lisibles */
.nk-format-dates{display:flex;flex-direction:column;gap:6px;margin-top:var(--space-1);}
.nk-format-dates-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-muted);}
.nk-format-dates-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;}
.nk-format-date{position:relative;padding:6px 10px 6px 24px;border-radius:var(--radius-ui);
  font-size:var(--text-sm);line-height:1.3;color:var(--text);
  background:rgba(var(--accent-rgb),.10);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.28);}
.nk-format-date::before{content:"";position:absolute;left:10px;top:.78em;width:7px;height:7px;
  border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--glow);}
.nk-format-deco{margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-3);
  aspect-ratio:16/10;overflow:hidden;border-bottom:1px solid rgba(123,160,190,.12);}
.nk-format-deco img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s var(--ease-out,ease);}
.nk-format:hover .nk-format-deco img{transform:scale(1.06);}

/* Ateliers annuels — CTA centré */
.nk-annuels-layout{margin-top:var(--space-6);display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:var(--space-6);align-items:center;}
.nk-annuels-scene{margin:0;}
.nk-annuels-scene img{display:block;width:100%;height:auto;
  filter:drop-shadow(0 24px 44px rgba(0,0,0,.5));}
.nk-annuels-cards{display:flex;flex-direction:column;gap:var(--space-4);}
@media(max-width:900px){
  .nk-annuels-layout{grid-template-columns:1fr;}
  .nk-annuels-scene{max-width:560px;margin-inline:auto;order:-1;}
}
.nk-annuels-cta{display:flex;justify-content:center;margin-top:var(--space-7);}
@media(min-width:901px){
  .nk-annuels-layout.is-flip .nk-annuels-scene{order:2;}
  .nk-annuels-layout.is-flip .nk-annuels-cards{order:1;}
}

/* Périodes & dates — parcours annuels */
.nk-periodes{margin-top:var(--space-7);}
.nk-periodes-head{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4);}
.nk-periodes-note{margin:0;font-size:var(--text-sm);color:var(--text-secondary);max-width:60ch;}
.nk-periodes-table{width:100%;border-collapse:collapse;
  background:rgba(9,13,21,.55);border-radius:var(--radius-md);overflow:hidden;
  box-shadow:inset 0 0 0 1px rgba(var(--tint),.1);}
.nk-periodes-table th,.nk-periodes-table td{text-align:left;padding:var(--space-4);
  border-bottom:1px solid rgba(var(--tint),.08);vertical-align:top;}
.nk-periodes-table thead th{font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.08em;text-transform:uppercase;color:var(--accent);
  background:rgba(var(--accent-rgb),.06);}
.nk-periodes-table tbody th{font-family:var(--font-display);font-weight:600;color:var(--text);width:38%;}
.nk-periodes-table tbody td{font-size:var(--text-base);color:var(--text-secondary);}
.nk-periodes-table tbody tr:last-child th,.nk-periodes-table tbody tr:last-child td{border-bottom:0;}
@media(max-width:560px){
  .nk-periodes-table th,.nk-periodes-table td{padding:var(--space-3);}
  .nk-periodes-table tbody th{width:42%;}
}

/* L'esprit Numériklub — chapeau */
.nk-esprit-lead{max-width:72ch;font-size:var(--text-lg);line-height:1.6;color:var(--text-secondary);
  margin-bottom:var(--space-7);}

/* Nos actus (blog) */
.nk-post{display:flex;flex-direction:column;gap:var(--space-3);height:100%;overflow:hidden;}
.nk-post-thumb{margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) 0;}
.nk-post-thumb .img-ph{border-radius:0;aspect-ratio:16/10;}
.nk-post-meta{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-2);}
.nk-post-title{font-size:var(--text-lg);}
.nk-post .card-body{flex:1;}

/* Section actus — embeds Instagram (posts/reels réels) */
.nk-actu-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));
  gap:var(--space-5);align-items:start;justify-items:center;}
.nk-actu-embed{width:100%;max-width:360px;}
.nk-actu-embed iframe{height:580px;}

/* Nos partenaires */
.nk-partners{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);}
.nk-partner{display:flex;align-items:center;justify-content:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);
  border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--border);}
.nk-partner-logo{height:52px;width:auto;max-width:160px;object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 6px 14px rgba(0,0,0,.35));}
.partners-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);margin:var(--space-7) 0 var(--space-4);}
.partners-label:first-of-type{margin-top:var(--space-6);}
/* Partenaires (hub) : logos défilants sans cadre */
.partners-marquee{height:auto;padding-block:var(--space-3);}
.partners-marquee .marquee-track{gap:clamp(48px,7vw,104px);align-items:center;animation-duration:46s;}
.partners-marquee .marquee-track.reverse{animation-direction:reverse;}
.partner-logo{height:48px;width:auto;max-width:170px;object-fit:contain;flex:0 0 auto;
  filter:drop-shadow(0 6px 14px rgba(0,0,0,.35));}

/* Contact */
.nk-contact-maps{margin-top:var(--space-6);}
.nk-contact-head{margin-top:var(--space-8);margin-bottom:var(--space-5);}
.nk-contact-h{font-family:var(--font-display);font-weight:600;font-size:var(--text-2xl);line-height:1.1;}
.nk-contact-lead{margin-top:var(--space-3);color:var(--text-secondary);}
.nk-contact{display:flex;flex-direction:column;gap:var(--space-2);height:100%;}
.nk-contact-phone{font-family:var(--font-display);font-weight:600;font-size:var(--text-lg);
  color:var(--text);transition:color .2s;}
.nk-contact-phone:hover{color:var(--accent);}
.nk-socials{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2);}
.nk-social{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;
  padding:7px 12px;border-radius:var(--radius-ui);color:var(--text-secondary);
  box-shadow:inset 0 0 0 1px var(--border-strong);transition:var(--dur);}
.nk-social:hover{color:var(--text);background:rgba(var(--accent-rgb),.12);}

@media(max-width:760px){
  .nk-partners{grid-template-columns:1fr;}
}

/* =======================================================================
   Hero cinéma (Academy) — vidéo YouTube plein-cadre + overlays pilotés au
   scroll/souris + reveal liquide WebGL (réel <-> armure VFX, lentille curseur).
   ======================================================================= */
.page-hero-cinema{min-height:clamp(620px,92vh,1000px);display:flex;align-items:center;
  padding-top:var(--space-10);padding-bottom:var(--space-9);}
.page-hero-cinema .hero-bg{display:none;}
.page-hero-cinema .container{position:relative;z-index:6;}

.hero-video-bg{position:absolute;inset:0;z-index:0;overflow:hidden;background:#05070d;}
.hero-video-bg .hero-video{position:absolute;top:50%;left:50%;border:0;pointer-events:none;
  width:177.77vh;height:56.25vw;min-width:118%;min-height:118%;
  transform:translate(calc(-50% + var(--px,0px)),calc(-50% + var(--py,0px)))
    scale(calc(1.08 - 0.06 * var(--scroll-p,0)));
  transition:transform .12s linear;will-change:transform;}
.hero-poster{position:absolute;inset:0;z-index:1;background-size:cover;background-position:center;
  transition:opacity 1s ease;}
.hero-poster.is-hidden{opacity:0;}

.hero-tint{position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,10,18,.50),rgba(8,10,18,.40));
  opacity:calc(0.45 + 0.55 * (1 - var(--scroll-p,0)));}
.hero-grain{position:absolute;inset:0;z-index:3;pointer-events:none;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");
  background-size:200px 200px;opacity:calc(0.32 * (1 - var(--scroll-p,0)));
  animation:heroGrain 1.1s steps(3) infinite;will-change:background-position;}
@keyframes heroGrain{0%{background-position:0 0;}33%{background-position:-12px 9px;}
  66%{background-position:9px -12px;}100%{background-position:0 0;}}
.hero-vignette{position:absolute;inset:0;z-index:4;pointer-events:none;
  background:radial-gradient(120% 120% at 50% 42%,transparent 50%,rgba(0,0,0,.64) 100%);
  opacity:calc(0.35 + 0.65 * (1 - var(--scroll-p,0)));}
.hero-gradient{position:absolute;inset:0;z-index:5;pointer-events:none;
  background:linear-gradient(90deg,rgba(8,10,18,.88) 0%,rgba(8,10,18,.46) 40%,transparent 68%);
  opacity:calc(0.4 + 0.6 * (1 - var(--scroll-p,0)));}
.hero-scanline{position:absolute;inset:0;z-index:5;pointer-events:none;mix-blend-mode:screen;
  background:repeating-linear-gradient(0deg,rgba(var(--accent-rgb),.06) 0 1px,transparent 1px 3px);
  opacity:calc(0.5 * (1 - var(--scroll-p,0)));}

.hero-reveal{position:absolute;top:0;bottom:0;right:clamp(-30px,2vw,48px);
  width:min(56%,720px);z-index:5;pointer-events:none;}
.hero-reveal-canvas{position:absolute;inset:0;width:100%;height:100%;opacity:0;
  transition:opacity .7s ease;filter:drop-shadow(0 30px 60px rgba(0,0,0,.5));}
.hero-reveal-fallback{position:absolute;right:0;bottom:4%;width:100%;height:auto;max-height:92%;
  object-fit:contain;object-position:bottom right;opacity:1;transition:opacity .7s ease;
  filter:drop-shadow(0 30px 60px rgba(0,0,0,.5));}
.hero-reveal.gl-ready .hero-reveal-canvas{opacity:1;}
.hero-reveal.gl-ready .hero-reveal-fallback{opacity:0;}
.hero-reveal.no-gl .hero-reveal-canvas{display:none;}

@media(max-width:980px){
  .page-hero-cinema{display:block;}
  .page-hero-cinema .container{z-index:6;}
  .hero-reveal{position:relative;width:100%;height:46vh;right:auto;margin-top:var(--space-7);}
  .hero-gradient{background:linear-gradient(180deg,rgba(8,10,18,.78) 0%,rgba(8,10,18,.40) 50%,rgba(8,10,18,.55) 100%);}
}
@media(prefers-reduced-motion:reduce){
  .hero-grain{animation:none;}
  .hero-video-bg .hero-video{transition:none;}
}

/* ============================================================
   ACADEMY — Formation Initiale (hero flag, trust band, alumni,
   gallery, CTA metrics, floating bar)
   ============================================================ */

/* Hero urgency flag + social proof */
.hero-flag{display:inline-flex;align-items:center;gap:10px;margin-top:var(--space-5);
  padding:9px 16px;border-radius:999px;font-family:var(--font-mono);
  font-size:var(--text-xs);letter-spacing:.04em;color:var(--text);
  background:rgba(var(--tint),.06);border:1px solid var(--accent);
  box-shadow:0 0 22px var(--glow);backdrop-filter:blur(6px);}
.hero-flag-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);
  box-shadow:0 0 10px var(--accent);animation:flagPulse 1.8s ease-in-out infinite;}
@keyframes flagPulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.45;transform:scale(.7);}}
.hero-proof{margin-top:var(--space-5);font-family:var(--font-mono);
  font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-secondary);}
@media(prefers-reduced-motion:reduce){.hero-flag-dot{animation:none;}}

/* Trust band (studios logos marquee) */
.trust-band{padding:var(--space-7) 0;}
.trust-note{text-align:center;font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.18em;text-transform:uppercase;color:var(--text-secondary);
  margin-bottom:var(--space-6);}
.trust-marquee{height:auto;padding-block:var(--space-2);}
.trust-marquee .marquee-track{gap:clamp(40px,6vw,88px);align-items:center;}
.trust-logo{height:clamp(30px,4.4vw,50px);width:auto;object-fit:contain;flex:0 0 auto;
  opacity:.78;transition:opacity .25s ease,transform .25s ease;}
.trust-logo:hover{opacity:1;transform:translateY(-3px) scale(1.05);}

/* Certifications cards (L'excellence certifiée) */
.certif-card{display:flex;align-items:flex-start;gap:var(--space-5);}
.certif-icon{flex:0 0 auto;width:clamp(64px,7vw,84px);height:clamp(64px,7vw,84px);
  object-fit:contain;filter:drop-shadow(0 6px 16px rgba(0,0,0,.28));}
.certif-body{min-width:0;}
@media (max-width:560px){
  .certif-card{flex-direction:column;gap:var(--space-3);}
}
.certif-badge{display:block;width:clamp(72px,8vw,92px);height:clamp(72px,8vw,92px);
  object-fit:contain;margin-bottom:var(--space-4);
  filter:drop-shadow(0 8px 20px rgba(0,0,0,.32));}

/* Software logo wall — uniform white tiles */
.soft-logos{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5);}
.soft-logo{display:flex;align-items:center;justify-content:center;
  width:104px;height:64px;padding:10px 14px;border-radius:var(--radius-ui);
  background:#fff;border:1px solid rgba(255,255,255,.12);
  box-shadow:0 4px 14px rgba(0,0,0,.25);}
.soft-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;}
.soft-logo-text{font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.06em;text-transform:uppercase;color:#0b1e2e;text-align:center;line-height:1.2;}

/* Numeric / text KPI variant */
.stat-num.stat-text{font-size:var(--text-2xl);letter-spacing:.01em;text-align:center;}

/* KPI illustration (Une décennie d'impact) */
.stat-img{width:clamp(128px,14vw,184px);height:clamp(128px,14vw,184px);object-fit:contain;
  margin-bottom:var(--space-3);filter:drop-shadow(0 8px 22px rgba(0,0,0,.32));}

/* Horizontal scroll carousel (alumni) */
.h-scroll{display:flex;gap:var(--space-5);overflow-x:auto;scroll-snap-type:x mandatory;
  padding-bottom:var(--space-4);margin-inline:calc(-1 * var(--space-2));
  padding-inline:var(--space-2);-webkit-overflow-scrolling:touch;}
.h-scroll::-webkit-scrollbar{height:6px;}
.h-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px;}
.alumni-card{flex:0 0 clamp(248px,72vw,300px);scroll-snap-align:start;
  display:flex;flex-direction:column;align-items:flex-start;}
.alumni-card .img-ph{min-height:180px;width:100%;}
.alumni-card .teacher-photo{width:100%;}

/* Réalisations étudiants — grille de vignettes glass (galaxie), glow par univers.
   .glass-vignette (effects.css) fournit fond/flou/bordure/reflet ; on ajoute le glow
   d'univers (--glow / --accent-rgb) et on réutilise .reel-play / .reel-tag du showreel. */
.reali-section{position:relative;overflow:hidden;}
.reali-section::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(72% 60% at 50% 22%, rgba(var(--accent-rgb),.12), transparent 60%);
}
.reali-section > .container{position:relative;z-index:1;}
.reali-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-5);
  margin-top:var(--space-6);
}
.reali-card{
  --halo:var(--accent-rgb);
  display:flex;flex-direction:column;padding:10px;
  box-shadow:0 10px 30px rgba(8,20,32,.45), inset 0 1px 0 rgba(220,231,239,.10);
  transition:transform .45s var(--ease-out), box-shadow .45s ease;
}
.reali-card:hover{
  transform:translateY(-5px);
  box-shadow:0 18px 46px rgba(8,20,32,.5), 0 0 30px var(--glow), inset 0 1px 0 rgba(220,231,239,.10);
}
.reali-thumb{
  position:relative;display:block;width:100%;aspect-ratio:16/9;overflow:hidden;
  border-radius:var(--radius-ui);
  border:1px solid rgba(var(--accent-rgb),.22);
  background:
    radial-gradient(120% 120% at 30% 18%, rgba(var(--accent-rgb),.22), transparent 60%),
    linear-gradient(150deg, #11131c, #0b0e17);
  box-shadow:inset 0 0 40px rgba(0,0,0,.45);
  transition:border-color .4s ease, box-shadow .4s ease;
}
.reali-card:hover .reali-thumb{
  border-color:rgba(var(--halo),.6);
  box-shadow:0 0 0 1px rgba(var(--halo),.4), inset 0 0 40px rgba(0,0,0,.4);
}
.reali-card:hover .reel-play{transform:translate(-50%,-50%) scale(1.12);background:rgba(var(--halo),.85);}
.reali-card:hover .reel-play::after{border-left-color:#0a0c12;}
.reali-meta{display:flex;flex-direction:column;gap:3px;padding:12px 6px 4px;}
.reali-title{font-family:var(--font-display);font-weight:700;color:#fff;font-size:var(--text-md,16px);line-height:1.2;}
.reali-sub{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--text-muted);}
.reali-cta{position:relative;z-index:1;text-align:center;margin-top:var(--space-6);}
@media(max-width:900px){.reali-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.reali-grid{grid-template-columns:1fr;}}

/* CTA final — metrics + urgency */
.cta-metrics{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3) var(--space-5);
  margin-top:var(--space-5);}
.cta-metrics span{position:relative;font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);padding-left:18px;}
.cta-metrics span::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--glow);}
.cta-urgency{margin-top:var(--space-5)!important;font-family:var(--font-mono);
  font-size:var(--text-sm);color:var(--text)!important;letter-spacing:.03em;}

/* Floating admissions bar (academy main page only) */
.academy-floatbar{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:60;
  display:flex;align-items:center;gap:var(--space-5);flex-wrap:wrap;justify-content:center;
  width:min(960px,calc(100% - 24px));padding:12px 14px 12px 22px;border-radius:999px;
  background:rgba(12,16,24,.86);border:1px solid var(--accent);
  box-shadow:0 12px 40px rgba(0,0,0,.5),0 0 26px var(--glow);backdrop-filter:blur(12px);}
.floatbar-text{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;
  color:var(--text);}
.floatbar-actions{display:flex;align-items:center;gap:10px;}
.floatbar-actions .btn{padding-block:9px;}
body:has(.academy-floatbar) #site-footer{padding-bottom:calc(var(--space-7) + 64px);}
@media(max-width:640px){
  .academy-floatbar{flex-direction:column;gap:10px;border-radius:var(--radius-ui);
    padding:14px 16px;text-align:center;bottom:10px;}
  .floatbar-actions{width:100%;justify-content:center;}
}

/* Carousel navigation (alumni rail prev/next) */
.carousel-head{display:flex;justify-content:space-between;align-items:flex-end;
  gap:var(--space-5);flex-wrap:wrap;}
.carousel-head .section-head{margin-bottom:var(--space-5);}
.carousel-nav{display:flex;gap:10px;flex:0 0 auto;margin-bottom:var(--space-5);}
.carousel-btn{display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:50%;cursor:pointer;
  font-family:var(--font-display);font-size:var(--text-xl);line-height:1;
  color:var(--text);background:rgba(var(--tint),.04);
  border:1px solid var(--accent);box-shadow:0 0 14px var(--glow);
  transition:background .2s ease,transform .2s ease,opacity .2s ease;}
.carousel-btn:hover{background:var(--accent);color:#0a0e14;transform:translateY(-2px);}
.carousel-btn:active{transform:translateY(0);}
.carousel-btn:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
@media(max-width:560px){.carousel-nav{margin-bottom:var(--space-4);}}

/* ============================================================
   ACADEMY — Hero scroll-scale (carte vidéo qui grandit au scroll)
   Une seule variable --scroll-p (0→1) pilote tout : taille de la
   carte, coins, bordure, ombre, sortie du texte et chute du portrait.
   ============================================================ */
/* IMPORTANT : surcharge le overflow:hidden de .page-hero (sinon il devient le
   conteneur de défilement de .hero-sticky et CASSE le position:sticky → la carte
   grandit en sortant de l'écran au lieu de s'épingler en plein écran). Le rognage
   se fait sur .hero-sticky (overflow:hidden, height:100vh). */
.page-hero-scroll{position:relative;min-height:170vh;padding:0;margin-top:calc(-1 * var(--nav-h));overflow:visible;}
.page-hero-scroll .hero-bg{display:none;}
.hero-sticky{position:sticky;top:0;height:100vh;width:100%;overflow:hidden;background:transparent;}
/* Fond du hero en couche séparée : décalé sous le menu au repos (espace visible
   entre la nav et le hero) ; l'inset se referme à mesure que la carte grandit,
   pour un vrai plein écran à --scroll-p:1. */
.hero-sticky::before{content:"";position:absolute;left:0;right:0;bottom:0;z-index:0;
  top:calc((1 - var(--scroll-p,0)) * (var(--nav-h) + 56px));
  background:transparent;}

/* Texte gauche — glisse hors écran à gauche + floute en scrollant */
.hero-left{position:absolute;inset:0;z-index:4;display:flex;align-items:stretch;
  transform:translate3d(calc(var(--scroll-p,0) * -90vw),0,0);
  filter:blur(calc(var(--scroll-p,0) * 30px));
  opacity:calc(1 - var(--scroll-p,0) * 1.2);
  will-change:transform,opacity,filter;pointer-events:none;}
.hero-left-inner{width:min(46vw,560px);margin-left:max(var(--space-6), calc((100vw - 1200px) / 2 + var(--space-6)));pointer-events:auto;
  display:flex;flex-direction:column;justify-content:center;min-height:100%;box-sizing:border-box;
  padding-top:clamp(150px,calc(var(--nav-h) + 96px),220px);
  padding-bottom:clamp(48px,7vh,110px);}
.hero-left-inner h1{max-width:14ch;font-size:clamp(40px,5vw,72px);line-height:1.05;}
.hero-left-inner .lead,.hero-left-inner .hero-sub{max-width:36ch;}

/* Carte vidéo — vignette 16:9 → plein écran */
.hero-card{position:absolute;top:50%;left:50%;z-index:3;margin:0;overflow:hidden;
  width:calc(50vw + var(--scroll-p,0) * 50vw);
  height:calc(28.125vw + var(--scroll-p,0) * (100vh - 28.125vw));
  max-width:100vw;max-height:100vh;
  /* Au repos, on recentre la carte sous le menu (décalage de nav-h/2) ;
     le décalage s'annule à mesure qu'elle grandit vers le plein écran. */
  transform:translate(-50%, calc(-50% + (1 - var(--scroll-p,0)) * var(--nav-h) * .5));
  border-radius:calc(20px - var(--scroll-p,0) * 20px);
  border:1px solid rgba(var(--tint),calc(.15 - var(--scroll-p,0) * .15));
  box-shadow:0 calc(40px * (1 - var(--scroll-p,0))) calc(100px * (1 - var(--scroll-p,0))) rgba(0,0,0,calc(.62 * (1 - var(--scroll-p,0)))),
    0 0 calc(70px * (1 - var(--scroll-p,0))) rgba(var(--accent-rgb),calc(.28 * (1 - var(--scroll-p,0))));
  background:transparent;will-change:width,height,border-radius;}
.hero-card-media{position:absolute;inset:0;overflow:hidden;}
.hero-card-poster{position:absolute;inset:0;background-size:cover;background-position:center;}
.hero-card-video{position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%) scale(calc(1.42 - var(--scroll-p,0) * .2));
  width:100%;height:100%;border:0;pointer-events:none;}
.hero-card-scan{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;
  background:repeating-linear-gradient(0deg,rgba(var(--accent-rgb),.07) 0 1px,transparent 1px 3px);
  opacity:calc(.5 * (1 - var(--scroll-p,0)));}

/* Portrait droit (armure VFX) — au premier plan, tombe en bas + floute au scroll */
.reveal-stage{position:absolute;z-index:6;right:clamp(-40px,-1vw,24px);bottom:0;
  width:min(52vw,700px);height:100%;display:flex;align-items:flex-end;justify-content:flex-end;
  transform:translate3d(0,calc(20px + var(--scroll-p,0) * 110vh),0) scale(calc(1.1 - var(--scroll-p,0) * .2));
  filter:blur(calc(var(--scroll-p,0) * 24px));
  opacity:calc(1 - var(--scroll-p,0) * .85);
  pointer-events:none;will-change:transform,filter,opacity;}
.reveal-img{width:100%;height:auto;max-height:94%;object-fit:contain;object-position:bottom right;
  filter:drop-shadow(0 30px 60px rgba(0,0,0,.5));}
/* Portrait avec reveal « coup de pinceau » : armure VFX (base) → étudiant réel
   en short orange (reveal). Le calque est calé sur l'image pour aligner le pinceau. */
.reveal-stage-flip{pointer-events:none;}
.reveal-flip{position:relative;width:100%;pointer-events:auto;}
.reveal-flip .hero-flip-base{display:block;width:100%;height:auto;object-fit:contain;
  filter:drop-shadow(0 30px 60px rgba(0,0,0,.5));}
.reveal-flip .hero-flip-rev{position:absolute;top:0;left:0;width:100%;height:100%;
  object-fit:contain;object-position:center;transform:none;
  filter:drop-shadow(0 30px 60px rgba(0,0,0,.5));}
/* Sans survol fin / mouvement réduit : on conserve l'armure VFX (pas de reveal). */
.reveal-flip.is-3d .hero-flip-base{opacity:1;}
.reveal-flip.is-3d .hero-flip-rev{opacity:0;}

/* Indice de défilement */
.hero-cue{position:absolute;left:50%;bottom:24px;z-index:5;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:9px;
  font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.2em;text-transform:uppercase;
  color:var(--text-secondary);opacity:calc(1 - var(--scroll-p,0) * 4);}
.hero-cue::after{content:"";width:1px;height:26px;
  background:linear-gradient(var(--accent),transparent);
  animation:cuePulse 1.8s ease-in-out infinite;}
@keyframes cuePulse{0%,100%{opacity:.3;transform:scaleY(.6);}50%{opacity:1;transform:scaleY(1);}}

/* Repli mobile / tablette : pas de scroll-jacking, mise en page empilée */
@media(max-width:980px){
  .page-hero-scroll{min-height:auto;margin-top:0;}
  .hero-sticky{position:relative;height:auto;display:block;
    padding:var(--space-4) 0 var(--space-8);}
  .hero-sticky::before{top:0;}
  .hero-left{position:relative;inset:auto;display:block;
    transform:none!important;filter:none!important;opacity:1!important;}
  .hero-left-inner{width:auto;margin:0 auto;padding:0 var(--space-6);
    display:block;min-height:0;}
  .hero-left-inner h1,.hero-left-inner .lead,.hero-left-inner .hero-sub{max-width:none;}
  .hero-card{position:relative;top:auto;left:auto;transform:none!important;
    width:auto;height:auto;aspect-ratio:16/9;margin:var(--space-7) var(--space-6) 0;
    border-radius:var(--radius-ui);border:1px solid var(--border);box-shadow:none;}
  .reveal-stage{position:relative;right:auto;width:100%;height:auto;justify-content:center;
    margin-top:var(--space-6);transform:none!important;filter:none!important;opacity:1!important;}
  .reveal-img{max-height:none;width:min(78%,420px);}
  .reveal-stage-flip{justify-content:center;}
  .reveal-flip{width:min(78%,420px);}
  .hero-cue{display:none;}
}
@media(prefers-reduced-motion:reduce){
  .page-hero-scroll{min-height:auto;margin-top:0;}
  .hero-sticky{position:relative;height:auto;display:block;padding:var(--space-4) 0;}
  .hero-sticky::before{top:0;}
  .hero-left{position:relative;inset:auto;display:block;
    transform:none!important;filter:none!important;opacity:1!important;}
  .hero-left-inner{width:auto;margin:0 auto;padding:0 var(--space-6);
    display:block;min-height:0;}
  .hero-card{position:relative;top:auto;left:auto;transform:none!important;width:min(88vw,920px);
    height:auto;aspect-ratio:16/9;margin:var(--space-7) auto 0;border-radius:var(--radius-ui);box-shadow:none;}
  .reveal-stage{position:relative;right:auto;width:100%;height:auto;justify-content:center;
    margin-top:var(--space-6);transform:none!important;filter:none!important;opacity:1!important;}
  .reveal-img{max-height:none;width:min(70%,400px);}
  .reveal-stage-flip{justify-content:center;}
  .reveal-flip{width:min(70%,400px);}
  .hero-cue{display:none;}
}

/* =========================================================
   SHOWREEL "galaxie" — Academy (Formation Initiale)
   4 couches : profondeur (--depth) · flottement (margin-top)
   · spotlight (.is-featured) · dispersion scroll (--curtain/--f*)
   ========================================================= */
.reel-section{
  position:relative;overflow:hidden;padding-block:var(--space-7);
  background:
    radial-gradient(120% 80% at 50% 36%, rgba(var(--tint),.05), transparent 60%),
    radial-gradient(80% 70% at 50% 50%, rgba(225,227,100,.10), transparent 62%),
    linear-gradient(180deg, #07090f 0%, #0b0e17 50%, #07090f 100%);
}
.reel-galaxy{
  position:relative;max-width:1280px;margin-inline:auto;
  min-height:clamp(560px,86vh,820px);
  --curtain:0;
}

/* Mots latéraux (rideau) */
.reel-word{
  position:absolute;top:50%;z-index:1;pointer-events:none;
  font-family:var(--font-display, inherit);font-weight:800;
  font-size:clamp(64px,16vw,220px);line-height:.8;letter-spacing:-.02em;
  color:transparent;-webkit-text-stroke:1px rgba(var(--tint),.10);
  text-transform:uppercase;opacity:.5;
  transition:opacity .4s ease;
  will-change:transform;
}
.reel-word-l{left:-.1em;transform:translate(calc(var(--curtain) * -42vw), -50%);}
.reel-word-r{right:-.1em;transform:translate(calc(var(--curtain) * 42vw), -50%);}

/* Titre de section au-dessus du portail */
.reel-head{position:relative;z-index:5;text-align:center;pointer-events:none;}
.reel-head .section-head{margin-inline:auto;}
.reel-head .num{color:var(--accent);}
.reel-head h2{color:#fff;}
.reel-head p{color:rgba(var(--tint),.66);}

/* Scène : conteneur des vignettes en arc */
.reel-stage{position:absolute;inset:0;z-index:4;}

/* Carte (couche dispersion scroll) */
.reel-card{
  position:absolute;z-index:4;
  --fx:0px;--fy:0px;--fscale:1;--frot:0deg;--fblur:0px;--fopacity:1;
  transform:translate(-50%,-50%) translate(var(--fx),var(--fy)) rotate(var(--frot)) scale(var(--fscale));
  opacity:var(--fopacity);filter:blur(var(--fblur));
  will-change:transform,opacity,filter;
}
.reel-lg{width:clamp(180px,20vw,300px);}
.reel-md{width:clamp(150px,16vw,238px);}
.reel-sm{width:clamp(120px,12.5vw,184px);}
/* Positions en deux arcs symétriques s'incurvant vers la porte */
.reel-top{top:16%;} .reel-mid{top:50%;} .reel-bottom{top:84%;}
.reel-left.reel-top{left:18%;} .reel-left.reel-mid{left:32%;} .reel-left.reel-bottom{left:22%;}
.reel-right.reel-top{left:82%;} .reel-right.reel-mid{left:68%;} .reel-right.reel-bottom{left:78%;}

/* Couche flottement ambiant (margin-top, pas transform) */
.reel-card-float{
  display:block;
  transform:rotate(var(--rot,0deg));
  animation:reelFloat var(--fdur,8s) ease-in-out var(--fdelay,0s) infinite;
  will-change:margin-top;
}
@keyframes reelFloat{
  0%,100%{margin-top:0;}
  50%{margin-top:-16px;}
}

/* Couche profondeur + spotlight (sur l'inner) */
.reel-card-inner{
  display:block;width:100%;padding:0;border:0;background:transparent;
  cursor:pointer;text-align:left;color:#fff;
  transform-origin:50% 50%;
  transform:scale(calc(.72 + var(--depth) * .28));
  opacity:calc(.5 + var(--depth) * .5);
  filter:blur(calc((1 - var(--depth)) * 3.4px));
  transition:transform .6s var(--ease-out, ease), opacity .6s ease, filter .6s ease;
}
.reel-card.is-featured{z-index:9;}
.reel-card.is-featured .reel-card-inner{
  transform:scale(calc(.72 + var(--depth) * .28 + .2)) translateY(-8px);
  opacity:1;filter:none;
}

/* Vignette 16:9 */
.reel-thumb{
  position:relative;display:block;width:100%;aspect-ratio:16/9;overflow:hidden;
  border-radius:var(--radius-md, 14px);
  border:1px solid rgba(var(--tint),.14);
  background:#11131c;
  box-shadow:0 18px 40px rgba(0,0,0,.5);
  transition:box-shadow .5s ease, border-color .5s ease;
}
.reel-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.reel-card.reel-edge{--halo:225,227,100;}   /* jaune #E1E364 */
.reel-card.reel-mid{--halo:255,255,255;}     /* blanc */
.reel-card.is-featured .reel-thumb{
  border-color:rgba(var(--halo),.9);
  box-shadow:0 0 0 1px rgba(var(--halo),.7),
             0 0 34px 6px rgba(var(--halo),.42),
             0 24px 54px rgba(0,0,0,.55);
}
/* Bouton lecture */
.reel-play{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:44px;height:44px;border-radius:50%;
  background:rgba(10,12,18,.55);backdrop-filter:blur(4px);
  border:1px solid rgba(var(--tint),.5);
  display:grid;place-items:center;
  transition:transform .4s ease, background .4s ease;
}
.reel-play::after{
  content:"";display:block;
  border-left:13px solid #fff;border-top:8px solid transparent;border-bottom:8px solid transparent;
  margin-left:3px;
}
.reel-card-inner:hover .reel-play,
.reel-card.is-featured .reel-play{transform:translate(-50%,-50%) scale(1.12);background:rgba(var(--halo),.85);}
.reel-card-inner:hover .reel-play::after,
.reel-card.is-featured .reel-play::after{border-left-color:#0a0c12;}
.reel-card-inner:hover .reel-thumb{box-shadow:0 0 0 1px rgba(var(--halo),.6),0 22px 50px rgba(0,0,0,.55);}

/* Légende */
.reel-meta{display:block;margin-top:10px;}
.reel-tag{
  display:inline-block;font-size:var(--text-xs,11px);letter-spacing:.08em;
  text-transform:uppercase;color:rgba(var(--halo),.95);font-weight:700;
}
.reel-title{display:block;font-weight:700;font-size:var(--text-sm,14px);color:#fff;margin-top:2px;}

/* Accessibilité clavier */
.reel-card-inner:focus-visible{outline:none;}
.reel-card-inner:focus-visible .reel-thumb{
  border-color:rgba(var(--halo),1);
  box-shadow:0 0 0 2px rgba(var(--halo),.9),0 0 26px 4px rgba(var(--halo),.45);
}

/* --- Modal vidéo --- */
body.reel-lock{overflow:hidden;}
.reel-modal{
  position:fixed;inset:0;z-index:1000;display:grid;place-items:center;
  padding:var(--space-5,20px);opacity:0;transition:opacity .26s ease;
}
.reel-modal.is-open{opacity:1;}
.reel-modal[hidden]{display:none;}
.reel-modal-backdrop{position:absolute;inset:0;background:rgba(4,5,9,.86);backdrop-filter:blur(6px);}
.reel-modal-box{
  position:relative;z-index:1;width:min(1040px,94vw);
  transform:scale(.96);transition:transform .26s var(--ease-out, ease);
}
.reel-modal.is-open .reel-modal-box{transform:scale(1);}
.reel-modal-frame{
  position:relative;width:100%;aspect-ratio:16/9;border-radius:var(--radius-lg,16px);
  overflow:hidden;background:#000;box-shadow:0 40px 90px rgba(0,0,0,.6);
  border:1px solid rgba(var(--tint),.12);
}
.reel-modal-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.reel-modal-close{
  position:absolute;top:-14px;right:-14px;z-index:2;
  width:44px;height:44px;border-radius:50%;border:1px solid rgba(var(--tint),.3);
  background:rgba(20,22,30,.92);color:#fff;font-size:26px;line-height:1;cursor:pointer;
  display:grid;place-items:center;transition:background .25s ease, transform .25s ease;
}
.reel-modal-close:hover{background:rgba(225,227,100,.92);color:#0a0c12;transform:rotate(90deg);}

/* --- Responsive : grille empilée (pas de scroll-jacking) --- */
@media(max-width:820px){
  .reel-galaxy{min-height:0;}
  .reel-word{display:none;}
  .reel-head{margin-bottom:var(--space-5);}
  .reel-stage{
    position:static;display:grid;grid-template-columns:repeat(2,1fr);
    gap:var(--space-4);
  }
  .reel-card{
    position:static;width:auto!important;
    transform:none!important;opacity:1!important;filter:none!important;
  }
  .reel-card-inner{transform:none!important;opacity:1!important;filter:none!important;}
  .reel-card-float{animation-duration:calc(var(--fdur,8s) + 1s);}
  .reel-modal-close{top:-8px;right:4px;}
}
@media(max-width:480px){
  .reel-stage{grid-template-columns:1fr;}
}

/* --- Mouvement réduit : tout statique, lisible, modal conservé --- */
@media(prefers-reduced-motion:reduce){
  .reel-galaxy{min-height:0;}
  .reel-word{display:none;}
  .reel-stage{
    position:static;display:grid;grid-template-columns:repeat(3,1fr);
    gap:var(--space-4);margin-top:var(--space-5);
  }
  .reel-card{
    position:static;width:auto!important;
    transform:none!important;opacity:1!important;filter:none!important;
  }
  .reel-card-float{animation:none!important;transform:none!important;}
  .reel-card-inner{transform:none!important;opacity:1!important;filter:none!important;}
  .reel-modal,.reel-modal-box{transition:none!important;animation:none!important;}
}
@media(max-width:820px) and (prefers-reduced-motion:reduce){
  .reel-stage{grid-template-columns:repeat(2,1fr);}
}

/* ============================================================
   HUB — Hero triptyque : 3 panneaux univers pliés (vidéo
   YouTube masquée + teinte couleur) + personnages en avant-plan.
   ============================================================ */
.page-hero-hub{overflow:hidden;padding:calc(var(--nav-h) + var(--space-8)) 0 var(--space-9);
  min-height:clamp(620px,84vh,880px);display:flex;align-items:center;}
.hub-hero-grid{display:grid;grid-template-columns:minmax(300px,0.92fr) 1.08fr;
  gap:clamp(24px,4vw,64px);align-items:center;position:relative;z-index:2;}
.hub-hero-copy h1{max-width:14ch;}
.hub-hero-copy .hero-sub{max-width:42ch;}

/* Logos univers sous le CTA du hero hub */
.hub-ulogos{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(20px,2.6vw,40px);
  margin-top:var(--space-5);}
.hub-ulogo{display:inline-flex;align-items:center;text-decoration:none;
  transition:transform var(--dur),opacity var(--dur);opacity:.92;}
.hub-ulogo:hover,.hub-ulogo:focus-visible{transform:translateY(-2px);opacity:1;}
.hub-ulogo-img{height:26px;width:auto;object-fit:contain;display:block;}
.hub-ulogo-img.is-tinted{aspect-ratio:var(--ar,1144/280);height:26px;width:auto;background-color:rgb(var(--c));
  -webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat;}
.hub-ulogo-txt{font-family:var(--font-mono);font-weight:600;font-size:var(--text-sm);
  color:var(--accent);}

/* Scène triptyque : hauteur plafonnée, panneaux centrés avec de l'air en
   haut, personnages ancrés au bas (pieds visibles, pas de débordement). */
.hub-booklet-wrap{position:relative;height:clamp(470px,50vw,620px);
  transform:translateY(clamp(-110px,-13vw,-60px));}
.hub-booklet{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  perspective:1600px;transform-style:preserve-3d;}
.hub-panel{position:relative;flex:0 0 30%;height:82%;border-radius:20px;
  transform-style:preserve-3d;text-decoration:none;box-shadow:0 40px 80px rgba(0,0,0,.5);}
.hub-panel-1{transform:rotateY(40deg);transform-origin:right center;margin-right:-1.5%;z-index:1;}
.hub-panel-2{transform:translateZ(46px);height:90%;z-index:3;}
.hub-panel-3{transform:rotateY(-40deg);transform-origin:left center;margin-left:-1.5%;z-index:1;}
.hub-panel-media{position:absolute;inset:0;border-radius:20px;overflow:hidden;
  background:#05070d;isolation:isolate;}
.hub-panel-video{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  height:100%;width:auto;aspect-ratio:16/9;border:0;pointer-events:none;}
.hub-panel-fallback{position:absolute;inset:0;background:var(--grad-hero);}
.hub-panel-tint{position:absolute;inset:0;background:rgba(var(--accent-rgb),.5);
  mix-blend-mode:multiply;}
.hub-panel-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(var(--accent-rgb),.15) 0%,rgba(0,0,0,.1) 45%,rgba(var(--accent-rgb),.55) 100%);}
.hub-panel::before{content:"";position:absolute;inset:-1px;border-radius:21px;
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.6),0 0 50px rgba(var(--accent-rgb),.35);
  pointer-events:none;z-index:4;}
.hub-panel-scan{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;border-radius:20px;
  background:repeating-linear-gradient(0deg,rgba(var(--tint),.05) 0 1px,transparent 1px 3px);}
.hub-panel-label{position:absolute;top:18px;right:14px;z-index:4;
  writing-mode:vertical-rl;text-orientation:mixed;
  font-weight:800;letter-spacing:.04em;font-size:clamp(15px,1.5vw,22px);
  color:rgba(var(--tint),.92);text-shadow:0 2px 12px rgba(0,0,0,.5);pointer-events:none;}
.hub-panel-logo{position:absolute;top:16px;left:50%;transform:translateX(-50%);z-index:4;
  height:clamp(18px,2vw,26px);width:auto;max-width:80%;object-fit:contain;pointer-events:none;
  filter:drop-shadow(0 2px 10px rgba(0,0,0,.55));}
.hub-panel-logo.is-tinted{aspect-ratio:1144/280;width:min(80%,150px);height:auto;
  background-color:#fff;
  -webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat;}

/* Personnages (plan flat devant les panneaux), pieds ancrés au bas du wrap */
.hub-chars{position:absolute;inset:0;z-index:5;pointer-events:none;}
.hub-char{position:absolute;bottom:0;object-fit:contain;object-position:bottom center;
  filter:drop-shadow(0 24px 40px rgba(0,0,0,.55));animation:hubFloat 7s ease-in-out infinite;}
.hub-char-1{left:-14%;height:50%;animation-delay:-1s;}
.hub-char-2{left:55%;transform:translateX(-50%);height:62%;bottom:3%;animation-delay:-3.5s;}
.hub-char-3{right:-15%;height:78%;animation-delay:-2s;}
@keyframes hubFloat{0%,100%{translate:0 0;}50%{translate:0 -14px;}}

@media(max-width:980px){
  .page-hero-hub{min-height:auto;padding:var(--space-4) 0 var(--space-8);}
  .page-hero:not(.page-hero-scroll){padding:var(--space-4) 0 var(--space-8);}
  .hub-hero-grid{grid-template-columns:1fr;gap:var(--space-7);}
  .hub-hero-copy h1,.hub-hero-copy .hero-sub{max-width:none;}
  .hub-booklet-wrap{height:clamp(360px,72vw,460px);transform:none;}
  .hub-booklet{perspective:1200px;}
  .hub-panel-1{transform:rotateY(34deg);}
  .hub-panel-3{transform:rotateY(-34deg);}
}
@media(max-width:560px){
  .hub-char-1{left:-8%;height:46%;} .hub-char-2{left:52%;height:56%;} .hub-char-3{right:-9%;height:70%;}
  .hub-panel-label{font-size:13px;}
}
@media(prefers-reduced-motion:reduce){
  .hub-char{animation:none;}
}

/* ============================================================
   NUMÉRIKLUB — Parcours de réservation (modal multi-étapes)
   ============================================================ */
.resa-modal{position:fixed;inset:0;z-index:1100;display:grid;place-items:center;
  padding:var(--space-5,20px);opacity:0;transition:opacity .26s ease;}
.resa-modal.is-open{opacity:1;}
.resa-modal[hidden]{display:none;}
.resa-backdrop{position:absolute;inset:0;background:rgba(4,5,9,.86);backdrop-filter:blur(6px);}
.resa-box{position:relative;z-index:1;width:min(720px,96vw);max-height:92vh;display:flex;flex-direction:column;
  background:var(--surface);border:1px solid rgba(var(--tint),.12);border-radius:var(--radius-lg,16px);
  box-shadow:0 40px 90px rgba(0,0,0,.6);transform:scale(.96);transition:transform .26s var(--ease-out,ease);overflow:hidden;}
.resa-modal.is-open .resa-box{transform:scale(1);}
.resa-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  padding:var(--space-5) var(--space-5) var(--space-4);border-bottom:1px solid rgba(var(--tint),.08);}
.resa-eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--accent);}
.resa-close{width:38px;height:38px;flex:none;border-radius:50%;border:1px solid rgba(var(--tint),.2);
  background:rgba(var(--tint),.04);color:var(--text);font-size:22px;line-height:1;cursor:pointer;display:grid;place-items:center;
  transition:background .2s ease,transform .2s ease;}
.resa-close:hover{background:var(--accent);color:#0a0c12;transform:rotate(90deg);}

.resa-steps{display:flex;gap:var(--space-2);list-style:none;margin:0;
  padding:var(--space-4) var(--space-5);border-bottom:1px solid rgba(var(--tint),.08);overflow-x:auto;}
.resa-steps[hidden]{display:none;}
.resa-step{display:flex;align-items:center;gap:8px;flex:1;min-width:0;opacity:.5;transition:opacity .2s ease;}
.resa-step.is-active,.resa-step.is-done{opacity:1;}
.resa-step-n{width:24px;height:24px;flex:none;border-radius:50%;display:grid;place-items:center;
  font-family:var(--font-mono);font-size:var(--text-xs);border:1px solid rgba(var(--tint),.25);color:var(--text-secondary);}
.resa-step.is-active .resa-step-n{background:var(--accent);color:#0a0c12;border-color:var(--accent);}
.resa-step.is-done .resa-step-n{border-color:var(--accent);color:var(--accent);}
.resa-step-l{font-size:var(--text-xs);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.resa-step.is-active .resa-step-l{color:var(--text);}

.resa-body{padding:var(--space-5);overflow-y:auto;}
.resa-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;margin:0 0 var(--space-4);}
.resa-intro{color:var(--text-secondary);font-size:var(--text-sm);margin:0 0 var(--space-4);}
.resa-intro strong{color:var(--accent);}

.resa-types,.resa-profiles{display:grid;gap:var(--space-3);}
.resa-type,.resa-profile{display:flex;flex-direction:column;gap:4px;text-align:left;cursor:pointer;
  padding:var(--space-4);border-radius:var(--radius-md,12px);border:1px solid rgba(var(--tint),.12);
  background:rgba(var(--tint),.03);color:var(--text);transition:border-color .2s ease,background .2s ease,transform .2s ease;}
.resa-type:hover,.resa-profile:hover,.resa-type:focus-visible,.resa-profile:focus-visible{
  border-color:var(--accent);background:rgba(var(--tint),.06);transform:translateY(-2px);outline:none;}
.resa-type-name,.resa-profile-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;}
.resa-type-meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent);}
.resa-type-desc,.resa-profile-desc{font-size:var(--text-sm);color:var(--text-secondary);}

.resa-fieldset{border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-md,12px);
  padding:var(--space-4);margin:0 0 var(--space-4);}
.resa-fieldset legend{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--text);padding:0 8px;}
.resa-required{font-size:var(--text-xs);color:var(--text-secondary);margin:0 0 var(--space-3);}
.resa-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3) var(--space-4);}
.resa-grid .field{margin-bottom:0;}
.resa-field-full{grid-column:1/-1;}
.resa-req{color:var(--accent);}
.resa-opt{color:var(--text-secondary);font-weight:400;text-transform:none;letter-spacing:0;}

.resa-weeks{margin-top:var(--space-4);}
.resa-weeks-title{font-family:var(--font-display);font-size:var(--text-lg);margin:0 0 var(--space-3);}
.resa-week{display:flex;flex-direction:column;align-items:stretch;gap:var(--space-3);
  padding:var(--space-3) var(--space-4);border:1px solid rgba(var(--tint),.1);
  border-radius:var(--radius-md,12px);margin-bottom:var(--space-2);}
.resa-week-info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.resa-assigns{display:flex;flex-wrap:wrap;gap:var(--space-2);}
.resa-assign{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;
  border:1px solid rgba(var(--tint),.16);border-radius:999px;font-size:var(--text-sm);
  color:var(--text-secondary);cursor:pointer;transition:border-color .2s ease,color .2s ease,background .2s ease;}
.resa-assign:hover{border-color:var(--accent);color:var(--text);}
.resa-assign input{accent-color:var(--accent);width:16px;height:16px;cursor:pointer;}
.resa-assign:has(input:checked){border-color:var(--accent);color:var(--text);background:rgba(var(--tint),.05);}
.resa-assign-empty{font-size:var(--text-sm);color:var(--text-secondary);margin:0;}
.resa-week-id{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text);}
.resa-week-dates{font-size:var(--text-sm);color:var(--text-secondary);}
.resa-week-places{font-size:var(--text-xs);color:var(--text-secondary);}
.resa-status-low{color:#e9b949;}
.resa-status-full{color:#ee3366;}
.resa-stepper{display:flex;align-items:center;gap:var(--space-3);flex:none;}
.resa-step-btn{width:32px;height:32px;border-radius:8px;border:1px solid rgba(var(--tint),.2);
  background:rgba(var(--tint),.04);color:var(--text);font-size:18px;line-height:1;cursor:pointer;
  display:grid;place-items:center;transition:background .2s ease,border-color .2s ease;}
.resa-step-btn:hover{border-color:var(--accent);background:rgba(var(--tint),.08);}
.resa-count{min-width:24px;text-align:center;font-family:var(--font-mono);font-size:var(--text-lg);}

.resa-err{color:#ee3366;font-size:var(--text-sm);margin:var(--space-3) 0 0;}
.resa-err[hidden]{display:none;}

.resa-review{display:grid;gap:var(--space-4);}
.resa-review-block h4{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent);margin:0 0 var(--space-2);}
.resa-review-block p{margin:0;color:var(--text);}
.resa-review-list{list-style:none;margin:0;padding:0;display:grid;gap:6px;}
.resa-review-list li{display:flex;justify-content:space-between;gap:var(--space-4);font-size:var(--text-sm);
  color:var(--text-secondary);border-bottom:1px dashed rgba(var(--tint),.1);padding-bottom:6px;}
.resa-review-list li strong{color:var(--text);}
.resa-review-empty{justify-content:flex-start!important;}
.resa-review-total{margin:var(--space-2) 0 0;font-size:var(--text-sm);color:var(--text-secondary);}
.resa-review-total strong{color:var(--accent);}

.resa-embed{position:relative;width:100%;aspect-ratio:3/4;max-height:60vh;border-radius:var(--radius-md,12px);
  overflow:hidden;border:1px solid rgba(var(--tint),.12);background:#000;}
.resa-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;}
.resa-embed-appt{aspect-ratio:auto;height:min(600px,72vh);max-height:72vh;background:#fff;}

.resa-learners{margin-top:var(--space-4);}
.resa-learners-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin:0 0 var(--space-2);}
.resa-learners-head .resa-weeks-title{margin:0;}
.resa-children{display:grid;gap:var(--space-3);}
.resa-child{border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-md,12px);padding:var(--space-3) var(--space-4);}
.resa-child-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2);}
.resa-child-tag{display:inline-block;font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--accent);margin-bottom:var(--space-2);}
.resa-child-head .resa-child-tag{margin-bottom:0;}
.resa-child-remove{width:28px;height:28px;flex:none;border-radius:50%;border:1px solid rgba(var(--tint),.2);
  background:rgba(var(--tint),.04);color:var(--text);font-size:16px;line-height:1;cursor:pointer;
  display:grid;place-items:center;transition:background .2s ease,border-color .2s ease,color .2s ease;}
.resa-child-remove:hover{border-color:#ee3366;color:#ee3366;}
.resa-child-grid{display:grid;grid-template-columns:1fr 1fr 80px;gap:var(--space-3);}
.resa-child-grid .field{margin-bottom:0;}
.resa-add-child{display:block;width:100%;margin-top:var(--space-3);padding:var(--space-3);text-align:center;
  background:none;border:1px dashed rgba(var(--tint),.2);border-radius:var(--radius-md,12px);
  color:var(--text-secondary);font-size:var(--text-sm);cursor:pointer;transition:border-color .2s ease,color .2s ease;}
.resa-add-child:hover{border-color:var(--accent);color:var(--text);}

.resa-cart{display:flex;flex-direction:column;gap:var(--space-2);}
.resa-cart-line{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  padding:8px 12px;border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-md,12px);
  background:rgba(var(--tint),.03);font-size:var(--text-sm);}
.resa-cart-remove{width:24px;height:24px;flex:none;border-radius:50%;border:1px solid rgba(var(--tint),.2);
  background:rgba(var(--tint),.04);color:var(--text);font-size:14px;line-height:1;cursor:pointer;
  display:grid;place-items:center;transition:background .2s ease,border-color .2s ease,color .2s ease;}
.resa-cart-remove:hover{border-color:#ee3366;color:#ee3366;}
.resa-cart-empty{font-size:var(--text-sm);color:var(--text-secondary);margin:0;}
.resa-add-cart{display:block;width:100%;padding:var(--space-3);text-align:center;
  background:none;border:1px dashed rgba(var(--tint),.2);border-radius:var(--radius-md,12px);
  color:var(--text-secondary);font-size:var(--text-sm);cursor:pointer;transition:border-color .2s ease,color .2s ease;}
.resa-add-cart:hover{border-color:var(--accent);color:var(--text);}
.resa-add-panel{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-3);
  border:1px solid rgba(var(--tint),.12);border-radius:var(--radius-md,12px);background:rgba(var(--tint),.03);}
.resa-reuse{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);}
.resa-reuse-label{font-size:var(--text-xs);color:var(--text-secondary);}
.resa-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;cursor:pointer;
  border:1px solid rgba(var(--tint),.2);border-radius:999px;background:rgba(var(--tint),.04);
  color:var(--text);font-size:var(--text-sm);transition:border-color .2s ease,color .2s ease,background .2s ease;}
.resa-badge:hover{border-color:var(--accent);color:var(--text);background:rgba(var(--tint),.06);}
.resa-add-actions{display:flex;justify-content:flex-end;gap:var(--space-3);flex-wrap:wrap;}
.resa-btn-sm{padding:8px 16px;font-size:var(--text-sm);}

.resa-pay-summary{border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-md,12px);
  padding:var(--space-4);margin:0 0 var(--space-4);}
.resa-pay-total{display:flex;justify-content:space-between;gap:var(--space-4);align-items:baseline;
  margin:var(--space-3) 0 0;padding-top:var(--space-3);border-top:1px solid rgba(var(--tint),.12);
  font-family:var(--font-display);font-size:var(--text-lg);}
.resa-pay-total strong{color:var(--accent);}
.resa-pay-note{font-size:var(--text-xs);color:var(--text-secondary);margin:0 0 var(--space-2);}
.resa-unsure-link{display:block;width:100%;margin-top:var(--space-4);padding:var(--space-3);text-align:center;
  background:none;border:1px dashed rgba(var(--tint),.2);border-radius:var(--radius-md,12px);
  color:var(--text-secondary);font-size:var(--text-sm);cursor:pointer;transition:border-color .2s ease,color .2s ease;}
.resa-unsure-link:hover{border-color:var(--accent);color:var(--text);}

.resa-done{text-align:center;padding:var(--space-4) 0;}
.resa-done-mark{width:64px;height:64px;margin:0 auto var(--space-4);border-radius:50%;display:grid;
  place-items:center;font-size:32px;background:var(--accent);color:#0a0c12;}
.resa-done-text{color:var(--text-secondary);max-width:42ch;margin:0 auto var(--space-4);}

.resa-actions{display:flex;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-5);flex-wrap:wrap;}
.resa-actions-center{justify-content:center;}

/* ===== Refonte UX apprenants (v2) — panneau central + assignation par chip ===== */
.resa-apprenants{margin:var(--space-4) 0;padding:var(--space-4);
  border:1px solid rgba(var(--tint),.12);border-radius:var(--radius-md,12px);
  background:rgba(var(--tint),.03);}
.resa-apprenants-head{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--space-3);}
.resa-apprenants-title{font-family:var(--font-display);font-size:var(--text-lg);margin:0;color:var(--text);}
.resa-apprenants-count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-secondary);font-weight:400;}
.resa-apprenants-hint{margin:0;font-size:var(--text-sm);color:var(--text-secondary);}
.resa-chips{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3);}
.resa-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 4px 6px 12px;
  border:1px solid rgba(var(--tint),.18);border-radius:999px;background:rgba(var(--tint),.05);
  font-size:var(--text-sm);color:var(--text);}
.resa-chip-name{white-space:nowrap;}
.resa-chip-edit,.resa-chip-remove{width:22px;height:22px;border-radius:50%;
  border:1px solid transparent;background:transparent;color:var(--text-secondary);
  font-size:12px;line-height:1;cursor:pointer;display:grid;place-items:center;
  transition:background .18s ease,color .18s ease,border-color .18s ease;}
.resa-chip-edit:hover{color:var(--accent);border-color:var(--accent);}
.resa-chip-remove:hover{color:#ee3366;border-color:#ee3366;background:rgba(238,51,102,.08);}
.resa-add-central{margin-top:0;}

/* ===== Assignation apprenant → semaine (checkbox list) ===== */
.resa-assign-list{display:flex;flex-direction:column;gap:6px;}
.resa-assign-item{display:flex;align-items:center;gap:10px;padding:8px 12px;
  border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-md,12px);
  background:rgba(var(--tint),.02);cursor:pointer;font-size:var(--text-sm);
  transition:border-color .2s ease,background .2s ease;}
.resa-assign-item:hover{border-color:rgba(var(--tint),.2);background:rgba(var(--tint),.04);}
.resa-assign-item.is-on{border-color:var(--accent);background:rgba(var(--tint),.06);color:var(--text);}
.resa-assign-item input{accent-color:var(--accent);width:16px;height:16px;cursor:pointer;flex:none;}

/* ===== RGPD checkbox ===== */
.resa-rgpd{display:flex;align-items:flex-start;gap:10px;margin:var(--space-4) 0 0;
  padding:var(--space-3);border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-md,12px);
  background:rgba(var(--tint),.02);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;}
.resa-rgpd input{accent-color:var(--accent);width:16px;height:16px;margin-top:2px;flex:none;cursor:pointer;}
.resa-rgpd span{line-height:1.45;}

@media(max-width:560px){
  .resa-grid{grid-template-columns:1fr;}
  .resa-child-grid{grid-template-columns:1fr 1fr;}
  .resa-step-l{display:none;}
  .resa-step{flex:none;}
  .resa-week{flex-direction:column;align-items:stretch;}
  .resa-actions .btn{flex:1;text-align:center;}
  .resa-chips{gap:6px;}
  .resa-chip{font-size:13px;}
}
@media(prefers-reduced-motion:reduce){
  .resa-modal,.resa-box,.resa-type,.resa-profile,.resa-close{transition:none!important;}
}

/* ===== Numériklub — Onglets calendrier (stages / année) ===== */
.nk-tabs{margin:var(--space-8) 0 0;}
.nk-tablist{display:inline-flex;gap:4px;padding:4px;margin-bottom:var(--space-6);
  border:1px solid rgba(var(--tint),.12);border-radius:999px;background:rgba(var(--tint),.03);}
.nk-tab{appearance:none;border:0;cursor:pointer;font-family:var(--font-mono);
  font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;
  padding:10px 18px;border-radius:999px;color:var(--text-secondary);background:transparent;
  transition:color .2s var(--ease-out),background .2s var(--ease-out);}
.nk-tab:hover{color:var(--text);}
.nk-tab.is-active{background:var(--accent);color:#03121a;font-weight:700;}
.nk-tabpanel{animation:nk-tab-in .3s var(--ease-out);}
.nk-tabpanel[hidden]{display:none;}
.nk-tabpanel .nk-cal,.nk-tabpanel .nk-yc{margin-top:0;}
.nk-tab-cta{margin-top:var(--space-6);}
@keyframes nk-tab-in{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
@media(max-width:560px){
  .nk-tablist{display:flex;width:100%;}
  .nk-tab{flex:1;text-align:center;padding:10px 8px;}
}
@media(prefers-reduced-motion:reduce){.nk-tabpanel{animation:none;}}

/* ===== Numériklub — Calendrier des stages & ateliers ===== */
.nk-cal{margin:var(--space-8) 0 0;}
.nk-cal-head{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-5);}
.nk-cal-eyebrow{color:var(--accent);}
.nk-cal-note{margin:0;color:var(--text-secondary);font-size:var(--text-sm);max-width:62ch;}
.nk-cal-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);align-items:stretch;}
.nk-cal-card{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-5);
  border:1px solid rgba(var(--tint),.12);border-radius:var(--radius-lg,16px);background:rgba(var(--tint),.03);}
.nk-cal-card-head{display:flex;flex-direction:column;gap:4px;}
.nk-cal-name{margin:0;font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--text);line-height:1.2;}
.nk-cal-meta{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);}
.nk-cal-price{font-family:var(--font-display);font-size:var(--text-base);font-weight:700;color:var(--text);}
.nk-cal-dates{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2);flex:1;}
.nk-cal-date{display:flex;flex-direction:column;gap:2px;padding:var(--space-3);
  border:1px solid rgba(var(--tint),.08);border-radius:var(--radius-md,12px);background:rgba(var(--tint),.02);}
.nk-cal-date-id{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;color:var(--accent);}
.nk-cal-date-label{font-size:var(--text-sm);font-weight:600;color:var(--text);line-height:1.3;}
.nk-cal-date-status{font-size:var(--text-xs);color:var(--text-secondary);}
.nk-cal-date-low .nk-cal-date-status{color:#e9b949;}
.nk-cal-date-full{opacity:.6;}
.nk-cal-date-full .nk-cal-date-status{color:#ee3366;}
.nk-cal-cta{margin-top:auto;}
.nk-cal-cta .btn{width:100%;justify-content:center;}
@media(max-width:1080px){.nk-cal-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.nk-cal-grid{grid-template-columns:1fr;}}

/* ===== Numériklub — Calendrier annuel (vue d'ensemble) ===== */
.nk-yc{margin:var(--space-8) 0 0;}
.nk-yc-head{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4);}
.nk-yc-eyebrow{color:var(--accent);}
.nk-yc-title{margin:0;font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--text);line-height:1.15;}
.nk-yc-note{margin:0;color:var(--text-secondary);font-size:var(--text-sm);max-width:64ch;}
.nk-yc-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-5);
  font-size:var(--text-sm);color:var(--text-secondary);}
.nk-yc-leg{display:inline-flex;align-items:center;gap:8px;}
.nk-yc-sw{width:14px;height:14px;border-radius:5px;flex:0 0 auto;border:1px solid rgba(var(--tint),.12);}
.nk-yc-sw-weekly{background:var(--accent);border-color:transparent;}
.nk-yc-sw-holiday{background:rgba(233,185,73,.22);border-color:rgba(233,185,73,.5);}
.nk-yc-sw-summer{background:rgba(255,122,69,.26);border-color:rgba(255,122,69,.6);}
.nk-yc-filters{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:var(--space-5);}
.nk-yc-filters-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);margin-right:var(--space-2);}
.nk-yc-filter{appearance:none;cursor:pointer;font-family:var(--font-mono);font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;padding:7px 14px;border-radius:999px;
  border:1px solid rgba(var(--tint),.16);background:transparent;color:var(--text-secondary);
  transition:color .2s var(--ease-out),background .2s var(--ease-out),border-color .2s var(--ease-out);}
.nk-yc-filter:hover{color:var(--text);border-color:rgba(var(--tint),.32);}
.nk-yc-filter.is-active{background:var(--accent);color:#03121a;font-weight:700;border-color:transparent;}
.nk-yc[data-filter]:not([data-filter="all"]) .nk-yc-day{opacity:.2;transition:opacity .2s var(--ease-out);}
.nk-yc[data-filter="weekly"] .nk-yc-day[data-kind="weekly"],
.nk-yc[data-filter="holiday"] .nk-yc-day[data-kind="holiday"],
.nk-yc[data-filter="summer"] .nk-yc-day[data-kind="summer"]{opacity:1;}
@media(prefers-reduced-motion:reduce){.nk-yc-filter,.nk-yc[data-filter] .nk-yc-day{transition:none;}}
.nk-yc-ctas{margin-top:var(--space-6);}
.nk-yc-cta{display:none;}
.nk-yc[data-filter="all"] .nk-yc-cta[data-yc-cta="all"],
.nk-yc[data-filter="weekly"] .nk-yc-cta[data-yc-cta="weekly"],
.nk-yc[data-filter="holiday"] .nk-yc-cta[data-yc-cta="holiday"],
.nk-yc[data-filter="summer"] .nk-yc-cta[data-yc-cta="summer"]{display:inline-flex;}
.nk-yc-pricing{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-5);}
.nk-yc-price{display:inline-flex;flex-direction:column;gap:2px;padding:10px 16px;
  border:1px solid rgba(var(--tint),.12);border-radius:var(--radius-md,12px);background:rgba(var(--tint),.03);}
.nk-yc-price-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);}
.nk-yc-price-val{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--accent);}
.nk-yc[data-filter]:not([data-filter="all"]) .nk-yc-price{display:none;}
.nk-yc[data-filter="weekly"] .nk-yc-price[data-yc-price~="weekly"],
.nk-yc[data-filter="holiday"] .nk-yc-price[data-yc-price~="holiday"],
.nk-yc[data-filter="summer"] .nk-yc-price[data-yc-price~="summer"]{display:inline-flex;}
.nk-yc-surmesure{margin-top:var(--space-5);display:flex;flex-wrap:wrap;align-items:center;
  justify-content:space-between;gap:var(--space-4);padding:var(--space-5);
  border-radius:var(--radius-md);background:rgba(var(--accent-rgb),.06);
  box-shadow:inset 0 0 0 1px rgba(var(--tint),.08);}
.nk-yc-surmesure-text{margin:0;color:var(--text-secondary);max-width:54ch;}
.nk-yc-months{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-4);}
.nk-yc-month{padding:var(--space-4);border:1px solid rgba(var(--tint),.12);
  border-radius:var(--radius-lg,16px);background:rgba(var(--tint),.03);}
.nk-yc-month-name{font-family:var(--font-display);font-size:var(--text-base);font-weight:700;
  color:var(--text);text-transform:capitalize;margin-bottom:var(--space-3);}
.nk-yc-week-head{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;margin-bottom:4px;}
.nk-yc-week-head span{text-align:center;font-family:var(--font-mono);font-size:10px;
  color:var(--text-muted);text-transform:uppercase;}
.nk-yc-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;}
.nk-yc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  font-size:11px;color:var(--text-secondary);border-radius:6px;line-height:1;}
.nk-yc-empty{visibility:hidden;}
.nk-yc-holiday{background:rgba(233,185,73,.16);color:var(--text);}
.nk-yc-summer{background:rgba(255,122,69,.18);color:var(--text);}
.nk-yc-weekly{background:var(--accent);color:#03121a;font-weight:700;}
.nk-yc-foot{margin:var(--space-4) 0 0;font-size:var(--text-xs);color:var(--text-muted);}
@media(max-width:1080px){.nk-yc-months{grid-template-columns:repeat(3,1fr);}}
@media(max-width:720px){.nk-yc-months{grid-template-columns:repeat(2,1fr);}}
@media(max-width:480px){.nk-yc-months{grid-template-columns:1fr;}}

/* =========================================================
   À PROPOS & BLOG (univers Numériklub)
   ========================================================= */
.about-block{max-width:74ch;}
.about-team-media{margin-top:var(--space-7);text-align:center;}
.about-team-media img{width:100%;max-width:680px;height:auto;display:inline-block;filter:drop-shadow(0 24px 48px rgba(0,0,0,.4));}
.about-maps{margin-top:var(--space-7);}
.prose .prose-p{color:var(--text-secondary);line-height:1.75;margin-top:var(--space-4);}
.prose .prose-p:first-child{margin-top:0;}
.about-values{margin-top:var(--space-6);gap:var(--space-5);}
.about-value h3{font-size:var(--text-lg);}
.about-value .card-body{margin-top:var(--space-3);color:var(--text-secondary);}

/* ---- Liste du blog ---- */
.blog-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:var(--space-7);align-items:start;}
.blog-list{display:grid;gap:var(--space-6);}
.blog-card{display:grid;grid-template-columns:240px minmax(0,1fr);gap:var(--space-5);align-items:stretch;}
.blog-card-thumb{position:relative;display:block;border-radius:var(--radius-photo);overflow:hidden;}
.blog-card-thumb .img-ph{height:100%;min-height:160px;margin:0;}
.blog-card-cat{position:absolute;top:var(--space-3);left:var(--space-3);}
.blog-card-main{display:flex;flex-direction:column;min-width:0;}
.blog-meta{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-mono);
  font-size:var(--text-xs);letter-spacing:.04em;color:var(--text-muted);text-transform:uppercase;}
.blog-dot{opacity:.5;}
.blog-card-title{font-size:var(--text-xl);line-height:1.2;margin-top:var(--space-3);}
.blog-card-title a{color:var(--text);text-decoration:none;transition:var(--dur);}
.blog-card-title a:hover{color:var(--accent);}
.blog-card .card-body{margin-top:var(--space-3);color:var(--text-secondary);flex:1;}
.blog-card .u-cta{margin-top:var(--space-4);font-family:var(--font-mono);font-size:.74rem;
  letter-spacing:.06em;text-transform:uppercase;color:var(--accent);
  display:inline-flex;align-items:center;gap:6px;text-decoration:none;transition:var(--dur);}
.blog-card:hover .u-cta{gap:10px;}
.blog-empty{margin-top:var(--space-5);color:var(--text-secondary);}

/* ---- Sidebar ---- */
.blog-sidebar{display:grid;gap:var(--space-5);position:sticky;top:96px;}
.blog-widget-title{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--space-4);}
.blog-search{width:100%;font-family:var(--font-body);font-size:var(--text-base);color:var(--text);
  background:rgba(8,20,32,.5);border:0;border-radius:var(--radius-ui);padding:12px 14px;
  box-shadow:inset 0 0 0 1px var(--border-strong);transition:var(--dur);}
.blog-search:focus{outline:none;box-shadow:inset 0 0 0 1px var(--accent);}
.blog-cats{list-style:none;display:grid;gap:4px;margin:0;padding:0;}
.blog-cat{width:100%;text-align:left;background:transparent;border:0;color:var(--text-secondary);
  font-family:var(--font-body);font-size:var(--text-sm);padding:9px 12px;border-radius:var(--radius-ui);
  cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;transition:var(--dur);}
.blog-cat:hover{color:var(--text);background:var(--surface-raised);}
.blog-cat.is-active{color:var(--accent);background:var(--surface-raised);}
.blog-cat-n{opacity:.55;font-family:var(--font-mono);font-size:var(--text-xs);}
.blog-tags{display:flex;flex-wrap:wrap;gap:8px;}
.blog-tag{background:var(--surface-raised);border:1px solid var(--border);color:var(--text-secondary);
  border-radius:var(--radius-ui);padding:6px 12px;font-size:var(--text-xs);cursor:pointer;transition:var(--dur);}
.blog-tag:hover,.blog-tag.is-active{color:var(--accent);border-color:var(--accent);}

/* ---- Article ---- */
.article{max-width:78ch;margin:0 auto;}
.article-meta{display:flex;align-items:center;gap:var(--space-2);font-family:var(--font-mono);
  font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);}
.article-cover{margin:var(--space-5) 0 var(--space-6);}
.article-cover .img-ph{min-height:300px;margin:0;}
.article-body .article-h{font-size:var(--text-xl);margin-top:var(--space-6);}
.article-share{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-7);
  padding-top:var(--space-5);border-top:1px solid var(--border);}
.article-share-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-muted);}
.article-share-btn{width:38px;height:38px;display:inline-grid;place-items:center;border-radius:50%;
  border:1px solid var(--border-strong);color:var(--text-secondary);text-decoration:none;transition:var(--dur);}
.article-share-btn:hover{color:var(--accent);border-color:var(--accent);}
.article-nav{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);margin-top:var(--space-6);}
.article-nav-link{display:flex;flex-direction:column;gap:6px;padding:var(--space-4);
  border:1px solid var(--border);border-radius:var(--radius-ui);text-decoration:none;transition:var(--dur);}
.article-nav-next{text-align:right;}
.article-nav-link:hover{border-color:var(--accent);}
.article-nav-dir{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.05em;
  text-transform:uppercase;color:var(--accent);}
.article-nav-title{font-size:var(--text-sm);color:var(--text-secondary);}
.article-back{margin-top:var(--space-6);}

@media(max-width:860px){
  .blog-layout{grid-template-columns:1fr;}
  .blog-card{grid-template-columns:1fr;}
  .blog-card-thumb .img-ph{min-height:200px;}
  .blog-sidebar{position:static;}
  .article-nav{grid-template-columns:1fr;}
  .article-nav-next{text-align:left;}
}

/* =========================================================
   ACADEMY — PROJETS ÉTUDIANTS (liste + fiche détail)
   ========================================================= */
.project-card{padding:0;overflow:hidden;display:flex;flex-direction:column;text-decoration:none;}
.project-card-thumb{position:relative;display:block;}
.project-card-thumb .img-ph{margin:0;border-radius:0;aspect-ratio:3/4;min-height:0;}
.project-card-type{position:absolute;top:var(--space-3);left:var(--space-3);}
.project-card-body{display:flex;flex-direction:column;gap:6px;padding:var(--space-5);flex:1;}
.project-card-title{font-size:var(--text-xl);line-height:1.2;margin-top:2px;color:var(--text);transition:var(--dur);}
.project-card .card-body{color:var(--text-secondary);flex:1;}
.project-card .project-card-cta{margin-top:var(--space-4);font-family:var(--font-mono);font-size:.74rem;
  letter-spacing:.05em;text-transform:uppercase;color:var(--accent);display:inline-flex;gap:6px;transition:var(--dur);}
.project-card:hover .project-card-title{color:var(--accent);}
.project-card:hover .project-card-cta{gap:12px;}

/* Fiche détail */
.project-cover .img-ph{margin:0;min-height:340px;aspect-ratio:16/9;}
.project-intro{margin-top:var(--space-5);max-width:60ch;color:var(--text-secondary);
  font-size:var(--text-lg);line-height:1.5;}
.project-making{display:flex;flex-direction:column;gap:var(--space-6);}
.project-mk{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-5);align-items:center;}
.project-mk.is-flip .project-mk-media{order:2;}
.project-mk-media .img-ph{margin:0;min-height:280px;}
.project-mk-title{font-size:var(--text-2xl);}
.project-mk-body .card-body{margin-top:var(--space-3);color:var(--text-secondary);}
.project-mk-body .badge-row{margin-top:var(--space-4);}
.project-credits{list-style:none;margin:var(--space-3) 0 0;padding:0;display:flex;flex-direction:column;}
.project-credits li{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);
  padding:10px 0;border-top:1px solid var(--border);}
.project-credits li:first-child{border-top:0;}
.project-credit-role{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.05em;
  text-transform:uppercase;color:var(--text-secondary);}
.project-credit-name{font-weight:600;text-align:right;color:var(--text);}
.project-back{margin-top:var(--space-6);}

@media(max-width:860px){
  .project-mk{grid-template-columns:1fr;}
  .project-mk.is-flip .project-mk-media{order:0;}
  .project-card-thumb .img-ph{aspect-ratio:16/10;}
}

/* =========================================================
   FC · 3 chemins de conversion (personas Radin CPF / À la carte / Pack)
   Refonte page unifiée juillet 2026 — feat/fc-page-unifiee
   Neuro-landing : sobre, blanc, pas de néon, résolution en dernier.
   ========================================================= */
.fc-paths-sec .section-head{margin-bottom:var(--space-6);}
.fc-paths{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-top:var(--space-4);}
@media (max-width:900px){.fc-paths{grid-template-columns:1fr;}}
.fc-path-card{
  display:flex;flex-direction:column;gap:var(--space-2);
  padding:var(--space-5) var(--space-5);
  background:rgba(var(--tint),.02);
  border:1px solid rgba(var(--tint),.08);
  border-radius:14px;
  text-decoration:none;color:inherit;
  transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
.fc-path-card:hover,.fc-path-card:focus-visible{
  transform:translateY(-2px);
  border-color:var(--accent);
  background:rgba(var(--tint),.04);
  outline:none;
}
.fc-path-eyebrow{
  font-size:11px;text-transform:uppercase;letter-spacing:.1em;
  color:var(--text-secondary);font-weight:600;
}
.fc-path-eyebrow strong{color:var(--accent);font-weight:700;}
.fc-path-card h3{
  font-size:22px;margin:var(--space-1) 0 0;color:var(--text-primary);
  letter-spacing:-.01em;
}
.fc-path-desc{
  font-size:14px;color:var(--text-secondary);margin:0;
  line-height:1.55;
}
.fc-path-arrow{
  margin-top:auto;padding-top:var(--space-3);
  font-size:13px;font-weight:600;color:var(--accent);
  letter-spacing:.01em;
}
.fc-path-pack{border-color:var(--accent);}
.fc-path-pack .fc-path-eyebrow{color:var(--accent);}

/* Calculateur — cadre discret pour intégrer le widget fc-pricing */
.fc-calc-sec .fc-pricing{margin-top:var(--space-4);}

/* Formulaire recueil CPF */
.fc-cpf-sec{background:rgba(var(--tint),.015);}
.fc-cpf-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);
  align-items:start;
}
@media (max-width:900px){.fc-cpf-grid{grid-template-columns:1fr;}}
.fc-cpf-intro .eyebrow{color:var(--accent);}
.fc-cpf-intro h2{margin:var(--space-2) 0 var(--space-3);letter-spacing:-.02em;}
.fc-cpf-intro .lead{color:var(--text-secondary);font-size:16px;line-height:1.55;}
.fc-cpf-reassure{
  list-style:none;padding:0;margin:var(--space-4) 0 0;
  display:flex;flex-direction:column;gap:var(--space-2);
}
.fc-cpf-reassure li{
  padding-left:var(--space-4);position:relative;
  font-size:14px;color:var(--text-secondary);line-height:1.55;
}
.fc-cpf-reassure li::before{
  content:"";position:absolute;left:0;top:.55em;
  width:8px;height:2px;background:var(--accent);border-radius:2px;
}
.fc-cpf-reassure strong{color:var(--text-primary);font-weight:600;}
.fc-cpf-form{padding:var(--space-5);}
.fc-cpf-form .field{margin-bottom:var(--space-3);}
.fc-cpf-form .btn{width:100%;margin-top:var(--space-2);}
.fc-cpf-form .form-note{
  margin-top:var(--space-3);font-size:12.5px;
  color:var(--text-secondary);line-height:1.5;
}

/* =========================================================
   FI · Réservation entretien + Upload dossier
   Ton académique institutionnel (Qualiopi), sobre.
   .form-status / .form-spinner déjà définis L434 (Agent 5).
   ========================================================= */
.fi-reserv-hero{padding-top:calc(var(--space-9) + var(--space-4));padding-bottom:var(--space-5);}
.fi-reserv-title{font-family:var(--font-display);font-size:clamp(2rem,4vw,3rem);
  line-height:1.05;margin:var(--space-3) 0 var(--space-4);max-width:26ch;}
.fi-reserv-lead{max-width:64ch;color:var(--text-secondary);}
.fi-reserv-wizard{padding-top:var(--space-4);}

/* Stepper */
.fi-wizard-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2);
  list-style:none;margin:0 0 var(--space-6);padding:0;}
.fi-wizard-step{display:flex;flex-direction:column;align-items:center;gap:6px;
  padding:12px 8px;border-radius:var(--radius-ui);border:1px solid var(--border-strong);
  background:rgba(var(--tint),.02);opacity:.55;transition:opacity .2s ease,border-color .2s ease,background .2s ease;}
.fi-wizard-step.is-active{opacity:1;border-color:var(--accent);background:rgba(var(--tint),.05);}
.fi-wizard-step.is-done{opacity:1;border-color:rgba(34,197,94,.45);background:rgba(34,197,94,.06);}
.fi-wizard-n{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
  font-family:var(--font-mono);font-size:12px;font-weight:700;
  background:var(--surface-raised);border:1px solid var(--border-strong);color:var(--text);}
.fi-wizard-step.is-active .fi-wizard-n{background:var(--accent);color:#0a0c12;border-color:var(--accent);}
.fi-wizard-step.is-done .fi-wizard-n{background:rgba(34,197,94,.85);color:#0a0c12;border-color:rgba(34,197,94,.85);}
.fi-wizard-l{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-muted);text-align:center;}
.fi-wizard-step.is-active .fi-wizard-l,.fi-wizard-step.is-done .fi-wizard-l{color:var(--text);}
@media(max-width:640px){
  .fi-wizard-steps{grid-template-columns:repeat(4,1fr);gap:6px;}
  .fi-wizard-step{padding:8px 4px;}
  .fi-wizard-l{font-size:10px;letter-spacing:.04em;}
}
@media(max-width:400px){
  .fi-wizard-steps{gap:4px;}
  .fi-wizard-step{padding:7px 3px;gap:4px;}
  .fi-wizard-n{width:22px;height:22px;font-size:11px;}
  .fi-wizard-l{font-size:9px;letter-spacing:.02em;line-height:1.15;word-break:break-word;}
}

.fi-wizard-box{padding:var(--space-6);}
@media(max-width:640px){.fi-wizard-box{padding:var(--space-4);}}
.fi-step-title{font-family:var(--font-display);font-size:var(--text-2xl);
  line-height:1.2;margin:0 0 var(--space-2);}
.fi-step-sub{color:var(--text-secondary);margin:0 0 var(--space-4);max-width:60ch;}

/* Radio grid */
.fi-radio-grid{display:grid;gap:var(--space-3);}
.fi-radio-grid-3{grid-template-columns:repeat(3,1fr);}
.fi-radio-grid-2{grid-template-columns:repeat(2,1fr);}
@media(max-width:720px){.fi-radio-grid-3,.fi-radio-grid-2{grid-template-columns:1fr;}}
.fi-radio{display:flex;align-items:flex-start;gap:12px;padding:14px;
  border:1px solid var(--border-strong);border-radius:var(--radius-ui);
  cursor:pointer;transition:border-color .18s ease,background .18s ease;
  background:rgba(var(--tint),.02);}
.fi-radio:hover{border-color:var(--accent);}
.fi-radio input{margin-top:3px;accent-color:var(--accent);}
.fi-radio.is-on{border-color:var(--accent);background:rgba(var(--tint),.05);
  box-shadow:0 0 0 2px rgba(var(--tint),.04) inset;}
.fi-radio-l{display:flex;flex-direction:column;gap:2px;}
.fi-radio-l strong{color:var(--text);font-family:var(--font-body);font-weight:600;}
.fi-radio-l em{font-style:normal;color:var(--text-muted);font-size:var(--text-sm);}

.fi-req{color:var(--accent);font-weight:700;margin-left:2px;}
.fi-opt{color:var(--text-muted);font-size:11px;font-family:var(--font-mono);
  text-transform:uppercase;letter-spacing:.06em;margin-left:6px;}
.fi-hint{font-size:var(--text-sm);color:var(--text-muted);margin:6px 0 0;}

/* Step 2 — Google Calendar iframe */
.fi-gcal{border:1px solid var(--border-strong);border-radius:var(--radius-ui);
  overflow:hidden;background:#fff;}
.fi-gcal iframe{display:block;width:100%;height:520px;border:0;background:#fff;}
.fi-gcal-link{display:block;text-align:center;padding:10px 12px;
  background:var(--surface-raised);color:var(--accent);font-size:var(--text-sm);
  font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;
  border-top:1px solid var(--border-strong);}
.fi-gcal-link:hover{color:var(--text);}
@media(max-width:640px){.fi-gcal iframe{height:640px;}}
.fi-callout{padding:16px 18px;border-radius:var(--radius-ui);border:1px dashed;}
.fi-callout-warn{border-color:rgba(251,191,36,.55);background:rgba(251,191,36,.06);color:#fde68a;}
.fi-callout strong{display:block;margin-bottom:4px;font-family:var(--font-display);}

/* Step 3 — form grid */
.fi-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);}
.fi-form-grid .field{margin-bottom:0;}
.fi-form-grid .fi-field-full{grid-column:1/-1;}
@media(max-width:640px){.fi-form-grid{grid-template-columns:1fr;}}
.fi-check{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;
  border:1px solid var(--border-strong);border-radius:var(--radius-ui);
  background:rgba(var(--tint),.02);color:var(--text-secondary);}
.fi-check input{margin-top:3px;accent-color:var(--accent);}

/* Actions row */
.fi-actions{display:flex;justify-content:space-between;align-items:center;
  gap:var(--space-3);margin-top:var(--space-5);}
.fi-actions .btn:disabled,.fi-actions .btn[disabled]{opacity:.5;cursor:not-allowed;
  filter:grayscale(.3);}
.fi-actions .btn[aria-busy=true]{opacity:.85;cursor:progress;}

/* Step 4 — done */
.fi-step-done{text-align:center;padding:var(--space-3) 0;}
.fi-done-icon{width:52px;height:52px;margin:0 auto var(--space-4);border-radius:50%;
  display:grid;place-items:center;}
.fi-done-ok{background:rgba(34,197,94,.15);color:#4ade80;}
.fi-done-ko{background:rgba(251,191,36,.15);color:#fbbf24;}
.fi-done-body{margin-inline:auto;max-width:52ch;}
.fi-recap{margin:var(--space-6) auto 0;max-width:520px;text-align:left;
  border:1px solid var(--border-strong);border-radius:var(--radius-ui);
  padding:var(--space-4);background:rgba(var(--tint),.02);}
.fi-recap h3{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);margin:0 0 var(--space-3);}
.fi-recap-dl{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin:0;}
.fi-recap-dl>div{display:flex;flex-direction:column;gap:2px;}
.fi-recap-dl dt{font-size:11px;color:var(--text-muted);font-family:var(--font-mono);
  text-transform:uppercase;letter-spacing:.06em;margin:0;}
.fi-recap-dl dd{margin:0;color:var(--text);font-weight:600;}
@media(max-width:640px){.fi-recap-dl{grid-template-columns:1fr;}}
.fi-next{margin:var(--space-6) auto 0;max-width:520px;text-align:left;
  padding:var(--space-4);border:1px solid var(--accent);border-radius:var(--radius-ui);
  background:rgba(var(--tint),.03);}
.fi-next h3{font-family:var(--font-display);font-size:var(--text-lg);margin:0 0 6px;}
.fi-next p{color:var(--text-secondary);margin:0 0 var(--space-3);}

/* Upload form */
.fi-upload-ident{color:var(--text-muted);font-size:var(--text-sm);margin:0 0 var(--space-4);}
.fi-upload-form{padding:var(--space-6);}
@media(max-width:640px){.fi-upload-form{padding:var(--space-4);}}
.fi-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);}
@media(max-width:720px){.fi-upload-grid{grid-template-columns:1fr;}}
.fi-upload-field{display:flex;flex-direction:column;gap:8px;}
.fi-upload-label{display:flex;flex-direction:column;gap:2px;}
.fi-upload-l{font-family:var(--font-body);font-weight:600;color:var(--text);}
.fi-upload-hint{font-size:var(--text-sm);color:var(--text-muted);}
.fi-upload-drop{position:relative;display:flex;align-items:center;gap:10px;
  padding:14px 16px;border:1px dashed var(--border-strong);border-radius:var(--radius-ui);
  background:rgba(var(--tint),.02);transition:border-color .18s ease,background .18s ease;}
.fi-upload-drop:hover,.fi-upload-drop.is-drag{border-color:var(--accent);
  background:rgba(var(--tint),.04);}
.fi-upload-drop.has-file{border-style:solid;border-color:rgba(34,197,94,.55);
  background:rgba(34,197,94,.06);}
.fi-upload-drop input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer;}
.fi-upload-cta{font-family:var(--font-mono);font-size:12px;text-transform:uppercase;
  letter-spacing:.06em;color:var(--accent);}
.fi-upload-picked{display:flex;align-items:center;gap:8px;color:var(--text);
  font-size:var(--text-sm);margin-left:auto;}
.fi-upload-x{background:none;border:0;color:var(--text-muted);cursor:pointer;
  font-size:18px;line-height:1;padding:0 4px;position:relative;z-index:2;}
.fi-upload-x:hover{color:var(--accent);}
.fi-upload-reassure{margin-top:var(--space-4);}

/* =========================================================
   FORMATION CONTINUE — Tarifs, Parcours & Calculatrice
   ========================================================= */
.fc-pricing{margin-top:var(--space-5);}
.fc-pricing-grid{display:grid;grid-template-columns:1.4fr .9fr;gap:var(--space-5);align-items:start;}
@media (max-width:900px){.fc-pricing-grid{grid-template-columns:1fr;}}

/* --- Filtres parcours --- */
.fc-price-filters{margin-bottom:var(--space-4);}
.fc-price-filters-eyebrow{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary,#7a7a86);margin:0 0 var(--space-2);}
.fc-price-filters-row{display:flex;flex-wrap:wrap;gap:var(--space-2);}
.fc-price-filter{font:inherit;font-size:.86rem;font-weight:600;padding:.5rem .9rem;border-radius:var(--radius-pill,999px);border:1px solid var(--border);background:var(--surface,#fff);color:inherit;cursor:pointer;transition:all .15s ease;}
.fc-price-filter:hover{border-color:var(--accent);}
.fc-price-filter.is-active{background:var(--accent);border-color:var(--accent);color:#fff;}

/* --- Articulation socle / modules --- */
.fc-artic{margin:0 0 var(--space-6);padding:var(--space-5);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-lg);background:var(--surface);}
.fc-artic-eyebrow{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700;}
.fc-artic-title{margin:.25rem 0 var(--space-4);font-size:1.15rem;color:var(--text);}
.fc-artic-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);}
@media (max-width:640px){.fc-artic-grid{grid-template-columns:1fr;}}
.fc-artic-card{padding:var(--space-4);border-radius:var(--radius-lg);background:var(--surface-raised);border:1px solid var(--border);}
.fc-artic-card.fc-artic-socle{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.fc-artic-k{display:block;font-weight:800;margin-bottom:.4rem;color:var(--text);}
.fc-artic-v{margin:0;font-size:.88rem;color:var(--text-secondary);}
.fc-artic-how{margin:var(--space-4) 0 0;font-size:.9rem;font-weight:600;color:var(--text-secondary);}

/* --- Modules --- */
.fc-price-cart-eyebrow{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700;margin:0 0 .25rem;}
.fc-price-cart-lede{color:var(--text-secondary,#7a7a86);margin:0 0 var(--space-4);}
.fc-price-parc{margin-bottom:var(--space-4);}
.fc-price-parc-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-2);}
.fc-price-parc-h{margin:0;font-size:1rem;}
.fc-price-parc-add{font:inherit;font-size:.8rem;font-weight:600;color:var(--accent);background:none;border:none;cursor:pointer;padding:.2rem .1rem;white-space:nowrap;}
.fc-price-parc-add:hover{text-decoration:underline;}
.fc-price-mod-list{list-style:none;margin:0;padding:0;display:grid;gap:.4rem;}
.fc-price-mod-lbl{display:flex;align-items:center;gap:.7rem;padding:.7rem .85rem;border:1px solid var(--border);border-radius:var(--radius-ui);background:var(--surface,#fff);cursor:pointer;transition:border-color .15s ease,background .15s ease;}
.fc-price-mod-lbl:hover{border-color:var(--accent);}
.fc-price-mod-chk{width:1.1rem;height:1.1rem;accent-color:var(--accent);flex:none;}
.fc-price-mod-chk:checked ~ .fc-price-mod-name{font-weight:700;color:var(--text);}
.fc-price-mod-lbl:has(.fc-price-mod-chk:checked){border-color:var(--accent);background:rgba(var(--accent-rgb),.1);box-shadow:0 0 0 1px var(--accent) inset;}
.fc-price-mod-name{flex:1;font-size:.92rem;line-height:1.3;color:var(--text);}
.fc-price-mod-meta{font-size:.78rem;color:var(--text-secondary);white-space:nowrap;}

/* --- Presets packs --- */
.fc-price-packs{margin-top:var(--space-5);}
.fc-price-packs-eyebrow{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700;margin:0 0 var(--space-3);}
.fc-price-packs-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);}
@media (max-width:560px){.fc-price-packs-grid{grid-template-columns:1fr;}}
.fc-price-pack{border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);background:var(--surface,#fff);}
.fc-price-pack.is-featured{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.fc-price-pack-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.25rem;}
.fc-price-pack-badge{font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#fff;background:var(--accent);padding:.15rem .5rem;border-radius:var(--radius-pill,999px);white-space:nowrap;}
.fc-price-pack-h{margin:0 0 .25rem;font-size:1.05rem;}
.fc-price-pack-desc{margin:0 0 var(--space-3);font-size:.86rem;color:var(--text-secondary,#7a7a86);}
.fc-price-pack-price{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;margin-bottom:var(--space-3);}
.fc-price-pack-amount{font-size:1.4rem;font-weight:800;color:var(--accent);}
.fc-price-pack-old{font-size:.82rem;color:var(--text-muted);text-decoration:line-through;}
.fc-price-pack-off{font-size:.72rem;font-weight:800;letter-spacing:.03em;color:var(--fomo);border:1px solid rgba(var(--fomo-rgb),.50);border-radius:var(--radius-pill,999px);padding:.05rem .45rem;}
.fc-price-pack-save{margin:0 0 .35rem;font-size:.82rem;font-weight:800;color:var(--fomo);}
.fc-price-pack-cert{margin:0 0 var(--space-3);font-size:.8rem;font-weight:600;color:var(--text-secondary);display:flex;align-items:center;gap:.35rem;}
.fc-price-pack-cert::before{content:"";flex:none;width:.55rem;height:.55rem;border-radius:50%;background:var(--accent);}
.fc-price-pack-cta{display:flex;flex-direction:column;gap:.5rem;}
.fc-price-pack-cta .btn{width:100%;justify-content:center;}

/* --- Résumé (sticky) --- */
.fc-price-summary{position:sticky;top:calc(var(--nav-h,72px) + var(--space-3));border:1px solid var(--border-strong,var(--border));border-radius:var(--radius-lg);padding:var(--space-5);background:var(--surface-raised,#fff);transition:border-color .2s ease,box-shadow .2s ease;}
.fc-price-summary.is-unlocked{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.fc-price-summary-eyebrow{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin:0 0 var(--space-3);}
.fc-price-count{display:flex;align-items:baseline;gap:.5rem;margin-bottom:var(--space-4);}
.fc-price-count-n{font-size:2.6rem;font-weight:800;line-height:1;color:var(--accent);}
.fc-price-count-lbl{font-size:.9rem;color:var(--text-secondary);}
.fc-price-lines{list-style:none;margin:0 0 var(--space-3);padding:0;display:grid;gap:.5rem;}
.fc-price-line{display:flex;justify-content:space-between;gap:var(--space-3);font-size:.92rem;}
.fc-price-line[hidden],.fc-price-savings[hidden],.fc-price-incentive[hidden]{display:none;}
.fc-price-line-k{color:var(--text-secondary);}
.fc-price-line-v{color:var(--text);font-weight:600;}
.fc-price-free-v{color:var(--accent);font-weight:700;}

/* Message incitatif (< 6 modules) — teinte subtile, texte clair lisible */
.fc-price-incentive{font-size:.85rem;line-height:1.4;font-weight:600;color:var(--text);margin:0 0 var(--space-3);padding:.65rem .8rem;background:rgba(var(--accent-rgb),.1);border:1px solid rgba(var(--accent-rgb),.35);border-radius:var(--radius-ui);}

/* Total — élément dominant */
.fc-price-total{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border);}
.fc-price-total-k{font-weight:700;font-size:1rem;color:var(--text);}
.fc-price-total-v{font-size:2rem;font-weight:800;line-height:1;color:var(--text);}
.fc-price-summary.is-unlocked .fc-price-total-v{color:var(--accent);}

/* Économie — bandeau fort quand la remise est active */
.fc-price-savings{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-top:var(--space-3);padding:.7rem .9rem;border-radius:var(--radius-ui);background:rgba(var(--fomo-rgb),.10);border:1px solid rgba(var(--fomo-rgb),.38);}
.fc-price-savings-k{font-size:.9rem;font-weight:700;color:var(--text);}
.fc-price-savings-wrap{display:flex;align-items:center;gap:.5rem;}
.fc-price-savings-v{font-size:1.15rem;font-weight:800;color:var(--fomo);}
.fc-price-savings-badge{font-size:.72rem;font-weight:800;letter-spacing:.03em;color:var(--on-fomo);background:var(--fomo);border-radius:var(--radius-pill,999px);padding:.1rem .5rem;}

/* CTA — principal dominant, liens secondaires discrets */
.fc-price-cta{display:flex;flex-direction:column;gap:.5rem;margin-top:var(--space-4);}
.fc-price-cta-main{width:100%;justify-content:center;}
.fc-price-cta-sub{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;}
.fc-price-link{font-size:.82rem;font-weight:600;color:var(--text-secondary);text-decoration:none;}
.fc-price-link:hover{color:var(--accent);text-decoration:underline;}
.fc-price-reset{font:inherit;font-size:.82rem;color:var(--text-muted);background:none;border:none;cursor:pointer;padding:.3rem 0;}
.fc-price-reset:hover{color:var(--accent);text-decoration:underline;}

.fc-price-note{font-size:.84rem;line-height:1.5;margin:var(--space-4) 0 0;padding:.6rem .8rem;border-radius:var(--radius-ui);border:1px dashed var(--border);color:var(--text-secondary);}
.fc-price-summary.is-unlocked .fc-price-note{border-style:solid;border-color:rgba(var(--accent-rgb),.4);background:rgba(var(--accent-rgb),.08);color:var(--text);}
.fc-price-cert{margin:var(--space-3) 0 0;font-size:.8rem;font-weight:600;color:var(--text-secondary);display:flex;align-items:center;gap:.4rem;}
.fc-price-cert::before{content:"";flex:none;width:.55rem;height:.55rem;border-radius:50%;background:var(--text-muted);}
.fc-price-summary.is-unlocked .fc-price-cert{color:var(--text);}
.fc-price-summary.is-unlocked .fc-price-cert::before{background:var(--accent);}
.fc-price-legal{font-size:.72rem;line-height:1.5;color:var(--text-muted);margin:var(--space-3) 0 0;}
.fc-price-legal-quiet{opacity:.7;margin-top:var(--space-2);}

/* --- CTA « Voir le parcours détaillé » sur les cartes parcours FC --- */
.fc-parc-cta{margin-top:var(--space-4);}

/* --- Pages parcours FC (/formation-continue/parcours/<slug>) --- */
.fc-pp-lede{max-width:60ch;}
.fc-pp-socle-price,.fc-pp-complet{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-6);}
.fc-pp-complet{margin:var(--space-6) 0 0;padding-top:var(--space-5);border-top:1px solid var(--border);}
.fc-pp-complet-lbl{font-weight:700;color:var(--text);}
.fc-pp-price-v{font-size:clamp(1.6rem,4vw,2.2rem);font-weight:800;line-height:1;color:var(--accent);}
.fc-pp-price-alt{font-size:.9rem;font-weight:600;color:var(--text-secondary);}
.fc-pp-price-cert{font-size:.8rem;font-weight:600;color:var(--text);display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;border-radius:var(--radius-pill,999px);background:rgba(var(--accent-rgb),.1);}
.fc-pp-mods{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-4);}
.fc-pp-mod{display:flex;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--border);border-radius:var(--radius-ui);background:var(--surface);}
.fc-pp-mod-n{flex:none;font-size:.8rem;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums;}
.fc-pp-mod-name{margin:0 0 .3rem;font-size:1rem;}
.fc-pp-mod-desc{margin:0 0 .5rem;font-size:.88rem;line-height:1.5;color:var(--text-secondary);}
.fc-pp-mod-dur{font-size:.76rem;font-weight:600;color:var(--text-muted);}
.fc-pp-cs-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-6);}
.fc-pp-cs-h{margin:0 0 var(--space-3);}
.fc-pp-info{margin-top:var(--space-4);}
.fc-pp-format-card{padding:var(--space-6);border:1px solid rgba(var(--accent-rgb),.3);border-radius:var(--radius-lg,20px);background:rgba(var(--accent-rgb),.06);}
@media (max-width:720px){
  .fc-pp-mods,.fc-pp-cs-grid{grid-template-columns:1fr;}
}

/* --- Onglets Particulier / Entreprise --- */
.fc-price-tabs{display:inline-flex;gap:.25rem;padding:.3rem;margin-bottom:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-pill,999px);background:var(--surface);}
.fc-price-tab{font:inherit;font-size:.9rem;font-weight:700;padding:.45rem 1.1rem;border:none;border-radius:var(--radius-pill,999px);background:none;color:var(--text-secondary);cursor:pointer;transition:color .15s ease,background .15s ease;display:flex;flex-direction:column;align-items:center;gap:.05rem;line-height:1.2;}
.fc-price-tab:hover{color:var(--text);}
.fc-price-tab.is-active{background:var(--accent);color:#fff;}
.fc-price-tab-main{font-weight:700;}
.fc-price-tab-sub{font-size:.68rem;font-weight:600;letter-spacing:.02em;opacity:.75;}
.fc-price-panel[hidden]{display:none;}

/* --- Contrôles Entreprise : apprenants + mode --- */
.fc-grp-controls{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:flex-start;margin-bottom:var(--space-5);padding:var(--space-4);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-lg);background:var(--surface);}
.fc-grp-ctrl{display:flex;flex-direction:column;gap:.5rem;}
.fc-grp-ctrl-lbl{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);font-weight:700;}
.fc-grp-stepper{display:inline-flex;align-items:center;gap:.35rem;}
.fc-grp-step{font:inherit;font-size:1.25rem;line-height:1;width:2.2rem;height:2.2rem;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-ui);background:var(--surface-raised,#fff);color:var(--text);cursor:pointer;transition:border-color .15s ease,color .15s ease;}
.fc-grp-step:hover{border-color:var(--accent);color:var(--accent);}
.fc-grp-learners-input{width:3.4rem;height:2.2rem;text-align:center;font:inherit;font-weight:800;font-size:1.05rem;border:1px solid var(--border);border-radius:var(--radius-ui);background:var(--surface-raised,#fff);color:var(--text);-moz-appearance:textfield;}
.fc-grp-learners-input::-webkit-outer-spin-button,
.fc-grp-learners-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.fc-grp-mode-row{display:flex;flex-wrap:wrap;gap:.4rem;}
.fc-grp-mode-opt{display:inline-flex;align-items:center;gap:.4rem;font-size:.86rem;font-weight:600;padding:.45rem .8rem;border:1px solid var(--border);border-radius:var(--radius-pill,999px);background:var(--surface-raised,#fff);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;}
.fc-grp-mode-opt:hover{border-color:var(--accent);}
.fc-grp-mode-opt input{accent-color:var(--accent);}
.fc-grp-mode-opt:has(input:checked){border-color:var(--accent);color:var(--text);background:rgba(var(--accent-rgb),.1);box-shadow:0 0 0 1px var(--accent) inset;}

/* --- Pastilles Apprenant 1..N (mode à la carte) --- */
.fc-grp-tabs{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:var(--space-4);}
.fc-grp-tabs[hidden]{display:none;}
.fc-grp-tab{font:inherit;font-size:.82rem;font-weight:600;display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .7rem;border:1px solid var(--border);border-radius:var(--radius-pill,999px);background:var(--surface,#fff);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;}
.fc-grp-tab:hover{border-color:var(--accent);}
.fc-grp-tab.is-active{border-color:var(--accent);color:var(--text);background:rgba(var(--accent-rgb),.1);box-shadow:0 0 0 1px var(--accent) inset;}
.fc-grp-tab small{font-size:.7rem;font-weight:800;color:#fff;background:var(--accent);border-radius:var(--radius-pill,999px);min-width:1.2rem;height:1.2rem;padding:0 .35rem;display:inline-grid;place-items:center;}

/* --- Détail par apprenant dans le résumé groupe --- */
.fc-grp-detail{list-style:none;margin:0 0 var(--space-3);padding:0;display:grid;gap:.4rem;max-height:15rem;overflow:auto;}
.fc-grp-detail-row{display:flex;justify-content:space-between;gap:var(--space-3);font-size:.86rem;padding-bottom:.35rem;border-bottom:1px dashed var(--border);}
.fc-grp-detail-row:last-child{border-bottom:none;padding-bottom:0;}
.fc-grp-detail-k{color:var(--text-secondary);}
.fc-grp-detail-v{color:var(--text);font-weight:700;white-space:nowrap;}

/* =========================================================
   FORMATION CONTINUE — Tunnel anti-abandon
   ========================================================= */
.fc-funnel-head{text-align:center;max-width:44rem;margin:0 auto var(--space-5);}
.fc-funnel-head h2{margin:.25rem 0 .5rem;}
.fc-funnel-head .sub{color:var(--text-secondary,#7a7a86);}
.fc-funnel-fomo{list-style:none;margin:0 auto var(--space-6);padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);max-width:60rem;}
@media (max-width:760px){.fc-funnel-fomo{grid-template-columns:1fr 1fr;}}
.fc-funnel-fomo-item{display:flex;flex-direction:column;gap:.2rem;padding:var(--space-3) var(--space-4);border:1px solid rgba(var(--fomo-rgb),.22);border-left:3px solid var(--fomo);border-radius:var(--radius-ui);background:rgba(var(--fomo-rgb),.05);}
.fc-funnel-fomo-k{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--fomo);font-weight:700;}
.fc-funnel-fomo-v{font-size:.9rem;font-weight:600;line-height:1.3;}
.fc-funnel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);align-items:start;}
@media (max-width:900px){.fc-funnel-grid{grid-template-columns:1fr;}}
.fc-funnel-card{position:relative;border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);background:var(--surface,#fff);}
.fc-funnel-card-buy{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.fc-funnel-num{font-size:.8rem;font-weight:800;color:var(--accent);letter-spacing:.08em;}
.fc-funnel-card h3{margin:.4rem 0 .5rem;font-size:1.15rem;}
.fc-funnel-card > p{color:var(--text-secondary,#7a7a86);font-size:.92rem;margin:0 0 var(--space-4);}
.fc-funnel-actions{display:flex;flex-direction:column;gap:.5rem;}
.fc-funnel-actions .btn{width:100%;justify-content:center;}
.fc-funnel-form{display:grid;gap:var(--space-3);}
.fc-funnel-form .btn{width:100%;justify-content:center;margin-top:.25rem;}

/* =========================================================
   MODE CLAIR — surcharges ciblées
   Le gros s'adapte via les tokens (:root.light dans tokens.css)
   et var(--tint) (blanc→bleu profond). Ici : chrome en verre,
   champs, footer, et protection des sections cinématiques.
   ========================================================= */

/* Chrome en verre : nav, méga-menus, volet univers, nav mobile */
:root.light .nav{
  background:linear-gradient(180deg, rgba(255,255,255,.86), rgba(255,255,255,.66));
  box-shadow:0 8px 24px rgba(21,49,74,.10), 0 8px 28px -12px var(--glow),
    inset 0 1px 0 rgba(255,255,255,.7);
}
:root.light .universe-panel,
:root.light .nav-dropdown{
  background:linear-gradient(180deg, rgba(255,255,255,.95), rgba(255,255,255,.88));
  box-shadow:0 24px 60px rgba(21,49,74,.16), 0 0 28px var(--glow),
    inset 0 1px 0 rgba(255,255,255,.8), inset 0 0 0 1px var(--border);
}
@media(max-width:920px){
  :root.light .nav-collapse{
    background:linear-gradient(180deg, rgba(255,255,255,.94), rgba(255,255,255,.84));
    box-shadow:0 24px 60px rgba(21,49,74,.14), inset 0 1px 0 rgba(255,255,255,.8);
  }
  :root.light .nav-dropdown{background:transparent;box-shadow:none;}
}

/* Champs de formulaire + callouts */
:root.light .field input,
:root.light .field select,
:root.light .field textarea{background:rgba(255,255,255,.8);}
:root.light .form-status{background:rgba(255,255,255,.7);}

/* Footer : dégradé de bas de page adouci */
:root.light .footer-main{
  background:linear-gradient(180deg, transparent, rgba(21,49,74,.05));
}

/* CTA final : voile clair en mode clair (sinon fond bleu foncé codé en dur) */
:root.light .cta-final{
  background:radial-gradient(90% 120% at 50% 130%, rgba(var(--accent-rgb),.12), transparent 60%),
    linear-gradient(165deg,#FFFFFF,#EAF1F8 85%);
  box-shadow:inset 0 0 0 1px var(--border-strong), var(--shadow-card);
}

/* Widget de prise de rendez-vous (Google Agenda) — bloc générique `calembed` */
.cal-embed{
  max-width:860px;margin-inline:auto;
  background:rgba(var(--tint),.04);
  border:1px solid rgba(var(--tint),.10);
  border-radius:var(--radius-ui);
  padding:var(--space-3);overflow:hidden;
}
.cal-embed-frame{
  display:block;width:100%;min-height:640px;border:0;
  border-radius:var(--radius-ui);background:#fff;
}
@media(max-width:560px){
  .cal-embed{padding:var(--space-2);}
  .cal-embed-frame{min-height:720px;}
}

/* --- Protection des sections cinématiques / verre flottant ---
   Ces blocs restent volontairement sombres dans les deux modes
   (média sombre + texte clair). On y rétablit --tint blanc pour
   garder fines bordures et voiles visibles sur fond sombre. */
:root.light .hero-video-bg,
:root.light .hero-reel,
:root.light .reali-section,
:root.light .reel-section,
:root.light .hero-screen,
:root.light .hero-tool,
:root.light .nk-orbit-card,
:root.light .academy-floatbar,
:root.light .hub-panel{ --tint:255,255,255; }

/* Hero scroll-scale Academy (/academy) — lisibilité en mode clair.
   La colonne de texte (foncée en clair) déborde sur la carte vidéo sombre
   → texte sombre sur fond sombre = illisible. On pose un voile clair DERRIÈRE
   le texte (au-dessus de la carte, sous le texte) uniquement en mode clair ;
   inset:0 dans .hero-left, il glisse + floute avec le texte au scroll et
   disparaît quand la carte passe en plein écran. La carte vidéo conserve son
   rendu sombre (voir plus bas : la hero /academy n'est pas éclaircie). */
:root.light .page-hero-scroll .hero-left::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(90deg,
    rgb(238,244,249) 0%,
    rgba(238,244,249,.94) 34%,
    rgba(238,244,249,.62) 50%,
    rgba(238,244,249,0) 66%);
}

/* Barre d'admissions flottante Academy : fond volontairement sombre dans les
   deux modes → forcer un texte clair (sinon var(--text) devient sombre en mode
   clair = texte sombre sur barre sombre). */
:root.light .floatbar-text{ color:rgba(255,255,255,.92); }
:root.light .academy-floatbar .btn-ghost{ color:rgba(255,255,255,.85); }
:root.light .academy-floatbar .btn-ghost:hover{ color:#fff; background:rgba(255,255,255,.12); }

/* Cartes en orbite (Numériklub) : fond sombre conservé dans les deux modes.
   Le reset --tint suffit aux bordures/voiles, mais les textes utilisent des
   tokens sémantiques (var(--text) / --text-secondary) qui basculent en sombre
   → on force du clair sur ces cartes en mode clair. */
:root.light .nk-orbit-name{ color:rgba(255,255,255,.95); }
:root.light .nk-orbit-desc,
:root.light .nk-orbit-prog li{ color:rgba(255,255,255,.72); }

/* ---------------------------------------------------------
   Filtres vidéo — intensité atténuée en mode clair.
   Les voiles/scrims posés sur les vidéos sont calibrés pour
   le mode sombre ; en mode clair on les allège pour que le
   footage ressorte plus lumineux et cohérent avec la page
   claire. EXCEPTION : la hero de la Formation Initiale
   (/academy → .hero-card / .hero-card-scan) n'est PAS touchée,
   elle conserve son filtre pour la lisibilité.
   --------------------------------------------------------- */
/* Panneaux vidéo du hero Hub (les 3 univers) */
:root.light .hub-panel-tint{ background:rgba(var(--accent-rgb),.32); }
:root.light .hub-panel-media::after{
  background:linear-gradient(180deg,rgba(var(--accent-rgb),.10) 0%,rgba(0,0,0,.04) 45%,rgba(var(--accent-rgb),.34) 100%);}
/* Cartes univers (section « 3 univers ») */
:root.light .u-card-media::after{
  background:linear-gradient(180deg, transparent 62%, rgba(11,30,46,.30) 100%);}
:root.light .u-card-tint{
  background:
    linear-gradient(180deg, rgba(11,30,46,.55) 0%, rgba(11,30,46,0) 22%),
    radial-gradient(120% 95% at 50% 0%, rgba(var(--accent-rgb),.32), transparent 74%),
    linear-gradient(165deg, rgba(11,30,46,.28), rgba(11,30,46,.5));}
:root.light .u-card-tint::after{ background:rgba(var(--accent-rgb),.34); }
/* Vidéos d'en-tête des cartes programme : le bas se fond vers
   la carte (blanche en clair, non plus var(--blue-800) sombre). */
:root.light .prog-video::after{
  background:linear-gradient(180deg, transparent 55%, rgba(var(--accent-rgb),.08) 74%, #ffffff 100%);}

/* =========================================================
   Qualification « 3 portes » (Numériklub + Academy)
   ========================================================= */
.qualif-sec{position:relative;}
.qualif-head{text-align:center;max-width:46rem;margin:0 auto var(--space-5);}
.qualif-head .eyebrow{color:var(--accent);}
.qualif-fomo{list-style:none;margin:0 auto var(--space-6);padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);max-width:52rem;}
@media (max-width:760px){.qualif-fomo{grid-template-columns:1fr;}}
.qualif-fomo-item{display:flex;flex-direction:column;gap:.2rem;padding:var(--space-3) var(--space-4);border:1px solid rgba(var(--fomo-rgb),.20);border-left:3px solid var(--fomo);border-radius:var(--radius-ui);background:rgba(var(--fomo-rgb),.05);}
.qualif-fomo-k{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);}
.qualif-fomo-v{font-weight:700;color:var(--text);}
.qualif-doors{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);align-items:stretch;}
@media (max-width:900px){.qualif-doors{grid-template-columns:1fr;}}
.qualif-door{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-raised,var(--surface));}
.qualif-door-form{border-color:rgba(var(--accent-rgb),.4);box-shadow:0 0 0 1px rgba(var(--accent-rgb),.18) inset;}
.qualif-door-ic{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-ui);color:var(--accent);background:rgba(var(--accent-rgb),.12);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.3);}
.qualif-door-ic svg{width:20px;height:20px;}
.qualif-door-t{margin:0;font-size:var(--text-lg);}
.qualif-door-d{color:var(--text-secondary);font-size:.92rem;line-height:1.5;flex:0 0 auto;margin:0;}
.qualif-door .btn{margin-top:auto;}
.qualif-form{display:flex;flex-direction:column;gap:.5rem;margin-top:auto;}
.qualif-form .field{display:flex;flex-direction:column;gap:.25rem;}
.qualif-form .field label{font-size:.78rem;color:var(--text-secondary);}
.qualif-form button{width:100%;justify-content:center;margin-top:.25rem;}
.qualif-wa-btn{width:100%;justify-content:center;}

/* =========================================================
   Numériklub — récapitulatif de commande (order summary)
   ========================================================= */
.nk-order{border:1px solid var(--border);border-radius:var(--radius-ui);padding:var(--space-3) var(--space-4);background:rgba(var(--accent-rgb),.05);display:flex;flex-direction:column;gap:6px;margin-top:var(--space-1);}
.nk-order-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);}
.nk-order-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px;}
.nk-order-item{position:relative;padding-left:22px;font-size:.9rem;color:var(--text-secondary);line-height:1.4;}
.nk-order-item::before{content:"";position:absolute;left:4px;top:.5em;width:9px;height:9px;border-radius:2px;background:var(--accent);box-shadow:0 0 8px rgba(var(--accent-rgb),.5);}
.nk-order-engage{font-size:.82rem;color:var(--text-secondary);margin:var(--space-1) 0 0;}
.nk-order-engage-k{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-right:6px;}

/* =========================================================
   Formation Continue — FOMO + 3 portes près des CTA calculatrice
   ========================================================= */
.fc-price-fomo{font-size:.82rem;line-height:1.45;font-weight:600;color:var(--text);margin:var(--space-4) 0 0;padding:.6rem .8rem;border-radius:var(--radius-ui);border:1px solid rgba(var(--fomo-rgb),.28);border-left:3px solid var(--fomo);background:rgba(var(--fomo-rgb),.07);}
.fc-price-doors{display:flex;flex-direction:column;gap:.4rem;}
.fc-price-doors-lbl{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);}
.fc-price-doors-row{display:grid;grid-template-columns:1fr 1fr;gap:.4rem;}
@media (max-width:680px){.fc-price-doors-row{grid-template-columns:1fr;}}
.fc-price-door{justify-content:center;font-size:.82rem;padding:.5rem .6rem;min-height:44px;}

/* =========================================================
   Feuille d'impression de la simulation (générée à la volée)
   ========================================================= */
.fc-print-sheet{display:none;}
@media print{
  body.fc-printing>*{display:none !important;}
  body.fc-printing .fc-print-sheet{display:block !important;position:static;color:#000;background:#fff;font-family:var(--font-body,system-ui,sans-serif);}
  .fc-print-inner{max-width:100%;padding:0;color:#000;}
  .fc-print-head{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid #000;padding-bottom:8px;margin-bottom:16px;}
  .fc-print-brand{font-weight:800;font-size:15px;}
  .fc-print-date{font-size:12px;color:#333;}
  .fc-print-title{font-size:20px;margin:0 0 16px;}
  .fc-print-block{margin-bottom:16px;}
  .fc-print-block h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px;color:#111;}
  .fc-print-block ul{list-style:none;margin:0;padding:0;}
  .fc-print-block li{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px solid #ddd;font-size:13px;}
  .fc-print-totals{list-style:none;margin:16px 0;padding:12px 0 0;border-top:2px solid #000;}
  .fc-print-totals li{display:flex;justify-content:space-between;gap:12px;padding:4px 0;font-size:14px;}
  .fc-print-totals li.is-strong{font-weight:800;font-size:17px;border-top:1px solid #000;margin-top:6px;padding-top:8px;}
  .fc-print-note{font-size:11px;color:#444;line-height:1.5;margin:6px 0 0;}
}

/* Light mode — surfaces neutres pour les nouveaux blocs */
:root.light .qualif-fomo-item,
:root.light .qualif-door,
:root.light .nk-order{background:#fff;}

/* Bandeau "Pack sélectionné" injecté par initPackParam() sur /formation-continue/inscription */
.fc-pack-banner{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.6rem .9rem;margin-bottom:var(--space-4);border-radius:var(--radius-ui);background:rgba(var(--accent-rgb),.10);border:1px solid rgba(var(--accent-rgb),.30);border-left:3px solid var(--accent);}
.fc-pack-banner-k{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);white-space:nowrap;}
.fc-pack-banner-v{font-size:.88rem;font-weight:600;color:var(--text);}
:root.light .fc-pack-banner{background:rgba(var(--accent-rgb),.07);border-color:rgba(var(--accent-rgb),.22);}

/* Light mode — overrides explicites pour les 3 classes FOMO sans variable suffisante */
:root.light .fc-price-savings{background:rgba(var(--fomo-rgb),.08);border-color:rgba(var(--fomo-rgb),.30);}
:root.light .fc-funnel-fomo-item{background:rgba(var(--fomo-rgb),.06);border-color:rgba(var(--fomo-rgb),.20);border-left-color:var(--fomo);}
:root.light .fc-price-fomo{background:rgba(var(--fomo-rgb),.06);border-color:rgba(var(--fomo-rgb),.22);border-left-color:var(--fomo);}

/* Logos "theme-aware" (dualLogo) : les lockups blancs sur transparent sont
   rendus en double — <img> d'origine (mode sombre) + silhouette teintée via
   masque (mode clair). Bascule purement CSS : le toggle de thème ne
   re-render pas la nav/le footer. */
:root.light .lg-on-dark{display:none !important;}
:root:not(.light) .lg-on-light{display:none !important;}

/* Logos partenaires blancs (monochromes) : encrés en mode clair, sinon
   invisibles sur fond clair. Les logos colorés/foncés ne sont pas marqués. */
:root.light .partner-logo.is-white,
:root.light .trust-logo.is-white,
:root.light .nk-partner-logo.is-white{
  filter:brightness(0) opacity(.72);
}

/* ===== FC — rythme badge + countdown-wrap ===== */
.fc-countdown-wrap {
  display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4);
  padding:var(--space-4) 0;
}
.fc-rythme-badge {
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 16px;
  background:rgba(var(--accent-rgb),.08);
  border:1px solid rgba(var(--accent-rgb),.18);
  border-radius:var(--radius-ui);
  font-size:var(--text-sm);color:var(--text-secondary);
  font-style:italic;
}
:root.light .fc-rythme-badge {
  background:rgba(var(--accent-rgb),.06);
  border-color:rgba(var(--accent-rgb),.20);
  color:var(--text-secondary);
}

/* ===== Boutons "Ajouter à mon agenda" ===== */
.cal-add-wrap { text-align:center; }
.cal-btns {
  display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-3);
}
.cal-btn {
  display:inline-flex;align-items:center;gap:6px;
  font-size:var(--text-sm);
  padding:8px 16px;
  border:1px solid rgba(var(--accent-rgb),.28);
  border-radius:var(--radius-ui);
  color:var(--text-secondary);
  text-decoration:none;
  transition:border-color .2s, color .2s, background .2s;
}
.cal-btn:hover {
  border-color:rgba(var(--accent-rgb),.55);
  color:var(--text);
  background:rgba(var(--accent-rgb),.06);
}
:root.light .cal-btn {
  border-color:rgba(var(--accent-rgb),.30);
  color:var(--text-secondary);
}

/* ===================================================================
   Curseur futuriste (HUD) — pointeur fin uniquement
   S'adapte à l'univers via --accent-rgb (thèmes cyan/orange/magenta).
   Créé par initCursor() dans effects.js.
   =================================================================== */
html.has-cursor-fx,
html.has-cursor-fx * { cursor: none; }
/* On garde le curseur natif (I-beam) sur les champs de saisie pour la précision */
html.has-cursor-fx input,
html.has-cursor-fx textarea,
html.has-cursor-fx select,
html.has-cursor-fx [contenteditable="true"] { cursor: auto; }

.cursor-fx {
  position: fixed; inset: 0; z-index: 2147483000;
  pointer-events: none; opacity: 0;
  transition: opacity .28s var(--ease-out);
}
.cursor-fx.is-visible { opacity: 1; }

.cursor-dot,
.cursor-ring {
  position: fixed; top: 0; left: 0;
  will-change: transform;
  border-radius: 50%;
}

/* Point de visée précis — colle exactement au pointeur */
.cursor-dot {
  width: 6px; height: 6px;
  background: rgb(var(--accent-rgb));
  box-shadow: 0 0 10px rgba(var(--accent-rgb), .9);
  transition: opacity .2s var(--ease-out), background-color .3s var(--ease-out);
}

/* Anneau HUD — suit avec une légère traînée (lerp en JS) */
.cursor-ring {
  width: 34px; height: 34px;
  border: 1.5px solid rgba(var(--accent-rgb), .7);
  box-shadow: 0 0 16px rgba(var(--accent-rgb), .35),
              inset 0 0 10px rgba(var(--accent-rgb), .18);
  transition: width .24s var(--ease-out), height .24s var(--ease-out),
              border-color .24s var(--ease-out), box-shadow .24s var(--ease-out);
}

/* Réticule tournant en pointillés (couche sci-fi) */
.cursor-ring::before {
  content: ""; position: absolute; inset: -7px;
  border-radius: 50%;
  border: 1px dashed rgba(var(--accent-rgb), .5);
  animation: cursorSpin 5s linear infinite;
}
@keyframes cursorSpin { to { transform: rotate(360deg); } }

/* Survol d'un élément interactif : l'anneau s'ouvre, le point se rétracte */
.cursor-fx.is-hover .cursor-ring {
  width: 54px; height: 54px;
  border-color: rgba(var(--accent-rgb), .95);
  box-shadow: 0 0 26px rgba(var(--accent-rgb), .5),
              inset 0 0 12px rgba(var(--accent-rgb), .22);
}
.cursor-fx.is-hover .cursor-dot { opacity: 0; }

/* Clic : rétraction franche */
.cursor-fx.is-down .cursor-ring { width: 26px; height: 26px; }
.cursor-fx.is-down .cursor-dot { transform: scale(1.6); }

/* Accessibilité : pas de traînée ni de rotation en mouvement réduit */
.cursor-fx.cursor-reduced .cursor-ring::before { animation: none; }
@media (prefers-reduced-motion: reduce) {
  .cursor-ring::before { animation: none; }
  .cursor-dot, .cursor-ring { transition: none; }
}
