/* Global local faces: source sheets AND critical/full bundles share them. */
@font-face {
  font-family: Nunito;
  font-style: normal;
  font-weight: 400 900;
  font-display: swap;
  src: url("/assets/fonts/nunito-latin-v16.woff2") format("woff2");
}
@font-face {
  font-family: Nunito;
  font-style: italic;
  font-weight: 400 900;
  font-display: swap;
  src: url("/assets/fonts/nunito-italic-latin-v16.woff2") format("woff2");
}
/* =========================================================
   P14 Hub — Design Tokens
   Palette monochrome gris-bleu · base #15314A
   ========================================================= */
:root{

  /* ---- Couleurs : échelle bleue ---- */
  --blue-950:#081420;   /* fond le plus profond          */
  --blue-900:#0B1E2E;   /* fond sombre                   */
  --blue-800:#0E2438;   /* surfaces sombres              */
  --blue-700:#112B40;   /* surface intermédiaire         */
  --blue-600:#15314A;   /* base                          */
  --blue-500:#1E4467;   /* élévation                     */
  --blue-400:#2C5C88;   /* bordures actives              */
  --blue-300:#4878A2;   /* accent / glow                 */
  --blue-200:#7AA0BE;   /* accent clair                  */
  --blue-100:#B3C8D8;   /* texte secondaire clair        */
  --blue-050:#DCE7EF;   /* highlights                    */
  --white:#F4F8FB;

  /* ---- Alias sémantiques ---- */
  --bg-deep:var(--blue-950);
  --bg:var(--blue-900);
  --surface:var(--blue-800);
  --surface-raised:var(--blue-700);
  --elevation:var(--blue-500);

  --border:rgba(123,160,190,.14);        /* blue-200 @ 14% */
  --border-strong:rgba(123,160,190,.28);
  --border-active:var(--blue-400);

  --cta:var(--blue-300);                 /* primaire : CTA */
  --cta-soft:var(--blue-200);
  --cta-rgb:72,120,162;
  --on-cta:#FFFFFF;
  /* Hub général : les emphases secondaires reprennent le bleu global du Hub.
     Le magenta reste disponible pour l'accent sémantique du Hub. */
  --accent:var(--magenta-500);           /* accent sémantique conservé */
  --accent-soft:var(--magenta-400);
  --accent-rgb:206,26,99;
  --accent-secondary:var(--blue-300);    /* emphases / éléments décoratifs */
  --accent-secondary-soft:var(--blue-200);
  --accent-secondary-rgb:72,120,162;

  --text:var(--blue-050);
  --text-secondary:var(--blue-100);
  --text-muted:rgba(179,200,216,.70);   /* .52 -> .70 : AA (4.5:1) sur --bg et --surface */
  --on-accent:#FFFFFF;

  --glow:rgba(72,120,162,.18);

  /* FOMO / Urgence — signal global indépendant des thèmes d'univers.
     Amber doré · même valeur partout en dark, overridée en :root.light.
     À utiliser UNIQUEMENT sur : badges urgence, fomoStrip, savings,
     countdown, dot-pulse — PAS sur les éléments informatifs (certifs, CPF). */
  --fomo:#FFAA00;
  --fomo-soft:#FFBB29;
  --fomo-rgb:255,170,0;
  --fomo-glow:rgba(255,170,0,.32);
  --on-fomo:#1A0B00;

  /* Teinte des voiles/bordures translucides des widgets. En sombre : blanc.
     En clair (:root.light) : bleu profond — pour que fines bordures et
     remplissages restent visibles sur fond clair. Voir styles/site.css. */
  --tint:255,255,255;

  /* ---- Accents de programme (variantes du primaire) ---- */
  --cyan-500:#15C6CE;   --cyan-400:#3ED3D9;   --cyan-600:#0FA4AB;   /* Formation Initiale  */
  --magenta-500:#CE1A63;--magenta-400:#E13B7E;--magenta-600:#A8124E;/* Formation Continue  */
  --orange-500:#F18A07;--orange-400:#FBA431; --orange-600:#CC7100;  /* Numériklub          */

  /* ---- Typographie ---- */
  --font-display:"Nunito",system-ui,sans-serif;
  --font-body:"Nunito",system-ui,sans-serif;
  /* Tous les rôles typographiques utilisent Nunito pour une interface
     cohérente et plus chaleureuse, y compris les méta-libellés. */
  --font-mono:"Nunito",system-ui,sans-serif;
  --mono:var(--font-mono);               /* alias spec */
  --font-ui:"Nunito",system-ui,sans-serif;
  --font-serif:"Nunito",system-ui,sans-serif;
  --font-sans:"Nunito",system-ui,sans-serif;
  /* Texture bruit réutilisable : à SUPERPOSER en première couche des fonds
     (background-image:var(--bg-noise),linear-gradient(...)) pour un effet
     bruit visible SANS perdre les dégradés. */
  /* Grain monochrome en SVG inline (feTurbulence) — tuile FIXE 180px :
     fréquence constante quelle que soit la taille de l'élément (un svg en
     100%×100% rendrait un grain d'autant plus gros que l'élément est grand).
     Réglages : baseFrequency = finesse ; 4e ligne du feColorMatrix =
     intensité (alpha max). Blanc pour fonds sombres, noir pour clairs. */
  --bg-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.4 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
  --bg-noise-onlight:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.32 0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");

  /* Couleur des titres : nuance de blanc/bleu NEUTRE, jamais l'accent du hub
     (l'accent est réservé aux CTA). --heading = teinte pleine, --grad-heading
     = dégradé subtil vers la nuance corps pour les h2 de section. */
  --heading:var(--white);
  --heading-soft:var(--blue-100);
  --grad-heading:linear-gradient(115deg,var(--white) 8%,var(--blue-100) 92%);
  /* Surtitres/labels neutres OPAQUES (contrast ≥ 4.5:1) — --text-muted est
     translucide et insuffisant en 13px majuscule ; jamais d'accent ici. */
  --eyebrow:var(--blue-100);

  --text-2xs:.75rem;    /* 12 — plancher absolu : libellés décoratifs en capitales */
  --text-xs:.8125rem;   /* 13 — minimum lisible pour labels */
  --text-sm:.9375rem;   /* 15 */
  --text-base:1rem;     /* 16 */
  --text-lg:1.125rem;   /* 18 */
  --text-xl:1.375rem;   /* 22 */
  --text-2xl:1.75rem;   /* 28 */
  --text-3xl:clamp(2rem,3.2vw,2.75rem);
  --text-4xl:3.5rem;    /* 56 */
  --text-5xl:clamp(3rem,6vw,5.5rem);

  --tracking-tight:-.018em;
  --tracking-wide:.055em;
  --tracking-mono:.075em;

  /* ---- Espacement : échelle 4px ---- */
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:24px;
  --space-6:32px;
  --space-7:48px;
  --space-8:64px;
  --space-9:96px;
  --space-10:128px;

  /* ---- Rayons ---- */
  /* Échelle de rayons. Tout était aplati à 2 px, ce qui durcissait l'ensemble
     du site. Les valeurs ci-dessous reprennent celles que le code déclarait
     déjà en repli — var(--radius-md,12px), var(--radius-lg,16px) — donc on
     revient à l'intention d'origine plutôt qu'à un choix arbitraire. */
  --radius-xs:6px;      /* vignettes glass */
  --radius-sm:8px;
  --radius-md:12px;     /* médias, encarts */
  --radius-lg:16px;     /* coins de section, grands panneaux */
  --radius-pill:999px;  /* capsules et avatars : vrai arrondi complet */
  --radius-ui:10px;     /* composants : boutons, champs, cartes, nav */
  --radius-photo:12px;  /* photos rectangulaires NON détourées : coins adoucis
                           (les visuels détourés object-fit:contain restent nets) */

  /* ---- Ombres ---- */
  --shadow-card:0 12px 28px rgba(3,12,20,.22);
  --shadow-card-light:0 10px 24px rgba(21,49,74,.08);
  --shadow-float:0 24px 60px rgba(8,20,32,.28);

  /* ---- Gradients ---- */
  --grad-hero:linear-gradient(135deg,var(--blue-800) 0%,var(--blue-700) 52%,rgba(var(--accent-rgb),.72) 100%);
  --grad-hero-side:linear-gradient(90deg,
      rgba(14,36,56,.95) 0%, rgba(21,49,74,.70) 25%,
      rgba(21,49,74,.25) 50%, transparent 72%);

  /* ---- Timing ---- */
  --ease-out:cubic-bezier(.22,1,.36,1);
  --dur-fast:.18s;
  --dur:.28s;
  --dur-slow:.6s;
}

/* =========================================================
   Thèmes d'univers — appliquer sur n'importe quel conteneur.
   La primaire reste réservée aux CTA ; la secondaire est la primaire
   croisée d'un autre univers et porte uniquement les emphases.
   Les composants décoratifs consomment --accent-secondary-* ; les CTA
   consomment --accent-*.
   ========================================================= */
.theme-cyan{
  --cta:var(--cyan-500); --cta-soft:var(--cyan-400); --cta-rgb:21,198,206;
  --accent:var(--blue-300); --accent-soft:var(--blue-200); --accent-rgb:72,120,162;
  --accent-secondary:var(--blue-300); --accent-secondary-soft:var(--blue-200);
  --accent-secondary-rgb:72,120,162; --glow:rgba(72,120,162,.18);
  --on-cta:#04201F; --on-accent:#FFFFFF;
  --grad-hero:linear-gradient(135deg,var(--blue-900) 0%,var(--blue-800) 52%,rgba(var(--accent-rgb),.72) 100%);
}
.theme-magenta{
  --cta:var(--magenta-500); --cta-soft:var(--magenta-400); --cta-rgb:206,26,99;
  --accent:var(--blue-300); --accent-soft:var(--blue-200); --accent-rgb:72,120,162;
  --accent-secondary:var(--blue-300); --accent-secondary-soft:var(--blue-200);
  --accent-secondary-rgb:72,120,162; --glow:rgba(72,120,162,.18);
  --on-cta:#fff; --on-accent:#FFFFFF;
  /* Dégradé premium adouci : aubergine profond → magenta riche → rose tamisé.
     4 arrêts pour une transition plus douce, moins « néon » que l'ancien. */
   --grad-hero:linear-gradient(140deg,var(--blue-900) 0%,var(--blue-800) 46%,rgba(var(--accent-rgb),.72) 100%);
}
.theme-orange{
  --cta:var(--orange-500); --cta-soft:var(--orange-400); --cta-rgb:241,138,7;
  --accent:var(--blue-300); --accent-soft:var(--blue-200); --accent-rgb:72,120,162;
  --accent-secondary:var(--blue-300); --accent-secondary-soft:var(--blue-200);
  --accent-secondary-rgb:72,120,162; --glow:rgba(72,120,162,.18);
  --on-cta:#241200; --on-accent:#FFFFFF;
  --grad-hero:linear-gradient(135deg,var(--blue-900) 0%,var(--blue-800) 52%,rgba(var(--accent-rgb),.72) 100%);
  --grad-title:linear-gradient(135deg,var(--heading) 0%,var(--heading-soft) 100%);
}

/* =========================================================
   MODE CLAIR — appliqué via `html.light` (défaut = sombre).
   Remappe les alias sémantiques (fonds, surfaces, textes,
   bordures, ombres) sans toucher aux échelles de base ni aux
   accents de programme. Les classes .theme-* (sur <body>)
   continuent de fonctionner ; on ajuste seulement le contraste
   des accents pour rester lisibles sur fond clair.
   ========================================================= */
:root.light{
  --bg-deep:#E7EFF6;      /* fond le plus profond (bleu très clair) */
  --bg:#EEF4F9;
  --surface:#FFFFFF;
  --surface-raised:#FFFFFF;
  --elevation:#FFFFFF;

  --border:rgba(21,49,74,.12);
  --border-strong:rgba(21,49,74,.20);
  --border-active:var(--blue-400);

  --cta:var(--blue-600); --cta-soft:var(--blue-400); --cta-rgb:21,49,74;
  --accent:var(--magenta-600); --accent-soft:var(--magenta-500); --accent-rgb:168,18,78;
  --accent-secondary:var(--blue-400); --accent-secondary-soft:var(--blue-300);
  --accent-secondary-rgb:44,92,136;

  --text:#0E2438;
  --text-secondary:#39556F;
  --text-muted:rgba(14,36,56,.65);      /* .56 -> .65 : AA sur les fonds clairs */
  --on-cta:#F4F8FB;
  --on-accent:#FFFFFF;

  --glow:rgba(44,92,136,.14);
  --heading:#0E2438;
  --heading-soft:#2C5C88;
  --grad-heading:linear-gradient(115deg,#0E2438 8%,#2C5C88 92%);
  --eyebrow:#39556F;
  --fomo:#9B5A00;
  --fomo-soft:#B36A00;
  --fomo-rgb:155,90,0;
  --fomo-glow:rgba(155,90,0,.16);
  --on-fomo:#FFFBF0;
  --tint:21,49,74;

  --shadow-card:0 8px 26px rgba(21,49,74,.10), inset 0 1px 0 rgba(255,255,255,.7);
  --shadow-card-light:0 10px 30px rgba(21,49,74,.08), inset 0 1px 0 rgba(255,255,255,.9);
  --shadow-float:0 20px 56px rgba(21,49,74,.15), 0 0 40px rgba(21,49,74,.06);
}
/* Accents de programme — contraste renforcé pour texte sur fond clair */
:root.light .theme-cyan{
  --cta:var(--cyan-600); --cta-soft:var(--cyan-500); --cta-rgb:15,164,171;
  --accent:var(--blue-400); --accent-soft:var(--blue-300); --accent-rgb:44,92,136;
  --accent-secondary:var(--blue-400); --accent-secondary-soft:var(--blue-300);
  --accent-secondary-rgb:44,92,136; --glow:rgba(44,92,136,.16); --on-cta:#04201F; --on-accent:#FFFFFF;
}
:root.light .theme-magenta{
  --cta:var(--magenta-500); --cta-soft:var(--magenta-400); --cta-rgb:206,26,99;
  --accent:var(--blue-400); --accent-soft:var(--blue-300); --accent-rgb:44,92,136;
  --accent-secondary:var(--blue-400); --accent-secondary-soft:var(--blue-300);
  --accent-secondary-rgb:44,92,136; --glow:rgba(44,92,136,.16); --on-cta:#fff; --on-accent:#FFFFFF;
}
:root.light .theme-orange{
  --cta:var(--orange-600); --cta-soft:var(--orange-500); --cta-rgb:204,113,0;
  --accent:var(--blue-400); --accent-soft:var(--blue-300); --accent-rgb:44,92,136;
  --accent-secondary:var(--blue-400); --accent-secondary-soft:var(--blue-300);
  --accent-secondary-rgb:44,92,136; --glow:rgba(44,92,136,.16); --on-cta:#fff; --on-accent:#FFFFFF;
}


/* =========================================================
   P14 Hub — Base
   Reset léger + typographie fondamentale
   ========================================================= */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}

/* Masque visuellement un élément tout en le laissant lisible par les lecteurs d'écran.
   Utilisé notamment par le compteur animé des stats NK (hero) pour fournir la valeur
   finale accessible sans doublonner la valeur visuelle. */
.sr-only{
  position:absolute!important;
  width:1px!important;height:1px!important;
  padding:0!important;margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;
  white-space:nowrap!important;
  border:0!important;
}

body{
  margin:0;
  font-family:var(--font-body);
  font-size:var(--text-base);
  line-height:1.68;
  color:var(--text);
  background-color:var(--bg-deep);
  background-image:
    radial-gradient(120% 65% at 50% -8%, rgba(44,92,136,.26), transparent 55%);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
/* ---- Mode clair : fond doux, lumineux, non délavé ---- */
:root.light body{
  background-color:var(--bg-deep);
  background-image:
    radial-gradient(115% 60% at 50% -10%, rgba(44,92,136,.07), transparent 58%),
    radial-gradient(90% 70% at 100% 0%, rgba(72,120,162,.10), transparent 60%),
    linear-gradient(180deg,#F3F8FC 0%,#E9F1F8 100%);
}
/* ---- Voile global (halo diagonal statique) ----
   Sheen très discret en overlay — SANS grain : le bruit ne vit que dans
   les sections sombres (alternance avec bruit + halo / sans bruit).
   Statique (pas d'animation) ; absent à l'impression. */
body::after{
  /* z-index 1 : au-dessus des fonds/contenus, mais SOUS la nav (40) et les
     modales — le grain ne voile ni les liens, ni les CTA, ni le focus. */
  content:"";position:fixed;inset:-60%;z-index:1;pointer-events:none;
  mix-blend-mode:overlay;opacity:.2;
  /* Voile dégradé diagonal TRÈS discret (halo global) — SANS grain :
     le bruit vit uniquement dans les sections sombres (alternance
     avec bruit + halo / sans bruit demandée par le client). */
  background-image:
    linear-gradient(118deg, rgba(255,255,255,.12) 0%, rgba(255,255,255,0) 42%, rgba(0,0,0,.10) 100%);
}
:root.light body::after{opacity:.15;}
@media (prefers-reduced-motion:reduce){body::after{animation:none;opacity:.1;}}
@media print{body::after{display:none;}}

/* Titres : casse naturelle du contenu (première lettre en majuscule) —
   ne JAMAIS forcer text-transform:lowercase.
   h2 = display italique ; h1/h3 = Nunito ; couleurs neutres
   (nuance blanc/bleu — l'accent du hub reste réservé aux CTA). */
h2{
  font-family:var(--font-serif);
  font-style:italic;
  font-weight:400;
  line-height:1.04;
  letter-spacing:0;
  color:var(--heading);
  margin:0;
}
h1,h3,h4,h5{
  font-family:var(--font-display);
  font-weight:600;
  line-height:1.08;
  letter-spacing:var(--tracking-tight);
  margin:0;
}
h1{font-size:var(--text-5xl);font-weight:800;letter-spacing:-.022em;}
h2{font-size:var(--text-3xl);}
h3{font-size:var(--text-2xl);line-height:1.16;letter-spacing:-.012em;color:var(--heading);}
h4{font-size:var(--text-xl);}

p{margin:0;text-wrap:pretty;}

a{color:inherit;text-decoration:none;}

img{display:block;max-width:100%;}

/* ---- Étiquette / kicker mono ---- */
.eyebrow{
  font-family:var(--font-mono);
  font-size:var(--text-xs);
  font-weight:700;
  letter-spacing:var(--tracking-wide);
  text-transform:uppercase;
  color:var(--eyebrow);
}

.mono{font-family:var(--font-mono);}
.muted{color:var(--text-muted);}
.secondary{color:var(--text-secondary);}

/* ---- Filet de sécurité clavier ----
   Beaucoup d'éléments ont déjà leur propre style de focus. Celui-ci ne sert
   qu'aux autres : sans lui, ils retombent sur le contour par défaut du
   navigateur, quasi invisible sur nos fonds sombres. Écrit avec :where() —
   spécificité nulle — pour que la moindre règle existante le remplace. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible{
  outline:2px solid rgb(var(--accent-rgb));
  outline-offset:3px;
}

/* ---- Utilitaires de mise en page ---- */
.container{max-width:1200px;margin-inline:auto;padding-inline:var(--space-6);}
.stack{display:flex;flex-direction:column;}
.row{display:flex;align-items:center;}
.gap-2{gap:var(--space-2);}
.gap-4{gap:var(--space-4);}
.gap-6{gap:var(--space-6);}
.wrap{flex-wrap:wrap;}

::selection{background:var(--accent);color:var(--on-accent);}

/* ---- Scrollbar discrète ---- */
*{scrollbar-width:thin;scrollbar-color:var(--blue-500) transparent;}
*::-webkit-scrollbar{width:10px;height:10px;}
*::-webkit-scrollbar-thumb{background:var(--blue-500);border-radius:99px;border:3px solid var(--bg-deep);}

/* =========================================================
   P14 Hub — Effects
   Glassmorphisme · encart notch · curseur révélateur ·
   gradients · grain vidéo · splash · marquee
   ========================================================= */

/* ---- 1. Surfaces éditoriales ---- */
.glass-vignette{
  background:var(--surface);
  border:1px solid var(--border);
  box-shadow:var(--shadow-card);
  border-radius:var(--radius-ui);
}
.section-light .glass-vignette{
  background:rgba(21,49,74,.05);
  border:1px solid rgba(21,49,74,.12);
  box-shadow:inset 0 1px 0 rgba(var(--overlay-rgb),.5), 0 12px 32px rgba(21,49,74,.08);
}

/* ---- 2. Encart de section, sans géométrie scriptée ---- */
.section-panel{
  position:relative;
  border-radius:var(--radius-lg);
  background:var(--surface);
  border:1px solid var(--border);
  box-shadow:var(--shadow-card);
  clip-path:none!important;
}
.section-panel[data-notch-ready]{border-radius:var(--radius-lg);border:1px solid var(--border);}
.section-panel + .section-panel{margin-top:var(--space-4);}

/* ---- 3. Curseur révélateur / focus ---- */
.reveal-stage{position:relative;overflow:hidden;cursor:none;}
.reveal-cursor{
  position:absolute;top:0;left:0;
  width:260px;height:260px;border-radius:50%;
  border:1px solid rgba(72,120,162,.75);            /* blue-300 */
  mix-blend-mode:screen;
  transform:translate(-50%,-50%);
  pointer-events:none;opacity:0;
  transition:opacity .3s;
}
.reveal-cursor::before{
  content:"";position:absolute;inset:10px;
  border:1px solid rgba(72,120,162,.30);border-radius:50%;
}
.reveal-stage:hover .reveal-cursor{opacity:1;}

/* curseur global au survol des stats */
.stats-reveal-cursor{
  position:absolute;width:200px;height:200px;border-radius:50%;
  border:1px solid rgba(72,120,162,.65);
  background:radial-gradient(circle, rgba(72,120,162,.12) 0%, transparent 70%);
  transform:translate(-50%,-50%);pointer-events:none;
}

/* ---- 4. Gradients (titres / hero) ---- */
.grad-text{
  /* Les titres restent dans les nuances du corps ; les primaires sont
     réservées aux CTA et les secondaires aux accents décoratifs. */
  background:var(--grad-title, var(--grad-heading));
  -webkit-background-clip:text;background-clip:text;
  color:transparent;
}
.hero-gradient{background:var(--grad-hero-side);}
.cta-radial::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(ellipse at 20% 50%, rgba(44,92,136,.22), transparent 55%),
    radial-gradient(ellipse at 80% 50%, rgba(72,120,162,.18), transparent 55%),
    radial-gradient(ellipse at 50% 120%, rgba(122,160,190,.15), transparent 55%);
}

/* ---- 5. Grain vidéo + vignette ---- */
.hero-grain{
  position:absolute;inset:0;pointer-events:none;
  mix-blend-mode:overlay;opacity:.4;
}
.hero-vignette{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse at center, transparent 25%, rgba(21,49,74,.75) 100%);
}

/* ---- 7. Splash loader — compteur + rideau immersif ---- */
.splash{
  position:fixed;inset:0;z-index:300;
  display:grid;place-items:center;visibility:visible;
}
.splash.hide{visibility:hidden;pointer-events:none;}
/* Rideau : 4 panneaux grainés qui montent en cascade */
.splash-panels{position:absolute;inset:0;display:flex;}
.splash-panels i{
  flex:1;display:block;
  background-image:linear-gradient(180deg, rgba(11,30,46,.62) 0%, rgba(8,20,32,.93) 100%),
    var(--bg-noise),
    linear-gradient(180deg,var(--blue-800) 0%,var(--blue-950) 100%);
  transform:translateY(0);
  transition:transform .72s cubic-bezier(.76,0,.24,1);
}
.splash-panels i:nth-child(2){transition-delay:.07s;}
.splash-panels i:nth-child(3){transition-delay:.14s;}
.splash-panels i:nth-child(4){transition-delay:.21s;}
.splash.done .splash-panels i{transform:translateY(-101%);}
.splash-inner{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:0;
  transition:opacity .4s var(--ease-out),transform .4s var(--ease-out),filter .4s var(--ease-out);}
.splash.done .splash-inner{opacity:0;transform:translateY(-18px) scale(.98);filter:blur(6px);}
.splash-logo{display:flex;flex-direction:column;align-items:center;gap:14px;}
.splash-mark{width:clamp(76px,11vw,104px);height:auto;display:block;
  filter:drop-shadow(0 18px 40px rgba(0,0,0,.45));}
.splash-name{font:500 9.5px/1 var(--font-mono);letter-spacing:.26em;text-transform:uppercase;color:rgba(255,255,255,.38);}
.splash-bar{position:relative;width:52px;height:1px;margin-top:22px;
  background:rgba(255,255,255,.10);overflow:hidden;}
.splash-bar i{position:absolute;inset:0 auto 0 0;display:block;height:100%;width:0;
  background:rgba(255,255,255,.55);}
/* Compteur cinéma — centré, sous le logo (gros chiffres tabulaires) */
.splash-pct{
  display:flex;align-items:baseline;gap:2px;margin-top:30px;
  font-family:var(--font-display);font-weight:800;letter-spacing:-.03em;line-height:1;
  font-size:clamp(2.4rem,6vw,3.6rem);font-variant-numeric:tabular-nums;color:#fff;
  transition:opacity .4s var(--ease-out),transform .4s var(--ease-out);
}
.splash-pct .pct-sign{font-size:.35em;font-weight:700;color:rgba(255,255,255,.45);}
.splash.done .splash-pct{opacity:0;transform:translateY(12px);}

/* ---- Défilement marques (marquee infini) ---- */
.marquee-wrap{
  position:relative;overflow:hidden;height:48px;
  -webkit-mask-image:linear-gradient(90deg,
    transparent 0%, rgba(0,0,0,.1) 5%, rgba(0,0,0,.6) 15%,
    #000 28%, #000 72%, rgba(0,0,0,.6) 85%, rgba(0,0,0,.1) 95%, transparent 100%);
  mask-image:linear-gradient(90deg,
    transparent 0%, rgba(0,0,0,.1) 5%, rgba(0,0,0,.6) 15%,
    #000 28%, #000 72%, rgba(0,0,0,.6) 85%, rgba(0,0,0,.1) 95%, transparent 100%);
}
.marquee-track{
  display:flex;gap:56px;align-items:center;white-space:nowrap;
  width:max-content;
  animation:marquee 50s linear infinite;
  will-change:transform;
}
.marquee-track.fast{animation-duration:28s;}
@keyframes marquee{to{transform:translateX(-50%);}}
.marquee-wrap:hover .marquee-track{animation-play-state:paused;}

@media (prefers-reduced-motion:reduce){
  .marquee-track{animation:none;}
  .splash-inner,.splash-pct,.splash-panels i{transition:none;}
}

/* ---- Apparition sobre des titres ---- */
@media (prefers-reduced-motion:no-preference){
  [data-blur-reveal]{
    opacity:0;transform:translateY(10px);
    transition:opacity .55s var(--ease-out),transform .55s var(--ease-out);
    will-change:opacity,transform;
  }
  [data-blur-reveal].is-in{opacity:1;transform:none;}
}

/* =========================================================
   AURORA HERO · GRADIENT TEXT   (passe UI modernité)
   ========================================================= */

/* Fond hero : présence colorée, sans animation aurora permanente */
@keyframes auroraDrift {
  0%,100% { transform:translate(0%,0%) scale(1);    opacity:.55; }
  33%      { transform:translate(6%,-4%) scale(1.06); opacity:.70; }
  66%      { transform:translate(-5%, 5%) scale(1.04); opacity:.60; }
}
.hero-aurora {
  position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden;
}
.hero-aurora::before,
.hero-aurora::after {
  content:'';
  position:absolute;
  border-radius:50%;
  filter:blur(90px);
  opacity:.34;
}
.hero-aurora::before {
  width:70%;height:80%;top:-15%;left:-10%;
  background:radial-gradient(ellipse at center, rgba(var(--accent-rgb),.28) 0%, transparent 65%);
}
.hero-aurora::after {
  width:55%;height:65%;bottom:-10%;right:-5%;
  background:radial-gradient(ellipse at center, rgba(var(--accent-rgb),.18) 0%, transparent 60%);
}
@media (prefers-reduced-motion:reduce) {
  .hero-aurora::before,.hero-aurora::after { animation:none; }
}

/* Titres en encre pleine : plus éditoriaux et toujours lisibles */
.page-hero h1 {
  background:none;
  color:var(--text);
  -webkit-text-fill-color:currentColor;
}

/* Card hover enrichi – passe par-dessus la règle de base */
.card:hover {
  transform:translateY(-2px);
  box-shadow:
    var(--shadow-card),
    0 18px 38px rgba(8,20,32,.22);
}

/* ===== LIGHT MODE — aurora + glass ===== */
:root.light .hero-aurora::before {
  background:radial-gradient(ellipse at center, rgba(var(--accent-rgb),.18) 0%, transparent 65%);
}
:root.light .hero-aurora::after {
  background:radial-gradient(ellipse at center, rgba(var(--accent-rgb),.12) 0%, transparent 60%);
}
:root.light .glass-vignette {
  background:rgba(14,36,56,.04);
  border-color:rgba(14,36,56,.10);
  box-shadow:0 8px 24px rgba(14,36,56,.08), inset 0 1px 0 rgba(255,255,255,.80);
}

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

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

/* ---- Boutons ---- */
.btn{
  --accent:var(--cta);--accent-soft:var(--cta-soft);--accent-rgb:var(--cta-rgb);--on-accent:var(--on-cta);
  display:inline-flex;align-items:center;gap:var(--space-2);
  font-family:var(--font-ui);font-size:.875rem;font-weight:700;
  letter-spacing:.015em;
  padding:14px 22px;border-radius:var(--radius-ui);
  border:0;color:var(--text);cursor:pointer;
  background:var(--surface-raised);
  box-shadow:inset 0 0 0 1px var(--border-strong),0 5px 14px rgba(8,20,32,.18);
  transition:var(--dur) var(--ease-out);
}
.btn:hover{transform:translateY(-1px);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.46),0 8px 18px rgba(8,20,32,.22);}
.btn-primary{
  background:var(--accent);color:var(--on-accent);
  box-shadow:0 7px 18px rgba(8,20,32,.22);
}
.btn-primary:hover{filter:brightness(1.05);
  box-shadow:
    inset 0 1px 0 rgba(var(--overlay-rgb),.35),
    0 8px 24px rgba(8,20,32,.4),
    0 0 38px rgba(var(--accent-rgb),.55);}
.btn-ghost{background:transparent;box-shadow:none;color:var(--text-secondary);}
.btn-ghost:hover{color:var(--text);background:rgba(123,160,190,.06);box-shadow:none;}

/* ---- Badge / chip (capsule en verre) ---- */
.badge{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-ui);font-size:var(--text-xs);font-weight:600;
  letter-spacing:.025em;
  padding:6px 12px;border-radius:var(--radius-ui);border:0;
  color:var(--text-secondary);
  background:rgba(var(--tint),.045);
  box-shadow:inset 0 0 0 1px var(--border);
}
.badge .dot{width:6px;height:6px;border-radius:50%;background:rgba(var(--tint),.5);box-shadow:none;}

/* ---- Card de base (rendu identique aux cartes KPI) ---- */
.card{
  position:relative;overflow:hidden;border:1px solid var(--border);
  border-radius:var(--radius-ui);
  background:var(--surface);
  padding:var(--space-6);
  box-shadow:var(--shadow-card);
  transition:var(--dur) var(--ease-out);
}
.card:hover{transform:translateY(-3px);
  border-color:rgba(var(--accent-rgb),.38);
  box-shadow:var(--shadow-card),0 18px 34px rgba(8,20,32,.20);}
.card-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;}
.card-body{color:var(--text-secondary);font-size:var(--text-sm);margin-top:var(--space-3);}

/* ---- Stat (count-up) ---- */
.stat{display:flex;flex-direction:column;gap:6px;}
.stat-num{font-family:var(--font-mono);font-weight:700;font-size:var(--text-4xl);color:var(--heading);line-height:1;}
.stat-num .unit{color:var(--heading);}
.stat-label{font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);}
/* Les cartes stat reposent sur une surface plus claire que le fond : le texte
   estompé n'y atteint pas 4.5:1, et l'y forcer reviendrait à le rendre aussi
   dense que le texte principal. Leur légende porte le sens du chiffre — elle
   passe donc en texte secondaire, plein. */
.stat .muted{color:var(--text-secondary);}

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

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

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

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

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

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

/* ---- Bouton WhatsApp (vert de marque, identique en clair/sombre) ---- */
.btn-wa,
:root.light .btn-wa{
  background:linear-gradient(165deg, #2bd96f, #1eb257);
  color:#fff;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.30),
    0 6px 20px rgba(8,20,32,.30),
    0 0 26px rgba(37,211,102,.30);
}
.btn-wa:hover,
:root.light .btn-wa:hover{filter:brightness(1.05);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.35),
    0 8px 24px rgba(8,20,32,.35),
    0 0 34px rgba(37,211,102,.48);}
.btn-wa .btn-wa-ic{display:inline-flex;align-items:center;margin-inline-end:-2px;}
.btn-wa .btn-wa-ic svg{width:1.2em;height:1.2em;}

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

:root.light .card,
:root.light .kpi-card{
  background:
    radial-gradient(55% 40% at 50% 116%, rgba(var(--accent-rgb),.12), transparent 62%),
    linear-gradient(180deg, #ffffff 0%, var(--surface) 82%);
  box-shadow:var(--shadow-card-light), 0 0 40px rgba(var(--accent-rgb),.06);
  /* Une carte blanche posée sur une section SOMBRE (mode clair) hérite
     sinon des tokens texte CLAIRS de la section → titres invisibles.
     On rétablit localement le contexte texte foncé du thème clair. */
  --text:#0E2438; --text-primary:#0E2438;
  --text-secondary:#39556F; --text-muted:rgba(14,36,56,.56);
  --heading:#0E2438; --heading-soft:#2C5C88;
  --grad-heading:linear-gradient(115deg,#0E2438 8%,#2C5C88 92%);
  --eyebrow:#39556F; --tint:21,49,74;
  color:var(--text);
}
:root.light .card:hover{
  box-shadow:var(--shadow-card-light),
    inset 0 0 0 1px rgba(var(--accent-rgb),.24),
    0 18px 40px rgba(21,49,74,.12), 0 0 50px rgba(var(--accent-rgb),.10);
}

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

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

/* Cards — backdrop blur (verre dépoli) avec fallback */
@supports (backdrop-filter: blur(1px)) {
  .card{backdrop-filter:none;-webkit-backdrop-filter:none;}
}

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

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

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

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

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

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

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

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

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

/* ---- CTA WhatsApp : variantes de placement (identité verte partagée) ---- */
/* Header compact des LP : mêmes dimensions que .nav-cta, couleurs .btn-wa. */
.btn-wa.lp-bare-cta{
  height:38px;padding:0 14px;gap:8px;
  font-family:var(--font-ui);font-size:var(--nav-text);font-weight:600;
  letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;
}
/* Footer : bouton compact dans la colonne Contact. Les règles ci-dessous
   neutralisent `.footer-col a` (couleur/display/hover) pour préserver
   l'identité verte du bouton. */
.footer-wa{margin:var(--space-3) 0;}
.footer-wa .btn-wa{
  display:inline-flex;font-size:var(--text-sm);padding:.55em 1.1em;
  color:#fff;margin:0;
}
.footer-wa .btn-wa:hover{color:#fff;}

/* ---- CTA secondaires : contour accent de la hero ---- */
.btn-secondary,
.btn-rdv{
  background:transparent;
  color:var(--text);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.55);
}
.btn-secondary:hover,
.btn-rdv:hover{
  background:rgba(var(--accent-rgb),.10);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.85),0 0 22px rgba(var(--accent-rgb),.20);
}
/* Mode clair : :root.light .btn écrase les variantes nues — on ré-affirme. */
:root.light .btn-secondary,
:root.light .btn-rdv{
  background:transparent;color:var(--text);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.55);
}
:root.light .btn-secondary:hover,
:root.light .btn-rdv:hover{
  background:rgba(var(--accent-rgb),.08);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.85),0 0 22px rgba(var(--accent-rgb),.16);
}
.btn-rdv .btn-rdv-ic{display:inline-flex;align-items:center;margin-inline-end:-2px;}
.btn-rdv .btn-rdv-ic svg{width:1.1em;height:1.1em;}

/* Le CTA nav Numériklub est désormais un <button> (ouvre la modale) :
   neutralise les styles UA pour hériter du visuel .nav-cta existant. */
button.nav-cta{border:0;appearance:none;-webkit-appearance:none;}

/* Rangée RDV sous la grille de formats (modale de réservation). */
.resa-rdv-row{
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  flex-wrap:wrap;margin-top:var(--space-5);padding-top:var(--space-4);
  border-top:1px solid var(--border);
}
.resa-rdv-row .resa-rdv-txt{color:var(--text-secondary);font-size:var(--text-sm);max-width:52ch;}
.resa-rdv-row .btn-rdv{flex-shrink:0;}

.fc-budget-dock{
  position:fixed;right:1.5rem;bottom:1.5rem;z-index:80;width:min(320px,calc(100vw - 2rem));
  padding:1.1rem 1.15rem 1.15rem;border-left:4px solid var(--accent);
  background:var(--surface-raised,#fff);box-shadow:0 14px 42px rgba(8,20,32,.2);
  border-radius:var(--radius-ui,2px);display:grid;gap:.85rem;
}
.fc-budget-dock-copy{display:grid;gap:.2rem}.fc-budget-dock-copy strong{font-size:1rem;color:var(--heading)}
.fc-budget-dock-copy small{color:var(--text-secondary);font-size:.82rem}
.fc-budget-dock .btn{width:100%;justify-content:center;min-height:44px;height:44px}
.fc-budget-overlay{position:fixed;inset:0;z-index:150;display:grid;place-items:center;padding:1rem}
.fc-budget-overlay[hidden]{display:none}.fc-budget-backdrop{position:absolute;inset:0;background:rgba(8,20,32,.72)}
.fc-budget-dialog{position:relative;width:min(560px,100%);max-height:min(92vh,760px);overflow:auto;background:var(--surface,#fff);
  color:var(--text);box-shadow:0 24px 70px rgba(8,20,32,.38);border-radius:var(--radius-lg,2px)}
body.fc-budget-open{overflow:hidden}
.fc-budget-dialog-head{display:flex;justify-content:space-between;gap:1rem;padding:1.15rem 1.3rem .8rem;
  border-bottom:1px solid var(--border)}
.fc-budget-dialog-head strong{font-size:1.1rem;color:var(--heading)}.fc-budget-close{background:none;border:0;font-size:1.7rem;
  line-height:1;cursor:pointer;color:var(--text-secondary);padding:.1rem .35rem}.fc-budget-close:focus-visible,
.fc-budget-option:focus-visible,.fc-budget-back:focus-visible,.fc-budget-email-toggle:focus-visible,
.fc-budget-restart:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.fc-budget-progress{display:flex;align-items:center;gap:.35rem;margin-top:.75rem}
.fc-budget-progress span{width:.55rem;height:.55rem;border-radius:50%;background:var(--border-strong,var(--border))}
.fc-budget-progress span.is-done{background:var(--accent)}.fc-budget-progress small{margin-left:.3rem;color:var(--text-secondary);font-size:.75rem}
.fc-budget-widget{padding:1.25rem 1.3rem 1.35rem}.fc-budget-widget.is-inline{padding:0;max-width:720px;margin:auto}
.fc-budget-step{display:grid;gap:.7rem}.fc-budget-step h3{margin:.2rem 0 0;color:var(--heading);font-size:1.45rem}
.fc-budget-hint{margin:0 0 .35rem;color:var(--text-secondary);line-height:1.5;font-size:.9rem}
.fc-budget-back,.fc-budget-restart,.fc-budget-email-toggle{justify-self:start;border:0;background:none;padding:.1rem 0;
  color:var(--accent);font:inherit;cursor:pointer;text-decoration:underline}
.fc-budget-options{display:grid;gap:.6rem}.fc-budget-option{width:100%;text-align:left;display:grid;gap:.25rem;
  padding:.9rem 1rem;background:var(--surface,#fff);border:1px solid var(--border-strong,var(--border));
  border-radius:var(--radius-ui,2px);color:var(--text);font:inherit;cursor:pointer}
.fc-budget-option:hover,.fc-budget-option.is-selected{border-color:var(--accent);background:rgba(var(--accent-rgb),.07)}
.fc-budget-option span{font-weight:700}.fc-budget-option small{color:var(--text-secondary)}
.fc-budget-option em{font-style:normal;margin-left:.5rem;padding:.18rem .4rem;background:var(--accent);color:var(--on-accent);
  font-size:.68rem;border-radius:999px;white-space:nowrap}
.fc-budget-result{display:grid;gap:.55rem}.fc-budget-result-label,.fc-budget-result-title{margin:0}
.fc-budget-result-label{color:var(--accent);font-size:.74rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}
.fc-budget-result-title{font-weight:800;color:var(--heading);font-size:1.15rem}.fc-budget-total{font-size:clamp(2.1rem,7vw,3rem);line-height:1;color:var(--heading)}
.fc-budget-sub{margin:0;color:var(--text-secondary)}.fc-budget-funding{display:grid;gap:.3rem;margin-top:.6rem;padding:1rem;
  background:var(--surface-inset,rgba(8,20,32,.06));border-left:3px solid var(--accent)}
.fc-budget-funding strong{font-size:1.1rem;color:var(--heading)}.fc-budget-funding p{margin:0;color:var(--text-secondary);font-size:.86rem;line-height:1.45}
.fc-budget-detail{border-top:1px solid var(--border);margin-top:.5rem;padding-top:.8rem;display:grid;gap:.35rem}
.fc-budget-detail h4{margin:0 0 .15rem;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary)}
.fc-budget-detail div{display:flex;justify-content:space-between;gap:1rem;font-size:.9rem}.fc-budget-detail .is-total{border-top:1px solid var(--border);padding-top:.55rem;margin-top:.3rem;font-weight:800;color:var(--heading)}
.fc-budget-legal{margin:.6rem 0 0;color:var(--text-secondary);font-size:.75rem;line-height:1.5}
.fc-budget-actions{display:grid;gap:.6rem;margin-top:.8rem}.fc-budget-actions .btn{text-align:center;justify-content:center}
.fc-budget-email{display:grid;gap:.45rem;padding:.75rem;background:rgba(var(--accent-rgb),.06);border:1px solid var(--border)}
.fc-budget-email[hidden],.fc-budget-email-sent[hidden]{display:none}.fc-budget-email label{font-size:.82rem;font-weight:700}
.fc-budget-email input[type=email]{width:100%;padding:.65rem;border:1px solid var(--border-strong,var(--border));background:var(--surface,#fff);color:var(--text);font:inherit}
.fc-budget-consent{display:flex;gap:.45rem;align-items:flex-start;font-weight:400!important}
.fc-budget-email-sent{margin:0;color:var(--heading);font-weight:700}
.fc-budget-email-error{margin:0;color:#b42318;font-size:.82rem;line-height:1.45}
.fc-refonte-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;max-width:980px;margin:auto}
.fc-refonte-card{display:grid;gap:.7rem;padding:1.4rem;text-decoration:none;color:var(--text);background:var(--surface-raised,#fff);
  border:1px solid var(--border);border-top:3px solid var(--accent);min-height:170px}
.fc-refonte-card:hover{border-color:var(--accent);transform:translateY(-2px)}.fc-refonte-card h2{margin:0;color:var(--heading);font-size:1.3rem}
.fc-refonte-card p{margin:0;color:var(--text-secondary);line-height:1.5}.fc-refonte-card span{color:var(--accent);font-size:1.3rem}
.fc-refonte-copy .lead{max-width:70ch;line-height:1.7}.fc-catalog-filters{display:grid;gap:1rem;margin:0 0 2rem;padding:1rem;
  border:1px solid var(--border);background:var(--surface-raised,#fff)}.fc-catalog-filters>div{display:grid;gap:.55rem}
.fc-catalog-filter-row{display:flex;flex-wrap:wrap;gap:.45rem}.fc-catalog-filter{border:1px solid var(--border-strong,var(--border));
  background:transparent;color:var(--text);padding:.5rem .7rem;cursor:pointer;font:inherit;border-radius:var(--radius-ui,2px)}
.fc-catalog-filter.is-active,.fc-catalog-filter:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.fc-module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.fc-module-card{position:relative;display:grid;gap:.55rem;min-width:0}.fc-module-card[hidden]{display:none}
.fc-module-index{font-size:.72rem;color:var(--accent);font-weight:800;letter-spacing:.1em}.fc-module-path{margin:0;color:var(--text-secondary);font-size:.8rem}
.fc-module-card h2{margin:0;font-size:1.08rem;color:var(--heading)}.fc-module-card p:not(.fc-module-path){margin:0;color:var(--text-secondary);line-height:1.45;font-size:.9rem}
.fc-module-card footer{display:flex;justify-content:space-between;gap:.5rem;align-items:center;margin-top:auto;padding-top:.7rem;border-top:1px solid var(--border);font-size:.8rem}
.fc-module-card footer a{color:var(--accent);font-weight:700;text-decoration:none}.fc-catalog-empty{text-align:center;color:var(--text-secondary)}
@media(max-width:900px){.fc-module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){
  .fc-budget-dock{right:0;left:0;bottom:0;width:auto;border-radius:0;border-left:0;border-top:3px solid var(--accent);
    display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem 1rem}
  .fc-budget-dock-copy small{display:none}.fc-budget-dock .btn{width:auto;min-height:44px;height:44px;padding:.65rem .8rem;font-size:.85rem}
  .fc-budget-overlay{padding:0;align-items:end}.fc-budget-dialog{max-height:92vh;border-radius:var(--radius-lg,2px) var(--radius-lg,2px) 0 0}
  .fc-budget-widget{padding:1rem}.fc-refonte-card-grid,.fc-module-grid{grid-template-columns:1fr}
}

/* Formation Continue refonte — pages éditoriales et page pilier */
.fc-refonte-page .page-hero{margin-bottom:0}
.fc-home-start{background:var(--surface-inset,rgba(8,20,32,.04))}
.fc-home-intro{max-width:720px;margin:0 auto 2rem;text-align:center}
.fc-home-intro h2{margin:.45rem 0 .8rem}
.fc-home-intro .lead,.fc-rich-lead{max-width:70ch}
.fc-rich-section:nth-of-type(even){background:var(--surface-inset,rgba(8,20,32,.025))}
.fc-rich-section .section-head{margin-bottom:1.5rem}
.fc-rich-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}
.fc-rich-card{display:grid;gap:.55rem;min-width:0}
.fc-rich-card h3{margin:0;color:var(--heading);font-size:1.12rem}
.fc-rich-card p{margin:0;color:var(--text-secondary);line-height:1.55}
.fc-rich-meta{display:block;color:var(--accent);font-size:.73rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase}
.fc-rich-cta{display:flex;align-items:center;gap:1.25rem;flex-wrap:wrap}
.fc-rich-secondary{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);font-weight:700;text-decoration:none}
.fc-rich-secondary:hover{text-decoration:underline}
.fc-home-feature{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:2rem;align-items:center;max-width:900px;margin:auto;padding:2rem;background:var(--surface-raised,#fff);border-left:4px solid var(--accent)}
.fc-home-feature h3{margin:.5rem 0;font-size:clamp(1.4rem,3vw,2.2rem);color:var(--heading)}
.fc-home-feature p{max-width:65ch;line-height:1.65;color:var(--text-secondary)}
.fc-home-feature-number{font-size:clamp(4rem,12vw,7rem);font-weight:900;line-height:1;text-align:center;color:var(--accent)}
.fc-home-feature-number span{font-size:.3em;margin-left:.1em}
.fc-home-price-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;max-width:980px;margin:1.5rem auto}
.fc-home-price-grid .card{display:grid;gap:.4rem;text-align:center}
.fc-home-price-grid strong{font-size:1.45rem;color:var(--heading)}
.fc-home-price-grid span{color:var(--text-secondary);font-size:.88rem;line-height:1.4}
.fc-home-info{background:var(--surface-inset,rgba(8,20,32,.04))}
.fc-home-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;max-width:980px;margin:auto}
.fc-rich-table-wrap{overflow-x:auto;border:1px solid var(--border);background:var(--surface-raised,#fff)}
.fc-rich-table{width:100%;min-width:620px;border-collapse:collapse;text-align:left}
.fc-rich-table th,.fc-rich-table td{padding:.85rem 1rem;border-bottom:1px solid var(--border);vertical-align:top;line-height:1.45}
.fc-rich-table th{font-size:.75rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-secondary);background:var(--surface-inset,rgba(8,20,32,.04))}
.fc-rich-table td:first-child{font-weight:800;color:var(--accent);white-space:nowrap}
.fc-rich-table tr:last-child td{border-bottom:0}
.fc-rich-callout{max-width:850px;margin:auto;padding:1.4rem 1.5rem;background:rgba(var(--accent-rgb),.07);border-left:4px solid var(--accent)}
.fc-rich-callout strong{color:var(--heading)}
.fc-rich-callout p{margin:.45rem 0 0;color:var(--text-secondary);line-height:1.6}
.fc-rich-callout small{display:block;margin-top:.8rem;color:var(--text-secondary);line-height:1.5}
.fc-rich-callout .btn{margin-top:1rem}
.fc-rich-note{color:var(--text-secondary);line-height:1.6;font-size:.9rem}
.fc-rich-list{display:grid;gap:.8rem;max-width:850px;margin:0 auto;padding-left:1.2rem;color:var(--text-secondary);line-height:1.6}
.fc-rich-faq{max-width:850px;margin:auto;border-top:1px solid var(--border)}
.fc-rich-faq details{border-bottom:1px solid var(--border);padding:1rem 0}
.fc-rich-faq summary{cursor:pointer;font-weight:800;color:var(--heading);padding-right:1.5rem}
.fc-rich-faq p{max-width:70ch;margin:.8rem 0 0;color:var(--text-secondary);line-height:1.6}
.fc-regime-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;max-width:980px;margin:0 auto 1.25rem}
.fc-regime{display:grid;gap:.45rem}
.fc-regime h3{margin:.15rem 0;color:var(--heading)}
.fc-regime p{margin:0;color:var(--text-secondary);line-height:1.5}
.fc-calendar-empty{display:grid;gap:.55rem;max-width:720px;margin:auto;padding:2rem;text-align:center;background:var(--surface-raised,#fff);border:1px dashed var(--border-strong,var(--border))}
.fc-calendar-empty strong{font-size:1.15rem;color:var(--heading)}
.fc-calendar-empty p{margin:0;color:var(--text-secondary)}
.fc-calendar-empty .btn{justify-self:center;margin-top:.5rem}
.fc-alert-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:2rem;align-items:start;max-width:980px;margin:auto}
.fc-alert-form,.fc-enrol-form{display:grid;gap:.9rem}
.fc-alert-form .field,.fc-enrol-form .field{display:grid;gap:.35rem}
.fc-alert-form label,.fc-enrol-form label{font-weight:700;font-size:.88rem;color:var(--heading)}
.fc-alert-form input,.fc-alert-form textarea,.fc-enrol-form input,.fc-enrol-form textarea,.fc-enrol-form select{width:100%;min-width:0;padding:.7rem .75rem;border:1px solid var(--border-strong,var(--border));background:var(--surface,#fff);color:var(--text);font:inherit}
.fc-alert-form button,.fc-enrol-form button{justify-self:start}
.fc-enrol-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;max-width:1100px;margin:auto}
.fc-enrol-step{display:grid;gap:.7rem;padding:1rem;border-top:3px solid var(--accent);background:var(--surface-raised,#fff)}
.fc-enrol-step>span{color:var(--accent);font-size:.75rem;font-weight:900;letter-spacing:.1em}
.fc-enrol-step h3{margin:0;color:var(--heading);font-size:1rem}
.fc-enrol-step p{margin:0;color:var(--text-secondary);line-height:1.45;font-size:.88rem}
.fc-enrol-step small{color:var(--accent);font-weight:800}
.fc-enrol-form-section{background:var(--surface-inset,rgba(8,20,32,.04))}
.fc-enrol-form-grid{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:2rem;align-items:start;max-width:1000px;margin:auto}
.fc-form-legal{margin:0;color:var(--text-secondary);font-size:.76rem;line-height:1.5}
@media(max-width:900px){
  .fc-rich-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fc-enrol-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .fc-alert-grid,.fc-enrol-form-grid{grid-template-columns:1fr}
}
@media(max-width:640px){
  .fc-rich-grid,.fc-home-price-grid,.fc-home-info-grid,.fc-regime-grid{grid-template-columns:1fr}
  .fc-home-feature{grid-template-columns:1fr;gap:1rem}
  .fc-home-feature-number{text-align:left;font-size:4rem}
  .fc-enrol-steps{grid-template-columns:1fr}
  .fc-rich-cta{align-items:flex-start;flex-direction:column;gap:.85rem}
  .fc-rich-table{min-width:540px}
}
/* =========================================================
   Parallel 14 — Site layout (nav, footer, pages)
   S'appuie sur le design system (tokens/base/effects/components)
   ========================================================= */

:root{--nav-h:84px;}
body.is-booting #site-nav,
body.is-booting #app,
body.is-booting #site-footer{visibility:hidden;}

/* ---------- 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:.75rem;
  /* Glass cohérent avec .glass-vignette (effects.css) + glow par univers (--glow) */
  /* Bande très transparente en haut de page pour laisser respirer le hero,
     densifiée dès qu'on défile (classe .is-scrolled posée par app.js) : sous
     la barre passe alors du contenu quelconque, il faut regagner du contraste.
     Le flou et la saturation renforcés tiennent la lisibilité dans les deux
     états. */
  -webkit-backdrop-filter:blur(18px) saturate(125%);
  backdrop-filter:blur(18px) saturate(125%);
  background:rgba(8,20,32,.72);
  transition:background .3s var(--ease-out), box-shadow .3s var(--ease-out);
  border-bottom:1px solid var(--border);
  box-shadow:0 8px 22px rgba(8,20,32,.18);
}
.nav-inner{
  position:relative;
  /* La navigation Academy comporte cinq rubriques : elle a besoin d'un
     bandeau un peu plus large que le conteneur éditorial pour que les onglets
     ne débordent jamais vers le sélecteur d'univers. */
  max-width:1400px;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-secondary-soft), var(--accent-secondary));
  box-shadow:0 2px 10px rgba(var(--accent-secondary-rgb),.18);
}
.brand small{display:block;font-family:var(--font-ui);font-weight:600;font-size:var(--text-2xs);
  letter-spacing:.06em;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{--nav-gap:18px;display:flex;align-items:center;justify-content:flex-end;gap:var(--nav-gap);flex:1;min-width:0;}
.nav-link{
  font-family:var(--font-ui);font-size:var(--nav-text);font-weight:600;letter-spacing:.015em;
  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-secondary-rgb),.14);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-secondary-rgb),.30);}
.nav-tools{display:flex;align-items:center;gap:8px;}
.nav-cta{
  --accent:var(--cta);--accent-soft:var(--cta-soft);--accent-rgb:var(--cta-rgb);--on-accent:var(--on-cta);
  display:inline-flex;align-items:center;justify-content:center;height:38px;
  font-family:var(--font-ui);font-size:var(--nav-text);font-weight:700;letter-spacing:.01em;
  padding:0 14px;border-radius:var(--radius-ui);white-space:nowrap;cursor:pointer;
  color:var(--on-cta);background:rgba(var(--cta-rgb),.92);
  box-shadow:inset 0 0 0 1px rgba(var(--cta-rgb),.5),0 4px 14px rgba(var(--cta-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(--cta-rgb));transform:translateY(-1px);
  box-shadow:inset 0 0 0 1px rgba(var(--cta-rgb),.6),0 6px 20px rgba(var(--cta-rgb),.38);}
.nav-wa{width:38px;height:38px!important;padding:0!important;gap:0;
  display:grid;place-items:center;
  font-size:var(--nav-text);font-weight:700;white-space:nowrap;}
.nav-wa .btn-wa-label{display:none;}
.nav-wa .btn-wa-ic{display:grid;place-items:center;margin:0;font-size:1rem;line-height:0;}
.nav-wa .btn-wa-ic svg{display:block;width:1.2rem;height:1.2rem;}
/* Hub : le CTA « Nous contacter » reprend EXACTEMENT le style secondaire
   (.btn) du hero, dans les deux thèmes — à garder en sync avec components.css.
   Les CTA d'action des univers restent pleins. */
.nav-cta-ghost{color:var(--text);background:var(--surface-raised);
  box-shadow:inset 0 0 0 1px var(--border-strong),0 5px 14px rgba(8,20,32,.18);}
.nav-cta-ghost:hover{background:var(--surface-raised);transform:translateY(-1px);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.46),0 8px 18px rgba(8,20,32,.22);}
:root.light .nav-cta-ghost{color:var(--text);
  background:linear-gradient(165deg, #ffffff, var(--surface));
  box-shadow:var(--shadow-card-light), inset 0 0 0 1px var(--border);}
:root.light .nav-cta-ghost:hover{background:linear-gradient(165deg, #ffffff, var(--surface));
  transform:translateY(-1px);
  box-shadow:var(--shadow-card-light),
    inset 0 0 0 1px rgba(var(--accent-rgb),.35),
    0 0 20px rgba(var(--accent-rgb),.14);}
.lang-toggle{display:inline-flex;align-items:center;height:38px;border-radius:var(--radius-ui);overflow:hidden;
  box-shadow:inset 0 0 0 1px var(--border-strong);}
.lang-toggle button{
  display:inline-flex;align-items:center;justify-content:center;gap:5px;height:100%;min-width:42px;
  font-family:var(--font-ui);font-size:var(--nav-text);font-weight:700;letter-spacing:.02em;
  padding:0 12px;border:0;cursor:pointer;background:transparent;color:var(--text-muted);transition:var(--dur);
}
.lang-flag{font-size:1rem;line-height:1;}
.lang-toggle button.active{background:linear-gradient(165deg,var(--accent-secondary-soft),var(--accent-secondary));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-secondary-rgb),.10);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-secondary-rgb),.5);}
.theme-toggle:active{transform:translateY(1px);}
.theme-toggle:focus-visible{outline:2px solid rgba(var(--accent-secondary-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;}

/* --- apports de la refonte --- */
/* Gros titres en dégradé jaune -> orange sur l'univers Numériklub.
   La classe .grad-text n'est posée que sur un fragment optionnel du hero, non
   utilisé ici : le dégradé est donc appliqué directement au h1 du hero et aux
   h2 de section, qui sont les « gros titres » visés. Le cyan reste l'accent de
   l'univers (boutons, badges, halos), seuls les titres changent. */
/* H1 de hero : Nunito (minuscules via base.css) en DÉGRADÉ NEUTRE
   blanc → bleu, commun à tous les univers — la couleur d'accent reste
   réservée aux CTA. Couleur pleine en repli si le clip est indisponible. */
.page-hero h1,.hero h1{ color:var(--heading); }
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .page-hero h1,.hero h1{
    background:var(--grad-heading);-webkit-background-clip:text;background-clip:text;
    color:transparent;
  }
}
@media (forced-colors:active){
  .page-hero h1,.hero h1{ background:none;color:CanvasText; }
}
@media print{
  .page-hero h1,.hero h1{ background:none;color:var(--heading); }
}

/* ---- Calculateur Formation Continue : encart d'appel + fenêtre ---- */
.fc-calc-launch{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:var(--space-5);padding:var(--space-6);border-radius:var(--radius-lg);
  background:linear-gradient(180deg, rgba(var(--accent-rgb),.10) 0%, var(--surface) 80%);
  box-shadow:inset 0 0 0 1px var(--border-strong);
}
.fc-calc-launch-txt{flex:1 1 320px;min-width:0;}
.fc-calc-launch-eyebrow{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.16em;
  text-transform:uppercase;color:var(--eyebrow);margin:0 0 6px;}
.fc-calc-launch-title{font-family:var(--font-display);font-weight:700;
  font-size:var(--text-2xl);margin:0 0 8px;color:var(--text);}
.fc-calc-launch-sub{margin:0;color:var(--text-secondary);font-size:var(--text-sm);max-width:62ch;}

.fc-calc-modal{position:fixed;inset:0;z-index:120;display:flex;align-items:center;
  justify-content:center;padding:var(--space-5);}
.fc-calc-modal[hidden]{display:none;}
body.fc-calc-open{overflow:hidden;}
.fc-calc-backdrop{position:absolute;inset:0;background:rgba(8,20,32,.74);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
.fc-calc-shell{position:relative;width:100%;max-width:1100px;max-height:90vh;
  display:flex;flex-direction:column;border-radius:var(--radius-lg);overflow:hidden;
  background:var(--bg);box-shadow:0 30px 80px rgba(8,20,32,.6), inset 0 0 0 1px var(--border-strong);}
.fc-calc-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  padding:14px 18px;border-bottom:1px solid var(--border);flex:0 0 auto;}
.fc-calc-head-title{font-family:var(--font-display);font-weight:600;color:var(--text);}
.fc-calc-close{width:34px;height:34px;border:0;border-radius:var(--radius-ui);cursor:pointer;
  background:rgba(var(--overlay-rgb),.06);color:var(--text);font-size:15px;
  box-shadow:inset 0 0 0 1px var(--border);}
.fc-calc-close:hover{background:rgba(var(--accent-rgb),.16);}
.fc-calc-body{overflow-y:auto;padding:var(--space-5);}
@media(max-width:640px){ .fc-calc-shell{max-height:94vh;} .fc-calc-body{padding:var(--space-4);} }

/* ---- Catalogue Formation Continue : filtre domaine × parcours ---- */
.fc-catalog-filters{
  display:grid;gap:var(--space-4);margin:0 0 var(--space-6);padding:var(--space-4);
  border:1px solid var(--border);background:var(--surface);box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.04);
}
.fc-catalog-filter-group{display:grid;gap:var(--space-2);}
.fc-catalog-filter-label{
  font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.12em;
  text-transform:uppercase;color:var(--eyebrow);
}
.fc-catalog-filter-row{display:flex;flex-wrap:wrap;gap:var(--space-2);}
.fc-catalog-filter{
  min-height:42px;padding:.5rem .85rem;border:1px solid var(--border);border-radius:var(--radius-pill,999px);
  background:var(--bg);color:var(--text);font:inherit;font-size:var(--text-xs);font-weight:600;
  cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;
}
.fc-catalog-filter:hover{border-color:var(--accent);}
.fc-catalog-filter.is-active{border-color:var(--accent);background:var(--accent);color:var(--on-accent);}
.fc-catalog-filter-hint{margin:0;color:var(--text-secondary);font-size:var(--text-xs);}
.fc-parc[hidden]{display:none;}
.fc-catalog-empty{margin:var(--space-6) 0;color:var(--text-secondary);text-align:center;}
.fc-parc-domains{display:flex;flex-wrap:wrap;gap:6px;margin:var(--space-3) 0 0;}
.fc-parc-domain{
  display:inline-flex;align-items:center;min-height:26px;padding:3px 8px;border:1px solid var(--border);
  border-radius:var(--radius-pill,999px);color:var(--text-secondary);font-size:var(--text-2xs);
}

/* Garde-fou de débordement — /numeriklub uniquement.
   Cette page déborde de ~159 px vers la droite alors qu'aucun élément ne
   dépasse le bord : la cause n'a pas pu être localisée par sondage du DOM.
   `clip` plutôt que `hidden` : hidden créerait un conteneur de défilement et
   casserait les `position:sticky` de la page, clip se contente de rogner.
   Correctif de symptôme, assumé comme tel — à retirer quand la cause sera
   identifiée. */
body[data-route="/numeriklub"] #app{ overflow-x:clip; }

/* ---- Recherche générale ---- */
.nav-search-btn{
  display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;
  border:0;border-radius:var(--radius-ui);cursor:pointer;
  background:rgba(var(--overlay-rgb),.05);color:var(--text-secondary);
  box-shadow:inset 0 0 0 1px var(--border-strong);transition:var(--dur) var(--ease-out);
}
.nav-search-btn:hover{background:rgba(123,160,190,.12);color:var(--text);}
.nav-search-btn svg{width:16px;height:16px;flex:0 0 auto;}
/* Placée dans .nav-inner (hors du menu repliable). Sur desktop .nav-collapse
   occupe l'espace restant (flex:1), donc un ordre supérieur suffit à renvoyer
   la recherche tout à droite. Sur mobile elle passe à gauche du burger. */
.nav-search-btn{order:5;}
.nav-collapse{order:4;}
@media(max-width:1200px){
  .nav-search-btn{order:0;margin-left:auto;margin-right:6px;}
  .nav-burger{margin-left:0;}
}
.nav-search-btn kbd{
  font-family:var(--font-ui);font-size:var(--text-2xs);font-weight:600;letter-spacing:.04em;
  padding:2px 5px;border-radius:4px;color:var(--text-muted);
  background:rgba(var(--overlay-rgb),.06);box-shadow:inset 0 0 0 1px var(--border);
}
@media (max-width:1200px){ .nav-search-btn kbd{display:none;} }

.search-overlay{position:fixed;inset:0;z-index:120;display:flex;justify-content:center;
  align-items:flex-start;padding:10vh var(--space-5) var(--space-5);}
.search-overlay[hidden]{display:none;}
body.search-open{overflow:hidden;}
.search-backdrop{position:absolute;inset:0;background:rgba(8,20,32,.72);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
.search-panel{
  position:relative;width:100%;max-width:640px;max-height:76vh;display:flex;flex-direction:column;
  border-radius:var(--radius-lg);overflow:hidden;background:var(--surface);
  box-shadow:0 30px 80px rgba(8,20,32,.6), inset 0 0 0 1px var(--border-strong);
}
.search-field{display:flex;align-items:center;gap:10px;padding:14px 16px;
  border-bottom:1px solid var(--border);}
.search-field svg{width:18px;height:18px;color:var(--text-muted);flex:0 0 auto;}
.search-field input{
  flex:1;min-width:0;border:0;background:transparent;outline:none;
  font-family:var(--font-body);font-size:var(--text-base);color:var(--text);
}
.search-field input::placeholder{color:var(--text-muted);}
.search-field input::-webkit-search-cancel-button{display:none;}
.search-close{
  border:0;border-radius:6px;cursor:pointer;padding:4px 8px;
  font-family:var(--font-ui);font-size:var(--text-2xs);font-weight:600;letter-spacing:.04em;
  color:var(--text-muted);background:rgba(var(--overlay-rgb),.06);
  box-shadow:inset 0 0 0 1px var(--border);
}
.search-close:hover{color:var(--text);}
.search-count{padding:8px 16px 0;font-family:var(--font-ui);font-size:var(--text-xs);
  letter-spacing:.04em;color:var(--text-muted);margin:0;}
.search-results{list-style:none;margin:0;padding:8px;overflow-y:auto;flex:1;}
.search-results li{
  display:grid;gap:2px;padding:10px 12px;border-radius:var(--radius-ui);cursor:pointer;
  transition:background var(--dur-fast);
}
.search-results li:hover,.search-results li.is-active{background:rgba(var(--accent-rgb),.14);}
.sr-universe{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.14em;
  text-transform:uppercase;color:var(--eyebrow);}
.sr-title{font-family:var(--font-display);font-weight:600;font-size:var(--text-base);color:var(--text);}
.sr-excerpt{font-size:var(--text-sm);color:var(--text-secondary);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.search-hint{margin:0;padding:10px 16px;border-top:1px solid var(--border);
  font-family:var(--font-ui);font-size:var(--text-2xs);letter-spacing:.03em;color:var(--text-muted);}
@media (max-width:600px){ .search-hint{display:none;} .search-overlay{padding-top:6vh;} }

.nav-burger{display:none;margin-left:auto;background:transparent;border:0;cursor:pointer;
  width:44px;height:44px;border-radius:var(--radius-ui);color:var(--text);
  box-shadow:inset 0 0 0 1px var(--border-strong);font-size:18px;}
.caret{font-size:var(--text-2xs);color:var(--text-muted);transition:transform .25s var(--ease-out);}

/* ---- Sélecteur d'univers (volet à gauche) ---- */
.nav-switcher{position:relative;}
/* Barre densifiée au défilement. Sur nappe claire, on bascule sur un voile
   blanc : un voile sombre sur fond clair produirait une bande grise sale. */
.nav.is-scrolled{
  background:linear-gradient(180deg, rgba(8,20,32,.60), rgba(8,20,32,.48));
  box-shadow:0 10px 30px rgba(8,20,32,.30);
}
/* Le mode clair de la barre est traité dans la section « mode clair » plus bas
   dans cette feuille, où vivent déjà ses règles — les dupliquer ici serait
   perdant par ordre de déclaration. */

/* Curseur natif : la feuille masquait le curseur système au profit du couple
   point + anneau, désormais retiré. Sans ce retrait, le pointeur disparaîtrait
   sur tout le site. */
html.has-cursor-fx, html.has-cursor-fx *{ cursor:auto; }

/* Pas de cadre autour du logo d'univers : le logo se suffit à lui-même.
   L'affordance de clic est portée par le survol et le caret. */
.universe-trigger{display:flex;align-items:center;gap:10px;min-width:0;max-width:100%;background:transparent;cursor:pointer;
  padding:6px 12px;border-radius:var(--radius-ui);border:0;color:var(--text);
  box-shadow:none;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.universe-brand-hub{height:30px;max-width:min(170px,36vw);}
.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:
    radial-gradient(95% 65% at 50% -5%, rgba(88,140,185,.22), transparent 72%),
    linear-gradient(180deg, rgba(11,30,46,.62) 0%, rgba(8,20,32,.93) 100%),
    var(--bg-noise),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%);
  -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);}
/* Ouverture pilotée uniquement par JS (.hover-open / .open). La règle :hover
   pure a été retirée : conjuguée au délai de fermeture, elle laissait deux
   panneaux visibles simultanément quand on traversait la barre de menu. */
.nav-switcher.hover-open .universe-panel,.nav-switcher.open .universe-panel{display:block;}
.universe-panel-label{font-family:var(--font-ui);font-size:var(--text-2xs);font-weight:700;letter-spacing:.055em;text-transform:uppercase;
  color:var(--text-muted);padding:6px 10px 8px;margin:0;}
.universe-row{display:flex;align-items:center;min-height:60px;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:var(--universe-logo-height,30px);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;}

/* ---- Sous-menus déroulants ---- */
.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;
  /* La texture de bruit (charte) est une couche de fond à part entière :
     sans elle, les sous-menus paraissent « plats » vs le reste du site. */
  background:
    radial-gradient(95% 65% at 50% -5%, rgba(88,140,185,.22), transparent 72%),
    linear-gradient(180deg, rgba(11,30,46,.62) 0%, rgba(8,20,32,.93) 100%),
    var(--bg-noise),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%);
  -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-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-ui);font-size:.82rem;font-weight:600;letter-spacing:.005em;color:var(--text-secondary);
  transition:background .2s,color .2s;}
.nav-dropdown-link:hover{background:rgba(var(--accent-rgb),.12);color:var(--text);}
.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);}

/* 1340px : depuis le retour aux sous-menus par rubrique, la barre
   FC/Academy (5 toggles nowrap + outils) et le lockup Hub n'ont plus assez
   d'espace ; le burger prend le relais avant tout chevauchement. */
@media(max-width:1340px){
  .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;}
}

/* ---------- 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-8) 0 var(--space-7);}
.page-hero-art{min-height:clamp(500px,64vh,720px);display:flex;align-items:center;}
/* Sur les heros d'accueil (ceux qui portent le défilement de logos), on remonte le bloc texte */
.page-hero-art:has(.hero-marquee){align-items:flex-start;}
.page-hero .hero-bg{position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(60% 90% at 82% 6%, rgba(var(--accent-secondary-rgb),.30), transparent 60%),
    radial-gradient(55% 80% at 8% 96%, rgba(var(--accent-secondary-rgb),.18), transparent 60%),
    var(--bg-deep);}
.page-hero-photo{
  isolation:isolate;
  display:flex;
  align-items:center;
  min-height:clamp(500px,64vh,760px);
  color:#fff;
}
.page-hero-photo .hero-bg{z-index:-3;}
.page-hero-photo::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:0;
  pointer-events:none;
  background:
    linear-gradient(90deg,rgba(3,10,18,.94) 0%,rgba(3,10,18,.86) 34%,rgba(3,10,18,.72) 62%,rgba(3,10,18,.38) 100%),
    linear-gradient(0deg,rgba(3,10,18,.56) 0%,transparent 48%,rgba(3,10,18,.18) 100%);
}
.page-hero-photo .hero-photo-media{
  position:absolute;
  z-index:-2;
  inset:0;
  display:block;
  overflow:hidden;
  pointer-events:none;
}
.page-hero-photo .hero-photo-img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}
/* Admission : zoom et décalage à droite pour exclure la personne masquée du bord droit. */
.page-hero-photo .hero-photo-img[src$="/academy-admission.webp"]{
  transform:translateX(8%) scale(1.35);
  transform-origin:center;
}
.page-hero-photo .hero-photo-img[src$="/academy-formateurs-session-img1299.webp"]{
  object-position:right center;
}
.page[data-page="/plan-acces"] .hero-photo-caption{
  position:absolute;
  z-index:2;
  right:clamp(16px,3vw,48px);
  bottom:16px;
  padding:5px 9px;
  border-radius:var(--radius-ui);
  background:rgba(3,10,18,.72);
  color:#fff;
  font-size:var(--text-xs);
  line-height:1.3;
}
/* Le portrait vertical du président garde le visage visible sur un hero large. */
.page[data-page="/a-propos/president-board"] .hero-photo-media{left:46%;}
.page[data-page="/a-propos/president-board"] .hero-photo-img{object-position:center 18%;}
.page[data-page="/partenariats/devenir-partenaire"] .hero-photo-img{object-position:center 20%;}
.page[data-page="/numeriklub/reservation"] .hero-photo-img{object-position:right center;}
/* Le format original des trophées reste presque entier dans la moitié droite. */
.page[data-page="/a-propos/labels-certifications"] .hero-photo-media{
  left:40%;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 20%);
  mask-image:linear-gradient(90deg,transparent,#000 20%);
}
@media(max-width:600px){
  .page[data-page="/a-propos/president-board"] .hero-photo-media{left:24%;}
  .page[data-page="/a-propos/labels-certifications"] .hero-photo-media{
    left:0;
    -webkit-mask-image:none;
    mask-image:none;
  }
}
/* Les cinq thématiques gardent leur grand pictogramme devant la photo. */
.page-hero-photo-theme > .hero-art{
  z-index:0;
  right:clamp(12px,5vw,80px);
  bottom:clamp(20px,5vh,64px);
  width:auto;
  max-width:42vw;
  height:clamp(260px,36vw,500px);
  object-fit:contain;
  opacity:1;
  filter:drop-shadow(0 12px 28px rgba(0,0,0,.7));
}
@media(max-width:760px){
  .page-hero-photo-theme > .hero-art{
    display:block;
    right:-8px;
    bottom:14px;
    max-width:48vw;
    height:clamp(160px,42vw,260px);
    opacity:.85;
  }
}
/* Portraits recadrés sur les visages plutôt que sur le centre géométrique. */
@media(min-width:601px){
  .page-hero-photo .hero-photo-img[src$="/academy-faq.webp"]{object-position:center 35%;}
  .page-hero-photo .hero-photo-img[src$="/academy-financement.webp"],
  .page-hero-photo .hero-photo-img[src$="/formation-continue-organiser-sa-formation-financement.webp"],
  .page-hero-photo .hero-photo-img[src$="/academy-dons-mecenat.webp"],
  .page-hero-photo .hero-photo-img[src$="/academy-numerique-creatif.webp"]{object-position:center 28%;}
  .page-hero-photo .hero-photo-img[src$="/academy-formateurs-groupe.webp"]{object-position:center top;}
  .page-hero-photo .hero-photo-img[src$="/academy-anciens-diplomes.webp"]{object-position:center 40%;}
}
.page-hero-photo > .container{
  position:relative;
  z-index:1;
  width:100%;
  padding-top:var(--space-8);
  padding-bottom:var(--space-8);
}
.page-hero-photo h1{
  color:#fff;
  background:none;
  -webkit-text-fill-color:#fff;
}
.page-hero-photo .eyebrow,
.page-hero-photo .lead,
.page-hero-photo .hero-title-secondary,
.page-hero-photo .hero-sub,
.page-hero-photo .hero-loc,
.page-hero-photo .hero-proof,
.page-hero-photo .hero-cta-note,
.page-hero-photo .hero-flag,
.page-hero-photo .hero-certs-label,
.page-hero-photo .hero-stat-label{
  color:#f5f7fa;
}
.page-hero-photo .hero-stat-value{color:#fff;}
@media(max-width:600px){
  .page-hero-photo::before{
    background:
      linear-gradient(90deg,rgba(3,10,18,.92),rgba(3,10,18,.82)),
      linear-gradient(0deg,rgba(3,10,18,.50),transparent 58%,rgba(3,10,18,.24));
  }
  .page-hero-photo .hero-photo-img{object-position:center;}
  .page[data-page="/numeriklub/faq"] .hero-photo-img{object-position:right center;}
  .page[data-page="/numeriklub/faq"] .page-hero-photo::before,
  .page[data-page="/numeriklub/reservation"] .page-hero-photo::before{
    background:linear-gradient(90deg,rgba(3,10,18,.82),rgba(3,10,18,.58));
  }
  .page[data-page="/plan-acces"] .page-hero-photo::before{
    background:linear-gradient(180deg,rgba(3,10,18,.48),rgba(3,10,18,.78) 38%,rgba(3,10,18,.78) 70%,rgba(3,10,18,.48));
  }
  .page[data-page="/plan-acces"] .hero-photo-caption{
    right:12px;
    bottom:10px;
    font-size:11px;
  }
}
/* Sur la page équipe, le portrait de groupe doit rester visible sur petit écran. */
@media(max-width:600px){
  .page[data-page="/a-propos/equipe"] .page-hero-photo{
    --team-photo-height:clamp(230px,68vw,290px);
    display:block;
    min-height:0;
    padding:var(--team-photo-height) 0 0;
  }
  .page[data-page="/a-propos/equipe"] .hero-photo-media{
    bottom:auto;
    height:var(--team-photo-height);
  }
  .page[data-page="/a-propos/equipe"] .page-hero-photo::before{
    background:linear-gradient(180deg,transparent 0%,rgba(3,10,18,.08) 28%,#081726 52%,#081726 100%);
  }
  .page[data-page="/a-propos/equipe"] .page-hero-photo > .container{
    padding-top:var(--space-6);
    padding-bottom:var(--space-8);
  }
}
.page-hero{
  --hero-h1:clamp(2.4rem,4.4vw,3.5rem);
  --hero-h1-internal:clamp(2.2rem,3.8vw,3.25rem);
}
.page-hero h1{max-width:18ch;}
/* Titre H1 uniforme sur les hero d'accueil (hub + 3 univers) */
.page-hero-home > .container > h1{font-size:var(--hero-h1);line-height:1.04;}
/* Passe d'uniformisation des pages internes : même échelle pour les héros
   génériques, sans écraser les compositions propres aux homes et au Hub. */
.page-hero:not(.page-hero-home):not(.page-hero-hub) > .container > h1{
  font-size:var(--hero-h1-internal);
  line-height:1.06;
}
.hero-sub{max-width:60ch;margin-top:var(--space-4);font-size:var(--text-lg);color:var(--text-secondary);}
.page-numeriklub > .page-hero .hero-sub-highlight{
  font-weight:900;
  letter-spacing:-.01em;
}
.page-numeriklub > .page-hero .hero-sub-highlight-1{color:var(--nk-cyan);}
.page-numeriklub > .page-hero .hero-sub-highlight-2{color:var(--nk-yellow);}
.page-numeriklub > .page-hero .hero-sub-highlight-3{color:var(--nk-orange-soft);}
.hero-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);max-width:620px;margin-top:var(--space-5);}
.hero-stat{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid rgba(220,231,239,.18);background:rgba(8,20,32,.22);}
.hero-stat-value{font-family:var(--font-mono);font-size:clamp(1rem,2.1vw,1.35rem);color:var(--heading);letter-spacing:-.03em;}
.hero-stat.bilingue .hero-stat-icon{
  display:inline-block;
  font-family:inherit;
  font-size:clamp(1.15rem,2.5vw,1.55rem);
  line-height:1;
  letter-spacing:.08em;
  white-space:nowrap;
}
.hero-stat.bilingue .hero-stat-icon-with-image{
  display:inline-flex;
  align-items:center;
  gap:.28em;
  letter-spacing:0;
}
.hero-stat-icon-with-image img{
  display:block;
  width:1.7em;
  height:1.35em;
  object-fit:contain;
  border-radius:.16em;
}
.hero-stat-label{font-size:var(--text-xs);color:var(--text-secondary);}
.page[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero .hero-stats,
.page[data-page="/lp/numeriklub/petites-vacances"] > .page-hero .hero-stats{
  grid-template-columns:repeat(4,minmax(0,1fr));
  max-width:760px;
}
@media(max-width:980px){
  .page[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero .hero-stats,
  .page[data-page="/lp/numeriklub/petites-vacances"] > .page-hero .hero-stats{
    grid-template-columns:repeat(2,minmax(0,1fr));
    max-width:620px;
  }
}
.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-5);}
.badge-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:var(--space-4);}

section.section{
  position:relative;isolation:isolate;
  padding:calc(var(--space-9) + 32px) 0 var(--space-9);
  border-top:0;background:var(--bg);
}
/* Fonds de section : nuances tonales en dégradé doux (jamais d'accent),
   pour une matière plus éditoriale que des aplats uniformes. */
/* Bruit FIN (SVG inline — réglages dans tokens.css) superposé en 1re couche :
   --bg-noise (blanc) sur fonds sombres, --bg-noise-onlight (noir) sur fonds clairs. */
/* Voile bleu marine en dégradé (charte : blue-900 → blue-950) AU-DESSUS du
   grain sur les sections sombres : fond nettement plus foncé ; la transparence
   du voile laisse le bruit filtré légèrement perceptible (choix utilisateur).
   Les halos radiaux restent au-dessus du voile pour conserver leur lueur. */
/* Couleur de texte évaluée PAR SECTION : indispensable pour que les tokens
   inversés des sections paires (thème sombre) recolorent aussi les textes
   sans classe (summary, .card-title…) — l'héritage depuis body figerait la
   couleur du thème global (blanc sur carte blanche = invisible). */
.page > section.section{color:var(--text);}
.page > section.section:nth-of-type(even){
  background-image:linear-gradient(180deg,var(--surface) 0%,var(--surface-raised) 100%);
}
.page > section.section:nth-of-type(odd){
  background-image:radial-gradient(95% 65% at 50% -5%, rgba(88,140,185,.22), transparent 72%),
    linear-gradient(180deg, rgba(11,30,46,.62) 0%, rgba(8,20,32,.93) 100%),
    var(--bg-noise),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%);
}
/* Mode clair : toutes les sections génériques redeviennent claires →
   nettes, sans grain ni halo (le bruit ne vit que sur fonds réellement
   sombres). */
:root.light .page > section.section:nth-of-type(even){
  background-image:linear-gradient(180deg,#FFFFFF 0%,#E9F1F7 100%);
}
:root.light .page > section.section:nth-of-type(odd){
  background-image:linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%);
}

/* Numériklub : le hero reste sombre, puis les sections alternent réellement
   clair/sombre (indépendamment du mode global choisi par l'utilisateur). */
.page-numeriklub > .page-hero,
.page-numeriklub-lp > .page-hero{
  --bg-deep:#081420;
  --bg:#0B1E2E;
  --surface:#0E2438;
  --surface-raised:#112B40;
  --elevation:#1E4467;
  --text:#DCE7EF;
  --text-secondary:#B3C8D8;
  --text-muted:rgba(179,200,216,.70);
  --heading:#F4F8FB;
  --heading-soft:#B3C8D8;
  --grad-heading:linear-gradient(115deg,#F4F8FB 8%,#B3C8D8 92%);
  --eyebrow:#B3C8D8;
  --tint:255,255,255;
  --border:rgba(123,160,190,.14);
  --border-strong:rgba(123,160,190,.28);
  color:var(--text);
  background:
    radial-gradient(60% 90% at 82% 6%, rgba(var(--accent-secondary-rgb),.30), transparent 60%),
    radial-gradient(55% 80% at 8% 96%, rgba(var(--accent-secondary-rgb),.18), transparent 60%),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%);
}
.page-numeriklub > .page-hero .hero-bg,
.page-numeriklub-lp > .page-hero .hero-bg{
  background:
    radial-gradient(60% 90% at 82% 6%, rgba(var(--accent-secondary-rgb),.30), transparent 60%),
    radial-gradient(55% 80% at 8% 96%, rgba(var(--accent-secondary-rgb),.18), transparent 60%),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%);
}
.page-numeriklub > section.section:nth-of-type(odd){
  --bg-deep:#E7EFF6;
  --bg:#EEF4F9;
  --surface:#FFFFFF;
  --surface-raised:#F7FBFE;
  --elevation:#FFFFFF;
  --text:#0E2438;
  --text-secondary:#39556F;
  --text-muted:rgba(14,36,56,.65);
  --heading:#0E2438;
  --heading-soft:#2C5C88;
  --grad-heading:linear-gradient(115deg,#0E2438 8%,#2C5C88 92%);
  --eyebrow:#39556F;
  --tint:21,49,74;
  --border:rgba(21,49,74,.12);
  --border-strong:rgba(21,49,74,.20);
  --shadow-card:0 10px 24px rgba(21,49,74,.08);
  background-image:linear-gradient(180deg,#FFFFFF 0%,#E7EFF6 100%) !important;
  color:var(--text);
}
.page-numeriklub > section.section:nth-of-type(even){
  --bg-deep:#081420;
  --bg:#0B1E2E;
  --surface:#0E2438;
  --surface-raised:#112B40;
  --elevation:#1E4467;
  --text:#DCE7EF;
  --text-secondary:#B3C8D8;
  --text-muted:rgba(179,200,216,.70);
  --heading:#F4F8FB;
  --heading-soft:#B3C8D8;
  --grad-heading:linear-gradient(115deg,#F4F8FB 8%,#B3C8D8 92%);
  --eyebrow:#B3C8D8;
  --tint:255,255,255;
  --border:rgba(123,160,190,.14);
  --border-strong:rgba(123,160,190,.28);
  background-image:
    radial-gradient(95% 65% at 50% -5%, rgba(88,140,185,.22), transparent 72%),
    linear-gradient(180deg,rgba(11,30,46,.62) 0%,rgba(8,20,32,.93) 100%),
    var(--bg-noise),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%) !important;
  color:var(--text);
}

/* Landing Numériklub : trois paliers de fond, indépendants de la parité des
   sections. La séquence est pilotée par les IDs éditoriaux afin que l'ajout
   d'un bloc (comme les témoignages vidéo) ne recrée pas une alternance brutale. */
.nk-cse-breadcrumb{
  display:flex;align-items:center;gap:var(--space-3);
  padding-block:var(--space-4);
  color:var(--text-secondary);font-size:var(--text-sm);
}
.nk-cse-breadcrumb a{color:inherit;text-decoration:underline;text-underline-offset:3px;}
.nk-cse-breadcrumb [aria-current="page"]{color:var(--text);font-weight:700;}
.nk-cse-crosslink{
  padding-block:var(--space-8);
  border-top:1px solid var(--border);
}
.nk-cse-crosslink p{margin:0;line-height:1.6;}
.nk-cse-crosslink a{color:var(--accent);font-weight:700;text-decoration:underline;text-underline-offset:3px;}
.page-numeriklub-lp{
  --nk-bg-light:var(--nk-blue-soft);
  --nk-bg-soft:var(--nk-blue-soft-2);
  --nk-bg-dark:var(--nk-blue-dark);
}
:root.light .page-numeriklub-lp{
  --nk-bg-light:var(--nk-blue-soft);
  --nk-bg-soft:var(--nk-blue-soft-2);
  --nk-bg-dark:var(--nk-blue-dark);
}

.page-numeriklub-lp > section#nk-offers,
.page-numeriklub-lp > section#nk-format-choice,
.page-numeriklub-lp > section#reperes,
 .page-numeriklub-lp > section#rappel{
  --bg-deep:var(--nk-bg-light);
  --bg:var(--nk-bg-light);
  --surface:#FFFFFF;
  --surface-raised:#F7FBFE;
  --elevation:#FFFFFF;
  --text:var(--nk-blue-ink);
  --text-secondary:var(--nk-blue-muted);
  --text-muted:rgba(var(--nk-blue-ink-rgb),.65);
  --heading:var(--nk-blue-ink);
  --heading-soft:var(--nk-blue-mid);
  --grad-heading:linear-gradient(115deg,var(--nk-blue-ink) 8%,var(--nk-blue-mid) 92%);
  --eyebrow:var(--nk-blue-muted);
  --tint:var(--nk-blue-ink-rgb);
  --border:rgba(var(--nk-blue-ink-rgb),.12);
  --border-strong:rgba(var(--nk-blue-ink-rgb),.20);
  --shadow-card:0 10px 24px rgba(var(--nk-blue-ink-rgb),.08);
  background:var(--nk-bg-light) !important;
  color:var(--text);
}

.page-numeriklub-lp > section#reserver,
 .page-numeriklub-lp > section#pourquoi,
.page-numeriklub-lp > section#calendrier-sec,
 .page-numeriklub-lp > section#lieux,
 .page-numeriklub-lp > section.cta-final-section{
  --bg-deep:var(--nk-bg-soft);
  --bg:var(--nk-bg-soft);
  --surface:#F7FBFE;
  --surface-raised:#FFFFFF;
  --elevation:#FFFFFF;
  --text:var(--nk-blue-ink);
  --text-secondary:var(--nk-blue-muted);
  --text-muted:rgba(var(--nk-blue-ink-rgb),.65);
  --heading:var(--nk-blue-ink);
  --heading-soft:var(--nk-blue-mid);
  --grad-heading:linear-gradient(115deg,var(--nk-blue-ink) 8%,var(--nk-blue-mid) 92%);
  --eyebrow:var(--nk-blue-muted);
  --tint:var(--nk-blue-ink-rgb);
  --border:rgba(var(--nk-blue-ink-rgb),.16);
  --border-strong:rgba(var(--nk-blue-ink-rgb),.24);
  --shadow-card:0 10px 24px rgba(var(--nk-blue-ink-rgb),.10);
  background:var(--nk-bg-soft) !important;
  color:var(--text);
}

.page-numeriklub-lp > section#nk-offers .section-head .num,
.page-numeriklub-lp > section#nk-format-choice .section-head .num,
.page-numeriklub-lp > section#pourquoi .section-head .num,
.page-numeriklub-lp > section#reperes .section-head .num,
.page-numeriklub-lp > section#calendrier-sec .section-head .num,
.page-numeriklub-lp > section#lieux .section-head .num,
.page-numeriklub-lp > section.cta-final-section .section-head .num{
  color:var(--heading);
}

.page-numeriklub-lp > section#projets,
.page-numeriklub-lp > section#temoignages,
.page-numeriklub-lp > section#rappel{
  --bg-deep:var(--nk-bg-dark);
  --bg:var(--nk-bg-dark);
  --surface:var(--nk-blue-dark-surface);
  --surface-raised:var(--nk-blue-dark-raised);
  --elevation:var(--nk-blue-dark-elevated);
  --text:#DCE7EF;
  --text-secondary:var(--nk-blue-light);
  --text-muted:rgba(var(--nk-blue-light-rgb),.78);
  --heading:#F4F8FB;
  --heading-soft:var(--nk-blue-light);
  --grad-heading:linear-gradient(115deg,#F4F8FB 8%,var(--nk-blue-light) 92%);
  --eyebrow:var(--nk-blue-light);
  --tint:255,255,255;
  --border:rgba(var(--nk-blue-light-rgb),.18);
  --border-strong:rgba(var(--nk-blue-light-rgb),.34);
  --shadow-card:0 10px 26px rgba(var(--nk-blue-deep-rgb),.28);
  background:var(--nk-bg-dark) !important;
  color:var(--text);
}
.page-numeriklub-lp > .nk-photo-section{
  position:relative;
  isolation:isolate;
  padding:calc(var(--space-9) + 32px) 0 var(--space-9);
  color:#0E2438;
  --bg-deep:#E7EFF6;
  --bg:#EEF4F9;
  --surface:#FFFFFF;
  --surface-raised:#F7FBFE;
  --elevation:#FFFFFF;
  --text:#0E2438;
  --text-secondary:#39556F;
  --text-muted:rgba(14,36,56,.65);
  --heading:#0E2438;
  --heading-soft:#2C5C88;
  --eyebrow:#39556F;
  --tint:21,49,74;
  --border:rgba(21,49,74,.12);
  --border-strong:rgba(21,49,74,.20);
  --shadow-card:0 10px 24px rgba(21,49,74,.08);
  background-image:linear-gradient(180deg,#FFFFFF 0%,#E7EFF6 100%);
}
.nk-photo-gallery{margin-top:var(--space-7);}
.nk-ete-sec .nk-photo-gallery{padding-top:var(--space-8);border-top:1px solid var(--border);}
.nk-photo-gallery-head{max-width:680px;margin-bottom:var(--space-5);}
.nk-photo-gallery-head h3{margin:6px 0 4px;font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;color:var(--heading);}
.nk-photo-gallery-head p{color:var(--text-secondary);font-size:var(--text-sm);}
.nk-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);max-width:920px;}
.nk-photo-card{min-width:0;margin:0;}
.nk-photo-frame{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:var(--radius-photo);background:var(--surface);box-shadow:var(--shadow-card);}
.nk-photo-frame::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 58%,rgba(8,20,32,.28));}
.nk-photo-frame img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease-out);}
.nk-photo-card:hover .nk-photo-frame img,.nk-photo-card:focus-within .nk-photo-frame img{transform:scale(1.035);}
.nk-photo-cap{margin-top:var(--space-3);color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.03em;text-transform:uppercase;}
.nk-community-slider{max-width:920px;margin-top:var(--space-7);}
.nk-social-advice{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-6);
  margin:var(--space-6) 0 var(--space-7);
  padding:clamp(18px,3vw,28px);
  border:1px solid var(--border-strong);
  border-left:4px solid var(--accent);
  border-radius:var(--radius-ui);
  background:var(--surface-raised);
  box-shadow:var(--shadow-card);
}
.nk-social-advice-copy{min-width:0;}
.nk-social-advice h3{margin:0;color:var(--heading);font-size:clamp(1.15rem,2vw,1.5rem);}
.nk-social-advice p{margin:.45rem 0 0;color:var(--text-secondary);max-width:62ch;}
.nk-social-advice .btn{flex:0 0 auto;white-space:nowrap;}
.nk-community-slider-viewport{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-4);overflow:visible;}
.nk-community-slide{position:relative;min-width:0;aspect-ratio:4/3;margin:0;overflow:hidden;border-radius:var(--radius-photo);background:var(--surface);box-shadow:var(--shadow-card);opacity:0;visibility:hidden;transform:translateY(8px) scale(.985);transition:opacity .45s var(--ease-out),transform .65s var(--ease-out),visibility 0s linear .45s;}
.nk-community-slide.is-visible{opacity:1;visibility:visible;transform:none;transition-delay:0s;}
.nk-community-slide:not(.is-visible){display:none;}
.nk-community-slide img{display:block;width:100%;height:100%;object-fit:cover;}
.nk-community-slide::after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(180deg,transparent,rgba(8,20,32,.76));pointer-events:none;}
.nk-community-slide figcaption{position:absolute;z-index:1;left:var(--space-5);right:var(--space-5);bottom:var(--space-5);
  display:inline-block;width:max-content;max-width:calc(100% - 2 * var(--space-5));
  padding:7px 12px;border-radius:var(--radius-ui);background:#081420;color:#fff;
  font-size:var(--text-lg);font-weight:700;box-shadow:0 6px 18px rgba(0,0,0,.24);}
.nk-community-slider-controls{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-4);}
.nk-community-slider-btn{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--border-strong);border-radius:50%;background:var(--surface);color:var(--heading);cursor:pointer;font-size:1.1rem;transition:background var(--dur),border-color var(--dur),transform var(--dur);}
.nk-community-slider-btn:hover,.nk-community-slider-btn:focus-visible{background:rgba(var(--accent-rgb),.12);border-color:var(--accent);transform:translateY(-1px);}
.nk-community-slider-dots{display:flex;align-items:center;justify-content:center;gap:10px;}
.nk-community-slider-dot{width:10px;height:10px;padding:0;border:1px solid var(--border-strong);border-radius:50%;background:transparent;cursor:pointer;}
.nk-community-slider-dot.is-active{background:var(--accent);border-color:var(--accent);transform:scale(1.2);}
.nk-community-slider-dot:focus-visible{outline:2px solid var(--accent);outline-offset:4px;}
.nk-community-videos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5);max-width:920px;margin-top:var(--space-7);}
.nk-community-video{margin:0;}
.nk-community-video video{max-height:520px;}
.community-mosaic{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(220px,.65fr);gap:var(--space-4);max-width:920px;margin-top:var(--space-7);}
.community-mosaic figure{position:relative;overflow:hidden;margin:0;background:var(--surface);border-radius:var(--radius-photo);box-shadow:var(--shadow-card);}
.community-mosaic img{display:block;width:100%;height:100%;object-fit:cover;}
.community-mosaic-feature{min-height:470px;}
.community-mosaic-stack{display:grid;grid-template-rows:repeat(4,minmax(0,1fr));gap:var(--space-4);}
.community-mosaic-card{min-height:104px;}
.community-mosaic figcaption{position:absolute;inset:auto 12px 12px;z-index:1;color:#fff;font-size:var(--text-sm);font-weight:700;text-shadow:0 1px 8px rgba(0,0,0,.55);}
.community-mosaic figure::after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(180deg,transparent,rgba(8,20,32,.72));pointer-events:none;}
@media (prefers-reduced-motion:reduce){
  .nk-community-slide{transition:none;transform:none;}
  .nk-community-slider-btn{transition:none;}
}
@media(max-width:680px){
  .nk-social-advice{align-items:stretch;flex-direction:column;gap:var(--space-4);}
  .nk-social-advice .btn{align-self:flex-start;white-space:normal;}
  .nk-community-slider-viewport{grid-template-columns:1fr;}
  .nk-community-videos{grid-template-columns:1fr;}
  .community-mosaic{grid-template-columns:1fr;}
  .community-mosaic-feature{min-height:300px;}
  .community-mosaic-stack{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none;}
  .community-mosaic-card{aspect-ratio:1;}
}

/* Landing Numériklub — les dioramas sortis des cartes restent des repères
   décoratifs autour du titre, sans intercepter les interactions. */
#nk-offers,
#nk-format-choice,
.page-numeriklub-lp > section#projets,
.page-numeriklub-lp > section#pourquoi,
.page-numeriklub-lp > section#calendrier-sec,
.page-numeriklub-lp > section#lieux{position:relative;overflow:hidden;}
#nk-offers>.container,
#nk-format-choice>.container{position:relative;}
.nk-offer-decorations{display:none;position:absolute;inset:0;z-index:0;pointer-events:none;}
.nk-offer-decorations img{position:absolute;width:clamp(132px,11vw,176px);height:auto;object-fit:contain;opacity:.9;filter:drop-shadow(0 14px 18px rgba(0,0,0,.2));animation:nk-offer-float 7s ease-in-out infinite;}
.nk-offer-decorations img:first-child{top:clamp(15rem,18vw,18rem);left:clamp(.5rem,2vw,2rem);transform:rotate(-8deg);}
.nk-offer-decorations img:last-child{top:clamp(17rem,21vw,21rem);right:clamp(.5rem,2vw,2rem);transform:rotate(8deg);animation-delay:-2.4s;}
.nk-section-side-visual{position:absolute;top:clamp(.5rem,2vw,1.5rem);right:clamp(0rem,1vw,1.5rem);z-index:0;width:clamp(250px,29vw,370px);margin:0;pointer-events:none;transform:rotate(2deg);}
.nk-section-side-visual img{display:block;width:100%;height:auto;filter:drop-shadow(0 18px 22px rgba(8,20,32,.18));}
.nk-offer-side-visual{position:absolute;top:clamp(.5rem,2vw,1.5rem);right:clamp(0rem,1vw,1.5rem);z-index:0;width:clamp(250px,29vw,370px);margin:0;pointer-events:none;transform:rotate(2deg);}
.nk-offer-side-visual img{display:block;width:100%;height:auto;filter:drop-shadow(0 18px 22px rgba(8,20,32,.18));}
.nk-social-side-visual{top:clamp(.75rem,2.5vw,2rem);right:clamp(.25rem,1.5vw,2rem);width:clamp(270px,32vw,430px);opacity:.9;transform:rotate(-2deg);}
.nk-approach-side-visual{top:clamp(1rem,3vw,2.5rem);right:clamp(.25rem,1.5vw,2rem);width:clamp(220px,25vw,320px);opacity:.88;transform:rotate(3deg);}
.nk-calendar-side-visual{top:clamp(.75rem,2vw,1.75rem);right:clamp(.25rem,1.5vw,2rem);width:clamp(320px,32vw,430px);opacity:.78;transform:rotate(-3deg);}
.nk-campus-side-visual{top:clamp(1rem,3vw,2.5rem);right:clamp(.25rem,1.5vw,2rem);width:clamp(360px,40vw,520px);opacity:.82;transform:rotate(1deg);}
#nk-offers>.container>.section-head,
#nk-format-choice>.container>.section-head,
#nk-offers>.container>.nk-offer-fomo-section,
#nk-offers>.container>.nk-hero-moved-copy,
#nk-offers>.container>.grid,
#nk-offers>.container>.section-inline-cta{position:relative;z-index:1;}
#nk-offers>.container>.section-head,
#nk-format-choice>.container>.section-head{max-width:min(780px,62%);}
.page-numeriklub-lp > section#projets>.container>.section-head,
.page-numeriklub-lp > section#pourquoi>.container>.section-head,
.page-numeriklub-lp > section#calendrier-sec>.container>.section-head,
.page-numeriklub-lp > section#lieux>.container>.section-head,
.page-numeriklub-lp > section#projets>.container>.nk-lp-social-panel,
.page-numeriklub-lp > section#pourquoi>.container>.nk-esprit-lead,
.page-numeriklub-lp > section#pourquoi>.container>.grid,
.page-numeriklub-lp > section#calendrier-sec>.container>.nk-cal,
.page-numeriklub-lp > section#lieux>.container>.grid{position:relative;z-index:1;}
.page-numeriklub-lp > section#projets>.container>.section-head,
.page-numeriklub-lp > section#pourquoi>.container>.section-head,
.page-numeriklub-lp > section#calendrier-sec>.container>.section-head,
.page-numeriklub-lp > section#lieux>.container>.section-head{max-width:min(780px,62%);}
.page-numeriklub-lp > section#calendrier-sec>.container>.section-head{top:auto;bottom:auto;}
.nk-hero-moved-copy{max-width:68ch;margin:var(--space-4) 0 var(--space-5);color:var(--text-secondary);font-size:var(--text-base);line-height:1.6;}
@keyframes nk-offer-float{0%,100%{translate:0 0}50%{translate:0 -8px}}
@media(min-width:1600px){
  .nk-offer-decorations{display:block;}
  .nk-offer-decorations img{width:clamp(148px,9vw,176px);}
  .nk-offer-decorations img:first-child{top:15rem;left:max(1rem,calc((100vw - 1200px) / 2 - 176px));}
  .nk-offer-decorations img:last-child{top:18rem;right:max(1rem,calc((100vw - 1200px) / 2 - 176px));}
}
@media(max-width:760px){
  .nk-offer-side-visual{top:clamp(1rem,7vw,2rem);right:-4vw;width:clamp(190px,47vw,280px);opacity:.42;transform:rotate(4deg);}
  #nk-offers>.container>.section-head,
  #nk-format-choice>.container>.section-head{max-width:100%;padding-right:clamp(3rem,18vw,7rem);}
  .nk-social-side-visual,
  .nk-approach-side-visual{top:clamp(1.5rem,8vw,3rem);right:-8vw;width:clamp(190px,48vw,290px);opacity:.28;}
  .nk-calendar-side-visual,
  .nk-campus-side-visual{top:clamp(1.5rem,8vw,3rem);right:-8vw;width:clamp(210px,54vw,330px);opacity:.28;}
  .page-numeriklub-lp > section#projets>.container>.section-head,
  .page-numeriklub-lp > section#pourquoi>.container>.section-head,
  .page-numeriklub-lp > section#calendrier-sec>.container>.section-head,
  .page-numeriklub-lp > section#lieux>.container>.section-head{max-width:100%;padding-right:clamp(2.5rem,15vw,6rem);}
}
@media(max-width:520px){
  .nk-offer-side-visual{top:clamp(2rem,11vw,3.5rem);right:-14vw;width:clamp(170px,56vw,235px);opacity:.25;}
  #nk-offers>.container>.section-head,
  #nk-format-choice>.container>.section-head{padding-right:0;}
  .nk-social-side-visual,
  .nk-approach-side-visual{right:-20vw;width:clamp(170px,58vw,240px);opacity:.18;}
  .nk-calendar-side-visual,
  .nk-campus-side-visual{right:-20vw;width:clamp(195px,64vw,275px);opacity:.18;}
  .page-numeriklub-lp > section#projets>.container>.section-head,
  .page-numeriklub-lp > section#pourquoi>.container>.section-head,
  .page-numeriklub-lp > section#calendrier-sec>.container>.section-head,
  .page-numeriklub-lp > section#lieux>.container>.section-head{padding-right:0;}
}
@media(prefers-reduced-motion:reduce){
  .nk-offer-decorations img{animation:none;}
}

/* Hub Numériklub : reprendre la grammaire de la LP sans supprimer les
   sections métier propres au hub. Les IDs portent le rythme éditorial, jamais
   la parité du DOM. */
.page-numeriklub-hub > section#ateliers,
.page-numeriklub-hub > section#preinscription,
.page-numeriklub-hub > section#equipe,
.page-numeriklub-hub > section#ete,
.page-numeriklub-hub > section#blog,
.page-numeriklub-hub > section#qualification{
  --bg-deep:var(--nk-bg-dark);
  --bg:var(--nk-bg-dark);
  --surface:var(--nk-blue-dark-surface);
  --surface-raised:var(--nk-blue-dark-raised);
  --elevation:var(--nk-blue-dark-elevated);
  --text:#DCE7EF;
  --text-secondary:var(--nk-blue-light);
  --text-muted:rgba(var(--nk-blue-light-rgb),.78);
  --heading:#F4F8FB;
  --heading-soft:var(--nk-blue-light);
  --grad-heading:linear-gradient(115deg,#F4F8FB 8%,var(--nk-blue-light) 92%);
  --eyebrow:var(--nk-blue-light);
  --tint:255,255,255;
  --border:rgba(var(--nk-blue-light-rgb),.18);
  --border-strong:rgba(var(--nk-blue-light-rgb),.34);
  --shadow-card:0 10px 26px rgba(var(--nk-blue-deep-rgb),.28);
  background:var(--nk-bg-dark) !important;
  color:var(--text);
}
.page-numeriklub-hub > section#formats,
.page-numeriklub-hub > section#cadre,
.page-numeriklub-hub > section#faq,
.page-numeriklub-hub > section#tarifs{
  --bg-deep:var(--nk-bg-light);
  --bg:var(--nk-bg-light);
  --surface:#FFFFFF;
  --surface-raised:#F7FBFE;
  --elevation:#FFFFFF;
  --text:var(--nk-blue-ink);
  --text-secondary:var(--nk-blue-muted);
  --text-muted:rgba(var(--nk-blue-ink-rgb),.65);
  --heading:var(--nk-blue-ink);
  --heading-soft:var(--nk-blue-mid);
  --grad-heading:linear-gradient(115deg,var(--nk-blue-ink) 8%,var(--nk-blue-mid) 92%);
  --eyebrow:var(--nk-blue-muted);
  --tint:var(--nk-blue-ink-rgb);
  --border:rgba(var(--nk-blue-ink-rgb),.12);
  --border-strong:rgba(var(--nk-blue-ink-rgb),.20);
  --shadow-card:0 10px 24px rgba(var(--nk-blue-ink-rgb),.08);
  background:var(--nk-bg-light) !important;
  color:var(--text);
}
.page-numeriklub-hub > section#calendrier-sec,
.page-numeriklub-hub > section#esprit,
.page-numeriklub-hub > section#partenaires,
.page-numeriklub-hub > section#contact{
  --bg-deep:var(--nk-bg-soft);
  --bg:var(--nk-bg-soft);
  --surface:#F7FBFE;
  --surface-raised:#FFFFFF;
  --elevation:#FFFFFF;
  --text:var(--nk-blue-ink);
  --text-secondary:var(--nk-blue-muted);
  --text-muted:rgba(var(--nk-blue-ink-rgb),.65);
  --heading:var(--nk-blue-ink);
  --heading-soft:var(--nk-blue-mid);
  --grad-heading:linear-gradient(115deg,var(--nk-blue-ink) 8%,var(--nk-blue-mid) 92%);
  --eyebrow:var(--nk-blue-muted);
  --tint:var(--nk-blue-ink-rgb);
  --border:rgba(var(--nk-blue-ink-rgb),.16);
  --border-strong:rgba(var(--nk-blue-ink-rgb),.24);
  --shadow-card:0 10px 24px rgba(var(--nk-blue-ink-rgb),.10);
  background:var(--nk-bg-soft) !important;
  color:var(--text);
}
.page-numeriklub-hub > section#ateliers .card,
.page-numeriklub-hub > section#preinscription .card,
.page-numeriklub-hub > section#equipe .card,
.page-numeriklub-hub > section#ete .card,
.page-numeriklub-hub > section#blog .card{
  --text:#DCE7EF;
  --text-secondary:var(--nk-blue-light);
  --text-muted:rgba(var(--nk-blue-light-rgb),.78);
  --heading:#F4F8FB;
  --heading-soft:var(--nk-blue-light);
  --eyebrow:var(--nk-blue-light);
  --surface:rgba(32,65,90,.72);
  --surface-raised:rgba(43,82,111,.82);
  --border:rgba(220,231,239,.18);
  --border-strong:rgba(220,231,239,.34);
  --tint:255,255,255;
  color:var(--text);
  border-color:rgba(220,231,239,.18);
  background:rgba(32,65,90,.72);
  box-shadow:0 14px 30px rgba(3,14,24,.24);
}
.page-numeriklub-hub > section#ateliers .nk-card-price,
.page-numeriklub-hub > section#preinscription .nk-card-price,
.page-numeriklub-hub > section#equipe .nk-card-price,
.page-numeriklub-hub > section#ete .nk-card-price,
.page-numeriklub-hub > section#blog .nk-card-price{
  color:var(--heading);
}
.page-numeriklub-hub > section#formats .card,
.page-numeriklub-hub > section#cadre .card,
.page-numeriklub-hub > section#faq .card,
.page-numeriklub-hub > section#tarifs .card,
.page-numeriklub-hub > section#esprit .card,
.page-numeriklub-hub > section#calendrier-sec .card,
.page-numeriklub-hub > section#partenaires .card,
.page-numeriklub-hub > section#contact .card{
  --text:var(--nk-blue-ink);
  --text-secondary:var(--nk-blue-muted);
  --text-muted:rgba(var(--nk-blue-ink-rgb),.65);
  --heading:var(--nk-blue-ink);
  --heading-soft:var(--nk-blue-mid);
  --eyebrow:var(--nk-blue-muted);
  --surface:#FFFFFF;
  --surface-raised:#F7FBFE;
  --border:rgba(var(--nk-blue-ink-rgb),.12);
  --border-strong:rgba(var(--nk-blue-ink-rgb),.20);
  --tint:var(--nk-blue-ink-rgb);
  color:var(--text);
  background:#FFFFFF;
}
.page-numeriklub-hub > section.section .section-head,
.page-numeriklub-hub > section.section .grid,
.page-numeriklub-hub > section.section .nk-contact-maps,
.page-numeriklub-hub > section.section .nk-contact-head,
.page-numeriklub-hub > section.section .contact-grid{
  position:relative;
  z-index:1;
}
.page-numeriklub-hub > section#ateliers,
.page-numeriklub-hub > section#formats{
  overflow:hidden;
}
.page-numeriklub-hub > section#ateliers > .container,
.page-numeriklub-hub > section#formats > .container{
  position:relative;
}
.nk-hub-ateliers-visual{
  top:clamp(.5rem,2vw,1.5rem);
  right:clamp(0rem,1vw,1.5rem);
  width:clamp(250px,29vw,370px);
  opacity:.58;
  transform:rotate(2deg);
}
.nk-hub-offer-grid{position:relative;z-index:1;}
.nk-hub-offer-card{
  min-width:0;
  overflow:hidden;
}
.page-numeriklub-hub .nk-hub-offer-card .prog-head{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  align-items:start;
  gap:var(--space-2);
}
.page-numeriklub-hub .nk-hub-offer-card .prog-head-l{align-items:flex-start;}
.page-numeriklub-hub .nk-hub-offer-card .prog-head h3{line-height:1.15;}
.page-numeriklub-hub .nk-hub-offer-card .badge{
  justify-self:start;
  max-width:100%;
  white-space:normal;
  text-align:left;
}
.nk-hub-offer-card .nk-card-price{
  margin-top:0;
}
.nk-hub-offer-card .nk-offer-facts{
  margin-top:0;
}
.nk-hub-offer-dates{
  display:grid;
  gap:5px;
  padding-top:var(--space-4);
  border-top:1px solid var(--border);
  color:var(--text-secondary);
  font-size:var(--text-xs);
  line-height:1.4;
}
.nk-hub-offer-dates .eyebrow{margin:0;}
.nk-hub-offer-dates>span:not(.eyebrow){display:block;}
.nk-hub-offer-card .nk-offer-info{margin-top:auto;padding-top:var(--space-3);}
.nk-hub-section-cta{
  position:relative;
  z-index:1;
  margin-top:var(--space-7);
}
.page-numeriklub-hub > section#ateliers .section-head,
.page-numeriklub-hub > section#formats .section-head{
  max-width:min(780px,62%);
}
@media(max-width:760px){
  .nk-hub-ateliers-visual{
    top:1rem;
    right:-8vw;
    width:clamp(200px,48vw,300px);
    opacity:.22;
  }
  .page-numeriklub-hub > section#ateliers .section-head,
  .page-numeriklub-hub > section#formats .section-head{
    max-width:100%;
    padding-right:clamp(2rem,15vw,6rem);
  }
}

@media(max-width:520px){
  .page-numeriklub-hub > section#ateliers .section-head,
  .page-numeriklub-hub > section#formats .section-head{
    padding-right:0;
  }
}

/* Bannière d’offre latérale des hubs : une seule offre contextualisée par
   univers, avec un signal de calendrier/prix vérifiable et un CTA existant. */
.hub-fomo-banner{
  --hub-fomo-rgb:241,138,7;
  --hub-fomo-accent:var(--nk-orange,#F18A07);
  scroll-margin-top:84px;
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:clamp(16px,2.5vw,32px);
  width:min(100% - 40px,1200px);
  margin:clamp(18px,3vw,34px) auto clamp(26px,4vw,52px);
  padding:clamp(18px,2.4vw,30px) clamp(18px,3vw,36px);
  border:1px solid rgba(var(--hub-fomo-rgb),.42);
  border-inline-start:4px solid var(--hub-fomo-accent);
  border-radius:var(--radius-ui);
  background:
    radial-gradient(75% 150% at 0% 50%,rgba(var(--hub-fomo-rgb),.18),transparent 72%),
    var(--surface-raised,#112B40);
  box-shadow:0 12px 28px rgba(8,20,32,.14);
}
.hub-fomo-banner.has-media{
  grid-template-columns:minmax(150px,220px) auto minmax(0,1fr) auto;
}
.hub-fomo-media{
  align-self:stretch;
  min-height:128px;
  margin:0;
  overflow:hidden;
  border-radius:var(--radius-ui);
  background:rgba(var(--hub-fomo-rgb),.12);
}
.hub-fomo-media img{
  display:block;
  width:100%;
  height:100%;
  min-height:128px;
  object-fit:cover;
}
.hub-fomo-cyan{
  --hub-fomo-rgb:21,198,206;
  --hub-fomo-accent:var(--nk-cyan,#15C6CE);
}
.hub-fomo-magenta{
  --hub-fomo-rgb:206,26,99;
  --hub-fomo-accent:var(--nk-magenta,#CE1A63);
}
.hub-fomo-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:48px;
  height:48px;
  flex:none;
  color:var(--hub-fomo-accent);
  border:1px solid rgba(var(--hub-fomo-rgb),.42);
  border-radius:var(--radius-ui);
  background:rgba(var(--hub-fomo-rgb),.10);
}
.hub-fomo-icon svg{width:24px;height:24px;}
.hub-fomo-copy{min-width:0;}
.hub-fomo-copy .eyebrow{
  margin:0 0 4px;
  color:var(--hub-fomo-accent);
}
.hub-fomo-copy h2{
  margin:0;
  color:var(--heading);
  font-size:clamp(1.15rem,2vw,1.55rem);
  line-height:1.15;
}
.hub-fomo-copy>p:not(.hub-fomo-note){
  max-width:68ch;
  margin:6px 0 0;
  color:var(--text-secondary);
  font-size:var(--text-sm);
  line-height:1.45;
}
.hub-fomo-note{
  display:flex;
  align-items:flex-start;
  gap:6px;
  margin:8px 0 0;
  color:var(--hub-fomo-accent);
  font-size:var(--text-xs);
  font-weight:800;
  line-height:1.35;
}
.hub-fomo-note>span{flex:none;}
.hub-fomo-meta{
  display:flex;
  flex-wrap:wrap;
  gap:6px 14px;
  margin-top:10px;
  color:var(--text-muted);
  font-family:var(--font-mono);
  font-size:var(--text-2xs);
  letter-spacing:.04em;
}
.hub-fomo-meta span+span::before{
  content:"·";
  margin-inline-end:14px;
  color:var(--hub-fomo-accent);
}
.hub-fomo-action{
  display:flex;
  justify-content:flex-end;
  flex:none;
}
.hub-fomo-action .btn{white-space:nowrap;}
:root.light .hub-fomo-banner{
  background:
    radial-gradient(75% 150% at 0% 50%,rgba(var(--hub-fomo-rgb),.10),transparent 72%),
    #FFFFFF;
  box-shadow:0 12px 28px rgba(var(--nk-blue-ink-rgb),.10);
}
:root.light .hub-fomo-copy h2{color:var(--nk-blue-ink);}
:root.light .hub-fomo-copy>p:not(.hub-fomo-note){color:var(--nk-blue-muted);}
:root.light .hub-fomo-meta{color:rgba(var(--nk-blue-ink-rgb),.64);}
@media(max-width:680px){
  .hub-fomo-banner{
    grid-template-columns:auto minmax(0,1fr);
    width:min(100% - 28px,1200px);
    margin-block:18px 32px;
    padding:18px;
  }
  .hub-fomo-banner.has-media{
    grid-template-columns:auto minmax(0,1fr);
  }
  .hub-fomo-banner.has-media .hub-fomo-media{
    grid-column:1 / -1;
    min-height:0;
    aspect-ratio:16 / 8;
  }
  .hub-fomo-banner.has-media .hub-fomo-media img{
    min-height:0;
  }
  .hub-fomo-action{
    grid-column:1 / -1;
    justify-content:stretch;
  }
  .hub-fomo-action .btn{width:100%;justify-content:center;}
}
@media(max-width:390px){
  .hub-fomo-banner{gap:12px;padding:16px;}
  .hub-fomo-icon{width:40px;height:40px;}
  .hub-fomo-copy h2{font-size:1.08rem;}
}

/* Hub (accueil) — demande client : ALTERNANCE franche sombre / clair.
   Chaque parité regroupe fond + tokens dans UN SEUL bloc (fini la
   structure éclatée qui désynchronisait fond et couleurs de texte).
   Thème sombre : sections impaires SOMBRES (le rythme suit le hero),
   paires CLAIRES. Thème clair : le hub suit l'alternance claire GLOBALE
   (mêmes règles que toutes les autres pages — voir plus bas). */
.page-home > section.section:nth-of-type(odd){
  background-image:radial-gradient(95% 65% at 50% -5%, rgba(88,140,185,.22), transparent 72%),
    linear-gradient(180deg, rgba(11,30,46,.62) 0%, rgba(8,20,32,.93) 100%),
    var(--bg-noise),
    linear-gradient(180deg,var(--blue-800) 0%,var(--blue-950) 100%);
}
.page-home > section.section:nth-of-type(even){
  background-image:linear-gradient(180deg,#F3F8FC 0%,#DCE7F1 100%);
  --text:#0E2438; --text-secondary:#39556F; --text-muted:rgba(14,36,56,.56);
  --heading:#0E2438; --heading-soft:#2C5C88;
  --grad-heading:linear-gradient(115deg,#0E2438 8%,#2C5C88 92%);
  --eyebrow:#39556F;
  --tint:21,49,74;
  --border:rgba(21,49,74,.12); --border-strong:rgba(21,49,74,.20);
  --surface:#FFFFFF; --surface-raised:#F7FBFE; --elevation:#FFFFFF;
  --shadow-card:0 8px 26px rgba(21,49,74,.10);
}
/* Accueil · section univers : voiles radiaux neutres + secondaire du Hub —
   les primaires restent réservées aux CTA. */
.page-home > section#univers.section{
  background-image:
    radial-gradient(42% 55% at 10% 18%, rgba(var(--accent-secondary-rgb),.08), transparent 70%),
    radial-gradient(42% 55% at 90% 22%, rgba(72,120,162,.08), transparent 70%),
    radial-gradient(48% 60% at 50% 100%, rgba(var(--accent-secondary-rgb),.06), transparent 70%),
    linear-gradient(180deg, rgba(11,30,46,.62) 0%, rgba(8,20,32,.93) 100%),
    var(--bg-noise),
    linear-gradient(180deg,var(--blue-800) 0%,var(--blue-950) 100%);
}
/* Thème clair : PAS d'inversion propre au hub — les sections suivent
   l'alternance claire globale (:root.light .page > section, plus haut).
   Seul correctif : le dégradé de base de #univers, dont la règle à ID
   resterait sombre (spécificité supérieure à l'alternance globale). */
:root.light .page-home > section#univers.section{
  background-image:
    radial-gradient(42% 55% at 10% 18%, rgba(var(--accent-secondary-rgb),.08), transparent 70%),
    radial-gradient(42% 55% at 90% 22%, rgba(44,92,136,.08), transparent 70%),
    radial-gradient(48% 60% at 50% 100%, rgba(var(--accent-secondary-rgb),.06), transparent 70%),
    linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%);
}
/* En-tête de section EMPILÉ : numéro Nunito gras en teinte neutre
   translucide (jamais l'accent) au-dessus du titre serif italique en dégradé
   neutre. Flux normal (pas d'absolu) : un libellé long passe à la ligne sans
   jamais chevaucher titre ni sous-titre (bug signalé sur Formation Continue). */
.section-head{
  position:relative;margin-bottom:var(--space-7);max-width:820px;
}
.section-head .num{
  display:block;margin-bottom:var(--space-3);
  font-family:var(--font-mono);font-weight:800;
  font-size:var(--text-xs);line-height:1.25;letter-spacing:.12em;
  color:var(--eyebrow);text-transform:uppercase;
  pointer-events:none;user-select:none;
}
.section-head h2{
  position:relative;z-index:1;font-size:var(--text-3xl);text-wrap:balance;
  color:var(--heading);
}
/* Dégradé neutre uniquement si le clip texte est supporté ; sinon couleur
   pleine garantie (pas de titre invisible). */
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .section-head h2{
    background:var(--grad-heading);-webkit-background-clip:text;background-clip:text;
    color:transparent;
  }
}
@media (forced-colors:active){
  .section-head h2{background:none;color:CanvasText;}
  /* .reel-head h2{color:#fff} est déclaré plus bas → spécificité renforcée */
  .section-head.reel-head h2{background:none;color:CanvasText;}
  .section-head .num{display:none;}
}
.section-head p{position:relative;z-index:1;color:var(--text-secondary);font-size:var(--text-base);max-width:58ch;}
@media(min-width:921px){
  .page > .section:nth-of-type(odd) .section-head{margin-left:clamp(0px,4vw,56px);}
  .page > .section:nth-of-type(odd) .section-head[data-section-number="01"]{margin-left:0;}
  .page > .section .cols-3 > .card:nth-child(2){transform:translateY(18px);}
  .page > .section .cols-3 > .card:nth-child(2):hover{transform:translateY(15px);}
}
@media(max-width:680px){
  section.section{padding:var(--space-8) 0;}
  .section-head{margin-bottom:var(--space-6);}
  .section-head .num{font-size:var(--text-xs);}
  .section-head p{font-size:var(--text-base);}

  /* La section est souvent atteinte via l'ancre « Les thématiques ».
     Laisser la marge du header fixe et ne pas attendre le reveal animé
     pour afficher le titre et sa grille sur mobile. */
  #ateliers{
    padding-top:clamp(80px,18vw,96px);
    scroll-margin-top:96px;
  }
  #ateliers .section-head h2[data-blur-reveal]{
    opacity:1;
    transform:none;
    transition:none;
  }
  #ateliers .nk-orbit-ring .nk-orbit-card{
    visibility:visible;
    opacity:1;
  }
}
@media print{
  .section-head h2{background:none;color:var(--heading);}
  /* .reel-head h2{color:#fff} est déclaré plus bas → spécificité renforcée */
  .section-head.reel-head h2{color:var(--heading);}
  .section-head .num{display:none;}
}

/* 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-secondary-rgb),.4);top:calc(50% - 46px);
  background:radial-gradient(circle,rgba(var(--accent-secondary-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-secondary-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-secondary-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-secondary-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;min-height:44px;
  margin-top:var(--space-2);font-size:var(--text-sm);font-weight:600;
  letter-spacing:.01em;color:var(--accent-secondary-soft);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);}
.section-inline-cta{margin-top:var(--space-6);}
.nk-offer-accordion{align-items:start;}
.nk-offer-card{cursor:pointer;transition:transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),border-color var(--dur) var(--ease-out);}
.nk-offer-card:hover{transform:translateY(-2px);}
.nk-offer-card:focus-visible{
  outline:2px solid var(--cta);
  outline-offset:4px;
}
.nk-offer-card.is-open{
  box-shadow:inset 0 0 0 1px rgba(var(--cta-rgb),.65),0 10px 26px rgba(var(--cta-rgb),.14);
  border-color:rgba(var(--cta-rgb),.62);
}
.nk-offer-fomo-section{
  max-width:none;
  margin:var(--space-4) 0 var(--space-5);
  font-size:var(--text-sm);
  opacity:.92;
}
.nk-offer-detailed-card{
  display:flex;
  flex-direction:column;
  height:100%;
  border-color:rgba(var(--cta-rgb),.22);
  box-shadow:0 10px 26px rgba(8,20,32,.10);
}
.nk-offer-detailed-card > .nk-offer-fomo{
  font-size:var(--text-xs);
  margin-top:var(--space-3);
}
.nk-offer-sections{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--space-4) var(--space-5);
  margin-top:var(--space-5);
  padding-top:var(--space-5);
  border-top:1px solid var(--border);
}
.nk-offer-section{
  min-width:0;
}
.nk-offer-detailed-card .nk-offer-sections > .nk-offer-section:only-child{
  grid-column:1 / -1;
}
/* Les cartes claires des deux offres conservent une encre foncée même
   lorsqu'elles sont dans une section à thème sombre. */
.page-numeriklub-lp:is(
  [data-page="/numeriklub/parcours-annuel"],
  [data-page="/lp/numeriklub/parcours-annuel"],
  [data-page="/numeriklub/stage-vacances-scolaires"],
  [data-page="/lp/numeriklub/petites-vacances"]
) :is(.card, .about-block){
  --text:#0e2438 !important;
  --heading:#0e2438 !important;
  --text-secondary:#39556f !important;
  --text-muted:#39556f !important;
  --eyebrow:#39556f !important;
  color:#0e2438;
}
.page-numeriklub-lp:is(
  [data-page="/numeriklub/parcours-annuel"],
  [data-page="/lp/numeriklub/parcours-annuel"],
  [data-page="/numeriklub/stage-vacances-scolaires"],
  [data-page="/lp/numeriklub/petites-vacances"]
) .nk-offer-section li > span:first-child{
  color:#a75a00;
}
.page-numeriklub-lp .nk-reference-offer-price > span{
  color:#176d53;
}
.nk-offer-section-label{
  margin-bottom:6px;
  color:var(--eyebrow);
  font-family:var(--font-mono);
  font-size:var(--text-2xs);
  font-weight:750;
  letter-spacing:.14em;
  line-height:1.2;
  text-transform:uppercase;
}
.nk-offer-section h4{
  margin:0;
  color:var(--heading);
  font-family:var(--font-display);
  font-size:var(--text-base);
  line-height:1.15;
}
.nk-offer-section p{
  margin:8px 0 0;
  color:var(--text-secondary);
  font-size:var(--text-sm);
  line-height:1.5;
}
.nk-offer-section ul{
  display:grid;
  gap:7px;
  margin:9px 0 0;
  padding:0;
  list-style:none;
}
.nk-offer-section li{
  display:flex;
  gap:8px;
  color:var(--text-secondary);
  font-size:var(--text-sm);
  line-height:1.4;
}
.nk-offer-section li > span:first-child{
  flex:none;
  color:var(--cta);
  font-weight:800;
}
.nk-offer-detailed-card .nk-offer-info{
  margin-top:auto;
  padding-top:var(--space-5);
}
.nk-offer-toggle{
  width:100%;min-height:44px;display:flex;align-items:center;justify-content:space-between;
  gap:var(--space-3);margin-top:var(--space-5);padding:12px 0 10px;
  border:0;border-top:1px solid rgba(var(--cta-rgb),.28);
  background:transparent;color:var(--cta);cursor:pointer;text-align:left;
  font-family:var(--font-mono);font-size:var(--text-xs);font-weight:750;
  letter-spacing:.12em;text-transform:uppercase;
}
.nk-offer-toggle:hover{color:var(--heading);}
.nk-offer-toggle:focus-visible{
  outline:2px solid var(--cta);outline-offset:4px;border-radius:var(--radius-ui);
}
.nk-offer-toggle-icon{
  display:grid;place-items:center;flex:none;width:28px;height:28px;
  border:1px solid currentColor;border-radius:50%;font-family:var(--font-sans);
  font-size:1.25rem;font-weight:400;line-height:1;transition:transform var(--dur) var(--ease-out);
}
.nk-offer-card.is-open .nk-offer-toggle-icon{transform:rotate(180deg);}
.nk-offer-details{
  margin-top:var(--space-2);padding:var(--space-4);
  border-left:3px solid var(--cta);border-radius:0 var(--radius-ui) var(--radius-ui) 0;
  background:rgba(var(--cta-rgb),.07);
}
.nk-offer-details[hidden]{display:none;}
.nk-offer-details .card-body{margin-top:0;}
.nk-offer-facts{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;
  list-style:none;margin:var(--space-4) 0 0;padding:0;
}
.nk-offer-facts li{
  display:flex;align-items:flex-start;gap:7px;min-width:0;
  color:var(--text);font-size:var(--text-xs);line-height:1.35;
}
.nk-offer-facts li > span:first-child{flex:none;color:var(--cta);font-weight:800;}
.nk-offer-info{margin-top:var(--space-4);}
.nk-offer-info-link{display:inline-flex;align-items:center;min-height:44px;color:var(--heading);
  font-size:var(--text-sm);font-weight:750;text-decoration:underline;text-decoration-color:rgba(var(--cta-rgb),.55);
  text-underline-offset:3px;transition:color var(--dur-fast,.15s),text-decoration-color var(--dur-fast,.15s);}
.nk-offer-info-link:hover,.nk-offer-info-link:focus-visible{color:var(--cta);text-decoration-color:currentColor;}
@media(max-width:760px){
  .nk-offer-facts{grid-template-columns:1fr;}
  .nk-offer-sections{grid-template-columns:1fr;}
}
.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;}
/* Le Short FC remplit la même carte paysage : iframe portrait, recadrage centré. */
.u-card-video-short iframe{
  aspect-ratio:9/16;
  min-width:0;
  transform:translate(-50%,-50%) scale(2.35);
}
.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;}
/* Titres des cartes univers : Nunito bold en dégradé neutre (nuance
   blanc → bleu) — jamais l'accent, réservé aux CTA. */
.u-card .u-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:800;color:var(--heading);}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .u-card .u-title{
    background:var(--grad-heading);-webkit-background-clip:text;background-clip:text;color:transparent;
  }
}

/* Les règles historiques du thème clair donnent volontairement un fond
   sombre aux cartes de conversion. La LP utilise désormais le même panneau
   blanc que les formules : réinitialiser aussi les variables héritées afin
   que les labels, consentements et détails restent lisibles. */
.page-numeriklub-lp > section#rappel .contact-grid > .card,
.page-numeriklub-lp > section#rappel .nk-lp-faq-block .faq-item{
  --text:var(--nk-blue-ink) !important;
  --text-secondary:var(--nk-blue-muted) !important;
  --text-muted:rgba(var(--nk-blue-ink-rgb),.65) !important;
  --heading:var(--nk-blue-ink) !important;
  --heading-soft:var(--nk-blue-mid) !important;
  --eyebrow:var(--nk-blue-muted) !important;
  --surface:#FFFFFF !important;
  --surface-raised:var(--nk-blue-soft) !important;
  --border:rgba(var(--nk-blue-ink-rgb),.14) !important;
  --border-strong:rgba(var(--nk-blue-ink-rgb),.22) !important;
  color:var(--nk-blue-ink) !important;
  background:#FFFFFF !important;
}
.page-numeriklub-lp > section#rappel .card strong{
  color:var(--nk-blue-muted) !important;
}
.page-numeriklub-lp > section#rappel .contact-form-card .optin-label,
.page-numeriklub-lp > section#rappel .contact-form-card .optin-label span{
  color:var(--nk-blue-muted) !important;
}
.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:rgba(var(--tint),.45);}
.u-card .u-cta{margin-top:auto;font-family:var(--font-ui);font-size:.8rem;font-weight:700;letter-spacing:.01em;
  color:var(--heading);display:inline-flex;align-items:center;gap:6px;transition:var(--dur);}
.u-card .u-cta:hover{color:var(--accent-secondary);}
.u-card:hover .u-cta{gap:10px;}

/* Hub — bandes « Au programme » (vitrines des 3 univers) */
/* Couleurs propres à cette vitrine : les classes theme-* ont ailleurs une
   logique d'accent croisé pour les pages d'univers, donc cette section garde
   son mapping éditorial explicite. */
.hub-decouverte .hub-band.theme-orange{--hub-universe-rgb:241,138,7;}
.hub-decouverte .hub-band.theme-cyan{--hub-universe-rgb:21,198,206;}
.hub-decouverte .hub-band.theme-magenta{--hub-universe-rgb:206,26,99;}

/* Bandes « Au programme » : voile en dégradé de la couleur de l'univers
   (texture de fond uniquement — jamais sur les textes). UNE SEULE règle
   pour les trois bandes = rendu uniforme ; --hub-universe-rgb porte le
   mapping éditorial orange / cyan / magenta. Radial en coin + diagonale :
   l'univers se lit d'un coup. */
.hub-band.theme-cyan,.hub-band.theme-orange,.hub-band.theme-magenta{
  background-image:
    radial-gradient(85% 65% at 0% 0%, rgba(var(--hub-universe-rgb,var(--accent-secondary-rgb)),.16), transparent 68%),
    linear-gradient(160deg, rgba(var(--hub-universe-rgb,var(--accent-secondary-rgb)),.10) 0%, transparent 58%);
}
/* Pleine largeur : le dégradé d'univers court de bord à bord de l'écran ;
   le contenu (tête + cartes) reste aligné sur le conteneur. Débordement
   contenu par overflow-x:clip sur la section (jamais en global). */
.hub-decouverte{overflow-x:clip;}
.hub-decouverte .hub-band{margin-top:var(--space-8);padding-top:var(--space-7);
  margin-inline:calc(50% - 50vw);padding-inline:calc(50vw - 50%);}
.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(--eyebrow);margin-bottom:6px;}
.hub-band-logo{display:block;height:34px;width:auto;object-fit:contain;
  margin-bottom:var(--space-3);}
.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;}
/* Cartes des bandes « Au programme » : dégradé diagonal dans la couleur de
   l'univers concerné (demande client). --accent-rgb est posé par la classe
   .theme-* portée par la bande (et suit le thème clair/sombre). Voile
   uniquement : les textes restent en tokens neutres. */
.hub-band .card{
  background-image:linear-gradient(155deg, rgba(var(--hub-universe-rgb,var(--accent-secondary-rgb)),.20) 0%, rgba(var(--hub-universe-rgb,var(--accent-secondary-rgb)),.07) 52%, rgba(var(--hub-universe-rgb,var(--accent-secondary-rgb)),0) 100%);
  border-color:rgba(var(--hub-universe-rgb,var(--accent-secondary-rgb)),.32);}
.hub-band .card:hover{border-color:rgba(var(--hub-universe-rgb,var(--accent-secondary-rgb)),.5);}
.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-base);color:var(--heading);}
.hub-atelier-meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--eyebrow);
  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;color:var(--heading);}
.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:rgba(var(--tint),.4);box-shadow:none;}
.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;color:var(--heading);}
.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(--eyebrow);}
/* Visuels intégrés aux cartes (bandes « Au programme », preuves) */
.hub-atelier.has-img,.hub-cursus.has-img,.hub-parc.has-img,
.stat.has-img{overflow:hidden;}
.hub-card-media,.stat-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{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{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{transform:translateY(-6px) scale(1.03);}

/* Page équipe — portraits nominatifs seulement pour les personnes identifiées. */
.hub-team-sec{scroll-margin-top:6rem;}
.hub-team-group-title{margin:var(--space-7) 0 var(--space-4);font-size:clamp(1.25rem,2vw,1.6rem);color:var(--heading);}
.hub-team-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4);}
.hub-team-card{min-width:0;overflow:hidden;padding:0;display:flex;flex-direction:column;}
.hub-team-photo{aspect-ratio:1/1;overflow:hidden;background:var(--surface-raised);}
.hub-team-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 25%;}
.hub-team-card-body{padding:var(--space-4);flex:1;}
.hub-team-card h4{margin:0 0 .35rem;color:var(--heading);font-size:var(--text-base);}
.page-fi-teachers .hub-team-card h3{margin:0 0 .35rem;color:var(--heading);font-size:var(--text-base);}
.fi-teachers-leads{margin-bottom:var(--space-4);}
.hub-team-role{margin:0;color:var(--text);font-weight:700;font-size:var(--text-sm);line-height:1.4;}
.hub-team-credits{margin:var(--space-3) 0 0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5;}
.hub-team-staff-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);}
.hub-team-staff .hub-team-staff-grid{margin-top:var(--space-4);}
.hub-team-staff-person{display:flex;flex-direction:column;gap:.25rem;min-width:0;padding:var(--space-4);border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-ui);}
.hub-team-staff-photo,.info-item-portrait{display:block;width:88px;height:88px;object-fit:cover;object-position:center 25%;border-radius:var(--radius-photo);margin-bottom:var(--space-2);}
.hub-team-staff-person strong{color:var(--heading);}
.hub-team-staff-person span{color:var(--text-secondary);font-size:var(--text-sm);}
@media(max-width:950px){.hub-team-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:700px){.hub-team-grid,.hub-team-staff-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:480px){.hub-team-grid,.hub-team-staff-grid{grid-template-columns:1fr;}}

/* Mode clair : les cartes .stat-media (preuves Academy) deviennent blanches
   sur sections claires → même tuile claire que la section découverte. */
:root.light .stat-media{
  background:
    radial-gradient(120% 95% at 50% 0%, rgba(var(--accent-rgb),.14), transparent 72%),
    linear-gradient(165deg, #FFFFFF, #E4EDF5);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.25);}
:root.light .stat-media::after{background:linear-gradient(180deg, transparent 70%, rgba(21,49,74,.10) 100%);}
:root.light .stat-media img{filter:none;}

/* Sessions d’admissions : bloc d'infos statiques (pas des cards cliquables).
   Léger, aligné, séquentiel (01·02·03) — mêmes tokens que les étapes d'admission. */
.admissions-info{display:grid;grid-template-columns:repeat(3,1fr);
  border-block:1px solid var(--border);}
.admissions-info-item{display:flex;gap:var(--space-4);align-items:flex-start;
  padding:var(--space-5) var(--space-5);}
.admissions-info-item + .admissions-info-item{border-left:1px solid var(--border);}
.admissions-info-n{flex:none;font-family:var(--font-display);font-weight:700;
  font-size:var(--text-base);letter-spacing:.08em;color:var(--eyebrow);
  line-height:1.35;font-variant-numeric:tabular-nums;}
.admissions-info-title{font-family:var(--font-display);font-weight:700;
  font-size:var(--text-lg);color:var(--text-primary);}
.admissions-info-desc{color:var(--text-secondary);font-size:var(--text-sm);
  line-height:1.55;margin-top:6px;}
@media (max-width:760px){
  .admissions-info{grid-template-columns:1fr;}
  .admissions-info-item + .admissions-info-item{border-left:0;border-top:1px solid var(--border);}
}
.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;
  /* Tuile CLAIRE : les cartes de cette section sont blanches dans les deux
     thèmes — le dégradé nuit par défaut (pensé pour cartes sombres) jure. */
  background:
    radial-gradient(120% 95% at 50% 0%, rgba(var(--hub-universe-rgb,var(--accent-rgb)),.14), transparent 72%),
    linear-gradient(165deg, #FFFFFF, #E4EDF5);
  box-shadow:inset 0 0 0 1px rgba(var(--hub-universe-rgb,var(--accent-rgb)),.25);}
.hub-decouverte .hub-card-media::after{
  background:linear-gradient(180deg, transparent 70%, rgba(21,49,74,.10) 100%);}
.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);}
/* Portrait du président : afficher toute la hauteur de la photo carrée. */
.page[data-page="/a-propos/president-board"] .prog-cover{aspect-ratio:1/1;}
.card.prog.has-cover:hover .prog-cover img{transform:scale(1.04);}
.fi-presentation-card{min-width:0;overflow:hidden;display:flex;flex-direction:column;}
.fi-presentation-media{
  aspect-ratio:16/9;
  overflow:hidden;
  margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-5);
  background:var(--surface-raised);
}
.fi-presentation-media img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;}
.fi-presentation-card .card-body{margin-top:var(--space-2);}
.nk-offer-proof-photo{position:relative;aspect-ratio:16/10;overflow:hidden;
  margin:0 0 var(--space-5);border:1px solid var(--border);
  border-radius:var(--radius-photo);background:var(--surface);}
.nk-offer-proof-photo img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;}
/* Bande de logos de réassurance dans les heros (certifs / studios / partenaires) */
/* Défilement de logos intégré au hero — pleine largeur, d'un bord à l'autre (fondu conservé) */
.hero-marquee{height:auto;width:100vw;max-width:100vw;
  margin-top:var(--space-7);margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);
  padding-block:var(--space-3);position:relative;z-index:2;}
.hero-marquee .marquee-track{gap:clamp(40px,5vw,88px);align-items:center;animation-duration:48s;}
.hero-marquee-logo{height:clamp(30px,3.2vw,46px);width:auto;object-fit:contain;flex:0 0 auto;
  opacity:.92;transition:opacity .2s ease,transform .2s ease;}
.hero-marquee-logo:hover{opacity:1;transform:translateY(-3px);}
/* FC : les logos de réassurance doivent rester lisibles devant le halo et
   l'illustration — bande glass dédiée, logos plus grands et plus lumineux. */
:is(.page-hero-screens,.fcv-hero) .hero-marquee{
  margin-top:clamp(18px,2.2vw,30px);padding:12px clamp(14px,3vw,44px);
  border-block:1px solid rgba(var(--accent-secondary-rgb),.32);
  background:
    linear-gradient(90deg,rgba(8,20,32,.76),rgba(var(--accent-secondary-rgb),.12),rgba(8,20,32,.76)),
    var(--bg-noise);
  box-shadow:0 12px 30px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.12);
  -webkit-backdrop-filter:blur(14px) saturate(1.25);
  backdrop-filter:blur(14px) saturate(1.25);
}
:is(.page-hero-screens,.fcv-hero) .hero-marquee-logo{
  height:clamp(42px,4.2vw,64px);opacity:1;
  filter:drop-shadow(0 5px 12px rgba(0,0,0,.42));
}
/* Numériklub : même bande de contraste que la Formation Continue pour que
   les logos clairs restent lisibles sur le hero clair en mode light. */
.page-hero-floats .hero-marquee{
  margin-top:clamp(18px,2.2vw,30px);padding:12px clamp(14px,3vw,44px);
  border-block:1px solid rgba(var(--accent-secondary-rgb),.32);
  background:
    linear-gradient(90deg,rgba(8,20,32,.76),rgba(var(--accent-secondary-rgb),.12),rgba(8,20,32,.76)),
    var(--bg-noise);
  box-shadow:0 12px 30px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.12);
  -webkit-backdrop-filter:blur(14px) saturate(1.25);
  backdrop-filter:blur(14px) saturate(1.25);
}
.page-hero-floats .hero-marquee-logo{
  height:clamp(42px,4.2vw,64px);opacity:1;
  filter:drop-shadow(0 5px 12px rgba(0,0,0,.42));
}
/* LP Numériklub : la bannière de marques clôt réellement le hero. Les preuves
   restent au-dessus et le double espace hero/section est supprimé. */
.page[data-page="/lp/numeriklub"] > .page-hero > .container,
.page-numeriklub-hub > .page-hero > .container{
  display:flex;flex-direction:column;align-items:flex-start;
}
.page[data-page="/lp/numeriklub"] > .page-hero,
.page-numeriklub-hub > .page-hero{
  padding-top:var(--space-3);
}
.page[data-page="/lp/numeriklub"] > .page-hero > .container,
.page-numeriklub-hub > .page-hero > .container{
  padding-top:clamp(6px,1vw,12px);
}
.page[data-page="/lp/numeriklub"] .hero-certs,
.page-numeriklub-hub .hero-certs{order:1;}
.page[data-page="/lp/numeriklub"] .hero-proof,
.page-numeriklub-hub .hero-proof{order:2;}
.page[data-page="/lp/numeriklub"] .hero-marquee,
.page-numeriklub-hub .hero-marquee{order:3;margin-bottom:0;}
.page[data-page="/lp/numeriklub"] > .page-hero,
.page-numeriklub-hub > .page-hero{padding-bottom:0;}
.page[data-page="/lp/numeriklub"] > .page-hero + section.section{
  padding-top:calc(var(--space-9) + 32px);
}
@media(max-width:680px){
  .page[data-page="/lp/numeriklub"] > .page-hero + section.section{
    padding-top:var(--space-8);
  }
}
/* La landing Numériklub garde un seul axe éditorial : le numéro, le titre et
   le texte de chaque section commencent sur la même ligne que le hero et la
   galerie. Le décalage diagonal global des pages classiques ne s'applique pas
   à cette landing. */
.page-numeriklub-lp > .section:nth-of-type(odd) .section-head{margin-left:0;}
/* Hub : la bande s'étale sous les deux colonnes de la grille. En clair,
   elle est habillée plus bas comme la bande FC et absorbe le padding final
   du hero : aucune respiration vide ne doit séparer les logos de la section
   suivante. */
.hub-hero-grid > .hero-marquee{
  grid-column:1 / -1;
  margin-top:var(--space-4);
}
:root.light .hub-hero-grid > .hero-marquee{
  margin-bottom:calc(-1 * var(--space-7));
}
/* Academy (hero scroll-scale) : bande plein écran ancrée en bas, s'efface au scroll */
.hero-sticky > .hero-marquee{position:absolute;left:0;right:0;bottom:clamp(56px,8vh,96px);
  width:100%;max-width:none;margin:0;z-index:5;pointer-events:none;
  opacity:calc(1 - var(--scroll-p,0) * 2.4);will-change:opacity;}
.hero-certs{display:flex;flex-direction:column;gap:8px;margin-top:var(--space-4);}
.hero-certs-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.14em;
  text-transform:uppercase;color:var(--text-muted);text-wrap:pretty;}
.hero-certs-row{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap;}
.hero-cert{height:clamp(26px,3vw,38px);width:auto;object-fit:contain;
  filter:drop-shadow(0 4px 10px rgba(0,0,0,.30));}
.hero-cert.is-tinted{display:block;aspect-ratio:var(--ar);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat;}
/* Hub : strip Qualiopi compact en ligne (logo + mention) pour rester au-dessus de la ligne de flottaison */
.page-hero-hub .hero-certs{flex-direction:row;align-items:center;gap:var(--space-3);margin-top:var(--space-3);}
.page-hero-hub .hero-certs-row{order:-1;flex-shrink:0;flex-wrap:nowrap;gap:var(--space-3);}
.page-hero-hub .hero-cert{height:clamp(38px,4.4vw,52px);}
.page-hero-hub .hero-certs-label{letter-spacing:.08em;max-width:46ch;}
/* Compression verticale du copy hub pour garder le strip Qualiopi au-dessus de la ligne de flottaison */
.page-hero-hub .hero-cta{margin-top:var(--space-4);}
.page-hero-hub .hub-ulogos{margin-top:var(--space-5);}
.page-hero-hub .hero-loc{margin-top:var(--space-3);}
@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(--heading);background:rgba(var(--tint),.08);
  box-shadow:inset 0 0 0 1px rgba(var(--tint),.18);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-secondary-rgb),.16);box-shadow:inset 0 0 0 1px var(--accent-secondary),0 0 16px rgba(var(--accent-secondary-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-secondary);margin-top:6px;}
.info-item .v .info-fig{font-weight:650;color:var(--text);}
.info-item-cta{margin-top:var(--space-4);}
.info-item-cta .btn{font-size:var(--text-sm);padding:10px 14px;}

/* ===== Academy — hiérarchie des cartes Module (Programme) ===== */
.mod-card{display:flex;flex-direction:column;height:100%;}
.mod-head{display:flex;align-items:baseline;justify-content:space-between;
  gap:var(--space-3);flex-wrap:wrap;}
.mod-head .card-title{line-height:1.25;}
/* niveau 1 — volume horaire du module, sorti du titre en chip discret */
.mod-chip{flex-shrink:0;align-self:flex-start;white-space:nowrap;
  font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;
  letter-spacing:.04em;color:var(--text-secondary);
  background:rgba(var(--tint),.06);
  border:1px solid rgba(var(--tint),.2);
  border-radius:var(--radius-ui);padding:3px 9px;}
.mod-list{list-style:none;margin:var(--space-4) 0 0;padding:0;
  display:flex;flex-direction:column;gap:10px;}
.mod-list li{position:relative;padding-left:18px;line-height:1.5;
  font-size:var(--text-sm);color:var(--text-secondary);}
.mod-list li::before{content:"";position:absolute;left:0;top:8px;
  width:7px;height:7px;border-radius:50%;
  background:rgba(var(--tint),.4);box-shadow:none;}
/* niveau 2 — sous-durées (40 h, 60 h…) : emphase typo, pas de couleur criarde */
.mod-h{font-weight:650;color:var(--text);white-space:nowrap;}
/* mot-clé livrable/validation surligné discrètement */
.mod-kw{font-family:var(--font-mono);font-size:.72em;font-weight:600;
  letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);}
/* niveau 3 — certif d’État reconnue : mini badge inline sobre */
.mod-cert{font-family:var(--font-mono);font-size:.82em;font-weight:600;
  letter-spacing:.02em;color:var(--heading);white-space:nowrap;
  border:1px solid rgba(var(--tint),.28);border-radius:5px;padding:0 5px;}
/* niveau 3 — livrables / validation séparés en pied de carte */
.mod-foot{margin-top:auto;padding-top:var(--space-4);
  border-top:1px solid var(--border-strong);}
.mod-list + .mod-foot{margin-top:var(--space-4);}
.mod-foot-h{font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);
  margin-bottom:var(--space-3);}
.mod-foot-item{display:flex;gap:8px;align-items:flex-start;line-height:1.5;
  font-size:var(--text-sm);color:var(--text);}
.mod-foot-item + .mod-foot-item{margin-top:8px;}
.mod-foot-ic{flex-shrink:0;width:15px;height:15px;margin-top:2px;color:var(--eyebrow);}

/* 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(--heading);font-weight:600;}

/* Bandeau « Nouveau » — ruban d'angle sur les cartes marquées isNew.
   La base .card a overflow:hidden : le ruban diagonal est rogné en coin. */
.card.is-new{position:relative;}
.card-ribbon{
  position:absolute;top:22px;right:-52px;z-index:8;
  width:180px;padding:6px 0;text-align:center;
  transform:rotate(45deg);
  background:rgba(var(--tint),.14);color:var(--heading);
  font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;line-height:1.1;
  box-shadow:0 6px 16px rgba(8,20,32,.42);
  pointer-events:none;
}

/* 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(--heading);
  background:rgba(var(--tint),.09);box-shadow:inset 0 0 0 1px rgba(var(--tint),.16);}
.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;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:44px;}
.faq summary::-webkit-details-marker{display:none;}
.faq .faq-chevron{flex:0 0 auto;color:var(--heading);font-family:var(--font-mono);font-size:1.2rem;transition:transform var(--dur);}
.faq details[open] .faq-chevron{transform:rotate(45deg);}
.faq details p{color:var(--text-secondary);margin-top:var(--space-3);font-size:var(--text-sm);}
.filter-pills{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 var(--space-5);}
.filter-pill{min-height:44px;padding:8px 14px;border:1px solid var(--border-strong);border-radius:999px;background:transparent;color:var(--text-secondary);cursor:pointer;font:inherit;}
.filter-pill:hover,.filter-pill:focus-visible,.filter-pill.is-active{border-color:var(--accent);background:rgba(var(--accent-rgb),.1);color:var(--heading);}
.timeline-cards{position:relative;}

/* 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:rgba(var(--tint),.4);}

/* testimonials */
.quote{display:flex;flex-direction:column;gap:var(--space-3);height:100%;}
.quote .stars{color:var(--eyebrow);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(--eyebrow);}

/* témoignages vidéo (hub) — reel vertical + vidéos 16:9 */
.testi-grid{display:grid;grid-template-columns:1fr;gap:var(--space-6);align-items:start;}
@media(min-width:900px){.testi-grid{grid-template-columns:minmax(0,.82fr) minmax(0,1.18fr);}}
.testi-col{display:grid;gap:var(--space-6);align-content:start;}
.testi-card{display:flex;flex-direction:column;overflow:hidden;padding:0;}
.testi-cap{display:flex;flex-direction:column;gap:var(--space-2);
  padding:var(--space-5) var(--space-6) var(--space-6);}
.testi-text{margin:0;color:var(--text-secondary);line-height:1.5;}
.testi-card .who{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);margin-top:auto;}
.testi-media{width:100%;}
.video-embed{position:relative;width:100%;background:#000;overflow:hidden;}
.video-embed-16x9{aspect-ratio:16/9;}
.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;}
.testi-reel .ig-embed{width:100%;max-width:none;margin:0;}
.testi-reel .ig-embed iframe{height:640px;}
@media(max-width:560px){.testi-reel .ig-embed iframe{height:560px;}}

/* 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(--eyebrow);}
.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);}
/* CTA des cartes programme : bouton plein accent (cyan sur /academy), poussé en
   bas de carte via margin-top:auto → aligné à la même hauteur d'une carte à l'autre
   (celle de la carte la plus haute), quelle que soit la longueur du contenu. */
.prog .prog-cta{--accent:var(--cta);--accent-soft:var(--cta-soft);--accent-rgb:var(--cta-rgb);--on-accent:var(--on-cta);
  margin-top:auto;align-self:stretch;justify-content:center;
  display:flex;align-items:center;gap:var(--space-2);
  padding:14px 22px;border-radius:var(--radius-ui);
  background:linear-gradient(165deg, var(--accent-soft), var(--accent));color:var(--on-accent);
  font-family:var(--font-mono);font-size:.78rem;font-weight:600;
  letter-spacing:var(--tracking-wide);text-transform:uppercase;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.30),0 6px 20px rgba(8,20,32,.35),0 0 28px rgba(var(--accent-rgb),.40);
  transition:filter var(--dur) var(--ease-out), transform var(--dur) var(--ease-out);}
.prog:hover .prog-cta{filter:brightness(1.06);transform:translateY(-1px);}
/* Aligne le CTA sur .btn-primary en mode clair (ombres douces au lieu de dark-shadow). */
:root.light .prog .prog-cta{box-shadow:var(--shadow-card-light),0 0 26px rgba(var(--accent-rgb),.28);}
:root.light .prog:hover .prog-cta{box-shadow:var(--shadow-card-light),0 0 34px rgba(var(--accent-rgb),.4);}

/* 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(--eyebrow);}
.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;}
.contact-grid.contact-stack > .contact-form-card{grid-column:1 / -1;min-width:0;}
.contact-form-card form{max-width:100%;min-width:0;}
.contact-form-card .field{min-width:0;}
.contact-form-card .field input,
.contact-form-card .field select,
.contact-form-card .field textarea{width:100%;max-width:100%;min-width:0;box-sizing:border-box;}
@media(max-width:820px){.contact-grid.contact-stack{grid-template-columns:1fr;}}
@media(max-width:640px){.contact-grid.contact-stack > .contact-form-card{padding:var(--space-4);}}
.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);}
/* Consentements (RGPD, droit à l'image, newsletter) : phrases longues —
   pas de caps/tracking de libellé, texte courant lisible. */
.field label.optin-label{font-family:var(--font-ui);font-size:.82rem;font-weight:400;
  letter-spacing:normal;text-transform:none;color:var(--text-secondary);}
.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 select{
  appearance:none;-webkit-appearance:none;min-height:48px;padding-right:44px;cursor:pointer;
  background-image:
    linear-gradient(45deg,transparent 50%,var(--accent) 50%),
    linear-gradient(135deg,var(--accent) 50%,transparent 50%);
  background-position:calc(100% - 19px) 50%,calc(100% - 13px) 50%;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;
  color:var(--heading);font-weight:500;color-scheme:dark;}
.field select:invalid{color:var(--text-secondary);}
.field select:valid{color:var(--heading);}
.field select:hover{box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.55);}
.field select:disabled{cursor:not-allowed;opacity:.58;}
.field select option{background:var(--surface-raised);color:var(--text);}
.field select option:disabled{color:var(--text-secondary);}
.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);}}
.page-numeriklub-hub .nk-preins:has(> .nk-preins-form[hidden]){grid-template-columns:1fr;}

/* 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(--eyebrow);
  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(--heading);}
.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;}
.campus-map-directions{display:flex;align-items:center;justify-content:center;gap:6px;
  min-height:44px;padding:var(--space-2) var(--space-3);border-top:1px solid var(--border);
  background:var(--surface);font-size:var(--text-sm);font-weight:750;text-align:center;}

/* cta final */
.cta-final{position:relative;overflow:hidden;border-radius:var(--radius-lg);text-align:left;
  padding:var(--space-9) var(--space-7);
  background:var(--surface);border:1px solid var(--border);
  box-shadow:var(--shadow-card);}
.cta-final h2{font-size:var(--text-4xl);max-width:18ch;margin:0;}
.cta-final p{color:var(--text-secondary);max-width:52ch;margin:var(--space-4) 0 0;}
.cta-final .hero-cta{justify-content:flex-start;margin-top:var(--space-6);}
.cta-final > *{position:relative;z-index:1;}

/* footer */
/* =========================================================
   Chrome épuré des landing pages de campagne (/lp/*)
   Nav minimale (logo + WhatsApp + langue/thème) et footer réduit
   (mentions légales + RGPD) — un seul objectif de conversion.
   ========================================================= */
.nav-bare-inner{justify-content:space-between;max-width:1200px;padding-inline:var(--space-6);}
.lp-bare-brand{gap:0;}
.lp-bare-lockup{height:34px;width:auto;display:block;opacity:.98;}
.lp-bare-lockup.is-tinted{aspect-ratio:var(--ar,425.7/111.39);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) no-repeat center/contain;mask:var(--logo) no-repeat center/contain;}
.lp-bare-menu{display:flex;align-items:center;gap:clamp(10px,1.8vw,24px);margin-inline:auto;}
.lp-bare-menu a{padding:8px 12px;color:var(--accent-secondary);border:1px solid rgba(var(--accent-secondary-rgb),.48);border-radius:999px;font-family:var(--font-ui);font-size:var(--text-sm);font-weight:700;letter-spacing:.01em;white-space:nowrap;box-shadow:inset 0 0 0 1px rgba(var(--accent-secondary-rgb),.06);transition:color .2s var(--ease-out),background .2s var(--ease-out),border-color .2s var(--ease-out),box-shadow .2s var(--ease-out);}
.lp-bare-menu a:hover,.lp-bare-menu a[aria-current="page"]{color:var(--text);background:rgba(var(--accent-secondary-rgb),.16);border-color:rgba(var(--accent-secondary-rgb),.9);box-shadow:0 0 0 3px rgba(var(--accent-secondary-rgb),.10);}
.lp-bare-tools{gap:10px;}
 html:has(.page-numeriklub-lp) .nav-numeriklub .nav-bare-inner{position:relative;}
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-tools{display:none;}
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-burger{
   display:grid;
   width:42px;
   height:42px;
   margin-left:auto;
   place-items:center;
   padding:0;
   border:1px solid rgba(var(--accent-secondary-rgb),.48);
   border-radius:10px;
   background:rgba(var(--accent-secondary-rgb),.12);
   color:var(--text);
   font-size:1.35rem;
   line-height:1;
 }
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-burger:focus-visible{
   outline:2px solid var(--accent-secondary);
   outline-offset:3px;
 }
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
   position:absolute;
   top:100%;
   right:24px;
   z-index:20;
   display:none;
   flex-direction:column;
   align-items:stretch;
   gap:6px;
   min-width:280px;
   margin:0;
   padding:10px;
   border:1px solid rgba(var(--accent-secondary-rgb),.38);
   border-radius:0 0 14px 14px;
   background:#0B1E2E;
   box-shadow:0 16px 28px rgba(8,20,32,.28);
 }
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu.open{display:flex;}
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{display:block;text-align:center;}
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu-lang{
   align-self:center;
   margin-top:4px;
   border:1px solid rgba(220,231,239,.24);
 }
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu-lang button{
   min-width:54px;
   color:#B3C8D8;
 }
 html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu-lang button.active{
   color:#081420;
   background:var(--nk-cyan,#3db4e7);
 }
@media(max-width:760px){
   /* Sur mobile, le chrome Numériklub reste réduit au logo et au burger. Les
      quatre offres restent disponibles dans le panneau repliable. */
  .nav-bare-inner{flex-wrap:wrap;row-gap:8px;}
  .lp-bare-menu{order:3;flex:0 0 100%;justify-content:center;padding-top:4px;border-top:1px solid var(--border);}
  .lp-bare-tools .lp-bare-cta{width:38px;padding:0;gap:0;}
  .lp-bare-tools .lp-bare-cta .btn-wa-label{display:none;}
  html:has(.page-numeriklub-lp) .nav-numeriklub .nav-bare-inner{
    position:relative;
    flex-wrap:nowrap;
    row-gap:0;
    padding:10px 16px;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
    right:16px;
    left:16px;
    min-width:0;
    order:initial;
    flex:initial;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{
    display:block;
    text-align:center;
  }
}
 @media(min-width:761px){
   /* Le burger et son panneau sont réservés au mobile. Sur desktop, les
      parcours et la langue restent visibles directement dans la navigation. */
   html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-burger{
     display:none;
   }
   html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
     position:static;
     display:flex;
     flex-direction:row;
     align-items:center;
     min-width:0;
     margin:0 auto;
     padding:0;
     border:0;
     border-radius:0;
     background:transparent;
     box-shadow:none;
   }
   html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{
     display:block;
   }
   html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu-lang{
     margin-top:0;
   }
 }
.footer-bare .lp-bare-footer{display:flex;flex-wrap:wrap;align-items:center;gap:10px var(--space-5);
  justify-content:center;text-align:center;}
.lp-bare-legal{display:inline-flex;gap:var(--space-4);}
.lp-bare-legal a{color:var(--text-secondary);font-size:var(--text-sm);transition:var(--dur);}
.lp-bare-legal a:hover{color:var(--accent);}
.lp-bare-rgpd,.lp-bare-rights{color:var(--text-muted);font-size:var(--text-xs);}
 /* À 320 px, le logo et le burger restent dans le viewport. */
@media(max-width:360px){
  .nav-bare-inner{padding-inline:10px;gap:8px;}
  .lp-bare-lockup{height:28px;}
  .lp-bare-menu{gap:8px;}
   .lp-bare-menu a{font-size:var(--text-xs);padding-inline:8px;}
  .lp-bare-tools{gap:6px;}
  .lp-bare-cta{width:38px;height:38px;padding:0;gap:0;}
  .lp-bare-cta .btn-wa-label{display:none;}
  .lp-bare-cta .btn-wa-ic{margin:0;}
  .lang-toggle button{min-width:34px;padding-inline:5px;}
  .lang-toggle button .lang-code{font-size:0;}
}
@media(max-width:620px){
  .footer-bare .lp-bare-footer{flex-direction:column;gap:8px;}
}

.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));}
.campaign-announcement{position:relative;z-index:41;background:var(--nk-yellow,#FFD447);color:var(--nk-blue-ink,#0E2438);border-bottom:1px solid rgba(14,36,56,.22);}
.campaign-announcement-inner{display:flex;align-items:center;gap:clamp(12px,2.5vw,32px);width:min(100%,1280px);min-height:56px;margin:0 auto;padding:7px 20px;}
.campaign-announcement-main{display:flex;align-items:center;gap:clamp(12px,2vw,24px);min-width:0;flex:1;}
.campaign-announcement-badge-link{display:inline-flex;flex:0 0 auto;color:inherit;text-decoration:none;}
.campaign-announcement-badge{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;padding:6px 10px;border-radius:999px;background:var(--nk-blue-ink,#0E2438);color:#FFFFFF;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:900;letter-spacing:.04em;white-space:nowrap;}
.campaign-announcement-viewport{height:40px;width:auto;max-width:none;min-width:0;flex:1;
  overflow:hidden;}
.campaign-announcement-track{min-height:40px;gap:clamp(28px,5vw,72px);padding-block:4px;font-size:var(--text-sm);font-weight:700;animation-duration:34s;}
.campaign-announcement-segment{display:inline-flex;align-items:center;gap:12px;flex:0 0 auto;}
.campaign-announcement-copy{color:var(--nk-blue-ink,#0E2438);font-weight:800;}
.campaign-announcement-number{font-style:italic;font-weight:900;}
.campaign-announcement-number em{font-style:italic;font-weight:900;}
.campaign-announcement-script{font-style:italic;font-weight:900;}
.campaign-announcement-separator{font-size:1rem;font-weight:900;color:var(--nk-blue-ink,#0E2438);}
.campaign-announcement-cta{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:0 0 auto;padding:10px 14px;border-radius:10px;background:#0E2438;color:#FFFFFF;font-size:var(--text-xs);font-weight:900;white-space:nowrap;box-shadow:0 5px 14px rgba(8,20,32,.3);transition:background var(--dur),transform var(--dur);}
.campaign-announcement-cta:hover,.campaign-announcement-cta:focus-visible{background:#071725;color:#FFFFFF;transform:translateY(-1px);}
.campaign-announcement-cta:focus-visible{outline:2px solid var(--nk-yellow,#FFD447);outline-offset:3px;}
.campaign-announcement-badge-link:focus-visible{outline:2px solid var(--nk-blue-ink,#0E2438);outline-offset:3px;border-radius:999px;}
.campaign-announcement-cta-mobile{display:none;}
.campaign-announcement-label-mobile{display:none;}
.campaign-announcement-whatsapp{display:none;}
/* Promotional copy is desktop-only; booking controls keep their own layout. */
@media (width < 768px) {
  .campaign-announcement { display: none !important; }
}
@media(prefers-reduced-motion:reduce){
  .campaign-announcement-viewport{height:auto;}
  .campaign-announcement-track{width:100%;justify-content:flex-start;flex-wrap:wrap;white-space:normal;}
}
@media(max-width:700px){
  .campaign-announcement-inner{gap:10px;padding-inline:12px;}
  .campaign-announcement-main{gap:10px;}
  .campaign-announcement-badge{padding-inline:8px;font-size:var(--text-xs);letter-spacing:0;}
  .campaign-announcement-cta{padding:9px 10px;font-size:var(--text-xs);}
}
@media(max-width:520px){
  .campaign-announcement-inner{align-items:stretch;flex-wrap:wrap;}
  .campaign-announcement-main{width:100%;flex-basis:100%;}
  .campaign-announcement-viewport{height:36px;}
  .campaign-announcement-track{min-height:36px;padding-block:3px;font-size:var(--text-xs);}
  .campaign-announcement-cta{margin-left:auto;}
}
.footer-campaign{background:linear-gradient(180deg,#0B1E2E,#081420);color:#DCE7EF;}
.footer-campaign-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:var(--space-9);align-items:start;}
.footer-campaign-brand{max-width:440px;}
.footer-campaign-brand .muted{max-width:34ch;margin-top:var(--space-4);color:#DCE7EF;}
.footer-campaign-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-7);}
.footer-campaign-links a,.footer-campaign-legal a{display:block;color:var(--text-secondary);font-size:var(--text-sm);padding-block:4px;}
.footer-campaign-links a:hover,.footer-campaign-legal a:hover{color:var(--accent-secondary);}
.footer-campaign-links h5{margin-bottom:var(--space-3);color:#F4F8FB;}
.footer-trust{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--space-5);}
.footer-trust span{padding:6px 9px;border:1px solid rgba(220,231,239,.18);border-radius:999px;color:#DCE7EF;font-size:var(--text-xs);}
.footer-campaign .footer-social{display:flex;gap:8px;margin-top:var(--space-5);}
.footer-campaign .footer-social a{display:grid;place-items:center;width:36px;height:36px;border:1px solid rgba(220,231,239,.2);border-radius:50%;color:#DCE7EF;font-size:var(--text-xs);}
.footer-campaign .footer-social-icon{display:block;width:18px;height:18px;}
.footer-campaign-bottom{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-top:var(--space-8);padding-top:var(--space-5);border-top:1px solid rgba(220,231,239,.14);color:rgba(220,231,239,.65);font-size:var(--text-xs);}
.footer-campaign-legal{display:flex;flex-wrap:wrap;gap:var(--space-4);}
.nk-values-strip .nk-value-card{height:100%;padding:var(--space-5);border-top:3px solid var(--accent-secondary);}
.nk-values-strip .nk-value-card h3{font-size:var(--text-lg);}
.nk-values-strip .nk-value-card .card-body{font-size:var(--text-sm);}
.page-numeriklub-lp > section#questions{--bg-deep:var(--nk-bg-soft);--bg:var(--nk-bg-soft);--surface:#F7FBFE;--surface-raised:#FFFFFF;--elevation:#FFFFFF;--text:var(--nk-blue-ink);--text-secondary:var(--nk-blue-muted);--text-muted:rgba(var(--nk-blue-ink-rgb),.65);--heading:var(--nk-blue-ink);--heading-soft:var(--nk-blue-mid);--eyebrow:var(--nk-blue-muted);--tint:var(--nk-blue-ink-rgb);--border:rgba(var(--nk-blue-ink-rgb),.16);--border-strong:rgba(var(--nk-blue-ink-rgb),.24);background:var(--nk-bg-soft)!important;color:var(--text);}
.cta-reassurances{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:var(--space-5);}
.cta-reassurances span{padding:7px 11px;border:1px solid currentColor;border-radius:999px;color:var(--heading);font-size:var(--text-xs);font-weight:700;}
@media(max-width:700px){
  .footer-campaign-grid{grid-template-columns:1fr;gap:var(--space-7);}
  .footer-campaign-brand{max-width:none;}
  .footer-campaign-bottom{align-items:flex-start;flex-direction:column;gap:8px;}
}

/* =========================================================
   Numériklub LP — campagne éditoriale
   Cette couche rapproche la landing du langage de la campagne de référence
   sans modifier le contenu, les routes ou les composants interactifs.
   ========================================================= */
:root{
  --nk-orange:#F18A07;
  --nk-orange-rgb:241,138,7;
  --nk-orange-soft:#FFB52E;
  --nk-cyan:#3db4e7;
  --nk-cyan-rgb:61,180,231;
  --nk-yellow:#FFD447;
  --nk-card-outline:#718596;
  --nk-wire-outline:#A2DBF4;
  --nk-blue-ink:#0E2438;
  --nk-blue-ink-rgb:14,36,56;
  --nk-blue-deep:#08212F;
  --nk-blue-deep-rgb:8,33,47;
  --nk-blue-mid:#155776;
  --nk-blue-muted:#2B627B;
  --nk-blue-soft:#EAF7FD;
  --nk-blue-soft-2:#D8F0FA;
  --nk-blue-dark:#0E3044;
  --nk-blue-dark-surface:#174763;
  --nk-blue-dark-raised:#1D5874;
  --nk-blue-dark-elevated:#347A96;
  --nk-blue-light:#BFE6F4;
  --nk-blue-light-rgb:191,230,244;
}

/* Le chrome de campagne reste sombre même quand le visiteur a choisi le thème
   clair : le hero et la navigation forment un seul bloc de marque. */
html:has(.page-numeriklub-lp) .nav-numeriklub{
  --text:#F4F8FB;
  --text-secondary:#B3C8D8;
  --text-muted:rgba(220,231,239,.72);
  --accent-secondary:var(--nk-cyan);
  --accent-secondary-rgb:61,180,231;
  background:rgba(8,20,32,.94);
  border-bottom-color:rgba(220,231,239,.16);
  box-shadow:0 8px 26px rgba(8,20,32,.28);
}
html:has(.page-numeriklub-lp) .nav-numeriklub .nav-bare-inner{
  min-height:72px;
  padding-block:10px;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-lockup{
  height:42px;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
  gap:clamp(8px,1.8vw,24px);
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{
  border:0;
  border-radius:8px;
  padding:10px 12px;
  color:#DCE7EF;
  box-shadow:none;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a:hover,
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a[aria-current="page"]{
  color:#fff;
  background:rgba(61,180,231,.12);
  border-color:transparent;
  box-shadow:inset 0 -2px 0 var(--nk-cyan);
}
html:has(.page-numeriklub) .nav-numeriklub .lp-bare-cta{
  background:#18B96B;
  box-shadow:0 6px 18px rgba(24,185,107,.25);
}
html:has(.page-numeriklub) .nav-numeriklub .lp-bare-cta:hover{
  background:#22C977;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lang-toggle,
html:has(.page-numeriklub-lp) .nav-numeriklub .theme-toggle{
  border-color:rgba(220,231,239,.24);
}

/* Hero : grande surface sombre, copy lisible à gauche et illustration libre à
   droite. La composition existante (art, stats, CTA, logos) est conservée. */
.page-numeriklub-lp > .page-hero{
  min-height:clamp(590px,calc(100svh - 170px),740px);
  overflow:hidden;
  isolation:isolate;
  background:
    radial-gradient(55% 90% at 84% 30%,rgba(24,199,208,.18),transparent 66%),
    radial-gradient(44% 70% at 8% 96%,rgba(241,138,7,.20),transparent 68%),
    linear-gradient(135deg,#081420 0%,#0B1E2E 58%,#12354B 100%);
}
.page-numeriklub-lp > .page-hero::after{
  content:"";
  position:absolute;
  inset:auto 0 0;
  height:34%;
  z-index:0;
  pointer-events:none;
  background:linear-gradient(180deg,transparent,rgba(8,20,32,.5));
}
.page-numeriklub-lp > .page-hero .hero-bg{
  opacity:.9;
  background:
    radial-gradient(circle at 76% 22%,rgba(255,212,71,.14) 0 2px,transparent 3px),
    radial-gradient(circle at 16% 68%,rgba(24,199,208,.16) 0 2px,transparent 3px),
    linear-gradient(135deg,rgba(8,20,32,.3),transparent 65%);
}
.page-numeriklub-lp > .page-hero > .container{
  position:relative;
  z-index:2;
  display:grid;
  grid-template-columns:minmax(0,.82fr) minmax(420px,1.18fr);
  grid-template-rows:auto auto auto 1fr auto;
  align-content:center;
  align-items:start;
  column-gap:clamp(28px,6vw,104px);
  min-height:clamp(540px,calc(100svh - 180px),660px);
  padding-top:clamp(10px,1.8vw,24px);
}
.page-numeriklub-lp > .page-hero > .container > :not(.hero-art):not(.hero-rider):not(.hero-marquee){
  grid-column:1;
}
.page-numeriklub-lp > .page-hero h1{
  max-width:16ch;
  margin-top:10px;
  font-size:clamp(2.7rem,5.4vw,5rem);
  line-height:.98;
  letter-spacing:-.045em;
}
/* Le hub partage les visuels et le contenu de la landing, mais porte aussi
   sa classe LP pour conserver les styles de sections. Son conteneur doit donc
   repasser en flux éditorial comme celui de la landing, sinon la grille
   générique rétrécit la colonne texte et décale la scène. */
.page-numeriklub-hub > .page-hero > .container{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  padding-top:clamp(6px,1vw,12px);
}
.page-numeriklub-lp > .page-hero .hero-title-secondary{
  max-width:16ch;
  margin:clamp(.6rem,1.2vw,1rem) 0 0;
  color:var(--heading);
  font-size:clamp(1.65rem,3.2vw,2.8rem);
  line-height:1.04;
  letter-spacing:-.035em;
}
.page-numeriklub-lp > .page-hero .hero-title-secondary.hero-body-copy,
.page-numeriklub-lp > .page-hero .hero-lead-highlight.hero-body-copy{
  max-width:52ch;
  color:var(--text-secondary);
  font-size:clamp(1.06rem,1.55vw,1.3rem);
  font-weight:600;
  line-height:1.58;
  letter-spacing:0;
}
.page-numeriklub-lp > .page-hero .hero-title-secondary.hero-body-copy{
  margin-top:0;
}
.page-numeriklub-lp > .page-hero .hero-lead-highlight.hero-body-copy{
  margin-top:clamp(.8rem,1.5vw,1.2rem) !important;
}
.page-numeriklub-lp > .page-hero .hero-lead-heading{
  max-width:30ch;
  margin:clamp(.8rem,1.6vw,1.25rem) 0 0;
  color:#F4F8FB;
  font-size:clamp(1.2rem,1.9vw,1.55rem);
  line-height:1.22;
  font-weight:800;
}
.page-numeriklub-lp > .page-hero .eyebrow{
  color:var(--nk-yellow);
  font-size:clamp(.74rem,1vw,.85rem);
  letter-spacing:.12em;
}
.page-numeriklub-lp > .page-hero .hero-lead-highlight{
  max-width:42ch;
  margin-top:clamp(20px,2vw,28px);
}
.page-numeriklub-lp > .page-hero .hero-lead-highlight strong{
  color:#F4F8FB;
  font-size:clamp(1.1rem,1.7vw,1.45rem);
}
.page-numeriklub-lp > .page-hero .hero-sub{
  max-width:47ch;
  color:#B3C8D8;
}
.page-numeriklub-lp > .page-hero .hero-stats{
  margin-top:clamp(24px,3vw,38px);
  gap:12px;
}
.page-numeriklub-lp > .page-hero .hero-stats .stat{
  min-width:126px;
  padding:14px 16px;
  border:1px solid rgba(220,231,239,.22);
  border-top:2px solid var(--nk-orange);
  background:rgba(8,20,32,.36);
}
.page-numeriklub-lp > .page-hero .hero-stats .stat:nth-child(2){border-top-color:var(--nk-cyan);}
.page-numeriklub-lp > .page-hero .hero-stats .stat:nth-child(3){border-top-color:var(--nk-yellow);}
.page-numeriklub-lp > .page-hero .hero-stats .stat strong{font-size:1.25rem;color:#fff;}
.page-numeriklub-lp > .page-hero .hero-cta{
  margin-top:clamp(24px,3vw,34px);
}
.page-numeriklub-lp > .page-hero .hero-art{
  position:absolute;
  grid-column:2;
  grid-row:1 / span 5;
  align-self:end;
  justify-self:center;
  width:min(48vw,690px);
  height:clamp(470px,70vh,660px);
  max-height:clamp(470px,70vh,660px);
  object-fit:contain;
  object-position:center bottom;
  filter:drop-shadow(0 28px 36px rgba(0,0,0,.34));
  transform:translateY(-4%);
}
.page-numeriklub-lp > .page-hero .hero-art > img{
  width:100%;
  height:100%;
  object-fit:contain;
}
.page-numeriklub-lp > .page-hero .hero-rider{z-index:3;}
.page-numeriklub-lp > .page-hero .hero-marquee{
  grid-column:1 / -1;
  grid-row:6;
  margin-top:24px;
  padding-block:12px;
  border-top:1px solid rgba(220,231,239,.18);
  background:rgba(8,20,32,.28);
}

/* Repères courts directement sous le hero : la référence utilise cette zone
   pour rendre l'offre compréhensible avant les cartes. Les valeurs restent
   limitées à des faits déjà portés par le contenu Numériklub. */
.page-numeriklub-lp > .nk-lp-trust-strip{
  position:relative;
  z-index:2;
  margin-top:-1px;
  background:#081420;
  border-top:1px solid rgba(220,231,239,.16);
  border-bottom:1px solid rgba(220,231,239,.16);
}
.page-numeriklub-lp .nk-lp-trust-inner{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.page-numeriklub-lp .nk-lp-trust-item{
  display:flex;
  min-height:92px;
  align-items:center;
  gap:12px;
  padding:18px clamp(14px,2vw,28px);
  border-right:1px solid rgba(220,231,239,.14);
}
.page-numeriklub-lp .nk-lp-trust-item:first-child{border-left:1px solid rgba(220,231,239,.14);}
.page-numeriklub-lp .nk-lp-trust-value{
  flex:none;
  font-size:clamp(1.45rem,2.5vw,2.15rem);
  line-height:1;
  letter-spacing:-.05em;
}
.page-numeriklub-lp .nk-lp-trust-value.accent-0{color:var(--nk-orange);}
.page-numeriklub-lp .nk-lp-trust-value.accent-1{color:var(--nk-cyan);}
.page-numeriklub-lp .nk-lp-trust-value.accent-2{color:var(--nk-yellow);}
.page-numeriklub-lp .nk-lp-trust-item span{
  color:#DCE7EF;
  font-size:.88rem;
  line-height:1.25;
}

/* Sections : alternance claire nette, titres éditoriaux plus courts visuellement
   et cartes suffisamment contrastées pour porter le contenu dense. */
.page-numeriklub-lp > section.section{
  position:relative;
  padding-block:clamp(72px,8vw,116px);
}
.page-numeriklub-lp > section.section .section-head{
  max-width:760px;
  margin-bottom:clamp(28px,4vw,52px);
}
.page-numeriklub-lp > section.section .section-head .num{
  color:var(--nk-orange);
  font-weight:800;
  letter-spacing:.1em;
}
.page-numeriklub-lp > section.section .section-head h2{
  max-width:19ch;
  font-size:clamp(2rem,4vw,3.5rem);
  line-height:1.02;
  letter-spacing:-.035em;
}
.page-numeriklub-lp > section.section .section-head p{
  max-width:60ch;
  margin-top:16px;
  font-size:1.05rem;
  line-height:1.6;
}
.page-numeriklub-lp > section#nk-offers,
.page-numeriklub-lp > section#nk-format-choice,
.page-numeriklub-lp > section#calendrier-sec,
.page-numeriklub-lp > section#lieux{
  background:
    linear-gradient(180deg,var(--nk-blue-soft) 0%,var(--nk-bg-light) 100%) !important;
}
.page-numeriklub-lp > section#pourquoi,
.page-numeriklub-lp > section#reserver{
  background:
    linear-gradient(180deg,var(--nk-blue-soft-2) 0%,#C5E6F3 100%) !important;
}
.page-numeriklub-lp > section#projets,
.page-numeriklub-lp > section#temoignages,
.page-numeriklub-lp > section#rappel{
  background:
    radial-gradient(80% 90% at 90% 0%,rgba(var(--nk-cyan-rgb),.12),transparent 60%),
    linear-gradient(180deg,var(--nk-blue-dark) 0%,#0B283A 100%) !important;
}
.page-numeriklub-lp > section .card{
  border:1px solid rgba(var(--nk-blue-ink-rgb),.14);
  border-radius:14px;
  background:#fff;
  box-shadow:0 12px 26px rgba(var(--nk-blue-ink-rgb),.09);
}
.page-numeriklub-lp > section .card:hover{
  border-color:rgba(241,138,7,.5);
  box-shadow:0 16px 32px rgba(var(--nk-blue-ink-rgb),.14);
}
.page-numeriklub-lp > section#projets .card,
.page-numeriklub-lp > section#temoignages .card,
.page-numeriklub-lp > section#rappel .card{
  border-color:rgba(220,231,239,.18);
  background:rgba(32,65,90,.72);
  box-shadow:0 14px 30px rgba(3,14,24,.24);
}
.page-numeriklub-lp > section#nk-offers .grid{
  align-items:stretch;
}
.page-numeriklub-lp > section#nk-offers .card.prog{
  border-top:4px solid var(--nk-orange);
  padding:clamp(22px,3vw,34px);
}
.page-numeriklub-lp > section#nk-offers .card.prog:nth-child(2){
  border-top-color:var(--nk-cyan);
}
.page-numeriklub-lp .nk-card-price{
  margin-top:auto;
  color:var(--nk-blue-ink);
  font-size:clamp(1.65rem,3vw,2.35rem);
  font-weight:900;
  letter-spacing:-.04em;
}
.page-numeriklub-lp .nk-offer-fomo{
  color:#A75A00;
}
.page-numeriklub-lp .nk-offer-section-label{
  color:var(--nk-blue-mid);
}
.page-numeriklub-lp .nk-offer-toggle{
  min-height:44px;
  color:var(--nk-blue-ink);
  border-color:rgba(var(--nk-blue-ink-rgb),.18);
}

/* Thématiques / galerie / pédagogie : médias plus présents, sans changer les
   fichiers utilisés ni leur ordre éditorial. */
.page-numeriklub-lp .community-mosaic,
.page-numeriklub-lp .nk-photo-grid{
  gap:18px;
}
.page-numeriklub-lp .community-mosaic-feature,
.page-numeriklub-lp .community-mosaic-card,
.page-numeriklub-lp .nk-photo-card{
  border-radius:14px;
  overflow:hidden;
  box-shadow:0 12px 26px rgba(8,20,32,.18);
}
.page-numeriklub-lp .community-mosaic img,
.page-numeriklub-lp .nk-photo-card img{
  transition:transform .45s var(--ease-out);
}
.page-numeriklub-lp .community-mosaic figure:hover img,
.page-numeriklub-lp .nk-photo-card:hover img{
  transform:scale(1.035);
}
.page-numeriklub-lp .community-mosaic figcaption,
.page-numeriklub-lp .nk-photo-card figcaption{
  padding:12px 14px;
  background:#fff;
  color:var(--nk-blue-ink);
  font-weight:750;
}

/* Conversion finale et formulaire : panneau sombre avec accent chaud, sans
   toucher au formulaire contractuel rendu par blockContact. */
.page-numeriklub-lp > section#rappel .section-head h2,
.page-numeriklub-lp > section#rappel .section-head p,
.page-numeriklub-lp > section#rappel .section-head .num{
  color:#F4F8FB;
  background:none;
  -webkit-text-fill-color:initial;
}
.page-numeriklub-lp > section#rappel .contact-grid{
  align-items:start;
}
.page-numeriklub-lp > section#rappel .contact-form-card{
  border-top:3px solid var(--nk-orange);
}
.page-numeriklub-lp > section#rappel .field input,
.page-numeriklub-lp > section#rappel .field select,
.page-numeriklub-lp > section#rappel .field textarea{
  background:rgba(8,20,32,.38);
  color:#F4F8FB;
}

/* Formulaire de rappel Numériklub : la prise de contact est une composition
   éditoriale à deux colonnes, distincte des formulaires génériques du site.
   Les champs restent ceux de data-contact-form pour conserver le contrat Hub. */
.page-numeriklub-lp > section#rappel.nk-callback-section{
  background:
    radial-gradient(70% 100% at 0% 0%,rgba(var(--nk-cyan-rgb),.13),transparent 62%),
    var(--nk-blue-deep) !important;
  color:#F4F8FB;
}
.nk-callback-grid{
  display:grid;
  grid-template-columns:minmax(0,.86fr) minmax(420px,1.14fr);
  gap:clamp(34px,6vw,92px);
  align-items:center;
}
.nk-callback-copy{max-width:560px;}
.nk-callback-badge{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:7px 11px;
  border-radius:4px;
  background:var(--nk-yellow);
  color:var(--nk-blue-ink);
  font-family:var(--font-mono);
  font-size:.75rem;
  font-weight:800;
  letter-spacing:.08em;
  line-height:1;
}
.nk-callback-section-head{
  position:absolute;
  width:1px;
  height:1px;
  margin:-1px;
  padding:0;
  overflow:hidden;
  clip:rect(0 0 0 0);
  white-space:nowrap;
  border:0;
}
.nk-callback-copy h2{
  max-width:13ch;
  margin:22px 0 16px;
  color:#F4F8FB;
  font-size:clamp(2.4rem,4.7vw,4.35rem);
  font-weight:800;
  line-height:.98;
  letter-spacing:-.045em;
}
.nk-callback-intro{
  max-width:54ch;
  color:#B9CEDB;
  font-size:1.05rem;
  line-height:1.7;
}
.nk-callback-whatsapp{
  max-width:470px;
  margin-top:34px;
  padding:20px 22px;
  border:1px solid rgba(37,211,102,.44);
  border-radius:10px;
  background:rgba(20,57,52,.72);
  box-shadow:0 18px 42px rgba(0,0,0,.14);
}
.nk-callback-whatsapp strong{
  display:block;
  color:#F4F8FB;
  font-size:1.03rem;
}
.nk-callback-whatsapp strong span{color:#25D366;}
.nk-callback-whatsapp p{
  margin:7px 0 15px;
  color:#B9CEDB;
  font-size:.92rem;
}
.nk-callback-whatsapp-action{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px;
}
.nk-callback-whatsapp-action .btn{
  min-height:42px;
  padding:10px 16px;
}
.nk-callback-whatsapp-action > span{
  color:#92B7A7;
  font-size:.78rem;
  font-weight:700;
}
.nk-callback-form-card{
  min-width:0;
  padding:clamp(24px,3.3vw,38px) !important;
  border:0 !important;
  border-top:4px solid var(--nk-orange) !important;
  border-radius:10px;
  background:#FFFFFF !important;
  box-shadow:0 24px 62px rgba(0,0,0,.22);
}
.nk-callback-form-card .card-title{
  color:var(--nk-blue-ink) !important;
  font-size:clamp(1.45rem,2.2vw,2rem);
}
.nk-callback-form-sub{
  max-width:48ch;
  margin:8px 0 24px;
  color:var(--nk-blue-muted);
  font-size:.92rem;
  line-height:1.55;
}
.nk-callback-form .field{margin-bottom:17px;}
.nk-callback-form .field label{
  color:var(--nk-blue-muted);
  font-family:var(--font-ui);
  font-size:.75rem;
  font-weight:800;
  letter-spacing:.06em;
}
.nk-callback-form-card .field input,
.nk-callback-form-card .field select,
.nk-callback-form-card .field textarea{
  min-height:46px;
  border:1px solid rgba(var(--nk-blue-ink-rgb),.16);
  border-radius:5px;
  background:#F4F7FA !important;
  color:var(--nk-blue-ink) !important;
  box-shadow:none;
}
.nk-callback-form-card .field input::placeholder{color:#8A9BA7;}
.nk-callback-form-card .field input:focus,
.nk-callback-form-card .field select:focus{
  border-color:var(--nk-cyan);
  box-shadow:0 0 0 3px rgba(var(--nk-cyan-rgb),.16);
}
.nk-callback-form-card .field select{
  color-scheme:light;
  background-image:
    linear-gradient(45deg,transparent 50%,var(--nk-blue-mid) 50%),
    linear-gradient(135deg,var(--nk-blue-mid) 50%,transparent 50%) !important;
}
.nk-callback-form-card .field select:invalid{color:#8A9BA7;}
.nk-callback-form-card .field select option{
  background:#FFFFFF;
  color:var(--nk-blue-ink);
}
.nk-callback-field-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
}
.nk-callback-form .field-rgpd{
  margin:1px 0 20px !important;
}
.nk-callback-form .field-rgpd .optin-label{
  color:var(--nk-blue-muted) !important;
}
.nk-callback-form .field-rgpd input{
  accent-color:var(--nk-orange);
}
.nk-callback-form > .btn{
  width:100%;
  min-height:50px;
  justify-content:center;
}
.page-numeriklub-lp > section#rappel.nk-callback-section .nk-lp-faq-block{
  margin-top:clamp(56px,8vw,96px);
}

@media(max-width:900px){
  .nk-callback-grid{
    grid-template-columns:1fr;
    gap:42px;
  }
  .nk-callback-copy{max-width:680px;}
  .nk-callback-copy h2{max-width:16ch;}
  .nk-callback-form-card{max-width:720px;}
}
@media(max-width:560px){
  .nk-callback-copy h2{font-size:clamp(2.35rem,12vw,3.4rem);}
  .nk-callback-whatsapp{padding:17px;}
  .nk-callback-whatsapp-action{align-items:flex-start;flex-direction:column;gap:8px;}
  .nk-callback-field-grid{grid-template-columns:1fr;gap:0;}
  .nk-callback-form-card{padding:22px 18px !important;}
}

.page-numeriklub-lp > section.cta-final-section{
  background:var(--nk-blue-deep) !important;
}
.page-numeriklub-lp > section.cta-final-section .cta-final{
  border:1px solid rgba(var(--nk-cyan-rgb),.28);
  border-radius:18px;
  background:
    radial-gradient(80% 130% at 95% 0%,rgba(var(--nk-cyan-rgb),.18),transparent 62%),
    radial-gradient(70% 120% at 0% 100%,rgba(241,138,7,.2),transparent 64%),
    var(--nk-blue-ink);
  box-shadow:0 22px 54px rgba(0,0,0,.26);
  color:#F7FCFF;
}
.page-numeriklub-lp > section.cta-final-section .cta-final h2{
  color:#FFFFFF;
  background:none;
  -webkit-text-fill-color:#FFFFFF;
}
.page-numeriklub-lp > section.cta-final-section .cta-final p,
.page-numeriklub-lp > section.cta-final-section .cta-final .form-note{
  color:rgba(247,252,255,.86);
}
.page-numeriklub-lp > section.cta-final-section .cta-final .cta-reassurances span{
  color:rgba(247,252,255,.88);
  border-color:rgba(247,252,255,.42);
}
.page-numeriklub-lp > section.cta-final-section .cta-final .btn-secondary{
  color:#FFFFFF;
  border-color:rgba(255,255,255,.72);
  background:rgba(255,255,255,.08);
}
.page-numeriklub-lp > section.cta-final-section .cta-final .btn-secondary:hover,
.page-numeriklub-lp > section.cta-final-section .cta-final .btn-secondary:focus-visible{
  color:var(--nk-blue-ink);
  border-color:#FFFFFF;
  background:#FFFFFF;
}
.page-numeriklub-lp > section.cta-final-section .cta-final .btn-primary{
  color:var(--nk-blue-deep);
  background:var(--nk-cyan);
}
.page-numeriklub-lp > section.cta-final-section .cta-final .btn-primary:hover,
.page-numeriklub-lp > section.cta-final-section .cta-final .btn-primary:focus-visible{
  color:var(--nk-blue-deep);
  background:#FFFFFF;
}

@media(max-width:900px){
  .page-numeriklub-lp > .page-hero{
    min-height:auto;
  }
  .page-numeriklub-lp > .page-hero > .container{
    display:flex;
    min-height:0;
    padding-top:clamp(42px,8vw,72px);
  }
  .page-numeriklub-lp > .page-hero h1{
    max-width:14ch;
    font-size:clamp(2.8rem,8vw,4.5rem);
  }
  .page-numeriklub-lp > .page-hero .hero-art{
    order:8;
    width:min(90vw,620px);
    max-height:54vh;
    margin:18px auto -8px;
  }
  .page-numeriklub-lp > .page-hero .hero-marquee{
    order:9;
    margin-top:8px;
    padding-block:8px;
  }
}
@media(max-width:620px){
  html:has(.page-numeriklub-lp) .nav-numeriklub .nav-bare-inner{
    min-height:64px;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-lockup{
    height:29px;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
    background:rgba(8,20,32,.86);
  }
  .page-numeriklub-lp > .page-hero:not(.page-hero-photo) > .container{
    padding-inline:20px;
  }
  .page-numeriklub-lp > .page-hero h1{
    font-size:clamp(2.45rem,12vw,3.6rem);
  }
  .page-numeriklub-lp > .page-hero .hero-stats{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    width:100%;
  }
  .page-numeriklub-lp > .page-hero .hero-stats .stat{
    min-width:0;
    padding:12px 9px;
  }
  .page-numeriklub-lp > .page-hero .hero-stats .stat strong{
    font-size:1rem;
  }
  .page-numeriklub-lp > .page-hero .hero-stats .stat span{
    font-size:.75rem;
  }
  .page-numeriklub-lp .nk-lp-trust-inner{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .page-numeriklub-lp .nk-lp-trust-item{
    min-height:72px;
    padding:14px 12px;
  }
  .page-numeriklub-lp .nk-lp-trust-item:nth-child(2n){
    border-right:0;
  }
  .page-numeriklub-lp .nk-lp-trust-item:nth-child(n+3){
    border-top:1px solid rgba(220,231,239,.14);
  }
  .page-numeriklub-lp .nk-lp-trust-value{
    font-size:1.45rem;
  }
  .page-numeriklub-lp .nk-lp-trust-item span{
    font-size:.76rem;
  }
  .page-numeriklub-lp > section.section{
    padding-block:64px;
  }
  .page-numeriklub-lp > section.section .section-head h2{
    font-size:clamp(2rem,10vw,2.8rem);
  }
  .page-numeriklub-lp > section#nk-offers .card.prog{
    padding:22px 18px;
  }
}
.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 p{display:block;color:var(--text-secondary);font-size:var(--text-sm);
  margin-bottom:10px;transition:var(--dur);}
/* Les liens du pied faisaient 25 px de haut : sous le seuil tactile de 44 px.
   La hauteur minimale absorbe l'ancienne marge, l'espacement visuel ne bouge
   quasiment pas mais la zone touchable double. */
.footer-col a{display:flex;align-items:center;min-height:44px;
  color:var(--text-secondary);font-size:var(--text-sm);margin-bottom:0;transition:var(--dur);}
.footer-col a:hover{color:var(--accent);}
.footer-social{display:flex;gap:10px;}
.footer-social a{width:44px;height:44px;border-radius:var(--radius-ui);display:grid;place-items:center;
  box-shadow:inset 0 0 0 1px var(--border-strong);margin:0;min-height:0;}
.footer-social-icon{display:block;width:18px;height:18px;}
.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;}
.gp-lead-paragraph + .gp-lead-paragraph{margin-top:var(--space-5);}
.gp-film-posters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-5);
  margin-top:var(--space-7);align-items:start;}
.gp-film-poster{min-width:0;margin:0;}
.gp-film-poster img{display:block;width:100%;aspect-ratio:2/3;object-fit:cover;object-position:center top;
  border:1px solid var(--border);border-radius:var(--radius-ui);background:var(--bg-deep);}
.gp-film-poster figcaption{margin-top:var(--space-3);font-size:var(--text-sm);
  font-weight:700;line-height:1.4;color:var(--text);}
@media(max-width:760px){
  .gp-film-posters{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5) var(--space-3);}
}
.hero-lead-highlight strong{display:block;font-size:clamp(1.15rem,2vw,1.42rem);line-height:1.3;color:var(--text);font-weight:800;}
.hero-lead-highlight span{display:block;margin-top:.35rem;}
.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;
  /* Les deux dernières cartes occupent une zone dédiée en bas : on réserve
     une vraie zone sous la scène pour éviter qu'elles ne se posent dessus. */
  min-height:clamp(940px,72vw,1040px);}
.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),
.nk-orbit-ring .nk-orbit-card:nth-child(8){bottom:-1%;width:clamp(185px,18vw,230px);}
.nk-orbit-ring .nk-orbit-card:nth-child(7){left:calc(50% - 250px);animation-delay:-3.2s;}
.nk-orbit-ring .nk-orbit-card:nth-child(8){left:calc(50% + 20px);animation-delay:-4.4s;}
.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;}
/* Titres des thématiques : Nunito bold en dégradé neutre CLAIR constant
   (les cartes orbit restent sombres dans les deux thèmes — ne pas utiliser
   --grad-heading qui bascule en bleu foncé en mode clair). */
.nk-orbit-name{
  font-family:var(--font-display);font-style:normal;font-weight:800;
  font-size:var(--text-lg);line-height:1.15;margin:0;color:var(--white);
}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .nk-orbit-name{
    background:linear-gradient(115deg,#F4F8FB 8%,#B3C8D8 92%);
    -webkit-background-clip:text;background-clip:text;color:transparent;
  }
}
.nk-orbit-chev{flex:none;margin-left:auto;width:24px;height:24px;border-radius:50%;
  display:grid;place-items:center;color:var(--heading);
  border:1px solid rgba(var(--tint),.28);background:rgba(var(--tint),.05);
  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;}
.nk-orbit-meta{display:block;margin-top:3px;font-family:var(--font-mono);
  font-size:var(--text-2xs);line-height:1.25;letter-spacing:.04em;
  color:rgba(255,255,255,.68);}

/* 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:rgba(var(--tint),.4);}

@media (hover:none) and (pointer:coarse){
  .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));}
}
/* Sans pointeur fin, toutes les fiches sont ouvertes en même temps :
   l'anneau absolu ferait alors se recouvrir les cartes. On réutilise la
   mise en grille responsive, même sur un grand écran tactile. */
@media (max-width:1024px), (hover:none) and (pointer:coarse){
  .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;}
.nk-lp-spirit-grid{position:relative;z-index:1;}
.nk-lp-spirit-card{height:100%;}

/* 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:rgba(var(--tint),.14);color:var(--heading);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(--heading);
  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(--heading);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:rgba(var(--tint),.09);color:var(--heading);
  border:1px solid rgba(var(--tint),.22);margin-bottom:var(--space-2);}
.nk-avatar-photo{padding:0;overflow:hidden;background:rgba(var(--tint),.06);}
.nk-avatar-photo img{width:100%;height:100%;object-fit:cover;object-position:center 22%;}
.nk-equipe-solo{display:flex;justify-content:center;}
.nk-equipe-solo .nk-member{align-items:center;text-align:center;max-width:520px;width:100%;}
/* Retour client : « photo du coordinateur en grand ». Seul dans sa section, il
   était réduit à une pastille de 76 px alors que le fichier fait 488 x 800.
   On passe donc au format portrait natif, à taille lisible. Les autres avatars
   (grille d'équipe, témoignages) gardent leur pastille ronde. */
.nk-equipe-solo .nk-avatar{
  width:min(230px,62vw);height:auto;aspect-ratio:488/800;
  border-radius:var(--radius-lg);margin-bottom:var(--space-4);
}
.nk-equipe-solo .nk-avatar-photo img{object-position:center top;}
.nk-equipe-contact{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3);margin-top:var(--space-6);}

/* 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:3;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(350px,38vw,500px);}
@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;} }

/* Les pages détaillées Numériklub ont des accroches plus longues que la home :
   réserver une colonne au texte évite que l’illustration recouvre les horaires,
   les dates et les tarifs. */
.page[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero-art > .container,
.page[data-page="/lp/numeriklub/petites-vacances"] > .page-hero-art > .container{
  padding-right:clamp(520px,52vw,660px);
}
.page[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero-art > .hero-art,
.page[data-page="/lp/numeriklub/petites-vacances"] > .page-hero-art > .hero-art{
  height:clamp(320px,40vw,520px);
  right:-3%;
  opacity:.86;
}
.page[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero-art h1,
.page[data-page="/lp/numeriklub/petites-vacances"] > .page-hero-art h1{
  max-width:22ch;
}
@media(max-width:1100px){
  .page[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero-art > .container,
  .page[data-page="/lp/numeriklub/petites-vacances"] > .page-hero-art > .container{
    padding-right:clamp(380px,46vw,500px);
  }
}
@media(max-width:760px){
  .page[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero-art > .container,
  .page[data-page="/lp/numeriklub/petites-vacances"] > .page-hero-art > .container{
    padding-right:0;
  }
}
/* Les règles de composition de la landing principale sont partagées par
   .page-numeriklub-lp ; les pages d’offre reviennent à un flux de hero simple
   pour conserver une colonne de texte lisible. Elles reprennent aussi le même
   repère vertical que le hub : l'eyebrow commence juste sous la navigation,
   plutôt qu'au milieu de la grande surface du hero. */
.page-numeriklub-lp[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > .page-hero{
  align-items:flex-start;
  padding-top:var(--space-3);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero > .container,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > .page-hero > .container{
  display:block;
  min-height:0;
  padding-top:clamp(6px,1vw,12px);
  column-gap:normal;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero > .container > :not(.hero-art):not(.hero-rider):not(.hero-marquee),
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > .page-hero > .container > :not(.hero-art):not(.hero-rider):not(.hero-marquee){
  grid-column:auto;
}

/* 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-secondary-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-secondary-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-secondary-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-secondary-rgb));
  box-shadow:0 0 10px rgb(var(--accent-secondary-rgb));animation:hsPulse 1.8s ease-in-out infinite;}
.hs-lab{font-family:var(--font-mono);font-size:var(--text-2xs);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-secondary-rgb),.5);}
.hs-unit{font-size:.6em;margin-left:2px;color:rgb(var(--accent-secondary-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-secondary-rgb),.5), rgb(var(--accent-secondary-rgb)));
   box-shadow:0 0 10px rgba(var(--accent-secondary-rgb),.8);}
.hero-screen-1{top:2%;right:11%;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;} }

/* Les écrans flottants type HUD alourdissaient le hero FC et répétaient le
   message déjà porté par l'image et le texte. L'illustration reste seule. */
.page-hero-screens .hero-screens{display: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:var(--text-2xs);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 : constellation d'outils avec anneaux satellites. */
.hero-orbit{position:absolute;inset:0;z-index:3;pointer-events:none;}
.hero-orbit::before,.hero-orbit::after{
  content:"";position:absolute;pointer-events:none;border-radius:50%;
  top:54%;left:77%;transform:translate(-50%,-50%) rotate(-18deg);
  border:1px solid rgba(var(--accent-secondary-rgb),.38);
  box-shadow:0 0 22px rgba(var(--accent-secondary-rgb),.22),inset 0 0 18px rgba(var(--accent-secondary-rgb),.06);
  animation:satelliteOrbit 18s linear infinite;
}
.hero-orbit::before{width:clamp(230px,28vw,410px);height:clamp(130px,17vw,245px);}
.hero-orbit::after{
  width:clamp(165px,20vw,295px);height:clamp(230px,32vw,455px);
  transform:translate(-50%,-50%) rotate(62deg);
  border-style:dashed;border-color:rgba(var(--accent-secondary-rgb),.30);
  animation-direction:reverse;animation-duration:24s;
}
/* 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(36px,3.4vw,52px);height:clamp(36px,3.4vw,52px);
  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:satelliteToolFloat 7s ease-in-out infinite;opacity:.95;
  filter:drop-shadow(0 8px 14px rgba(0,0,0,.3));will-change:transform;}
.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-secondary-rgb));
  filter:none;}
.hero-orbit .hero-tool-1{top:8%;left:82%;}
/* Laisser dégagé le visage du personnage sur le hero Formation Continue. */
.page[data-page="/formation-continue"] .hero-orbit .hero-tool-1{left:86%;}
.hero-orbit .hero-tool-2{top:16%;left:72%;}
.hero-orbit .hero-tool-3{top:35%;left:89%;}
.hero-orbit .hero-tool-4{top:43%;left:76%;}
.hero-orbit .hero-tool-5{top:63%;left:87%;}
.hero-orbit .hero-tool-6{top:72%;left:71%;}
.hero-orbit .hero-tool-1{animation-delay:-.4s;}
.hero-orbit .hero-tool-2{animation-delay:-1.8s;}
.hero-orbit .hero-tool-3{animation-delay:-3.1s;}
.hero-orbit .hero-tool-4{animation-delay:-4.5s;}
.hero-orbit .hero-tool-5{animation-delay:-2.4s;}
.hero-orbit .hero-tool-6{animation-delay:-5.3s;}
.hero-orbit .ho-spark{
  display:block;position:absolute;z-index:1;color:rgba(var(--accent-secondary-rgb),.9);
  font-size:clamp(14px,1.5vw,22px);line-height:1;
  text-shadow:0 0 14px rgba(var(--accent-secondary-rgb),.8);
  animation:satelliteSpark 3.8s ease-in-out infinite;
}
.hero-orbit .ho-spark-1{top:24%;left:72%;}
.hero-orbit .ho-spark-2{top:38%;left:92%;animation-delay:-1.2s;}
.hero-orbit .ho-spark-3{top:69%;left:77%;animation-delay:-2.4s;}
.hero-orbit .ho-spark-4{top:17%;left:84%;animation-delay:-.7s;}
@keyframes satelliteOrbit{
  from{transform:translate(-50%,-50%) rotate(-18deg);}
  to{transform:translate(-50%,-50%) rotate(342deg);}
}
@keyframes satelliteToolFloat{
  0%,100%{transform:translateY(0) rotate(-3deg);}
  50%{transform:translateY(-8px) rotate(3deg);}
}
@keyframes satelliteSpark{
  0%,100%{opacity:.35;transform:scale(.8) rotate(0deg);}
  50%{opacity:1;transform:scale(1.16) rotate(18deg);}
}
@media(max-width:760px){.hero-orbit{display:none;}}
@media(prefers-reduced-motion:reduce){
  .hero-tool,.ht-ic,.hero-orbit::before,.hero-orbit::after,.hero-orbit .ho-spark{animation:none;}
  .ht-scan{display:none;}
}

/* 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 .hero-art{
  /* Gros plan : la silhouette reste ancrée à droite mais dépasse sous le
     hero, ce qui coupe naturellement l'image au niveau des genoux. */
  height:clamp(700px,70vw,920px);right:clamp(-70px,-3vw,4px);
  bottom:clamp(-260px,-18vw,-120px);clip-path:none;
}
.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(--heading);}
.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(--text-secondary);font-weight:700;}
.fc-eq-res{font-family:var(--font-display);font-weight:700;color:var(--heading);}

/* Bande promo — vidéo d'une minute en tête de la page Formation Continue */
.fc-promo{display:grid;grid-template-columns:.82fr 1.18fr;gap:var(--space-7);align-items:center;}
.fc-promo-text h2{font-size:var(--text-2xl);margin:var(--space-2) 0 var(--space-3);}
.fc-promo-text p{margin:0;}
.fc-promo-video{width:100%;display:block;border-radius:var(--radius-lg);
  border:1px solid rgba(var(--accent-rgb),.28);box-shadow:0 18px 48px -22px var(--glow);background:#0E2438;}
@media(max-width:860px){ .fc-promo{grid-template-columns:1fr;gap:var(--space-5);} }

/* Vidéo de présentation d'un parcours */
.fc-pp-video{width:100%;max-width:820px;display:block;margin:var(--space-5) auto 0;
  border-radius:var(--radius-lg);border:1px solid rgba(var(--accent-rgb),.28);
  box-shadow:0 18px 48px -22px var(--glow);background:#0E2438;}
.fc-pp-video-cap{max-width:820px;margin:var(--space-2) auto 0;text-align:center;font-size:var(--text-sm);}

/* Le moteur — Tronline / adaptive learning */
.fc-moteur-video{margin:0 0 var(--space-6);}
.fc-moteur-video video{width:100%;display:block;border-radius:var(--radius-lg);
  background:rgba(var(--accent-rgb),.06);border:1px solid var(--border);}
.fc-moteur-video figcaption{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary);}
.fc-moteur-enjeu{margin-top:var(--space-6);padding:var(--space-5) var(--space-6);
  border-radius:var(--radius-lg);border:1px solid rgba(var(--accent-rgb),.3);
  background:rgba(var(--accent-rgb),.08);}
.fc-moteur-enjeu h3{font-size:var(--text-xl);margin:var(--space-2) 0 var(--space-3);}
.fc-moteur-enjeu p{margin:0;color:var(--text-secondary);}
.fc-moteur-maph{margin:var(--space-6) 0 var(--space-3);font-size:var(--text-lg);}
.fc-moteur-map{display:grid;gap:0;margin:0;}
.fc-moteur-map>div{display:grid;grid-template-columns:minmax(180px,.36fr) 1fr;gap:var(--space-4);
  padding:var(--space-3) 0;border-top:1px solid var(--border);}
.fc-moteur-map>div:last-child{border-bottom:1px solid var(--border);}
.fc-moteur-map dt{font-family:var(--font-display);font-weight:600;}
.fc-moteur-map dd{margin:0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.6;}
.fc-moteur-note{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--text-muted);}
@media(max-width:720px){
  .fc-moteur-map>div{grid-template-columns:1fr;gap:var(--space-1);}
}

/* 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(--heading);}

/* 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-img.is-contain img{object-fit:contain;padding:var(--space-3);}
.fc-parc-tag{font-family:var(--font-display);font-weight:600;color:var(--heading);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(--text-secondary);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(--heading);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(--heading);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(--heading);}
.fc-crosssell{margin-top:var(--space-5);text-align:center;font-family:var(--font-display);
  font-weight:600;color:var(--heading);}

/* 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(--heading);}
.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 2D, rapprochée du titre et retournée pour le pointer (Numériklub) */
.hero-rider{position:absolute;right:clamp(210px,28vw,430px);top:clamp(190px,30vh,400px);bottom:auto;z-index:1;--rot:-3deg;--rider-flip:-1;
  height:clamp(310px,44vh,560px);width:auto;object-fit:contain;pointer-events:none;
  image-rendering:auto;
  transform-origin:50% 50%;transform:rotate(var(--rot)) scaleX(var(--rider-flip));
  filter:drop-shadow(0 26px 46px rgba(0,0,0,.55));
  animation:nkRiderRide 3.6s ease-in-out infinite;will-change:transform;}
.page[data-page="/lp/numeriklub"] .hero-rider{right:clamp(230px,27vw,390px);}
.page-numeriklub-hub .hero-rider{right:calc(clamp(214px,25vw,370px) + 96px);top:calc(clamp(190px,30vh,400px) + 56px);height:clamp(238px,34vh,425px);}
@keyframes nkRiderRide{
  0%,100%{transform:translateY(0) rotate(var(--rot)) scaleX(var(--rider-flip));}
  50%{transform:translateY(-14px) rotate(calc(var(--rot) + 2deg)) scaleX(var(--rider-flip));}}
@media(max-width:1280px){ .hero-rider{right:clamp(260px,31vw,420px);} }
@media(max-width:1100px){ .hero-rider{display:none;} }
@media(prefers-reduced-motion:reduce){ .hero-rider{animation:none;} }

/* LP Numériklub : le personnage fait partie de la promesse visuelle du hero.
   Les règles génériques le masquent sous 1100 px ; on le conserve ici en
   arrière-plan, à une taille qui ne recouvre ni le titre ni les CTA. */
@media(max-width:1100px){
  .page[data-page="/lp/numeriklub"] .hero-rider{
    display:block;top:clamp(285px,35vw,360px);right:clamp(-72px,-4vw,-28px);
    height:clamp(230px,32vw,320px);opacity:.72;z-index:1;
  }
  .page-numeriklub-hub .hero-rider{
    display:block;top:calc(clamp(285px,35vw,360px) + 56px);right:calc(var(--space-3) + 72px);
    height:clamp(178px,25vw,247px);opacity:.72;z-index:1;
  }
}

@media(max-width:760px){
  .page[data-page="/lp/numeriklub"] .hero-rider{
    top:clamp(300px,82vw,390px);right:-54px;height:clamp(220px,62vw,270px);
    opacity:.46;
  }
  .page-numeriklub-hub .hero-rider{
    top:calc(clamp(300px,82vw,390px) + 48px);right:calc(var(--space-3) + 72px);height:clamp(168px,48vw,207px);
    opacity:.46;
  }
}

/* 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;}
.hero-sign-label{position:absolute;left:54%;top:34%;z-index:3;width:22%;
  color:#173b68;font-family:var(--font-display,var(--font-body));font-size:clamp(9px,1.55vw,19px);
  font-weight:800;line-height:1;letter-spacing:-.035em;text-align:center;white-space:nowrap;
  transform:translate(-50%,-50%) rotate(-14deg);pointer-events:none;
  text-shadow:0 1px 0 rgba(255,255,255,.22);}

/* 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;}
.hero-flip.is-3d .hero-brush{opacity:0;}

/* 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:760px){ .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(max-width:680px){
  .nk-photo-grid{grid-template-columns:1fr;gap:var(--space-6);}
}
@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;}

/* Vignettes Instagram : le poster local est interactif, l'iframe n'existe
   qu'après une action volontaire. */
.ig-lazy{position:relative;width:100%;max-width:360px;margin-inline:auto;
  overflow:hidden;border:1px solid rgba(var(--tint),.14);border-radius:var(--radius-lg);
  background:var(--surface);color:var(--text);cursor:pointer;text-align:left;
  box-shadow:0 18px 44px rgba(0,0,0,.24);
  transition:transform var(--dur-fast,.15s) var(--ease-out),border-color var(--dur-fast,.15s),box-shadow var(--dur-fast,.15s);}
.ig-lazy:hover{transform:translateY(-3px);border-color:rgba(var(--cta-rgb),.7);box-shadow:0 22px 52px rgba(0,0,0,.32);}
.ig-lazy:focus-visible{outline:2px solid var(--cta);outline-offset:4px;}
.ig-lazy-media{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:#111;}
.ig-lazy-poster{display:block;width:100%;height:100%;object-fit:cover;}
.ig-lazy-poster-empty{background:
  radial-gradient(circle at 68% 28%,rgba(var(--accent-rgb),.4),transparent 30%),
  linear-gradient(135deg,#111a2b,#07090f);}
.ig-lazy-shade{position:absolute;inset:0;display:grid;place-items:center;
  background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.5));
  transition:background var(--dur-fast,.15s);}
.ig-lazy:hover .ig-lazy-shade{background:rgba(0,0,0,.32);}
.ig-lazy-action{display:grid;justify-items:center;gap:7px;color:#fff;
  transform:translateY(2px);transition:transform var(--dur-fast,.15s);}
.ig-lazy:hover .ig-lazy-action,.ig-lazy:focus-visible .ig-lazy-action{transform:translateY(0) scale(1.04);}
.ig-lazy-play{display:grid;place-items:center;width:56px;height:56px;padding-left:4px;
  border:2px solid rgba(255,255,255,.9);border-radius:50%;
  color:#fff;font-size:1.25rem;line-height:1;
  background:rgba(0,0,0,.48);box-shadow:0 8px 22px rgba(0,0,0,.35);}
.ig-lazy-action-label{font-size:var(--text-xs);font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;text-shadow:0 2px 8px rgba(0,0,0,.7);}
.ig-lazy-label{display:block;padding:var(--space-3) var(--space-4);
  font-size:var(--text-sm);font-weight:700;line-height:1.35;color:var(--text);}
.ig-lazy.is-loaded{max-width:none;cursor:default;background:#000;}
.ig-lazy.is-loaded:hover{transform:none;border-color:rgba(var(--tint),.14);box-shadow:0 18px 44px rgba(0,0,0,.24);}
.ig-lazy.is-loaded iframe{display:block;width:100%;height:580px;border:0;background:#fff;}
.nk-offer-reels{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3);margin-top:var(--space-5);}
.nk-offer-reels .ig-lazy{max-width:100%;}
.nk-offer-reels .ig-lazy-media{aspect-ratio:16/9;}
.nk-offer-reels .ig-lazy.is-loaded iframe{height:580px;}
.nk-local-video{position:relative;overflow:hidden;background:#081420;}
.nk-local-video video{display:block;width:100%;height:auto;max-height:580px;object-fit:contain;background:#081420;}
.nk-local-video-prompt{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:8px;
  width:100%;border:0;padding:var(--space-4);color:#fff;font:inherit;font-size:var(--text-xs);font-weight:800;letter-spacing:.08em;text-transform:uppercase;
  text-shadow:0 2px 8px rgba(0,0,0,.85);cursor:pointer;background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.38));}
.nk-local-video-prompt:focus-visible{outline:2px solid var(--cta);outline-offset:-6px;}
.nk-local-video-play{display:grid;place-items:center;width:56px;height:56px;padding-left:4px;
  border:2px solid rgba(255,255,255,.9);border-radius:50%;font-size:1.25rem;line-height:1;
  background:rgba(0,0,0,.48);box-shadow:0 8px 22px rgba(0,0,0,.35);}
.nk-local-video video:focus-visible{outline:2px solid var(--cta);outline-offset:-2px;}
.nk-offer-local-videos .nk-local-video video{max-height:440px;}
.nk-offer-video{margin:0;}
.nk-media-reel .ig-lazy{max-width:none;}
.nk-media-reel .ig-lazy-media{aspect-ratio:4/3;}
.nk-media-reel .ig-lazy.is-loaded iframe{height:580px;}
.nk-shelf-card .ig-lazy{width:330px;max-width:none;}
.nk-shelf-card .ig-lazy-media{aspect-ratio:9/14;}
.nk-shelf-card .ig-lazy.is-loaded iframe{height:560px;}
.hero-reel .ig-lazy{width:360px;max-width:none;border:0;border-radius:0;box-shadow:none;}
.hero-reel .ig-lazy-media{aspect-ratio:auto;height:760px;}
.hero-reel .ig-lazy-label{display:none;}
.hero-reel .ig-lazy.is-loaded iframe{height:760px;}


/* 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);}
.nk-offer-fomo{
  display:flex;align-items:flex-start;gap:8px;margin:var(--space-2) 0 0;
  padding:.55rem .7rem;border:1px solid rgba(var(--fomo-rgb),.30);
  border-radius:var(--radius-ui);background:rgba(var(--fomo-rgb),.08);
  color:var(--text);font-size:var(--text-sm);font-weight:750;line-height:1.35;
}
.nk-offer-fomo-mark{flex:none;color:var(--fomo);line-height:1.35;}
.nk-offer-fomo-detail{max-width:46rem;margin:var(--space-5) auto 0;}
:root.light .nk-offer-fomo{background:rgba(var(--fomo-rgb),.06);border-color:rgba(var(--fomo-rgb),.25);}

/* Prix « à partir de… » mis en évidence */
.nk-format-price{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);
  color:var(--heading);line-height:1.1;margin-top:var(--space-1);}
.nk-card-price{display:inline-flex;align-self:flex-start;margin-top:var(--space-3);padding:.45rem .7rem;
  border:1px solid rgba(var(--accent-rgb),.28);border-radius:var(--radius-ui);
  background:rgba(var(--accent-rgb),.08);color:var(--heading);font-family:var(--font-mono);
  font-size:var(--text-sm);font-weight:800;line-height:1.25;}
/* 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(--tint),.06);box-shadow:inset 0 0 0 1px rgba(var(--tint),.18);}
.nk-format-date::before{content:"";position:absolute;left:10px;top:.78em;width:7px;height:7px;
  border-radius:50%;background:rgba(var(--tint),.4);box-shadow:none;}
.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(260px,.78fr) minmax(0,1.22fr);gap:clamp(var(--space-5),4vw,var(--space-8));align-items:start;}
.nk-annuels-scene{position:sticky;top:calc(var(--nav-h,72px) + var(--space-5));margin:0;padding:clamp(var(--space-3),2vw,var(--space-5));
  border:1px solid rgba(var(--accent-rgb),.2);border-radius:var(--radius-lg,16px);
  background:
    radial-gradient(100% 75% at 50% 100%,rgba(var(--accent-rgb),.18),transparent 72%),
    rgba(var(--tint),.035);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 18px 42px rgba(4,11,18,.18);}
.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);}
.nk-annual-pricing{display:grid;grid-template-columns:minmax(120px,.34fr) 1fr;gap:var(--space-4);align-items:start;
  margin-top:var(--space-4);padding:var(--space-4) var(--space-5);
  border:1px solid rgba(var(--accent-rgb),.28);border-left:3px solid var(--accent);
  border-radius:var(--radius-ui);background:rgba(var(--accent-rgb),.07);}
.nk-annual-pricing-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;
  text-transform:uppercase;color:var(--accent);font-weight:700;}
.nk-annual-pricing-content{display:flex;flex-direction:column;gap:4px;}
.nk-annual-pricing-content strong{font-size:var(--text-base);color:var(--heading);}
.nk-annual-pricing-content p{margin:0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5;}
.nk-annual-common{margin-top:var(--space-6);padding:var(--space-5);
  border:1px solid rgba(var(--accent-rgb),.22);border-radius:var(--radius-lg,16px);
  background:rgba(var(--accent-rgb),.05);}
.nk-annual-common-head{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4);}
.nk-annual-common-head p{margin:0;max-width:70ch;color:var(--text-secondary);line-height:1.55;}
.nk-annual-common-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-3);}
.nk-annual-common-item{display:flex;flex-direction:column;gap:5px;padding:var(--space-3);
  border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-ui);background:rgba(var(--tint),.04);}
.nk-annual-common-item span,.nk-annual-level,.nk-annual-block-period{font-family:var(--font-mono);
  font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);}
.nk-annual-common-item strong{font-size:var(--text-sm);line-height:1.35;color:var(--text);}
.nk-annual-track{display:flex;flex-direction:column;gap:var(--space-3);}
.nk-annual-track-top{display:flex;align-items:center;gap:var(--space-2);min-height:28px;}
.nk-annual-track-index{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;
  border-radius:50%;background:rgba(var(--accent-rgb),.14);color:var(--accent);font-family:var(--font-mono);
  font-size:var(--text-xs);font-weight:800;}
.nk-annual-track-top .nk-annual-level{flex:1;}
.nk-annual-track-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);}
.nk-annual-track-title{margin:0;font-size:clamp(var(--text-xl),2vw,var(--text-2xl));line-height:1.05;}
.nk-annual-price{flex:none;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--heading);text-align:right;}
.nk-annual-age{display:flex;align-items:center;gap:6px;margin:0;font-size:var(--text-sm);font-weight:700;color:var(--heading);}
.nk-annual-age span{color:var(--accent);font-family:var(--font-mono);}
.nk-annual-track-summary{max-width:62ch;margin-top:0;}
.nk-annual-blocks{display:grid;gap:var(--space-2);}
.nk-annual-block{display:grid;grid-template-columns:74px 1fr;gap:var(--space-3);padding-top:var(--space-3);
  border-top:1px solid rgba(var(--tint),.1);}
.nk-annual-block h4,.nk-annual-stream h4{margin:0 0 3px;font-size:var(--text-base);}
.nk-annual-block p,.nk-annual-stream p{margin:0;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.45;}
.nk-annual-block strong,.nk-annual-stream strong{display:block;margin-top:5px;font-size:var(--text-sm);color:var(--heading);}
.nk-annual-streams{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);}
.nk-annual-stream{padding:var(--space-3);border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-ui);background:rgba(var(--tint),.03);}
.nk-annual-stream ul{margin:var(--space-2) 0 0;padding-left:1.1em;color:var(--text-secondary);font-size:var(--text-sm);line-height:1.45;}
.nk-annual-final{margin:0;padding-top:var(--space-3);border-top:1px solid rgba(var(--accent-rgb),.2);
  color:var(--text-secondary);font-size:var(--text-sm);line-height:1.5;}
.nk-annual-final span{display:block;margin-bottom:3px;font-family:var(--font-mono);font-size:var(--text-2xs);
  letter-spacing:.08em;text-transform:uppercase;color:var(--accent);}
.nk-annual-timeline{margin-top:var(--space-7);}
.nk-annual-timeline-list{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3);}
.nk-annual-timeline-item{display:grid;grid-template-columns:68px 1fr;gap:var(--space-3);padding:var(--space-3);
  border:1px solid rgba(var(--tint),.1);border-radius:var(--radius-ui);background:rgba(var(--tint),.03);}
.nk-annual-timeline-item strong{font-size:var(--text-sm);line-height:1.35;}
.nk-annual-timeline-item p{margin:4px 0 0;color:var(--text-secondary);font-size:var(--text-xs);line-height:1.4;}
@media(max-width:900px){
  .nk-annuels-layout{grid-template-columns:1fr;}
  .nk-annuels-scene{position:relative;top:auto;max-width:560px;margin-inline:auto;order:-1;}
  .nk-annual-common-grid{grid-template-columns:repeat(2,1fr);}
  .nk-annual-streams{grid-template-columns:1fr;}
  .nk-annual-timeline-list{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:560px){
  .nk-annual-common-grid,.nk-annual-timeline-list{grid-template-columns:1fr;}
  .nk-annual-pricing{grid-template-columns:1fr;gap:var(--space-2);padding:var(--space-4);}
  .nk-annual-block{grid-template-columns:1fr;gap:4px;}
  .nk-annual-price{font-size:var(--text-2xs);text-align:left;}
}
.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(--text-secondary);
  background:rgba(var(--tint),.05);}
.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%;}
}
/* Mode jour : la table hérite de la surface claire de la .card qui l'enveloppe
   (le fond sombre codé en dur créait une boîte grise sur fond blanc). */
:root.light .nk-periodes-table{
  background:transparent;
  box-shadow:inset 0 0 0 1px rgba(var(--tint),.14);
}
:root.light .nk-periodes-table thead th{
  background:rgba(var(--accent-rgb),.10);
}
:root.light .nk-periodes-table th,
:root.light .nk-periodes-table td{
  border-bottom-color:rgba(var(--tint),.12);
}

/* 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;}

/* Médias réels Numériklub — chargés à la demande, sans autoplay. */
.nk-media-gallery{display:grid;gap:var(--space-7);}
.nk-media-copy{max-width:72ch;margin:0 0 var(--space-3);color:var(--text-secondary);font-size:var(--text-lg);line-height:1.65;}
.nk-program-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);margin:var(--space-6) 0 var(--space-7);}
.nk-program-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-5);height:100%;}
.nk-program-period{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--accent);}
.nk-program-card h3{margin:0;font-size:var(--text-xl);line-height:1.15;}
.nk-program-card p{margin:0;color:var(--text-secondary);line-height:1.55;}
.nk-program-card ul{display:grid;gap:var(--space-2);margin:var(--space-2) 0 0;padding:0;list-style:none;color:var(--text-secondary);line-height:1.5;}
.nk-program-card li{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2);align-items:start;}
.nk-program-card li > span:first-child{color:var(--accent);font-weight:800;}
.nk-program-tagline{font-weight:700;color:var(--heading)!important;}
.nk-program-deliverable{margin-top:auto!important;padding-top:var(--space-3);border-top:1px solid var(--border);font-size:var(--text-sm);}
@media(max-width:700px){
  .nk-program-grid{grid-template-columns:1fr;}
}
.nk-media-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4);}
.nk-media-item{margin:0;overflow:hidden;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-lg);}
.nk-media-item img,.nk-media-item video{display:block;width:100%;background:#080b12;object-fit:cover;}
.nk-media-photo img{aspect-ratio:4/3;}
.nk-media-item figcaption{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);line-height:1.4;color:var(--text-secondary);}
.nk-media-video-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;}
.nk-media-video video{aspect-ratio:16/9;}
.nk-media-video-portrait video{aspect-ratio:9/16;}
.nk-media-reel-grid{display:grid;grid-template-columns:repeat(2,minmax(326px,1fr));gap:var(--space-5);align-items:start;}
.nk-media-reel{margin:0;min-width:0;}
.nk-media-reel .ig-embed{width:100%;max-width:none;margin:0;border-radius:var(--radius-lg);}
.nk-media-reel .ig-embed iframe{height:580px;}
.nk-media-reel figcaption{padding:var(--space-3) var(--space-1) 0;font-size:var(--text-sm);line-height:1.4;color:var(--text-secondary);}
@media(max-width:900px){
  .nk-media-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .nk-media-reel-grid{grid-template-columns:1fr;}
}
@media(max-width:560px){
  .nk-media-grid{grid-template-columns:1fr 1fr;gap:var(--space-3);}
  .nk-media-item figcaption{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);}
}

/* 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));}
.partners-marquee-lg{padding-block:var(--space-5);}
.partners-marquee-lg .marquee-track{gap:clamp(64px,8vw,128px);}
.partners-marquee-lg .partner-logo{height:clamp(72px,8vw,96px);max-width:260px;}

/* Partenaires & soutiens — remontée sous le hero */
section.section.reassurance{padding-top:var(--space-5);border-top:0;}

/* 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:var(--text-2xs);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, except the 3D programme's white marks */
.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-logos--monochrome .soft-logo{background:transparent;border-color:transparent;box-shadow:none;}
.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;}
/* In light mode the shared card turns white; keep a dark surface behind
   the transparent white marks, never individual logo tiles. */
:root.light .page .card.program-logo-panel{
  background:#102433;border-color:rgba(255,255,255,.14);
  --text:#f5f8fb;--text-primary:#f5f8fb;--text-secondary:#c5d5e2;
  --eyebrow:#c5d5e2;color:var(--text);
}

/* 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);}}

/* Les témoignages prolongent la section Alumni, sans recréer une section 06. */
#temoignages{scroll-margin-top:var(--nav-h,80px);}

/* ============================================================
   ACADEMY — Hero scroll-scale (carte vidéo qui grandit au scroll)
   Une seule variable --scroll-p pilote tout : taille de la carte,
   coins, bordure, ombre, sortie du texte et chute du portrait.
   Repère : --scroll-p 0 = hero encadrée (texte + petite carte + portrait),
   1 = vidéo plein écran. INVERSION AU RUNTIME (vidéo d'abord) : l'en-tête
   part à --scroll-p:1 et effects.js applique 1 - eased, donc à l'arrivée on
   voit la vidéo plein écran, puis le scroll révèle la hero (→0).
   ============================================================ */
/* 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:260vh;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:flex-start;min-height:100%;box-sizing:border-box;
  padding-top:clamp(118px,calc(var(--nav-h) + 60px),176px);
  padding-bottom:clamp(32px,5vh,80px);}
.hero-left-inner h1{max-width:14ch;font-size:var(--hero-h1);line-height:1.04;}
.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;}
/* La vidéo démarre claire, puis s'assombrit pendant que le texte revient au scroll.
   --scroll-p va de 1 (plein écran) vers 0 (texte visible). */
.hero-card-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:#050b14;opacity:clamp(0,calc((1 - var(--scroll-p,1)) * .9),.72);}
.hero-card-scan{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen;
  /* Pas de 5px, inclinaison en marches de 1×2px pour une trame pixel nette. */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='10' viewBox='0 0 5 10'%3E%3Cpath fill='%23fff' fill-opacity='.22' shape-rendering='crispEdges' d='M4 0h1v2H4z M3 2h1v2H3z M2 4h1v2H2z M1 6h1v2H1z M0 8h1v2H0z'/%3E%3C/svg%3E");
  background-size:5px 10px;
  opacity:.35;}

/* 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(var(--scroll-p,0) * 4 - 3);}
.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;}
}
/* Dans le layout empilé, le texte n'est pas superposé à la vidéo. */
@media(max-width:980px), (prefers-reduced-motion:reduce){
  .hero-card-media::after{opacity:0;}
}

/* =========================================================
   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:rgba(var(--tint),.5);}
.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:var(--accent-secondary-soft);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-5)) 0 var(--space-7);
   min-height:clamp(560px,76vh,760px);display:flex;align-items:center;background:transparent;
    --hub-noise:var(--bg-noise);
    --hub-band-noise:var(--bg-noise);}
  :root.light .page-hero-hub{
    --hub-noise:var(--bg-noise-onlight);
     --hub-band-noise:var(--bg-noise-onlight);
  }
   /* En clair, les bandes murales doivent suivre la bascule colorée du sol.
      Le voile navy historique les rendait presque identiques au mode sombre. */
   :root.light .page-hero-hub .hub-wall-band{
     background:
       linear-gradient(152deg,
         rgba(var(--hub-wall-rgb),.62) 0%,
         rgba(var(--hub-wall-deep-rgb),.42) 46%,
         rgba(255,255,255,.08) 100%),
       radial-gradient(95% 65% at 50% -5%,
         rgba(var(--hub-wall-rgb),.24),transparent 72%),
       linear-gradient(180deg,rgba(247,251,253,.86) 0%,rgba(211,226,236,.96) 100%),
       var(--hub-band-noise),
       linear-gradient(180deg,var(--blue-100) 0%,var(--blue-200) 100%);
     background-size:auto,auto,auto,180px 180px,auto;
     background-blend-mode:normal,normal,normal,soft-light,normal;
     filter:saturate(1.30) contrast(1.02);
   }
 .page-hero-hub > .hero-bg{z-index:0;pointer-events:none;background:transparent;}
  .page-hero-hub::after{display:none;}
 .hub-hero-grid{display:grid;grid-template-columns:minmax(300px,0.92fr) 1.08fr;
    gap:clamp(24px,4vw,64px);align-items:start;position:relative;z-index:2;background:transparent;}
 .hub-hero-copy{position:relative;z-index:4;top:clamp(-52px,-4vw,-28px);}
.hub-hero-brand{width:min(100%,420px);margin-bottom:var(--space-5);}
.hub-hero-brand-logo{display:block;width:100%;height:auto;}
.hub-hero-brand-logo.is-tinted{aspect-ratio:var(--ar);background-color:rgb(var(--c));
  -webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat;}
.hub-hero-copy h1{max-width:14ch;font-size:var(--hero-h1);line-height:1.04;}
.hub-hero-copy .hero-sub{max-width:42ch;}

/* Logos univers sous le CTA du hero hub — cartes CTA cliquables */
.hub-ulogos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(10px,1.1vw,15px);margin-top:var(--space-6);}
.hub-ulogo{position:relative;display:flex;align-items:center;justify-content:center;
  min-height:76px;padding:18px 14px;text-decoration:none;
  border-radius:var(--radius-ui);border:1px solid var(--border);
  background:linear-gradient(180deg,rgba(220,231,239,.055),rgba(220,231,239,.02));
  box-shadow:inset 0 1px 0 rgba(220,231,239,.06);
  transition:transform var(--dur),box-shadow var(--dur),border-color var(--dur),background var(--dur);}
.hub-ulogo:hover,.hub-ulogo:focus-visible{transform:translateY(-4px);
  border-color:rgba(var(--u-rgb,var(--accent-rgb)),.5);
  background:linear-gradient(180deg,rgba(var(--u-rgb,var(--accent-rgb)),.12),rgba(var(--u-rgb,var(--accent-rgb)),.03));
  box-shadow:0 18px 36px -16px rgba(2,8,16,.7),0 0 0 1px rgba(var(--u-rgb,var(--accent-rgb)),.32),0 0 30px -8px rgba(var(--u-rgb,var(--accent-rgb)),.4);}
.hub-ulogo-inner{display:inline-flex;align-items:center;justify-content:center;}
.hub-ulogo-img{height:clamp(24px,2.3vw,30px);width:auto;object-fit:contain;display:block;}
.hub-ulogo-img.is-tinted{aspect-ratio:var(--ar,1144/280);height:clamp(24px,2.3vw,30px);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(--heading);}
.hub-ulogo-cue{position:absolute;top:8px;right:10px;font-size:13px;line-height:1;
  color:rgb(var(--u-rgb,var(--accent-rgb)));opacity:0;transform:translateX(-3px);
  transition:opacity var(--dur),transform var(--dur);}
.hub-ulogo:hover .hub-ulogo-cue,.hub-ulogo:focus-visible .hub-ulogo-cue{opacity:.9;transform:translateX(0);}
:root.light .hub-ulogo{background:linear-gradient(180deg,rgba(21,49,74,.05),rgba(21,49,74,.015));}

/* Bande de confiance sous le hero hub : partenaires + réassurance en boucle */
.hub-trust{padding-block:clamp(16px,2.6vw,28px);border-bottom:1px solid var(--border);scroll-margin-top:90px;}
.hub-trust-marquee{height:auto;padding-block:var(--space-3);}
.hub-trust-marquee .marquee-track{gap:clamp(40px,6vw,96px);align-items:center;animation-duration:54s;}
.hub-trust-logo{height:clamp(24px,2.4vw,34px);width:auto;object-fit:contain;
  opacity:.82;transition:opacity var(--dur);}
.hub-trust-logo:hover{opacity:1;}

/* ===== Transition immersive vers une homepage d'univers =====
   Recouvrement plein écran teinté au dégradé de l'univers (--grad-hero porté
   par la classe theme-* copiée sur l'overlay), révélé en cercle depuis la carte
   cliquée puis effacé en fondu. Le clip-path est animé en JS (WAAPI). */
.route-xfade{
  position:fixed;inset:0;z-index:9000;
  background:var(--grad-hero);
  display:flex;align-items:center;justify-content:center;
  clip-path:circle(0 at 50% 50%);
  will-change:clip-path,opacity;pointer-events:auto;
}
.route-xfade::after{
  content:"";position:absolute;inset:0;
  background:radial-gradient(120% 120% at 50% 45%,transparent 40%,rgba(4,12,22,.35));
  pointer-events:none;
}
.route-xfade-label{
  position:relative;z-index:1;
  font-family:var(--font-display,inherit);
  font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  font-size:clamp(1.5rem,4.4vw,3.4rem);line-height:1;
  color:var(--on-accent,#fff);opacity:0;text-align:center;padding-inline:6vw;
}
@media (prefers-reduced-motion:reduce){.route-xfade{display:none;}}

/* Scène triptyque : trois bandes inclinées, prolongées par un plan de sol
   en perspective. Les personnages restent ancrés devant les bandes. */
 .hub-booklet-wrap{position:relative;z-index:3;isolation:isolate;background:transparent;
  height:clamp(470px,50vw,620px);
  transform:translateY(clamp(-110px,-13vw,-60px));}
 .hub-booklet-wrap::after{display:none;}
 .hub-booklet{position:absolute;inset:0;z-index:0;overflow:hidden;background:transparent;}
  .hub-panel{position:absolute;top:0;bottom:0;width:48%;text-decoration:none;
    overflow:visible;background:transparent;box-shadow:none;z-index:1;
   --hub-horizon:78%;
    --hub-clip:polygon(0 0,100% 0,100% 100%,0 100%);
    --hub-floor-clip:polygon(0 0,100% 0,118% 100%,-18% 100%);
  opacity:0;transform:translateX(-42px) scaleX(.82);
  animation:hubBandIn .82s var(--ease-out) forwards;}
 .hub-panel-1{left:-6%;width:38%;
   --hub-floor-clip:polygon(0 0,100% 0,82% 100%,-34% 100%);
  --hub-band-rgb:21,198,206;--hub-band-deep-rgb:15,164,171;}
 .hub-panel-2{left:29%;width:38%;z-index:2;
   --hub-floor-clip:polygon(0 0,100% 0,121% 100%,-10% 100%);
  --hub-band-rgb:241,138,7;--hub-band-deep-rgb:204,113,0;
  animation-delay:.16s;}
 .hub-panel-3{left:64%;right:auto;width:38%;z-index:3;
   --hub-floor-clip:polygon(0 0,100% 0,134% 100%,29% 100%);
  --hub-band-rgb:206,26,99;--hub-band-deep-rgb:168,18,78;
  animation-delay:.32s;}
.hub-panel.theme-orange,
.hub-panel.theme-cyan,
.hub-panel.theme-magenta{--hub-contrast-rgb:var(--accent-rgb);}
 .hub-panel::after{content:"";position:absolute;left:0;top:calc(var(--hub-horizon) - 1px);width:100%;height:calc(100% - var(--hub-horizon) + 1px);z-index:1;
  background:
     linear-gradient(180deg,
       rgb(var(--hub-band-deep-rgb)) 0%,
       rgba(var(--hub-band-deep-rgb),.78) 42%,
       rgba(2,8,16,.58) 100%),
     var(--bg-noise);
   background-size:auto,180px 180px;
   background-blend-mode:normal,soft-light;
   /* Le sol reprend exactement le même rendu et la même diagonale que le mur. */
    clip-path:var(--hub-floor-clip);
   -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 42%,rgba(0,0,0,.96) 68%,rgba(0,0,0,.70) 86%,rgba(0,0,0,.28) 98%,transparent 100%);
   mask-image:linear-gradient(180deg,#000 0%,#000 42%,rgba(0,0,0,.96) 68%,rgba(0,0,0,.70) 86%,rgba(0,0,0,.28) 98%,transparent 100%);
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-size:100% 100%;mask-size:100% 100%;
   filter:saturate(1.05);
  box-shadow:0 20px 34px rgba(2,8,16,.58);}
 .hub-panel::after{display:none;}
  .hub-wall-plane{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible;
    --hub-wall-horizon:78%;}
  .hub-wall-band{position:absolute;inset:0;display:block;isolation:isolate;
    background:
         linear-gradient(152deg,
           rgba(var(--hub-wall-rgb),.28) 0%,
           rgba(var(--hub-wall-deep-rgb),.12) 46%,
           transparent 100%),
         radial-gradient(95% 65% at 50% -5%,rgba(88,140,185,.22),transparent 72%),
         linear-gradient(180deg,rgba(11,30,46,.62) 0%,rgba(8,20,32,.93) 100%),
         var(--hub-band-noise),
         linear-gradient(180deg,var(--blue-800) 0%,var(--blue-950) 100%);
       background-size:auto,auto,auto,180px 180px,auto;
     filter:saturate(1.30) contrast(1.02);
   -webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 7%,#000 16%,#000 84%,transparent 94%,transparent 100%);
   mask-image:linear-gradient(90deg,transparent 0%,transparent 7%,#000 16%,#000 84%,transparent 94%,transparent 100%);
   -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
   -webkit-mask-size:100% 100%;mask-size:100% 100%;}
  .hub-wall-band-1{--hub-wall-rgb:241,138,7;--hub-wall-deep-rgb:204,113,0;
    clip-path:polygon(24% 0,40% 0,40% var(--hub-wall-horizon),24% var(--hub-wall-horizon));}
  .hub-wall-band-2{--hub-wall-rgb:21,198,206;--hub-wall-deep-rgb:8,105,119;
    clip-path:polygon(40% 0,60% 0,60% var(--hub-wall-horizon),40% var(--hub-wall-horizon));}
  .hub-wall-band-3{--hub-wall-rgb:206,26,99;--hub-wall-deep-rgb:112,10,57;
    clip-path:polygon(60% 0,76% 0,76% var(--hub-wall-horizon),60% var(--hub-wall-horizon));}
  .hub-wall-plane::after{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:transparent;}
  .hub-floor-plane{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:visible;
    --hub-floor-horizon:78%;}
  .hub-floor-band{position:absolute;inset:0;display:block;isolation:isolate;
   background:
         linear-gradient(166deg,
           rgba(var(--hub-floor-rgb),.82) 0%,
           rgba(var(--hub-floor-deep-rgb),.62) 42%,
           rgba(var(--hub-floor-rgb),.42) 100%),
         radial-gradient(95% 65% at 50% -5%,rgba(var(--hub-floor-rgb),.38),transparent 72%),
         linear-gradient(180deg,rgba(11,30,46,.62) 0%,rgba(8,20,32,.93) 100%),
         var(--hub-band-noise),
         linear-gradient(180deg,var(--blue-800) 0%,var(--blue-950) 100%);
       background-size:auto,auto,auto,180px 180px,auto;
     filter:saturate(1.30) contrast(1.03);
    -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 50%,rgba(0,0,0,.94) 64%,rgba(0,0,0,.64) 78%,rgba(0,0,0,.22) 91%,transparent 100%);
    mask-image:linear-gradient(180deg,#000 0%,#000 50%,rgba(0,0,0,.94) 64%,rgba(0,0,0,.64) 78%,rgba(0,0,0,.22) 91%,transparent 100%);
   -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
   -webkit-mask-size:100% 100%;mask-size:100% 100%;}
  .hub-floor-band-1{--hub-floor-rgb:241,138,7;--hub-floor-deep-rgb:159,74,0;
    clip-path:polygon(24% var(--hub-floor-horizon),40% var(--hub-floor-horizon),28% 100%,-8% 100%);}
  .hub-floor-band-2{--hub-floor-rgb:21,198,206;--hub-floor-deep-rgb:8,105,119;
    clip-path:polygon(40% var(--hub-floor-horizon),60% var(--hub-floor-horizon),70% 100%,28% 100%);}
  .hub-floor-band-3{--hub-floor-rgb:206,26,99;--hub-floor-deep-rgb:112,10,57;
    clip-path:polygon(60% var(--hub-floor-horizon),76% var(--hub-floor-horizon),108% 100%,70% 100%);}
   .hub-wall-band::before,
   .hub-floor-band::before{display:none;}
   .hub-floor-band::after{content:"";position:absolute;inset:-70px -100px -110px;z-index:1;pointer-events:none;
      background:inherit;filter:blur(52px);opacity:.42;transform:translateY(24px) scaleY(1.22);
     -webkit-mask-image:linear-gradient(180deg,transparent 38%,rgba(0,0,0,.10) 52%,rgba(0,0,0,.60) 68%,#000 82%,rgba(0,0,0,.74) 94%,transparent 100%);
     mask-image:linear-gradient(180deg,transparent 38%,rgba(0,0,0,.10) 52%,rgba(0,0,0,.60) 68%,#000 82%,rgba(0,0,0,.74) 94%,transparent 100%);
    -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
    -webkit-mask-size:100% 100%;mask-size:100% 100%;}
  .hub-floor-plane::before{content:"";position:absolute;left:-4%;right:-4%;top:calc(var(--hub-floor-horizon) - 2px);height:22px;
   z-index:4;pointer-events:none;
   background:linear-gradient(180deg,rgba(255,255,255,.20),rgba(255,255,255,.06) 42%,transparent);
    filter:blur(7px);opacity:.58;}
  .hub-panel-media{position:absolute;top:0;left:0;right:0;height:var(--hub-horizon);z-index:2;
    overflow:hidden;background:transparent;isolation:isolate;
   clip-path:var(--hub-clip);}
/* La première diagonale ouvre la transition depuis la zone sombre de gauche.
   La dernière garde un bord franc au viewport ; les diagonales intérieures
   restent communes aux trois bandes. */
 @keyframes hubBandFlow{
   0%{background-position:0 0,0 0,0 0,0 0,0 0;}
   100%{background-position:0 180px,0 100%,0 0,0 0,0 0;}
 }
 @keyframes hubBandIn{
  0%{opacity:0;transform:translateX(-42px) scaleX(.82);}
  100%{opacity:1;transform:translateX(0) scaleX(1);}
}
/* Bande colorée : gradient accentué + grain SVG identique à celui des sections. */
.hub-panel-fallback{position:absolute;inset:0;background:
  var(--bg-noise),
  radial-gradient(125% 82% at 24% 8%,rgba(255,255,255,.32),transparent 48%),
   linear-gradient(145deg,
     rgb(var(--hub-band-rgb)) 0%,
     rgb(var(--hub-band-rgb)) 50%,
     rgb(var(--hub-band-deep-rgb)) 100%);
  background-size:180px 180px,auto,auto;
  background-blend-mode:soft-light,screen,normal;
  filter:saturate(1.05) contrast(1.02);}
.hub-panel-media::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(255,255,255,.08),transparent 42%,rgba(0,0,0,.18) 100%);
  mix-blend-mode:soft-light;opacity:.9;}
 .page-hero-hub .hub-panel-media{visibility:hidden;}

/* La scène quitte la petite colonne de contenu : elle occupe la moitié droite
   de la hero et son bord droit suit celui du viewport. Le texte reste dans la
   première colonne de la grille, au-dessus de la transition sombre. */
@media(min-width:981px){
  .hub-booklet-wrap{
    width:calc(50vw + var(--space-6));
    margin-right:calc((100% - 100vw)/2 - var(--space-6));
  }
  .hub-booklet{
    overflow:visible;
  }
   /* Le premier panneau déborde de 6% vers la gauche : les deux plans
      suivent ce même repère et partagent le point de fuite central. */
   .hub-wall-plane,
   .hub-floor-plane{left:-6%;right:-2%;--hub-vp-x:8%;}
}

/* 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-ground{position:absolute;z-index:0;bottom:1.5%;height:22px;width:18%;
  border-radius:50%;background:rgba(2,8,16,.66);filter:blur(11px);
  transform:translateX(-50%);box-shadow:0 8px 22px rgba(2,8,16,.58);
  animation:hubGroundIn .72s var(--ease-out) var(--hub-load-delay,0s) both;}
 .hub-char-ground-1{left:0%;width:22%;--hub-load-delay:.08s;}
   .hub-char-ground-2{left:42%;width:20%;--hub-load-delay:.18s;}
  .hub-char-ground-3{right:6%;width:22%;transform:none;--hub-load-delay:.30s;}
.hub-char{position:absolute;bottom:0;display:block;
  z-index:1;transform-origin:bottom center;
  filter:drop-shadow(0 24px 40px rgba(0,0,0,.55));
  animation:
    hubCharLoad .82s var(--ease-out) var(--hub-load-delay,0s) both,
    hubFloat 7s ease-in-out var(--hub-float-delay,0s) infinite;}
.hub-char-img{display:block;width:auto;height:100%;object-fit:contain;object-position:bottom center;}
.hub-char-1{left:-12%;bottom:3%;height:45%;z-index:2;transform:scaleX(-1);--hub-load-delay:.08s;--hub-float-delay:-1s;}
  .hub-char-2{left:42%;transform:translateX(-50%);height:62%;bottom:3%;--hub-load-delay:.18s;--hub-float-delay:-3.5s;}
   /* La silhouette FC est plus fine dans son cadrage source : on la grandit
      pour retrouver une présence comparable aux deux autres personnages. */
    .hub-char-3{right:6%;height:94%;transform:scaleX(-1);--hub-load-delay:.30s;--hub-float-delay:-2s;}
@keyframes hubGroundIn{
  0%{opacity:0;scale:.55;}
  100%{opacity:1;scale:1;}
}
@keyframes hubCharLoad{
  0%{opacity:0;scale:.96;filter:blur(3px) drop-shadow(0 24px 40px rgba(0,0,0,0));}
  68%{opacity:1;scale:1.01;filter:blur(0) drop-shadow(0 24px 40px rgba(0,0,0,.55));}
  100%{opacity:1;scale:1;filter:drop-shadow(0 24px 40px rgba(0,0,0,.55));}
}
@keyframes hubFloat{0%,100%{translate:0 0;}50%{translate:0 -14px;}}

@media(prefers-reduced-motion:reduce){
  .hub-char,.hub-char-ground{animation:none!important;}
}

@media(min-width:981px) and (max-width:1150px){
  .hub-char-1{left:2%;height:38%;}
}
@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{top:0;}
  .hub-hero-copy h1,.hub-hero-copy .hero-sub{max-width:none;}
  .hub-booklet-wrap{height:clamp(360px,72vw,460px);transform:none;}
  .hub-char-1{left:0;height:38%;}
  .hub-panel{width:54%;}
  .hub-panel-1{left:-8%;width:64%;}
  .hub-panel-2{left:17%;}
  .hub-panel-3{left:auto;right:-8%;width:64%;}
}
@media(max-width:560px){
  .hub-panel{width:64%;}
  .hub-panel-1{left:-8%;width:72%;} .hub-panel-2{left:12%;} .hub-panel-3{left:auto;right:-8%;width:72%;}
   .hub-char-1{left:0;height:34%;} .hub-char-2{left:42%;height:56%;} .hub-char-3{right:2%;height:84%;}
}
@media(prefers-reduced-motion:reduce){
  .hub-panel{animation:none;opacity:1;transform:none;}
  .hub-char,.hub-char-ground{animation:none;opacity:1;scale:1;}
  .hub-wall-band,.hub-floor-band,
  .hub-wall-band::before,.hub-floor-band::before{animation:none;}
}

/* Mobile conversion bar: it is intentionally mounted after the hero and
   only becomes interactive once the hero has left the viewport. */
.mobile-conversion-bar{display:none;}
@media(max-width:980px){
  .page-hero-floats .hero-floats,
  .hero-flip-hint{display:none!important;}
}
@media(max-width:760px){
  /* Sur mobile, le header de la landing garde une première ligne compacte
     (logo + actions), puis une seule ligne de navigation lisible. */
  html:has(.page-numeriklub-lp) .nav-numeriklub .nav-bare-inner{
    flex-wrap:wrap;
    row-gap:6px;
    padding:10px 16px 8px;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-brand{
    flex:0 0 auto;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
    order:3;
    flex:0 0 100%;
    justify-content:flex-start;
    gap:8px;
    padding-top:6px;
    border-top:1px solid rgba(220,231,239,.14);
    overflow-x:auto;
    scrollbar-width:none;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu::-webkit-scrollbar{
    display:none;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{
    flex:0 0 auto;
    text-align:center;
  }
  /* Sur mobile, la bande jaune remplace la barre de conversion fixe :
     le message, le CTA court et WhatsApp restent sur une seule ligne. */
  html:has(.page-numeriklub-lp) .campaign-announcement{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:1000;
    display:block;
    border-top:1px solid rgba(var(--nk-blue-ink-rgb),.24);
    border-bottom:0;
    box-shadow:0 -12px 32px rgba(var(--nk-blue-ink-rgb),.20);
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-inner{
    width:100%;
    min-height:62px;
    align-items:center;
    flex-wrap:nowrap;
    gap:8px;
    padding:8px max(12px,env(safe-area-inset-left)) calc(8px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-right));
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-main{
    width:auto;
    flex:1 1 auto;
    flex-basis:auto;
    min-width:0;
    gap:6px;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-badge{
    padding-inline:7px;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-viewport{
    height:32px;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-track{
    min-height:32px;
    padding-block:2px;
    font-size:var(--text-xs);
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-cta{
     display:none;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-cta:hover,
  html:has(.page-numeriklub-lp) .campaign-announcement-cta:focus-visible{
    background:transparent;
    color:#071725;
    transform:none;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-cta-desktop{
    display:none;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-cta-mobile{
    display:inline;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-label-desktop{
    display:none;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-label-mobile{
    display:inline;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp{
    display:grid;
    width:46px;
    height:46px;
    flex:0 0 46px;
    place-items:center;
    padding:0;
    background:#20B85A;
    color:#fff;
    box-shadow:0 6px 16px rgba(8,20,32,.24);
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp .btn-wa-ic{
    display:grid;
    width:22px;
    height:22px;
    margin:0;
    place-items:center;
    line-height:0;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp .btn-wa-ic svg{
    display:block;
    width:100%;
    height:100%;
  }
  html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp .btn-wa-label{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
  }
  html:has(.page-numeriklub-lp) .mobile-conversion-bar{
    display:none!important;
  }
  body:has(.page-numeriklub-lp){
    padding-bottom:78px;
  }
  /* Les pages d'offre montrent le libellé complet du CTA sur mobile,
     sous le message défilant et à côté de WhatsApp. */
  html:has(.page-numeriklub-offer-hub) .campaign-announcement-inner{
    flex-wrap:wrap;
  }
  html:has(.page-numeriklub-offer-hub) .campaign-announcement-main{
    flex:1 1 100%;
  }
  html:has(.page-numeriklub-offer-hub) .campaign-announcement-cta{
    display:inline-flex;
    flex:1 1 auto;
    min-width:0;
    min-height:36px;
    padding:8px 10px;
    white-space:normal;
    text-align:center;
  }
  html:has(.page-numeriklub-offer-hub) .campaign-announcement-cta-desktop{
    display:inline;
  }
  html:has(.page-numeriklub-offer-hub) .campaign-announcement-cta-mobile{
    display:none;
  }
  html:has(.page-numeriklub-offer-hub) .campaign-announcement-cta:hover,
  html:has(.page-numeriklub-offer-hub) .campaign-announcement-cta:focus-visible{
    background:#071725;
    color:#fff;
  }
  body:has(.page-numeriklub-offer-hub){
    padding-bottom:118px;
  }
  /* Le globe reste une surface interactive sur mobile : il est placé sous le
     contenu éditorial, mais garde assez de hauteur pour rester visible et
     activable au toucher ou au clavier. */
  .page-numeriklub-lp > .page-hero{
    padding-top:0;
    min-height:clamp(620px,155vw,820px);
  }
  .page-numeriklub-lp > .page-hero > .container{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    position:relative;
    z-index:2;
    padding-top:0;
  }
  .page-numeriklub-lp > .page-hero > .container > .eyebrow{order:1;}
  .page-numeriklub-lp > .page-hero > .container > h1{
    order:2;
    max-width:12ch;
    font-size:clamp(2rem,9vw,3rem);
    line-height:1.02;
    text-wrap:balance;
  }
  .page-numeriklub-lp > .page-hero > .container > .hero-title-secondary{
    order:3;
    max-width:16ch;
    margin-top:.55rem;
    font-size:clamp(1.65rem,7vw,2.35rem);
  }
  .page-numeriklub-lp > .page-hero > .container > .hero-title-secondary.hero-body-copy{
    max-width:52ch;
    margin-top:0;
    color:var(--text-secondary);
    font-size:clamp(1.06rem,4.5vw,1.3rem);
    line-height:1.58;
    letter-spacing:0;
  }
  .page-numeriklub-lp > .page-hero > .container > .hero-lead-heading{
    order:6;
    margin-top:.75rem;
    font-size:clamp(1.1rem,5vw,1.4rem);
  }
  .page-numeriklub-lp > .page-hero > .container > .hero-lead-highlight,
  .page-numeriklub-lp > .page-hero > .container > .lead{order:3;}
  .page-numeriklub-lp > .page-hero > .container > .hero-cta{order:4;}
  .page-numeriklub-lp > .page-hero > .container > .hero-flag,
  .page-numeriklub-lp > .page-hero > .container > .hero-loc,
  .page-numeriklub-lp > .page-hero > .container > .hero-sub{order:5;}
  .page-numeriklub-lp > .page-hero > .container > .hero-stats{order:6;}
  .page-numeriklub-lp > .page-hero > .container > .badge-row,
  .page-numeriklub-lp > .page-hero > .container > .hero-certs,
  .page-numeriklub-lp > .page-hero > .container > .hero-proof{order:6;}
  .page-numeriklub-lp > .page-hero-art > .hero-art,
  .page-numeriklub-lp > .page-hero-art > .hero-rider{
    opacity:.18;
    filter:saturate(.55) blur(1px);
  }
  .page-numeriklub-lp > .page-hero-art > .hero-art{
    display:block;
    width:min(92vw,430px);
    height:clamp(260px,68vw,360px);
    right:-14vw;
    bottom:2%;
    opacity:.78;
    filter:drop-shadow(0 18px 30px rgba(0,0,0,.42));
    transform:none;
    z-index:1;
  }
  .page-numeriklub-lp > .page-hero-art > .hero-art > img{
    width:100%;
    height:100%;
    object-fit:contain;
  }
  /* Sur mobile, les deux visuels restent en 2D : pas de reveal interactif
     qui charge la variante 3D ou masque le personnage. */
  .page-numeriklub-lp > .page-hero .hero-flip{
    pointer-events:none;
    cursor:default;
  }
  .page-numeriklub-lp > .page-hero .hero-flip .hero-flip-base{
    opacity:1!important;
  }
  .page-numeriklub-lp > .page-hero .hero-flip .hero-flip-rev{
    display:none!important;
    opacity:0!important;
  }
   .page[data-page="/lp/numeriklub"] .hero-rider,
   .page-numeriklub-hub > .page-hero-art > .hero-rider{
     opacity:1;
     filter:none;
     z-index:1;
   }
   .page-numeriklub-hub > .page-hero-art > .hero-art{
     opacity:1;
   }
   .page[data-page="/lp/numeriklub"] .hero-stat.bilingue{
     position:relative;
     z-index:3;
  }
  .mobile-conversion-bar{
    position:fixed;
    left:0;
    right:0;
    bottom:0;
    z-index:1000;
    display:flex;
    gap:8px;
    padding:10px max(12px, env(safe-area-inset-left)) calc(10px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-right));
    background:var(--nk-yellow,#FFD447);
    border-top:1px solid rgba(var(--nk-blue-ink-rgb),.24);
    box-shadow:0 -12px 32px rgba(var(--nk-blue-ink-rgb),.20);
    transform:translateY(110%);
    opacity:0;
    pointer-events:none;
    transition:transform .25s ease, opacity .25s ease;
  }
  .mobile-conversion-bar.is-visible{
    transform:translateY(0);
    opacity:1;
    pointer-events:auto;
  }
  .mobile-conversion-bar .btn{flex:1;justify-content:center;min-height:46px;padding-inline:10px;}
  .mobile-conversion-bar .btn-reserve{
    background:var(--nk-blue-ink,#0E2438);
    color:#fff;
    box-shadow:0 6px 16px rgba(var(--nk-blue-ink-rgb),.28);
  }
  .mobile-conversion-bar .btn-wa{
    position:relative;
    display:grid;
    width:46px;
    height:46px;
    flex:0 0 46px;
    place-items:center;
    padding:0;
    background:#20B85A;
    color:#fff;
    box-shadow:0 6px 16px rgba(8,20,32,.24);
  }
  .mobile-conversion-bar .btn-wa .btn-wa-ic{
    display:grid;
    width:22px;
    height:22px;
    margin:0;
    place-items:center;
    line-height:0;
  }
  .mobile-conversion-bar .btn-wa .btn-wa-ic svg{
    display:block;
    width:100%;
    height:100%;
  }
  .mobile-conversion-bar .btn-wa .btn-wa-label{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
  }
  body:has(.mobile-conversion-bar.is-visible){padding-bottom:78px;}
}

/* ============================================================
   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-width:100%;min-width:0;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(--text-muted);}
.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-status{margin:0;padding:10px var(--space-5) 0;font-family:var(--font-mono);
  font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);}
.resa-step-status[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[hidden]{display:none;}
.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);}
/* Les parcours de réservation de la LP Numériklub reprennent le bleu cyan du logo,
   sans modifier les steppers des autres univers. */
.page-numeriklub-lp .resa-step.is-active .resa-step-n{
  background:var(--nk-cyan,#3DB4E7);
  border-color:var(--nk-cyan,#3DB4E7);
  color:var(--nk-blue-ink,#0E2438);
}
.page-numeriklub-lp .resa-step.is-done .resa-step-n{
  border-color:var(--nk-cyan,#3DB4E7);
  color:var(--nk-cyan,#3DB4E7);
}

.resa-body{width:100%;min-width:0;padding:var(--space-5);overflow-y:auto;overflow-x:hidden;}
.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(--heading);}

/* Parcours famille de la LP Numériklub — choix guidé + récapitulatif */
.page-numeriklub-lp .resa-box{
  width:min(1160px,calc(100vw - 48px));
  max-height:min(860px,calc(100vh - 48px));
  border-radius:4px;
  background:#f5f8fc;
  color:#132b40;
}
/* La landing est animée à son entrée. Sans ce garde-fou, un transform sur
   .page devient le containing block de la modale fixed et la centre sur toute
   la hauteur de la page, surtout sur mobile. */
body:has(.page-numeriklub-lp .resa-modal.is-open) .page-numeriklub-lp{
  animation:none!important;
  transform:none!important;
}
.page-numeriklub-lp .resa-head,
.page-numeriklub-lp .resa-steps{border-color:rgba(19,43,64,.1);flex:none;}
.page-numeriklub-lp .resa-eyebrow,
.page-numeriklub-lp .resa-step-l{color:#4e697e;}
.page-numeriklub-lp .resa-step-n{border-color:rgba(19,43,64,.28);color:#4e697e;}
.page-numeriklub-lp .resa-step.is-active .resa-step-l{color:#132b40;}
.page-numeriklub-lp .resa-body{flex:1 1 auto;min-height:0;padding:8px;background:#f5f8fc;}
.resa-lp-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.72fr);gap:24px;padding:26px;width:100%;min-width:0;box-sizing:border-box;}
.resa-lp-main{min-width:0;container-type:inline-size;container-name:resa-main;}
.page-numeriklub-lp .resa-title{color:#10283d;font-family:var(--font-display);font-size:clamp(1.55rem,2.5vw,2.15rem);line-height:1.05;margin-bottom:10px;}
.page-numeriklub-lp .resa-intro{color:#587087;line-height:1.55;max-width:62ch;}
.page-numeriklub-lp .resa-type-rich{
  color:#132b40;
  background:#fff;
  border-color:rgba(19,43,64,.16);
}
.page-numeriklub-lp .resa-type-rich .resa-type-name{color:#132b40;}
.page-numeriklub-lp .resa-type-rich .resa-type-desc{color:#39566f;}
.page-numeriklub-lp .resa-type-rich .resa-type-chip{
  color:#456278;
  border-color:rgba(19,43,64,.2);
}
.page-numeriklub-lp .resa-type-rich .resa-type-more{color:#2c5c88;}
.page-numeriklub-lp .resa-rdv-row{
  border-top:1px solid rgba(19,43,64,.12);
  background:#fff;
}
.page-numeriklub-lp .resa-rdv-row .resa-rdv-txt{color:#39566f;}
.page-numeriklub-lp .resa-rdv-row .btn-rdv{
  color:#132b40;
  border-color:rgba(19,43,64,.28);
}
/* En paysage court, garder l'écran de choix entièrement visible sans
   compresser la modale dans une zone scrollable. */
@media (min-width:761px) and (max-height:600px){
  .page-numeriklub-lp .resa-modal{padding:10px 12px;}
  .page-numeriklub-lp .resa-box{
    width:min(1160px,calc(100vw - 24px));
    max-height:calc(100vh - 20px);
  }
  .page-numeriklub-lp .resa-head{padding:14px 20px 12px;}
  .page-numeriklub-lp .resa-title{margin-bottom:8px;}
  .page-numeriklub-lp .resa-types-grid{gap:20px;}
  .page-numeriklub-lp .resa-type-rich{padding:12px;gap:10px;}
  .page-numeriklub-lp .resa-type-media{width:48px;height:48px;}
  .page-numeriklub-lp .resa-type-rich .resa-type-chips{display:none;}
  .page-numeriklub-lp .resa-rdv-row{padding-block:14px;}
}
.resa-lp-section{padding:19px 0;border-top:1px solid rgba(19,43,64,.11);}
.resa-lp-section h4{margin:0 0 12px;color:#17344c;font-size:1rem;font-weight:800;letter-spacing:-.01em;}
.resa-lp-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;}
.resa-lp-section-head small{color:#698196;font-size:.76rem;}
.resa-lp-formats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.resa-lp-format,.resa-lp-campus,.resa-lp-theme{
  appearance:none;text-align:left;border:1px solid rgba(19,43,64,.15);border-radius:10px;
  background:#fff;color:#17344c;padding:14px;cursor:pointer;
  transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease,background .18s ease;
}
.resa-lp-format:hover,.resa-lp-campus:hover,.resa-lp-theme:hover,
.resa-lp-format:focus-visible,.resa-lp-campus:focus-visible,.resa-lp-theme:focus-visible{
  border-color:#2fafd9;box-shadow:0 5px 14px rgba(19,73,107,.1);outline:none;transform:translateY(-1px);
}
.resa-lp-format.is-selected,.resa-lp-campus.is-selected,.resa-lp-theme.is-selected{
  border-color:#2fafd9;background:#eefaff;box-shadow:0 0 0 2px rgba(47,175,217,.14);
}
.resa-lp-format-top{display:flex;align-items:center;gap:8px;min-width:0;}
.resa-lp-format-top strong{font-size:.93rem;line-height:1.2;min-width:0;}
.resa-lp-format-top b{margin-left:auto;white-space:nowrap;color:#e56b2f;font-size:.82rem;}
.resa-lp-radio{width:14px;height:14px;flex:none;border:2px solid #9cb0bd;border-radius:50%;}
.resa-lp-format.is-selected .resa-lp-radio{border-color:#2fafd9;box-shadow:inset 0 0 0 3px #fff;background:#2fafd9;}
.resa-lp-format-meta,.resa-lp-format-desc{display:block;margin-top:7px;color:#678095;font-size:.74rem;line-height:1.4;}
.resa-lp-format-meta{color:#5b7488;}
.resa-lp-format-desc{color:#3f5c71;}
@container resa-main (max-width:620px){
  .resa-lp-formats{grid-template-columns:1fr;}
  .resa-lp-format-top b{white-space:normal;max-width:100%;}
}
.resa-lp-campuses{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;}
.resa-lp-campus{display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center;padding:12px;}
.resa-lp-campus-pin{grid-row:span 2;color:#2fafd9;font-size:1.05rem;}
.resa-lp-campus strong{font-size:.88rem;}
.resa-lp-campus small{color:#5d7488;font-size:.68rem;line-height:1.25;}
.resa-lp-themes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
.resa-lp-theme{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;}
.resa-lp-theme-icon{display:grid;place-items:center;width:27px;height:27px;flex:none;border-radius:7px;background:#fff1e9;color:#e56b2f;font-weight:800;}
.resa-lp-theme strong,.resa-lp-theme small{display:block;}
.resa-lp-theme strong{font-size:.82rem;line-height:1.25;}
.resa-lp-theme small{margin-top:3px;color:#5d7488;font-size:.69rem;line-height:1.25;}
.resa-lp-sessions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;}
.resa-lp-session{display:flex;align-items:center;gap:9px;border:1px solid rgba(19,43,64,.15);border-radius:9px;background:#fff;padding:11px;cursor:pointer;}
.resa-lp-session:hover,.resa-lp-session.is-selected{border-color:#2fafd9;background:#eefaff;}
.resa-lp-session input{accent-color:#2fafd9;flex:none;}
.resa-lp-session span{display:flex;flex-direction:column;gap:3px;min-width:0;}
.resa-lp-session strong{font-size:.78rem;color:#17344c;}
.resa-lp-session small{color:#587286;font-size:.7rem;line-height:1.3;}
.resa-lp-session i{margin-left:auto;color:#9bb0bd;font-style:normal;font-size:1.2rem;}
.resa-lp-session.is-selected i{color:#2fafd9;}
.resa-lp-summary{align-self:start;position:sticky;top:0;padding:20px;border-radius:12px;background:#17344c;color:#fff;box-shadow:0 12px 28px rgba(16,40,61,.18);}
.resa-lp-summary-head{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.resa-lp-summary-kicker{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:#99cfe1;}
.resa-lp-summary-status{padding:4px 8px;border:1px solid rgba(255,255,255,.28);border-radius:999px;color:#e7f8fd;font-size:.63rem;font-weight:800;white-space:nowrap;}
.resa-lp-summary h4{margin:15px 0 18px;font-size:1.12rem;line-height:1.2;color:#fff;}
.resa-lp-summary dl{display:grid;gap:0;margin:0;}
.resa-lp-summary dl div{display:grid;gap:3px;padding:11px 0;border-top:1px solid rgba(255,255,255,.14);}
.resa-lp-summary dt{font-size:.67rem;letter-spacing:.08em;text-transform:uppercase;color:#a8c0cf;}
.resa-lp-summary dd{margin:0;color:#fff;font-size:.86rem;line-height:1.35;}
.resa-lp-summary dd:empty{min-height:1em;}
.resa-lp-summary dd{overflow-wrap:anywhere;}
.resa-lp-summary-price{margin:18px 0 0;color:#ffb17e;font-size:1.1rem;font-weight:800;}
.resa-lp-summary-note{margin:18px 0 0;color:#d4e2e9;font-size:.73rem;line-height:1.45;}
.resa-lp-participants{display:grid;gap:12px;}
.resa-lp-participants,.resa-lp-participant,.resa-lp-parent{min-width:0;max-width:100%;}
.resa-lp-participant,.resa-lp-parent{padding:17px;border:1px solid rgba(19,43,64,.14);border-radius:11px;background:#fff;}
.resa-lp-participant-head{display:flex;align-items:flex-start;gap:11px;margin-bottom:15px;}
.resa-lp-number{display:grid;place-items:center;width:29px;height:29px;flex:none;border-radius:8px;background:#e9f8fd;color:#2a9fc8;font-size:.72rem;font-weight:800;}
.resa-lp-participant-head h4{margin:1px 0 3px;color:#17344c;font-size:.96rem;}
.resa-lp-participant-head small{display:block;color:#71879a;font-size:.7rem;line-height:1.35;}
.resa-lp-child-grid,.resa-lp-parent-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.resa-lp-child-grid .field,.resa-lp-parent-grid .field{margin:0;}
.resa-lp-child-grid .field:nth-child(3){grid-column:1/-1;max-width:180px;}
.resa-lp-child-detail{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-top:15px;padding-top:14px;border-top:1px solid rgba(19,43,64,.1);min-width:0;max-width:100%;}
.resa-lp-field-label{display:flex;flex-wrap:wrap;gap:3px 8px;color:#17344c;font-size:.8rem;font-weight:700;}
.resa-lp-field-label small{flex-basis:100%;color:#71879a;font-size:.7rem;font-weight:400;}
.resa-lp-levels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;min-width:0;max-width:100%;width:auto;}
.resa-lp-level{appearance:none;text-align:left;border:1px solid rgba(19,43,64,.14);border-radius:8px;background:#f8fafc;color:#17344c;padding:9px;cursor:pointer;min-width:0;max-width:100%;}
.resa-lp-level:hover,.resa-lp-level.is-selected{border-color:#2fafd9;background:#eefaff;}
.resa-lp-level strong,.resa-lp-level small{display:block;}
.resa-lp-level strong{font-size:.74rem;}
.resa-lp-level small{margin-top:3px;color:#70869a;font-size:.65rem;line-height:1.25;}
.resa-lp-child-detail .field{max-width:300px;}
.resa-lp-sibling-toggle{display:flex;align-items:flex-start;gap:10px;margin:13px 0;padding:13px;border:1px dashed rgba(47,175,217,.45);border-radius:9px;background:#f0fbff;color:#17344c;cursor:pointer;}
.resa-lp-sibling-toggle input{accent-color:#2fafd9;margin-top:3px;}
.resa-lp-sibling-toggle strong,.resa-lp-sibling-toggle small{display:block;}
.resa-lp-sibling-toggle strong{font-size:.8rem;}
.resa-lp-sibling-toggle small{margin-top:3px;color:#668096;font-size:.7rem;}
.resa-lp-parent{margin-top:13px;}
.resa-lp-parent .resa-lp-participant-head{margin-bottom:13px;}
.resa-lp-parent-grid .field:nth-child(n){grid-column:auto;max-width:none;}
.page-numeriklub-lp .resa-lp-main .field label{color:#355169;font-size:.74rem;}
.page-numeriklub-lp .resa-lp-main .field input,.page-numeriklub-lp .resa-lp-main .field select{
  min-height:41px;border-color:rgba(19,43,64,.18);background:#fbfdff;color:#17344c;border-radius:7px;
}
.page-numeriklub-lp .resa-lp-main .field input:focus,.page-numeriklub-lp .resa-lp-main .field select:focus{
  border-color:#2fafd9;box-shadow:0 0 0 3px rgba(47,175,217,.14);outline:none;
}
.page-numeriklub-lp .resa-lp-main .resa-rgpd{border-color:rgba(19,43,64,.13);background:#fff;color:#526d82;font-size:.74rem;}
.page-numeriklub-lp .resa-lp-main .resa-actions{border-top:1px solid rgba(19,43,64,.11);padding-top:18px;}
.resa-lp-empty{color:#71879a;font-size:.78rem;}

/* Le tunnel générique Numériklub reprend la même composition que la landing :
   le contenu de qualification reste à gauche et la simulation reste visible
   à droite jusqu'au récapitulatif. */
.page-numeriklub:not(.page-numeriklub-lp) .resa-box{
  width:min(1160px,calc(100vw - 48px));
  max-height:min(860px,calc(100vh - 48px));
  border-radius:4px;
  background:#f5f8fc;
  color:#132b40;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-head,
.page-numeriklub:not(.page-numeriklub-lp) .resa-steps{
  border-color:rgba(19,43,64,.1);
  flex:none;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-eyebrow,
.page-numeriklub:not(.page-numeriklub-lp) .resa-step-l{color:#4e697e;}
.page-numeriklub:not(.page-numeriklub-lp) .resa-step-n{border-color:rgba(19,43,64,.28);color:#4e697e;}
.page-numeriklub:not(.page-numeriklub-lp) .resa-step.is-active .resa-step-l{color:#132b40;}
.page-numeriklub:not(.page-numeriklub-lp) .resa-body{
  flex:1 1 auto;
  min-height:0;
  padding:0;
  background:#f5f8fc;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-title{
  color:#10283d;
  font-family:var(--font-display);
  font-size:clamp(1.55rem,2.5vw,2.15rem);
  line-height:1.05;
  margin-bottom:10px;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-intro{
  color:#587087;
  line-height:1.55;
  max-width:62ch;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .field label{color:#355169;font-size:.74rem;}
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .field input,
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .field select,
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .field textarea{
  min-height:41px;
  border-color:rgba(19,43,64,.18);
  background:#fbfdff;
  color:#17344c;
  border-radius:7px;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .field input:focus,
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .field select:focus,
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .field textarea:focus{
  border-color:#2fafd9;
  box-shadow:0 0 0 3px rgba(47,175,217,.14);
  outline:none;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .resa-rgpd{
  border-color:rgba(19,43,64,.13);
  background:#fff;
  color:#526d82;
  font-size:.74rem;
}
.page-numeriklub:not(.page-numeriklub-lp) .resa-lp-main .resa-actions{
  border-top:1px solid rgba(19,43,64,.11);
  padding-top:18px;
}

.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(--text-secondary);}
.resa-type-desc,.resa-profile-desc{font-size:var(--text-sm);color:var(--text-secondary);}

/* Étape 1 réservation — cartes de sélection enrichies (grille 2×2 desktop) */
.resa-types-grid{grid-template-columns:repeat(2,1fr);align-items:stretch;}
/* Carte enrichie = conteneur (plus un bouton) : corps + 2 CTA (Sélectionner / Voir plus) */
.resa-type-rich{flex-direction:column;gap:var(--space-3);position:relative;overflow:hidden;cursor:default;}
.resa-type-rich:hover{transform:none;}
.resa-type-body{display:flex;flex-direction:row;align-items:flex-start;gap:var(--space-3);}
.resa-type-media{flex:0 0 auto;width:56px;height:56px;border-radius:var(--radius-ui);overflow:hidden;
  background:rgba(var(--accent-rgb),.08);display:grid;place-items:center;}
.resa-type-media img{width:100%;height:100%;object-fit:cover;display:block;}
.resa-type-main{display:flex;flex-direction:column;gap:6px;min-width:0;}
.resa-type-rich .resa-type-name{font-size:var(--text-md,var(--text-lg));line-height:1.15;}
.resa-type-chips{display:flex;flex-wrap:wrap;gap:4px;}
.resa-type-chip{font-family:var(--font-mono);font-size:var(--text-2xs);line-height:1.4;letter-spacing:.03em;
  color:var(--heading);border:1px solid rgba(var(--tint),.22);border-radius:var(--radius-ui);padding:1px 6px;white-space:nowrap;}
.resa-type-rich .resa-type-desc{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.resa-type.is-featured{border-color:var(--accent);background:rgba(var(--accent-rgb),.06);}
.resa-type-badge{position:absolute;top:0;right:0;font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.06em;
  text-transform:uppercase;font-weight:600;color:var(--heading);background:rgba(var(--tint),.14);
  padding:3px 8px;border-bottom-left-radius:var(--radius-ui);}
/* Zone CTA de la carte */
.resa-type-cta{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:auto;}
.btn-sm{padding:9px 16px;font-size:var(--text-2xs);}
.resa-type-more{display:inline-flex;align-items:center;gap:4px;background:none;border:0;cursor:pointer;padding:4px 2px;
  font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;
  color:var(--accent);transition:color .2s ease,gap .2s ease;}
.resa-type-more:hover{gap:7px;filter:brightness(1.15);}
.resa-type-more:focus-visible{gap:7px;filter:brightness(1.15);outline:2px solid rgb(var(--accent-rgb));outline-offset:3px;border-radius:2px;}
.resa-type-more-ico{transition:transform .2s ease;}
.resa-type-more:hover .resa-type-more-ico{transform:translateY(2px);}
@media (max-width:560px){.resa-types-grid{grid-template-columns:1fr;}}

/* Détail « Voir plus » — expand-in-place (grow + fade) dans le même encadré */
.resa-type-detail{display:flex;flex-direction:column;gap:var(--space-3);animation:resaGrow .28s var(--ease-out,ease) both;transform-origin:top center;}
@keyframes resaGrow{from{opacity:0;transform:translateY(6px) scale(.985);}to{opacity:1;transform:none;}}
.resa-detail-back{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;background:none;border:0;cursor:pointer;
  padding:2px 2px;font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;
  color:var(--text-secondary);transition:color .2s ease,gap .2s ease;}
.resa-detail-back:hover{color:var(--accent);gap:9px;}
.resa-detail-back:focus-visible{color:var(--accent);gap:9px;outline:2px solid rgb(var(--accent-rgb));outline-offset:3px;border-radius:2px;}
.resa-detail-media{border-radius:var(--radius-md,12px);overflow:hidden;background:rgba(var(--accent-rgb),.08);
  aspect-ratio:16/7;}
.resa-detail-media img{width:100%;height:100%;object-fit:cover;display:block;}
.resa-detail-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;margin:0;line-height:1.1;}
.resa-detail-price{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--heading);margin:0;}
.resa-detail-desc{font-size:var(--text-sm);color:var(--text-secondary);margin:0;line-height:1.55;}
.resa-detail-block{display:flex;flex-direction:column;gap:6px;}
.resa-detail-block h4{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);margin:0;}
.resa-detail-list{margin:0;padding-left:1.1em;display:flex;flex-direction:column;gap:3px;
  font-size:var(--text-sm);color:var(--text-secondary);}
.resa-detail-engagement{font-size:var(--text-sm);color:var(--text-secondary);margin:0;}
.resa-detail-engagement span{color:var(--text);font-weight:600;}
.resa-detail-actions{margin-top:var(--space-3);}

.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);min-width:0;max-width:100%;box-sizing:border-box;}
.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,minmax(0,1fr));gap:var(--space-3) var(--space-4);min-width:0;max-width:100%;}
.resa-grid .field{margin-bottom:0;min-width:0;}
.resa-grid .field input,
.resa-grid .field select,
.resa-grid .field textarea{width:100%;max-width:100%;min-width:0;box-sizing:border-box;}
.resa-need-count{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  padding:var(--space-3) var(--space-4);border:1px solid rgba(var(--tint),.12);border-radius:var(--radius-md,12px);
  background:rgba(var(--accent-rgb),.06);font-size:var(--text-sm);color:var(--text-secondary);}
.resa-need-count strong{font-family:var(--font-mono);font-size:var(--text-lg);color:var(--heading);}
.resa-field-full{grid-column:1/-1;}
.structure-need-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3) var(--space-4);}
.structure-need-grid .field{margin-bottom:0;}
.structure-need-grid .resa-fieldset{margin:0;}
.resa-choice-group{display:flex;flex-wrap:wrap;gap:var(--space-2);}
.resa-choice-group label{display:inline-flex;align-items:flex-start;gap:8px;min-width:0;padding:9px 12px;border:1px solid rgba(var(--tint),.14);border-radius:var(--radius-ui);background:rgba(var(--tint),.03);color:var(--text-secondary);cursor:pointer;font-size:var(--text-sm);}
.resa-choice-group label:has(input:checked){border-color:var(--accent);background:rgba(var(--accent-rgb),.08);color:var(--text);}
.resa-choice-group input{accent-color:var(--accent);margin-top:3px;flex:none;}
.resa-choice-group-radio label{flex:1 1 180px;}
.resa-annual-tracks{display:grid;gap:var(--space-3);}
.resa-annual-track-select{margin:0;}
.resa-annual-track-select select{width:100%;}
.resa-annual-track-summary{display:flex;flex-direction:column;gap:3px;margin-top:var(--space-3);padding:var(--space-3);
  border-left:2px solid var(--accent);background:rgba(var(--accent-rgb),.07);color:var(--text-secondary);
  font-size:var(--text-sm);line-height:1.4;}
.resa-annual-track-summary strong{font-family:var(--font-display);font-size:var(--text-lg);color:var(--text);}
.resa-annual-track-summary small{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.04em;color:var(--text-muted);}
.resa-annual-track{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:var(--space-3);
  padding:var(--space-3);border:1px solid rgba(var(--tint),.14);border-radius:var(--radius-ui);
  background:rgba(var(--tint),.03);cursor:pointer;transition:border-color .2s ease,background .2s ease;}
.resa-annual-track:hover,.resa-annual-track:has(input:checked){border-color:var(--accent);background:rgba(var(--accent-rgb),.08);}
.resa-annual-track input{margin-top:4px;accent-color:var(--accent);}
.resa-annual-track-main{display:flex;flex-direction:column;gap:3px;min-width:0;}
.resa-annual-track-main strong{font-family:var(--font-display);font-size:var(--text-lg);color:var(--text);}
.resa-annual-track-main small{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.04em;color:var(--text-muted);}
.resa-annual-track-main span{font-size:var(--text-sm);line-height:1.4;color:var(--text-secondary);}
.resa-annual-track-price{font-family:var(--font-mono);font-size:var(--text-xs);line-height:1.35;color:var(--heading);text-align:right;}
.resa-annual-stream{margin-top:var(--space-4);}
.resa-choice-cards{display:flex;flex-wrap:wrap;gap:var(--space-2);}
.resa-choice-card{display:flex;align-items:center;gap:8px;flex:1 1 220px;padding:10px 12px;
  border:1px solid rgba(var(--tint),.14);border-radius:var(--radius-ui);background:rgba(var(--tint),.03);
  color:var(--text-secondary);cursor:pointer;font-size:var(--text-sm);}
.resa-choice-card:hover,.resa-choice-card.is-selected,.resa-choice-card:has(input:checked){border-color:var(--accent);background:rgba(var(--accent-rgb),.08);color:var(--text);}
.resa-choice-card input{accent-color:var(--accent);}
.resa-payment-modes{margin-top:var(--space-4);}
.resa-pay-installments{margin:var(--space-3) 0 0;padding:10px 12px;
  border-left:2px solid var(--accent);background:rgba(var(--accent-rgb),.07);
  color:var(--text-secondary);font-size:var(--text-sm);line-height:1.45;}
.resa-done-payment{margin:var(--space-3) auto 0;color:var(--text-secondary);
  font-size:var(--text-sm);text-align:center;}
.resa-done-payment strong{color:var(--heading);}
.structure-period-select{min-height:128px;}
.structure-period-select option{padding:7px 8px;}
.resa-structure-quote{margin:var(--space-4) 0;padding:var(--space-4);border-left:3px solid var(--accent);background:rgba(var(--accent-rgb),.08);font-family:var(--font-display);font-size:var(--text-xl);color:var(--heading);}
.resa-structure-disclaimer{font-size:var(--text-sm);line-height:1.55;color:var(--text-secondary);}
.resa-req{color:var(--heading);}
.resa-opt{color:var(--text-secondary);font-weight:400;text-transform:none;letter-spacing:0;}
.resa-company-field{position:relative;}
.resa-company-status{min-height:1.3em;margin-top:5px;font-size:var(--text-xs);color:var(--text-secondary);line-height:1.35;}
.resa-company-results{position:relative;z-index:4;display:grid;gap:4px;margin-top:4px;padding:5px;
  border:1px solid rgba(var(--tint),.16);border-radius:var(--radius-ui);background:var(--surface,#fff);
  box-shadow:0 12px 28px rgba(8,20,32,.16);}
.resa-company-results[hidden]{display:none;}
.resa-company-result{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;
  border:0;border-radius:var(--radius-ui);background:transparent;color:var(--text);text-align:left;cursor:pointer;}
.resa-company-result:hover,.resa-company-result:focus-visible{background:rgba(var(--tint),.07);outline:none;}
.resa-company-result strong{font-size:var(--text-sm);font-weight:700;}
.resa-company-result small,.resa-company-empty{font-size:var(--text-xs);color:var(--text-secondary);}
.resa-company-empty{margin:5px 8px;}
.resa-cse-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  margin:var(--space-4) 0 var(--space-3);padding:var(--space-3) var(--space-4);
  border:1px solid rgba(var(--tint),.12);border-radius:var(--radius-md,12px);
  background:rgba(var(--tint),.04);font-size:var(--text-sm);color:var(--text-secondary);}
.resa-cse-summary strong{font-family:var(--font-mono);font-size:var(--text-lg);color:var(--heading);}
.resa-cse-weeks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2);}
.resa-cse-week{display:flex;align-items:flex-start;gap:10px;padding:var(--space-3);
  border:1px solid rgba(var(--tint),.14);border-radius:var(--radius-md,12px);
  color:var(--text);cursor:pointer;transition:border-color .2s ease,background .2s ease;}
.resa-cse-week:hover{border-color:var(--accent);}
.resa-cse-week:has(input:checked){border-color:var(--accent);background:rgba(var(--tint),.07);}
.resa-cse-week input{accent-color:var(--accent);width:16px;height:16px;margin-top:2px;flex:none;}
.resa-cse-week span{display:flex;flex-direction:column;gap:3px;min-width:0;}
.resa-cse-week strong{font-family:var(--font-mono);font-size:var(--text-xs);}
.resa-cse-week small{font-size:var(--text-sm);color:var(--text-secondary);}
.resa-capacity-note{margin:0;padding:var(--space-3);border-left:3px solid var(--accent);
  background:rgba(var(--tint),.05);color:var(--text-secondary);font-size:var(--text-sm);line-height:1.45;}

.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-static .resa-assign{cursor:default;}
.resa-assign-static .resa-assign span:first-child{color:var(--accent);}
.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(--text-secondary);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(--heading);}
.resa-payment-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-4);
  align-items:start;margin-top:var(--space-5);}
.resa-payment-column{min-width:0;padding:var(--space-4);border:1px solid rgba(var(--tint),.1);
  border-radius:var(--radius-md,12px);background:rgba(var(--tint),.025);}
.resa-payment-column-title{margin:0 0 var(--space-3);font-family:var(--font-mono);font-size:var(--text-xs);
  letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);}
.resa-payment-summary-column .resa-pay-summary{margin:0;}
.resa-payment-action-column .resa-payment-modes{margin:0;}
.resa-payment-action-column .resa-actions{margin-top:var(--space-4);}
.resa-family-discount{
  display:flex;align-items:flex-start;gap:8px;margin:var(--space-3) 0 0;
  padding:.65rem .8rem;border:1px solid rgba(var(--fomo-rgb),.28);
  border-radius:var(--radius-ui);background:rgba(var(--fomo-rgb),.07);
  color:var(--text);font-size:var(--text-sm);font-weight:700;line-height:1.45;
}
.resa-family-discount > span{color:var(--fomo);line-height:1.35;}
.resa-family-discount.is-applied{border-color:rgba(var(--fomo-rgb),.48);background:rgba(var(--fomo-rgb),.12);}
:root.light .resa-family-discount{background:rgba(var(--fomo-rgb),.06);}
:root.light .resa-family-discount.is-applied{background:rgba(var(--fomo-rgb),.10);}

.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(840px,calc(100vh - 140px));
  min-height:620px;
  max-height:none;
  overflow:auto;
  scrollbar-gutter:stable;
  background:#fff;
}

/* Modale RDV (agenda Pipedrive en superposition — cf. rdv-modal.js) */
 .rdv-modal .resa-embed-appt{height:min(840px,calc(100vh - 140px));}
.rdv-fallback{margin:var(--space-3) 0 0;font-size:var(--text-sm);text-align:center;color:var(--text-secondary);}
.rdv-fallback a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;}

/* --- apports de la refonte --- */
.scheduler-embed{
  width:100%;max-width:800px;margin-inline:auto;
  height:min(600px,80vh);
  border-radius:var(--radius-md,12px);overflow:hidden;
  background:#fff;box-shadow:0 10px 30px rgba(8,20,32,.28);
}
.scheduler-embed iframe{width:100%;height:100%;border:0;display:block;}

.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(--text-secondary);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-annual-assignment .resa-child-grid{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:var(--space-3);}
.resa-annual-assignment .field select{border-radius:var(--radius-ui);background-color:rgba(var(--tint),.045);}
.resa-annual-assignment-hint{margin:var(--space-2) 0 0;color:var(--text-secondary);font-size:var(--text-xs);line-height:1.45;}
.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(--heading);}
.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:rgba(var(--tint),.12);color:var(--heading);}
.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;}
.resa-prior-year{display:flex;align-items:flex-start;gap:10px;margin:var(--space-3) 0;
  padding:var(--space-3);border:1px solid rgba(var(--accent-rgb),.2);
  border-radius:var(--radius-md,12px);background:rgba(var(--accent-rgb),.05);
  color:var(--text);cursor:pointer;}
.resa-prior-year input{accent-color:var(--accent);width:17px;height:17px;margin-top:2px;flex:none;cursor:pointer;}
.resa-prior-year span{display:flex;flex-direction:column;gap:3px;line-height:1.35;}
.resa-prior-year strong{font-size:var(--text-sm);}
.resa-prior-year small{font-size:var(--text-xs);color:var(--text-secondary);}
.resa-prior-year:has(input:checked){border-color:var(--accent);background:rgba(var(--accent-rgb),.1);}

/* ===== 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:760px){
  .resa-lp-layout{grid-template-columns:1fr;padding:20px;gap:0;}
  .resa-lp-main{grid-row:1;}
  .resa-lp-summary{position:static;grid-row:2;margin:20px 0 0;}
}
@media(max-width:560px){
  /* Garder un vrai espace autour de la fenêtre sur mobile : le tunnel
     conserve son scroll interne sans coller aux bords du viewport. */
  .resa-modal{padding:18px;}
  .resa-box{width:100%;max-width:100%;max-height:calc(100vh - 36px);border-radius:12px;}
  .page-numeriklub-lp .resa-box{width:100%;max-width:100%;max-height:calc(100vh - 36px);border-radius:12px;}
  .page-numeriklub-lp .resa-head{padding:14px 16px 12px;}
  .page-numeriklub-lp .resa-step-status{padding:8px 16px 0;}
  .page-numeriklub-lp .resa-steps{padding:10px 16px 12px;gap:0;justify-content:space-between;}
  .page-numeriklub-lp .resa-step{flex:0 0 auto;}
  .resa-payment-layout{grid-template-columns:1fr;}
  .resa-grid{grid-template-columns:1fr;}
  .structure-need-grid{grid-template-columns:1fr;}
  .resa-cse-weeks{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;}
  .page-numeriklub-lp .resa-body{padding:8px;}
  .resa-lp-layout{padding:16px;}
  .resa-lp-formats,.resa-lp-themes,.resa-lp-sessions{grid-template-columns:1fr;}
  .resa-lp-campuses{grid-template-columns:1fr;}
  .resa-lp-child-grid,.resa-lp-parent-grid{grid-template-columns:1fr;}
  .resa-lp-child-grid .field:nth-child(3){grid-column:auto;max-width:none;}
  .resa-lp-levels{grid-template-columns:1fr;}
  .resa-lp-summary{padding:16px;}
  .page-numeriklub-lp .resa-actions{flex-direction:column-reverse;align-items:stretch;gap:9px;}
  .page-numeriklub-lp .resa-actions .btn{width:100%;min-height:46px;}
}
@media(prefers-reduced-motion:reduce){
  .resa-modal,.resa-box,.resa-type,.resa-profile,.resa-close{transition:none!important;}
  .resa-type-detail{animation:none!important;}
}

/* Formulaire famille LP Numériklub — les champs prénom/nom et les choix
   annuels doivent pouvoir rétrécir avant de forcer une largeur hors carte. */
@media(max-width:560px){
  .page-numeriklub-lp .resa-child-grid,
  .page-numeriklub-lp .resa-annual-assignment .resa-child-grid{
    grid-template-columns:minmax(0,1fr);
    min-width:0;
  }

  .page-numeriklub-lp .resa-child-grid .field,
  .page-numeriklub-lp .resa-child-grid input,
  .page-numeriklub-lp .resa-child-grid select{
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
  }

  .page-numeriklub-lp .resa-child-grid input,
  .page-numeriklub-lp .resa-child-grid select{
    width:100%;
  }
}

/* Petit verre texturé pour les repères de hero Numériklub sur mobile.
   Le fond reste sombre et contrasté : le grain ajoute de la matière sans
   transformer les chiffres et labels en texte décoratif. */
@media(max-width:760px){
  .page-numeriklub-lp > .page-hero .hero-stat{
    position:relative;
    isolation:isolate;
    overflow:hidden;
    border-color:rgba(220,231,239,.30);
    background:
      linear-gradient(140deg,rgba(255,255,255,.13),rgba(255,255,255,.035) 48%,rgba(8,20,32,.38)),
      rgba(8,20,32,.30);
    -webkit-backdrop-filter:blur(9px) saturate(1.08);
    backdrop-filter:blur(9px) saturate(1.08);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.16),
      0 8px 18px rgba(4,12,21,.18);
  }
  .page-numeriklub-lp > .page-hero .hero-stat::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:0;
    pointer-events:none;
    background-image:var(--bg-noise);
    background-size:180px 180px;
    mix-blend-mode:screen;
    opacity:.16;
  }
  .page-numeriklub-lp > .page-hero .hero-stat > *{
    position:relative;
    z-index:1;
  }
}

/* ===== 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{
  --accent:var(--nk-orange);
  --accent-rgb:var(--nk-orange-rgb);
  --on-accent:#241200;
  background:var(--nk-orange);
  color:#241200;
  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(--text-secondary);}
.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(--text-secondary);}
.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(--text-secondary);}
.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(--text-secondary);}
.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(--nk-cyan);border-color:rgba(61,180,231,.82);}
.nk-yc-sw-annualbreak{background:var(--nk-yellow);border-color:rgba(255,212,71,.96);}
.nk-yc-sw-holiday{background:#E9EDF1;border-color:#BCC6CF;}
.nk-yc-sw-stage{background:#0059CF;border-color:#0059CF;}
.nk-yc-sw-session{background:#fff;border:2px solid #3CB7EB;}
.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:var(--text-2xs);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:var(--text-2xs);
  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{
  --accent:var(--nk-orange);
  --accent-rgb:var(--nk-orange-rgb);
  --on-accent:#241200;
  background:var(--nk-orange);
  color:#241200;
  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:var(--text-2xs);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(--heading);}
.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:var(--text-2xs);
  color:var(--text-muted);text-transform:uppercase;}
.nk-yc-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:2px;}
.nk-yc[data-weekend="true"] .nk-yc-week-head,.nk-yc[data-weekend="true"] .nk-yc-grid{grid-template-columns:repeat(7,1fr);}
.nk-yc-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  font-size:var(--text-2xs);color:var(--text-secondary);border-radius:6px;line-height:1;}
.nk-yc-empty{visibility:hidden;}
.nk-yc-holiday{background:#E9EDF1;color:var(--text-secondary);font-weight:600;}
.nk-yc-annualbreak{background:var(--nk-yellow);color:#241200;}
.nk-yc-stage{background:#0059CF;color:#fff;font-weight:750;}
.nk-yc-weekly{background:var(--nk-cyan);color:#0E2438;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;}}

/* ===== Lot 8 — calendrier unique : territoire, lignes réservables, année ===== */
.nk-calendar-v8,
.nk-calendar-v8 *{box-sizing:border-box;}
.nk-calendar-v8{min-width:0;}
.nk-calendar-v8 .nk-calendar-territories{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  width:100%;
  max-width:720px;
  margin:0 0 var(--space-5);
}
.nk-calendar-v8 .nk-territory-button{
  min-width:0;
  min-height:46px;
  padding:9px 10px;
  border:1px solid rgba(var(--tint),.2);
  border-radius:var(--radius-ui,2px);
  background:rgba(var(--tint),.025);
  color:var(--text);
  font:700 var(--text-sm)/1.2 var(--font-display);
  text-align:center;
  white-space:normal;
  overflow-wrap:anywhere;
  cursor:pointer;
  transition:background-color .18s var(--ease-out),border-color .18s var(--ease-out),color .18s var(--ease-out);
}
.nk-calendar-v8 .nk-territory-button:hover{
  border-color:var(--nk-orange);
  background:rgba(var(--nk-orange-rgb),.08);
}
.nk-calendar-v8 .nk-territory-button[aria-pressed="true"]{
  border-color:var(--nk-orange);
  background:var(--nk-orange);
  color:#241200;
}
.nk-calendar-v8 .nk-territory-button:focus-visible,
.nk-calendar-v8 .nk-tab:focus-visible,
.nk-calendar-v8 .nk-upcoming-row a:focus-visible,
.nk-calendar-v8 .nk-upcoming-row button:focus-visible{
  outline:2px solid #0059CF;
  outline-offset:3px;
}
.nk-calendar-v8 .nk-tablist{margin-bottom:var(--space-5);}
.nk-calendar-v8 .nk-tab{min-height:44px;}

.nk-calendar-v8 .nk-upcoming-list{
  display:grid;
  gap:8px;
  min-width:0;
  margin:0;
  padding:0;
  list-style:none;
}
.nk-calendar-v8 .nk-upcoming-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(112px,auto);
  align-items:center;
  gap:12px;
  min-width:0;
  padding:14px 16px;
  border:1px solid rgba(var(--tint),.13);
  border-left:3px solid #3CB7EB;
  border-radius:var(--radius-ui,2px);
  background:var(--surface-raised,rgba(var(--tint),.025));
  color:var(--text);
}
.nk-calendar-v8 .nk-upcoming-copy{
  display:flex;
  align-items:baseline;
  flex-wrap:wrap;
  gap:5px 16px;
  min-width:0;
}
.nk-calendar-v8 .nk-upcoming-row > *{
  min-width:0;
  overflow-wrap:anywhere;
}
.nk-calendar-v8 .nk-upcoming-period{
  color:var(--heading);
  font-family:var(--font-display);
  font-weight:750;
  line-height:1.25;
}
.nk-calendar-v8 .nk-upcoming-detail{
  color:var(--text-secondary);
  line-height:1.45;
}
.nk-calendar-v8 .nk-upcoming-date,
.nk-calendar-v8 .nk-upcoming-duration,
.nk-calendar-v8 .nk-upcoming-holiday-note{
  color:var(--text-secondary);
  line-height:1.4;
}
.nk-calendar-v8 .nk-upcoming-duration{
  font-size:var(--text-sm);
  line-height:1.35;
}
.nk-calendar-v8 .nk-upcoming-holiday-note{
  flex-basis:100%;
  font-size:var(--text-xs);
}
.nk-calendar-v8 .nk-upcoming-price{
  color:var(--heading);
  font-family:var(--font-display);
  font-weight:800;
  white-space:normal;
}
.nk-calendar-v8 .nk-upcoming-row > .btn{
  display:flex;
  min-width:0;
  min-height:44px;
  align-items:center;
  justify-content:center;
  padding:9px 12px;
  border-radius:var(--radius-ui,2px);
  text-align:center;
  white-space:normal;
  overflow-wrap:anywhere;
}

/* L'année met les stages en premier plan, sans effacer le calendrier scolaire. */
.nk-calendar-v8 .nk-yc-legend{gap:10px 20px;}
.nk-calendar-v8 .nk-yc-months{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:var(--space-4);
  min-width:0;
}
.nk-calendar-v8 .nk-yc[data-weekend="true"] .nk-yc-grid{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:2px;
  min-width:0;
}
.nk-calendar-v8 .nk-yc-day{
  min-width:0;
  appearance:none;
  border:0;
  padding:0;
  font-family:inherit;
  cursor:pointer;
}
.nk-calendar-v8 .nk-yc-day:focus-visible{
  position:relative;
  z-index:1;
  outline:2px solid #0059CF;
  outline-offset:2px;
}
.nk-calendar-v8 .nk-yc-sw-stage{background:#0059CF;border-color:#0059CF;}
.nk-calendar-v8 .nk-yc-sw-session{background:#fff;border:2px solid #3CB7EB;}
.nk-calendar-v8 .nk-yc-sw-holiday{
  background-color:#E9EDF1;
  background-image:repeating-linear-gradient(135deg,transparent 0 3px,rgba(74,91,108,.22) 3px 4px);
  border-color:#BCC6CF;
}
.nk-calendar-v8 .nk-yc-day.nk-yc-holiday{
  background-color:#E9EDF1;
  background-image:repeating-linear-gradient(135deg,transparent 0 4px,rgba(74,91,108,.17) 4px 5px);
  color:#43515E;
  font-weight:650;
}
.nk-calendar-v8 .nk-yc-day.nk-yc-stage{
  background-color:#0059CF;
  background-image:none;
  color:#fff;
  font-weight:800;
}
.nk-calendar-v8 .nk-yc-day.nk-yc-holiday.nk-yc-stage{
  background-color:#0059CF;
  background-image:repeating-linear-gradient(135deg,#E9EDF1 0 3px,#D6DEE5 3px 4px);
  background-position:left bottom;
  background-size:100% 4px;
  background-repeat:no-repeat;
  color:#fff;
}
.nk-calendar-v8 .nk-yc-day.nk-yc-weekly,
.nk-calendar-v8 .nk-yc-day.nk-yc-session{
  border:2px solid #3CB7EB;
  background-color:rgba(60,183,235,.13);
  color:var(--text);
  font-weight:750;
}
.nk-calendar-v8 .nk-month-stages{
  display:grid;
  gap:5px;
  margin:var(--space-3) 0 0;
  padding-top:var(--space-3);
  border-top:1px solid rgba(var(--tint),.12);
  color:var(--text-secondary);
  font-size:var(--text-xs);
  line-height:1.5;
  overflow-wrap:anywhere;
}
.nk-calendar-v8 .nk-month-stage{
  display:block;
  color:var(--text-secondary);
}
.nk-calendar-v8 .nk-yc[data-filter]:not([data-filter="all"]) .nk-yc-day{opacity:1;}

@media(max-width:700px){
  .nk-calendar-v8 .nk-upcoming-row{
    grid-template-columns:minmax(0,1fr);
    gap:7px;
    padding:13px 14px;
  }
  .nk-calendar-v8 .nk-upcoming-copy{
    align-items:flex-start;
    flex-direction:column;
    gap:4px;
  }
  .nk-calendar-v8 .nk-upcoming-row > .btn{width:100%;}
  .nk-calendar-v8 .nk-yc-months{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media(max-width:480px){
  .nk-calendar-v8 .nk-yc-months{grid-template-columns:minmax(0,1fr);}
}
@media(max-width:420px){
  .nk-calendar-v8 .nk-calendar-territories{gap:6px;}
  .nk-calendar-v8 .nk-territory-button{
    padding:8px 4px;
    font-size:clamp(.76rem,3.25vw,.9rem);
  }
}
@media(prefers-reduced-motion:reduce){
  .nk-calendar-v8 .nk-territory-button{transition:none;}
}

/* =========================================================
   À PROPOS & BLOG (univers Numériklub)
   ========================================================= */
.about-block{max-width:74ch;}
.page[data-page="/a-propos/president-board"] .about-block-with-portrait{
  display:grid;
  grid-template-columns:minmax(0, .85fr) minmax(0, 1.4fr);
  align-items:start;
  gap:clamp(var(--space-5), 5vw, var(--space-8));
  max-width:none;
}
.about-prose-portrait{margin:0;overflow:hidden;border-radius:var(--radius-photo);aspect-ratio:1;}
.about-prose-portrait img{display:block;width:100%;height:100%;object-fit:cover;}
.about-block-with-portrait .about-prose-content{min-width:0;text-align:left;}
.prose-list{margin:var(--space-3) 0 var(--space-5);padding-left:1.4em;color:var(--text-secondary);line-height:1.75;}
.prose-list li+li{margin-top:var(--space-2);}
@media(max-width:760px){
  .page[data-page="/a-propos/president-board"] .about-block-with-portrait{grid-template-columns:minmax(0,1fr);}
}
.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-ui);font-size:.8rem;font-weight:700;
  letter-spacing:.01em;color:var(--heading);
  display:inline-flex;align-items:center;gap:6px;text-decoration:none;transition:var(--dur);}
.blog-card .u-cta:hover{color:var(--accent);}
.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(--text-secondary);}
.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-ui);font-size:.78rem;
  letter-spacing:.05em;text-transform:uppercase;color:var(--heading);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;color:var(--accent);}

/* Fiche détail */
.project-cover .img-ph{margin:0;min-height:340px;aspect-ratio:16/9;}
.page[data-page="/academy/projets-etudiants"] .prog-cover{aspect-ratio:3/4;background:var(--surface);}
.page[data-page="/academy/projets-etudiants"] .prog-cover img{width:100%;height:100%;object-fit:contain;}
.prog-cover.is-pending{display:grid;place-items:center;padding:var(--space-5);
  color:var(--text-secondary);text-align:center;border:1px solid var(--border);}
.project-film-info{display:grid;grid-template-columns:minmax(180px,300px) minmax(0,1fr);
  gap:clamp(var(--space-5),4vw,var(--space-8));align-items:start;margin-top:var(--space-8);}
.project-film-poster{margin:0;min-width:0;}
.project-film-poster .cover-img{display:block;width:100%;height:auto;max-height:560px;
  object-fit:contain;border-radius:var(--radius-photo);}
.project-film-poster figcaption{margin-top:var(--space-2);font-size:var(--text-sm);
  color:var(--text-secondary);}
.project-film-player{min-width:0;width:100%;}
.project-film-player h2{margin:0 0 var(--space-4);}
.project-film-player video{display:block;width:100%;aspect-ratio:16/9;background:#0b0b0b;
  border-radius:var(--radius-photo);object-fit:contain;}
.project-film-empty-media,.project-film-poster-empty{display:grid;place-content:center;gap:var(--space-2);
  text-align:center;color:var(--text-secondary);background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius-photo);padding:var(--space-5);}
.project-film-empty-media{min-height:clamp(190px,35vw,400px);}
.project-film-poster-empty{aspect-ratio:3/4;}
.project-film-poster-empty strong{color:var(--heading);font-size:var(--text-xl);}
.project-film-credits h2,.project-film-material h2{margin:0 0 var(--space-4);}
.project-film-credits h3{margin:var(--space-6) 0 var(--space-3);}
.project-film-pending{color:var(--text-secondary);margin:0;line-height:1.5;}
.project-student-links{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--space-3);}
.project-student-links a,.project-film-material a{color:var(--accent);text-decoration:underline;text-underline-offset:.2em;}
.project-film-materials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:var(--space-5);margin-top:var(--space-8);}
.project-film-material{min-width:0;}
.project-film-material video{width:100%;display:block;}
.project-bible-pages{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-4);}
.project-bible-pages img{width:100%;height:auto;}
@media (max-width:760px){
  .project-film-info,.project-film-materials{grid-template-columns:minmax(0,1fr);}
  .project-film-poster{max-width:300px;margin-inline:auto;}
}
.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:var(--text-2xs);text-transform:uppercase;letter-spacing:.1em;
  color:var(--text-secondary);font-weight:600;
}
.fc-path-eyebrow strong{color:var(--heading);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(--heading);
  letter-spacing:.01em;
}
.fc-path-card:hover .fc-path-arrow,.fc-path-card:focus-visible .fc-path-arrow{color:var(--accent);}
.fc-path-pack{border-color:var(--accent);}
.fc-path-pack .fc-path-eyebrow{color:var(--text-secondary);}

/* 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(--eyebrow);}
.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:rgba(var(--tint),.45);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:var(--text-2xs);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:var(--text-2xs);letter-spacing:.04em;}
}
@media(max-width:400px){
  .fi-wizard-steps{gap:4px;}
  .fi-wizard-step{padding:7px 3px;gap:4px;}
  .fi-wizard-n{width:24px;height:24px;font-size:var(--text-2xs);}
  .fi-wizard-l{font-size:var(--text-2xs);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(--heading);font-weight:700;margin-left:2px;}
.fi-opt{color:var(--text-muted);font-size:var(--text-2xs);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);min-width:0;}
.fi-form-grid .field{margin-bottom:0;}
.fi-form-grid .fi-field-full{grid-column:1/-1;}
.fi-form-grid .field{min-width:0;}
.fi-form-grid .field input,
.fi-form-grid .field select,
.fi-form-grid .field textarea{width:100%;max-width:100%;min-width:0;box-sizing:border-box;}
@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:var(--text-2xs);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:var(--text-2xs);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-ui);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);}
/* Programme pré-sélectionné (candidature spontanée via ?programme=) */
.fi-locked{margin:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-ui);
  background:rgba(var(--accent-rgb),.08);color:var(--text);font-weight:600;}
/* Contact FI court — fiches formation (Bachelor / Prépa / NUM'CRÉA) */
.fi-contact{padding:var(--space-6);}
@media(max-width:640px){.fi-contact{padding: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:var(--on-accent);}

/* --- Articulation socle / modules --- */
.fc-artic{margin:0 0 var(--space-6);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);}
.fc-artic-eyebrow{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);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:rgba(var(--tint),.35);box-shadow:0 0 0 1px rgba(var(--tint),.25) 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(--text-secondary);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;
  min-height:44px;display:inline-flex;align-items:center;padding:0 .25rem;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(--text-secondary);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:var(--text-2xs);font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--heading);background:rgba(var(--tint),.12);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(--heading);}
.fc-price-pack-old{font-size:.82rem;color:var(--text-muted);text-decoration:line-through;}
.fc-price-pack-off{font-size:var(--text-2xs);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:rgba(var(--tint),.45);}
.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(--heading);}
.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(--heading);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(--heading);}

/* É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:var(--text-2xs);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:var(--text-2xs);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(--heading);}
.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(--text-secondary);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:var(--on-accent);}
.fc-price-tab-main{font-weight:700;}
.fc-price-tab-sub{font-size:var(--text-2xs);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-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(--text-secondary);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:var(--text-2xs);font-weight:800;color:var(--heading);background:rgba(var(--tint),.14);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-radius:var(--radius-ui);background:rgba(var(--fomo-rgb),.05);}
.fc-funnel-fomo-k{font-size:var(--text-2xs);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;min-width:0;}
.fc-funnel-stack{display:grid;gap:var(--space-4);min-width:0;}
.fc-funnel-rdv-direct{margin:var(--space-3) 0 var(--space-2);}
.fc-funnel-rdv-or{font-size:.85rem;color:var(--text-secondary,#7a7a86);margin:0 0 var(--space-3);}
@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);min-width:0;}
.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(--text-secondary);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-card-bespoke .btn{width:100%;justify-content:center;}
.fc-funnel-form{display:grid;gap:var(--space-3);min-width:0;}
.fc-funnel-form .field{min-width:0;}
.fc-funnel-form .field input,
.fc-funnel-form .field select,
.fc-funnel-form .field textarea{width:100%;max-width:100%;min-width:0;box-sizing:border-box;}
.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{
  /* Haut de page : voile blanc léger, le hero respire. */
  background:rgba(255,255,255,.82);
  box-shadow:0 8px 22px rgba(21,49,74,.08);
}
/* Au défilement : densité d'origine retrouvée, du contenu quelconque passant
   alors sous la barre. */
:root.light .nav.is-scrolled{
  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,var(--bg) 0%,var(--bg-deep) 100%);
  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:1200px){
  :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 .field select{
  background-color:rgba(255,255,255,.96);
  color:var(--heading);color-scheme:light;}
:root.light .field select:invalid{color:var(--text-secondary);}
:root.light .field select option{background:#fff;color:var(--text);}
:root.light .field select option:disabled{color:var(--text-secondary);}
: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:#fff;
  box-shadow:var(--shadow-card-light);
  --heading:#0E2438;
  --text-secondary:#39556F;
  --text-muted:rgba(14,36,56,.65);
}
:root.light .cta-final h2{
  background:none;
  color:var(--heading);
  -webkit-text-fill-color:var(--heading);
}
:root.light .cta-final p,
:root.light .cta-final .form-note{color:var(--text-secondary);}

/* 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; }
/* Exception : la CARTE réalisation passe sur verre clair en mode clair
   (glass-vignette), mais son titre était codé #fff → blanc sur blanc.
   Repéré par tools/visual-check.mjs (contraste 1.08:1). */
:root.light .reali-title{ color:var(--text); }

/* 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é.
   --------------------------------------------------------- */
/* Bandes de couleurs du hero Hub (les 3 univers) : vignette adoucie en clair */
:root.light .hub-panel-media::after{
  background:linear-gradient(180deg,rgba(var(--tint),.06) 0%,transparent 45%,rgba(0,0,0,.14) 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(--eyebrow);}
.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-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[hidden],
.nk-preins-form[hidden]{display:none !important;}
.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(--heading);background:rgba(var(--tint),.08);box-shadow:inset 0 0 0 1px rgba(var(--tint),.2);}
.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(--text-secondary);}
.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:rgba(var(--tint),.4);box-shadow:none;}
.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);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:var(--text-2xs);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;}

/* Les sections sombres Numériklub gardent leurs surfaces sombres même quand
   le mode global clair est actif. */
:root.light .page-numeriklub > section.section:nth-of-type(even) .qualif-fomo-item,
:root.light .page-numeriklub > section.section:nth-of-type(even) .qualif-door,
:root.light .page-numeriklub > section.section:nth-of-type(even) .nk-order,
:root.light .page-numeriklub-lp > section#projets .qualif-fomo-item,
:root.light .page-numeriklub-lp > section#projets .qualif-door,
:root.light .page-numeriklub-lp > section#projets .nk-order,
:root.light .page-numeriklub-lp > section#temoignages .qualif-fomo-item,
:root.light .page-numeriklub-lp > section#temoignages .qualif-door,
:root.light .page-numeriklub-lp > section#temoignages .nk-order,
:root.light .page-numeriklub-lp > section#rappel .qualif-fomo-item,
:root.light .page-numeriklub-lp > section#rappel .qualif-door,
:root.light .page-numeriklub-lp > section#rappel .nk-order{
  background:var(--surface);
}

:root.light .page-numeriklub > section.section:nth-of-type(even) .card{
  --text:#DCE7EF;
  --text-secondary:#B3C8D8;
  --text-muted:rgba(179,200,216,.70);
  --heading:#F4F8FB;
  --heading-soft:#B3C8D8;
  --eyebrow:#B3C8D8;
  --surface:#0E2438;
  --surface-raised:#112B40;
  --border:rgba(123,160,190,.14);
  --border-strong:rgba(123,160,190,.28);
  --tint:255,255,255;
  color:var(--text);
  background:var(--surface);
}

:root.light .page-numeriklub-lp > section#projets .card,
:root.light .page-numeriklub-lp > section#temoignages .card,
:root.light .page-numeriklub-lp > section#rappel .card{
  --text:#DCE7EF;
  --text-secondary:#B3C8D8;
  --text-muted:rgba(179,200,216,.78);
  --heading:#F4F8FB;
  --heading-soft:#B3C8D8;
  --eyebrow:#B3C8D8;
  --surface:#20415A;
  --surface-raised:#254C67;
  --border:rgba(220,231,239,.18);
  --border-strong:rgba(220,231,239,.34);
  --tint:255,255,255;
  color:var(--text);
  background:var(--surface);
}

/* 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);}
.fc-pack-banner-k{font-size:var(--text-2xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--heading);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);}
:root.light .fc-price-fomo{background:rgba(var(--fomo-rgb),.06);border-color:rgba(var(--fomo-rgb),.22);}

/* Typographie technique — les libellés structurés partagent Nunito.
   Les boutons, liens d'action et contrôles restent en --font-ui. */
.hs-val,
.reel-tag,
.fc-path-eyebrow,
.fc-price-filters-eyebrow,
.fc-artic-eyebrow,
.fc-price-cart-eyebrow,
.fc-price-packs-eyebrow,
.fc-price-summary-eyebrow,
.fc-price-pack-badge,
.fc-price-pack-off,
.fc-price-savings-badge,
.fc-price-tab-sub,
.fc-grp-ctrl-lbl,
.fc-funnel-fomo-k,
.fc-funnel-num,
.fc-pp-mod-n,
.fc-pp-mod-dur,
.fc-pack-banner-k,
.fc-print-block h3{
  font-family:var(--font-mono);
}

/* 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;}

/* Le footer de campagne garde sa surface sombre même quand la landing est
   affichée en mode clair : ses textes et ses logos sont conçus pour ce contraste. */
:root.light .footer-campaign{
  background:linear-gradient(180deg,#0B1E2E,#081420);
  color:#DCE7EF;
}
:root.light .footer-campaign .footer-campaign-brand > .muted,
:root.light .footer-campaign .footer-trust span,
:root.light .footer-campaign .footer-campaign-links a,
:root.light .footer-campaign .footer-campaign-legal a,
:root.light .footer-campaign .footer-social a{
  color:#DCE7EF;
}
:root.light .footer-campaign .footer-campaign-links h5{
  color:#F4F8FB;
}
:root.light .footer-campaign .footer-social a{
  border-color:rgba(220,231,239,.28);
}
:root.light .footer-campaign .footer-campaign-bottom{
  color:rgba(220,231,239,.72);
}
:root.light .footer-campaign .lg-on-dark{display:block !important;}
:root.light .footer-campaign .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 .hub-trust-logo.is-white,
:root.light .nk-partner-logo.is-white{
  filter:brightness(0) opacity(.72);
}
/* Bande de logos studios dans les heros : mêmes logos blancs → encrés en mode
   clair (sinon délavés/illisibles sur le fond clair). Encre un peu plus douce
   (.62) car ce sont des logos décoratifs de défilement. */
:root.light .hero-marquee-logo.is-white{
  filter:brightness(0) opacity(.62);
}
:root.light .hero-marquee-logo.is-white:hover{
  filter:brightness(0) opacity(.9);
}
/* La bande NK est sombre, y compris en mode clair : ses logos blancs doivent
   rester blancs et ne pas suivre l’encrage des logos posés sur fond clair. */
:root.light .page-hero-floats .hero-marquee-logo.is-white{
  filter:drop-shadow(0 5px 12px rgba(0,0,0,.42));
  opacity:1;
}
:root.light .page-hero-floats .hero-marquee-logo.is-white:hover{
  filter:drop-shadow(0 5px 12px rgba(0,0,0,.52));
  opacity:1;
}
/* EXCEPTION : la bande du hero scroll-scale Academy est posée sur la carte
   vidéo SOMBRE (même en mode clair) → on garde les logos blancs, sinon ils
   deviennent noir-sur-noir. */
:root.light .hero-sticky .hero-marquee-logo.is-white{
  filter:none;opacity:.92;
}
:root.light .hero-sticky .hero-marquee-logo.is-white:hover{
  filter:none;opacity:1;
}

/* Hub — la bande de logos est posée contre la section suivante en mode clair :
   elle reçoit donc sa propre surface, sur le même principe que la bande FC.
   Les logos blancs sont encrés, les autres conservent leur couleur native. */
:root.light .page-hero-hub .hero-marquee{
  padding:12px clamp(14px,3vw,44px);
  border-block:1px solid rgba(var(--accent-secondary-rgb),.28);
  background:
    linear-gradient(90deg,rgba(255,255,255,.94),rgba(var(--accent-secondary-rgb),.10),rgba(255,255,255,.94)),
    var(--bg-noise-onlight);
  box-shadow:0 12px 28px rgba(21,49,74,.14),inset 0 1px 0 rgba(255,255,255,.9);
  -webkit-backdrop-filter:blur(14px) saturate(1.15);
  backdrop-filter:blur(14px) saturate(1.15);
}
:root.light .page-hero-hub .hero-marquee-logo{opacity:1;}
:root.light .page-hero-hub .hero-marquee-logo:not(.is-white){
  filter:drop-shadow(0 3px 7px rgba(21,49,74,.16));
}
:root.light .page-hero-hub .hero-marquee-logo.is-white{
  filter:brightness(0) opacity(.74) drop-shadow(0 3px 7px rgba(21,49,74,.14));
}
:root.light .page-hero-hub .hero-marquee-logo.is-white:hover{
  filter:brightness(0) opacity(.96) drop-shadow(0 3px 7px rgba(21,49,74,.18));
}

/* ===== 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);
}

/* Retour client : « changer le curseur, le simplifier ». Le réticule tournant
   en pointillés qui entourait l'anneau est retiré — une troisième couche en
   rotation permanente sur un curseur, c'est ce qui le rendait chargé, et
   c'était aussi une animation qui tournait en continu sur toutes les pages.
   Restent le point, l'anneau, et leurs états au survol et au clic. */

/* 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é : plus de transition de taille 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; }
}

/* ============================================================
   WHATSAPP — Modale de préqualification globale (wa-prequal.js)
   ============================================================ */
.waq-modal{position:fixed;inset:0;z-index:1200;display:grid;place-items:center;
  padding:var(--space-5,20px);opacity:0;transition:opacity .22s ease;}
.waq-modal.is-open{opacity:1;}
.waq-modal[hidden]{display:none;}
.waq-backdrop{position:absolute;inset:0;background:rgba(4,5,9,.86);backdrop-filter:blur(6px);}
.waq-box{position:relative;z-index:1;width:min(440px,94vw);max-height:92vh;overflow-y:auto;
  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);padding:var(--space-5);
  transform:scale(.96);transition:transform .22s var(--ease-out,ease);}
.waq-modal.is-open .waq-box{transform:scale(1);}
.waq-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);
  margin-bottom:var(--space-3);}
.waq-title{font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;margin:0 0 var(--space-2);}
.waq-intro{color:var(--text-secondary);font-size:var(--text-sm);margin:0 0 var(--space-4);}
.waq-form .field{margin-bottom:var(--space-3);}
.waq-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);}
.waq-grid .field{margin-bottom:0;}
.waq-form .waq-grid{margin-bottom:var(--space-3);}
.waq-rgpd{display:flex;align-items:flex-start;gap:8px;font-size:.82rem;line-height:1.4;
  color:var(--text-secondary);cursor:pointer;margin:var(--space-2) 0 var(--space-4);}
.waq-rgpd input{width:15px;height:15px;flex-shrink:0;margin-top:2px;}
.waq-cta{width:100%;justify-content:center;}
.waq-cta[disabled]{opacity:.45;cursor:not-allowed;pointer-events:none;filter:grayscale(.55);}
@media (max-width: 480px){ .waq-grid{grid-template-columns:1fr;gap:0;} .waq-grid .field{margin-bottom:var(--space-3);} }
@media (prefers-reduced-motion: reduce){ .waq-modal,.waq-box{transition:none!important;} }

/* =========================================================
   Cibles tactiles — hauteur minimale de 44 px
   ---------------------------------------------------------
   Recommandation WCAG 2.5.5 et Apple HIG. Ces contrôles étaient
   entre 25 et 34 px de haut : lisibles, mais difficiles à viser
   au pouce. La hauteur minimale n'agrandit ni le texte ni les
   fonds — seule la zone touchable s'étend.
   ========================================================= */
.contact-link,
.nk-contact-phone,
.nk-social,
.badge[href],
.nk-yc-filter,
.footer-bottom a{
  display:inline-flex;align-items:center;min-height:44px;
}
.faq summary{min-height:44px;display:flex;align-items:center;}
/* Les liens des cartes territoire (téléphone, courriel) s'empilent : la
   hauteur minimale remplace leur marge, l'aération reste la même. */
address a[href^="tel:"],
address a[href^="mailto:"],
.card a[href^="tel:"],
.card a[href^="mailto:"]{
  display:flex;align-items:center;min-height:44px;
}
/* Boutons de filtre et actions du calculateur : 3 à 20 px sous le seuil. */
.fc-price-filter,.fc-price-reset,.fc-price-link{min-height:44px;display:inline-flex;align-items:center;}
/* Filtres du catalogue : 42 px, deux pixels sous le seuil tactile. Même
   traitement que les filtres tarifaires ci-dessus. */
.fc-catalog-filter{min-height:44px;display:inline-flex;align-items:center;}
.nav-search-btn{min-width:44px;justify-content:center;}

@media(max-width:640px){
  /* Le label est la vraie cible tactile d'une case à cocher ; l'input
     natif reste petit pour conserver son alignement avec le texte. */
  .optin-label{min-height:44px;}
  /* La barre flottante compacte ses boutons sous 640px : conserver son
     traitement visuel tout en garantissant une cible de 44px. */
  .floatbar-actions .btn{min-height:44px;}
  /* Les onglets restent compacts sur desktop, mais leur zone de tap mobile
     doit atteindre le minimum sans augmenter la taille de leur texte. */
  .nk-tab{min-height:44px;}
  /* Le libellé « Reset » est court : la hauteur était déjà correcte, mais
     sa largeur ne l'était pas. */
  .fc-price-reset{min-width:44px;justify-content:center;}
}

/* Final campaign overrides: this file contains legacy theme rules below the
   first campaign layer, so these few invariants intentionally live last. */
html:has(.page-numeriklub-lp) .nav,
html:has(.page-numeriklub-lp) .nav-numeriklub{
  background:rgba(8,20,32,.94) !important;
  color:#F4F8FB;
  border-bottom-color:rgba(220,231,239,.16);
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{
  color:#DCE7EF !important;
  background:transparent;
  border:0;
  box-shadow:none;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a:hover,
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a[aria-current="page"]{
  color:#FFFFFF !important;
  background:rgba(var(--nk-cyan-rgb),.12);
  box-shadow:inset 0 -2px 0 var(--nk-cyan);
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-reserve{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:38px;
  min-height:38px;
  padding:0 14px;
  border-radius:var(--radius-ui);
  border:0;
  font-family:var(--font-ui);
  font-size:var(--nav-text);
  color:#081420;
  background:var(--nk-orange);
  font-weight:700;
  letter-spacing:.01em;
  white-space:nowrap;
  cursor:pointer;
  box-shadow:0 7px 18px rgba(8,20,32,.22);
  transition:transform var(--dur) var(--ease-out),box-shadow var(--dur) var(--ease-out),filter var(--dur);
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-reserve:hover{
  color:#081420;
  background:var(--nk-orange);
  filter:brightness(1.05);
  transform:translateY(-1px);
  box-shadow:
    inset 0 1px 0 rgba(var(--overlay-rgb),.35),
    0 8px 24px rgba(8,20,32,.4),
    0 0 30px rgba(var(--nk-orange-rgb),.42);
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lang-toggle button{
  color:#B3C8D8;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lang-toggle button.active{
  color:#FFFFFF;
}
/* Les actions du header bare partagent une seule échelle typographique :
   le bouton générique `.btn` ne doit pas agrandir la réservation par rapport
   à WhatsApp et au sélecteur de langue. */
.nav-numeriklub .lp-bare-reserve,
.nav-numeriklub .lp-bare-cta,
.nav-numeriklub .lang-toggle button{
  font-family:var(--font-ui);
  font-size:var(--nav-text) !important;
  font-weight:700;
  line-height:1;
}
.nav-numeriklub .lp-bare-reserve{
  height:38px;
  min-height:38px;
  padding:0 14px;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-lockup.lg-on-dark{
  display:block !important;
}
html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-lockup.lg-on-light{
  display:none !important;
}
.page-numeriklub-lp > .page-hero h1{
  max-width:16ch;
}
@media(max-width:900px){
  .page-numeriklub-lp > .page-hero h1{max-width:16ch;}
}
@media(max-width:620px){
  .page-numeriklub-lp > .page-hero .eyebrow{
    font-size:var(--text-xs);
  }
}

/* LP Numériklub — contenu éditorial complémentaire visible dans les blocs
   existants : thématiques, pédagogie et FAQ. Les IDs restent dans les
   sections contractuelles pour conserver l’ordre de la landing. */
.page-numeriklub-lp .nk-lp-secondary-block,
.page-numeriklub-lp .nk-lp-pedagogy-block{
  margin-top:clamp(2.8rem,5vw,5rem);
  padding-top:clamp(2rem,4vw,3.5rem);
  border-top:1px solid var(--border);
}
.page-numeriklub-lp .nk-lp-secondary-head{
  max-width:48rem;
  margin-bottom:var(--space-5);
}
.page-numeriklub-lp .nk-lp-secondary-head h3{
  margin:.45rem 0 .55rem;
  font-size:clamp(1.55rem,2.8vw,2.35rem);
  color:var(--heading);
}
.page-numeriklub-lp .nk-lp-secondary-head p{
  margin:0;
  color:var(--text-secondary);
  line-height:1.55;
}
.page-numeriklub-lp .nk-lp-theme-card,
.page-numeriklub-lp .nk-lp-pedagogy-card{
  position:relative;
  overflow:hidden;
}
.page-numeriklub-lp .nk-lp-theme-cover,
.page-numeriklub-lp .nk-lp-pedagogy-media{
  margin:-1px -1px var(--space-4);
  height:clamp(8.5rem,16vw,11rem);
  overflow:hidden;
  background:var(--surface-raised);
}
.page-numeriklub-lp .nk-lp-theme-cover img,
.page-numeriklub-lp .nk-lp-pedagogy-media img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.page-numeriklub-lp .nk-lp-theme-index,
.page-numeriklub-lp .nk-lp-pedagogy-index{
  font-family:var(--font-mono);
  font-size:var(--text-xs);
  letter-spacing:.1em;
  color:var(--accent);
  font-weight:800;
  margin-bottom:.35rem;
}
.page-numeriklub-lp .nk-lp-theme-card h4,
.page-numeriklub-lp .nk-lp-pedagogy-card h3{
  margin:0;
  color:var(--heading);
  font-size:1.12rem;
}
.page-numeriklub-lp .nk-lp-theme-meta{
  margin-top:.35rem;
  color:var(--text-muted);
  font-size:.8rem;
  font-weight:700;
}
.page-numeriklub-lp .nk-lp-theme-card p,
.page-numeriklub-lp .nk-lp-pedagogy-card .card-body{
  margin:.6rem 0 0;
  color:var(--text-secondary);
  line-height:1.5;
}
.page-numeriklub-lp .nk-lp-theme-card ul{
  list-style:none;
  display:grid;
  gap:.35rem;
  margin:.8rem 0 0;
  padding:0;
  color:var(--text-secondary);
  font-size:.86rem;
}
.page-numeriklub-lp .nk-lp-theme-card li{
  display:flex;
  gap:.45rem;
  align-items:flex-start;
}
.page-numeriklub-lp .nk-lp-theme-card li span{
  color:var(--accent);
  font-weight:900;
}
.page-numeriklub-lp .nk-lp-pedagogy-block .nk-lp-secondary-head{
  margin-bottom:var(--space-4);
}
.page-numeriklub-lp .nk-lp-pedagogy-media{
  height:clamp(7rem,14vw,9rem);
}
.page-numeriklub-lp .nk-lp-pedagogy-card{
  display:grid;
  grid-template-columns:auto 1fr;
  column-gap:.75rem;
}
.page-numeriklub-lp .nk-lp-pedagogy-card .nk-lp-pedagogy-media{
  grid-column:1 / -1;
}
.page-numeriklub-lp .nk-lp-pedagogy-card .nk-lp-pedagogy-index{
  margin-top:.15rem;
}
.page-numeriklub-lp .nk-lp-pedagogy-card h3,
.page-numeriklub-lp .nk-lp-pedagogy-card .card-body{
  grid-column:2;
}
.page-numeriklub-lp .nk-lp-pedagogy-card .card-body{
  grid-column:2;
}
.page-numeriklub-lp .nk-lp-faq-block{
  margin-top:clamp(2.8rem,5vw,5rem);
  padding-top:clamp(2rem,4vw,3.5rem);
  border-top:1px solid var(--border);
}
.page-numeriklub-lp .nk-lp-faq-block .nk-lp-secondary-head{
  margin-bottom:var(--space-4);
}
.page-numeriklub-lp .faq{
  width:100%;
  max-width:none;
}

/* Section 1 — composition de la maquette de référence :
   deux formules fortes, informations lisibles et CTA alignés en bas. */
.page-numeriklub-lp h1{
  font-weight:900;
}
.page-numeriklub-lp p,
.page-numeriklub-lp li,
.page-numeriklub-lp address,
.page-numeriklub-lp .card-body,
.page-numeriklub-lp .prose-p,
.page-numeriklub-lp .hero-sub,
.page-numeriklub-lp .faq-item p{
  font-weight:600;
}
.page-numeriklub-lp strong,
.page-numeriklub-lp b{
  font-weight:850;
}
.page-numeriklub-lp .section-head h2,
.page-numeriklub-lp .section-head .num,
.page-numeriklub-lp .nk-lp-secondary-head h3,
.page-numeriklub-lp h1,
.page-numeriklub-lp h2,
.page-numeriklub-lp h3,
.page-numeriklub-lp h4,
.page-numeriklub-lp em,
.page-numeriklub-lp i{
  font-style:normal;
}
.page-numeriklub-lp .section-head h2{
  font-weight:800;
}
.page-numeriklub-lp h1{
  font-weight:800;
}
.page-numeriklub-lp > section#nk-offers > .container,
.page-numeriklub-lp > section#nk-format-choice > .container{
  max-width:1180px;
}
.page-numeriklub-lp > section#nk-offers .section-head,
.page-numeriklub-lp > section#nk-format-choice .section-head{
  max-width:780px;
  margin-bottom:clamp(30px,4vw,48px);
}
.page-numeriklub-lp .nk-reference-offer-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(20px,3vw,32px);
  align-items:stretch;
}
.page-numeriklub-lp .nk-reference-offer-grid.is-single{
  grid-template-columns:minmax(0,1fr);
  max-width:760px;
  margin-inline:auto;
}
.page-numeriklub-lp .nk-reference-offer-card{
  display:flex;
  min-width:0;
  flex-direction:column;
  justify-content:space-between;
  border:2px solid rgba(var(--nk-blue-ink-rgb),.14);
  border-radius:24px;
  background:#fff;
  box-shadow:0 18px 42px rgba(var(--nk-blue-ink-rgb),.12);
  overflow:hidden;
  transition:border-color .25s ease, box-shadow .25s ease, transform .25s ease;
}
.page-numeriklub-lp .nk-reference-offer-card:first-child{
  border-top-color:var(--nk-cyan);
}
.page-numeriklub-lp .nk-reference-offer-card:nth-child(2){
  border-top-color:var(--nk-orange);
}
.page-numeriklub-lp .nk-reference-offer-card:hover{
  border-color:rgba(241,138,7,.68);
  box-shadow:0 22px 48px rgba(var(--nk-blue-ink-rgb),.18);
  transform:translateY(-4px);
}
.page-numeriklub .nk-reference-offer-content,
.page-numeriklub-lp .nk-reference-offer-content{
  padding:clamp(22px,3vw,34px);
}
.page-numeriklub-lp .nk-reference-offer-badges{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:9px;
}
.page-numeriklub-lp .nk-reference-offer-eyebrow,
.page-numeriklub-lp .nk-reference-offer-discount{
  display:inline-flex;
  min-height:30px;
  align-items:center;
  padding:6px 11px;
  border-radius:999px;
  font-size:.75rem;
  font-weight:850;
  line-height:1.15;
}
.page-numeriklub-lp .nk-reference-offer-eyebrow{
  color:var(--nk-blue-ink);
  background:rgba(var(--nk-cyan-rgb),.16);
  letter-spacing:.04em;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-reference-offer-card:nth-child(2) .nk-reference-offer-eyebrow{
  color:#8A4A00;
  background:#FFF0D8;
}
.page-numeriklub-lp .nk-reference-offer-discount{
  color:#3F3600;
  border:1px solid #E5C928;
  background:#FFF8C9;
}
.page-numeriklub-lp .nk-reference-offer-intro{
  margin-top:clamp(24px,3vw,34px);
}
.page-numeriklub-lp .nk-reference-offer-intro h3{
  margin:0;
  color:var(--nk-blue-ink);
  font-size:clamp(1.75rem,3vw,2.35rem);
  line-height:1.02;
  letter-spacing:-.035em;
}
.page-numeriklub-lp .nk-reference-offer-intro p{
  margin:12px 0 0;
  color:var(--nk-blue-muted);
  font-size:1rem;
  font-weight:600;
  line-height:1.58;
}
.page-numeriklub-lp .nk-reference-offer-track-badges{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  list-style:none;
  margin:18px 0 0;
  padding:0;
}
.page-numeriklub-lp .nk-reference-offer-track-badge{
  min-width:0;
  border:1px solid rgba(241,138,7,.42);
  border-radius:999px;
  background:rgba(255,248,201,.72);
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp .nk-reference-offer-track-badge-link{
  display:flex;
  min-height:58px;
  flex-direction:column;
  justify-content:center;
  gap:4px;
  padding:10px 12px;
  color:inherit;
  text-decoration:none;
}
.page-numeriklub-lp .nk-reference-offer-track-badge:hover,
.page-numeriklub-lp .nk-reference-offer-track-badge:focus-within{
  border-color:#F18A07;
  background:#FFF3A5;
}
.page-numeriklub-lp .nk-reference-offer-track-badge span{
  min-width:0;
  font-size:.76rem;
  font-weight:800;
  line-height:1.15;
}
.page-numeriklub-lp .nk-reference-offer-track-badge strong{
  color:#A34F00;
  font-size:.92rem;
  line-height:1;
}
.page-numeriklub-lp .nk-track-section-badge{
  display:inline-flex;
  max-width:100%;
  margin:0 0 18px;
  border:1px solid rgba(241,138,7,.42);
  border-radius:999px;
  background:rgba(255,248,201,.72);
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp .nk-track-section-badge-link{
  display:flex;
  align-items:center;
  gap:12px;
  min-height:42px;
  padding:8px 14px;
  color:inherit;
  text-decoration:none;
}
.page-numeriklub-lp .nk-track-section-badge span{
  min-width:0;
  font-size:.8rem;
  font-weight:800;
  line-height:1.15;
}
.page-numeriklub-lp .nk-track-section-badge strong{
  flex:0 0 auto;
  color:#A34F00;
  font-size:.92rem;
  line-height:1;
}
.page-numeriklub-lp .nk-track-section-badge:hover,
.page-numeriklub-lp .nk-track-section-badge:focus-within{
  border-color:#F18A07;
  background:#FFF3A5;
}
.page-numeriklub-lp .nk-track-section-card{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:var(--space-4) var(--space-6);
  margin:0 0 var(--space-6);
  padding:var(--space-5);
  border:1px solid rgba(var(--accent-rgb),.3);
  border-left:4px solid var(--accent);
  border-radius:var(--radius-ui);
  background:linear-gradient(135deg,rgba(var(--accent-rgb),.1),var(--surface-raised));
  color:var(--text);
  box-shadow:0 12px 28px rgba(8,20,32,.12);
}
.page-numeriklub-lp .nk-track-section-card-copy{min-width:0;}
.page-numeriklub-lp .nk-track-section-card-label{
  display:block;
  margin:0 0 6px;
  color:var(--eyebrow);
  font-family:var(--font-mono);
  font-size:var(--text-2xs);
  font-weight:800;
  letter-spacing:.12em;
  line-height:1.2;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-track-section-card h3{
  margin:0;
  color:var(--heading);
  font-size:clamp(1.15rem,2.2vw,1.45rem);
  line-height:1.15;
}
.page-numeriklub-lp .nk-track-section-card-copy p{
  max-width:58ch;
  margin:var(--space-2) 0 0;
  color:var(--text-secondary);
  line-height:1.5;
}
.page-numeriklub-lp .nk-track-section-card-meta{
  display:flex;
  align-items:start;
  gap:var(--space-5);
  margin:0;
}
.page-numeriklub-lp .nk-track-section-card-meta div{
  display:grid;
  gap:4px;
  min-width:88px;
}
.page-numeriklub-lp .nk-track-section-card-meta dt{
  color:var(--eyebrow);
  font-family:var(--font-mono);
  font-size:var(--text-2xs);
  font-weight:800;
  letter-spacing:.1em;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-track-section-card-meta dd{
  margin:0;
  color:var(--heading);
  font-size:1rem;
  font-weight:800;
  white-space:nowrap;
}
.page-numeriklub-lp .nk-track-section-card-actions{
  grid-column:1 / -1;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:var(--space-3);
  padding-top:var(--space-3);
  border-top:1px solid rgba(var(--accent-rgb),.18);
}
.page-numeriklub-lp .nk-track-section-card-cta{margin:0;}
@media (max-width:680px){
  .page-numeriklub-lp .nk-reference-offer-track-badges{
    grid-template-columns:1fr;
  }
  .page-numeriklub-lp .nk-reference-offer-track-badge{
    min-height:0;
    border-radius:12px;
  }
  .page-numeriklub-lp .nk-reference-offer-track-badge-link{
    min-height:0;
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
  }
  .page-numeriklub-lp .nk-reference-offer-track-badge strong{
    flex:0 0 auto;
  }
  .page-numeriklub-lp .nk-track-section-badge{
    display:flex;
    border-radius:12px;
  }
  .page-numeriklub-lp .nk-track-section-badge-link{
    width:100%;
    justify-content:space-between;
  }
  .page-numeriklub-lp .nk-track-section-card{
    grid-template-columns:1fr;
    gap:var(--space-4);
    padding:var(--space-4);
  }
  .page-numeriklub-lp .nk-track-section-card-meta{
    justify-content:space-between;
    gap:var(--space-3);
  }
  .page-numeriklub-lp .nk-track-section-card-meta div{
    min-width:0;
  }
  .page-numeriklub-lp .nk-track-section-card-actions{
    grid-column:auto;
  }
  .page-numeriklub-lp .nk-track-section-card-cta{
    width:100%;
  }
}
.page-numeriklub-lp .nk-bizness-kid-highlight{
  display:flex;
  align-items:flex-start;
  gap:10px;
  margin-top:18px;
  padding:12px 14px;
  border:1px solid rgba(var(--nk-cyan-rgb),.42);
  border-radius:12px;
  color:var(--nk-blue-ink);
  background:rgba(var(--nk-cyan-rgb),.10);
  font-size:.9rem;
  font-weight:650;
  line-height:1.4;
}
.page-numeriklub-lp .nk-bizness-kid-flags{
  flex:none;
  letter-spacing:.02em;
  line-height:1.2;
  white-space:nowrap;
}
.page-numeriklub-lp .nk-bizness-kid-flag{
  display:block;
  width:1.45rem;
  height:1.05rem;
  object-fit:contain;
  border-radius:2px;
}
.page-numeriklub-lp .nk-bizness-kid-copy{
  display:inline-flex;
  align-items:baseline;
  flex-wrap:wrap;
  gap:8px;
}
.page-numeriklub-lp .nk-bizness-kid-feature .nk-bizness-kid-copy{
  gap:6px;
}
.page-numeriklub-lp .nk-reference-offer-features{
  display:grid;
  gap:13px;
  margin:clamp(24px,3vw,32px) 0 0;
  padding:0;
  list-style:none;
}
.page-numeriklub-lp .nk-reference-offer-features li{
  display:flex;
  align-items:flex-start;
  gap:10px;
  color:var(--nk-blue-dark);
  font-size:.9rem;
  font-weight:750;
  line-height:1.42;
}
.page-numeriklub-lp .nk-reference-offer-check{
  display:inline-flex;
  flex:none;
  width:22px;
  height:22px;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  color:var(--nk-blue-deep);
  background:var(--nk-cyan);
  font-size:.78rem;
  font-weight:900;
}
.page-numeriklub-lp .nk-reference-offer-note{
  display:grid;
  gap:4px;
  margin-top:26px;
  padding:14px 16px;
  border:1px solid rgba(var(--nk-blue-ink-rgb),.12);
  border-radius:14px;
  color:var(--nk-blue-muted);
  background:var(--nk-blue-soft);
  font-size:.78rem;
  line-height:1.45;
}
.page-numeriklub-lp .nk-reference-offer-note strong{
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp .nk-reference-offer-footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin:0 clamp(22px,3vw,34px);
  padding:22px 0 clamp(22px,3vw,34px);
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
}
.page-numeriklub-lp .nk-reference-offer-price{
  display:grid;
  min-width:0;
  gap:2px;
}
.page-numeriklub-lp .nk-reference-offer-price strong{
  color:var(--nk-blue-ink);
  font-size:clamp(1.65rem,3vw,2.25rem);
  line-height:1;
  letter-spacing:-.045em;
}
.page-numeriklub-lp .nk-reference-offer-price > span{
  color:var(--nk-blue-muted);
  font-size:.76rem;
  font-weight:800;
}
.page-numeriklub-lp .nk-reference-offer-price small{
  margin-top:5px;
  color:#176d53;
  font-size:.75rem;
  font-weight:800;
  line-height:1.3;
}
.page-numeriklub-lp .nk-reference-offer-actions{
  display:grid;
  flex:none;
  justify-items:end;
  gap:8px;
}
.page-numeriklub-lp .nk-reference-offer-actions .btn{
  min-height:46px;
  padding-inline:18px;
  white-space:nowrap;
}
.page-numeriklub-lp .nk-reference-offer-detail{
  color:var(--nk-blue-mid);
  font-size:.78rem;
  font-weight:850;
  text-decoration:none;
}
.page-numeriklub-lp .nk-reference-offer-detail:hover{
  color:#D86F00;
  text-decoration:underline;
}
.page-numeriklub-lp .nk-reference-offer-card .nk-offer-fomo{
  margin:22px 0 0;
  color:#A75A00;
  font-size:.82rem;
}
.page-numeriklub-lp .nk-reference-offer-card .nk-offer-fomo-section{
  padding:0;
  border:0;
  background:transparent;
}
.page-numeriklub-lp .nk-reference-offer-card .nk-offer-sections{
  margin-top:10px;
}
.page-numeriklub-lp .nk-reference-offer-details{
  margin-top:16px;
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
  color:var(--nk-blue-muted);
}
.page-numeriklub-lp .nk-reference-offer-details summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:44px;
  padding:13px 0 4px;
  color:var(--nk-blue-mid);
  cursor:pointer;
  font-size:.82rem;
  font-weight:850;
}
.page-numeriklub-lp .nk-reference-offer-details-icon{
  display:grid;
  width:26px;
  height:26px;
  flex:none;
  place-items:center;
  border:1px solid currentColor;
  border-radius:50%;
  font-size:1.15rem;
  font-weight:500;
  line-height:1;
  transition:transform .2s ease;
}
.page-numeriklub-lp .nk-reference-offer-details[open] .nk-reference-offer-details-icon{
  transform:rotate(45deg);
}
.page-numeriklub-lp .nk-reference-offer-details-body{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:clamp(18px,3vw,30px);
  align-items:start;
  margin-top:12px;
  padding-top:14px;
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.10);
}
.page-numeriklub-lp .nk-reference-offer-details-copy{
  min-width:0;
}
.page-numeriklub-lp .nk-reference-offer-details-copy .nk-offer-detail-panels{
  margin-top:0;
}
.page-numeriklub-lp .nk-reference-offer-details-media{
  min-width:0;
  padding:12px;
  border:1px solid rgba(var(--nk-blue-ink-rgb),.12);
  border-radius:14px;
  background:var(--nk-blue-soft);
}
.page-numeriklub-lp .nk-reference-offer-details-media-label{
  color:var(--nk-blue-ink);
  font-size:.75rem;
  font-weight:850;
  letter-spacing:.08em;
  line-height:1.25;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-reference-offer-details-media .nk-offer-reels{
  margin-top:10px;
}
.page-numeriklub-lp .nk-reference-offer-details-media .nk-media-item{
  border-color:rgba(var(--nk-blue-ink-rgb),.14);
}
.page-numeriklub-lp .nk-reference-offer-details .nk-offer-detail-panels{
  margin-top:10px;
}
.page-numeriklub-lp .nk-reference-offer-details-stack{
  display:grid;
  gap:clamp(22px,3vw,32px);
  margin-top:clamp(28px,4vw,48px);
}
.page-numeriklub-lp .nk-reference-offer-detail-section{
  overflow:hidden;
  border:2px solid rgba(var(--nk-blue-ink-rgb),.14);
  border-radius:24px;
  background:#fff;
  box-shadow:0 18px 42px rgba(var(--nk-blue-ink-rgb),.10);
}
.page-numeriklub-lp .nk-reference-offer-detail-section:first-child{
  border-top-color:var(--nk-cyan);
}
.page-numeriklub-lp .nk-reference-offer-detail-section:nth-child(2){
  border-top-color:var(--nk-orange);
}
.page-numeriklub-lp .nk-reference-offer-detail-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  cursor:pointer;
  padding:clamp(20px,3vw,30px) clamp(22px,3vw,34px) 18px;
  background:linear-gradient(135deg,rgba(var(--nk-cyan-rgb),.08),rgba(255,255,255,.88));
}
.page-numeriklub-lp .nk-reference-offer-detail-head::-webkit-details-marker{
  display:none;
}
.page-numeriklub-lp .nk-reference-offer-detail-head:focus-visible{
  outline:3px solid rgba(var(--nk-cyan-rgb),.55);
  outline-offset:-5px;
}
.page-numeriklub-lp .nk-reference-offer-detail-copy{
  min-width:0;
}
.page-numeriklub-lp .nk-reference-offer-detail-section:nth-child(2) .nk-reference-offer-detail-head{
  background:linear-gradient(135deg,rgba(241,138,7,.09),rgba(255,255,255,.88));
}
.page-numeriklub-lp .nk-reference-offer-detail-eyebrow{
  display:block;
  color:var(--nk-blue-muted);
  font-size:.75rem;
  font-weight:850;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-reference-offer-detail-title{
  display:block;
  margin:8px 0 0;
  color:var(--nk-blue-ink);
  font-size:clamp(1.45rem,2.6vw,2.1rem);
  font-weight:800;
  line-height:1.05;
  letter-spacing:-.03em;
}
.page-numeriklub-lp .nk-reference-offer-detail-icon{
  display:grid;
  flex:0 0 38px;
  width:38px;
  height:38px;
  place-items:center;
  border:1px solid rgba(var(--nk-blue-ink-rgb),.18);
  border-radius:50%;
  color:var(--nk-blue-ink);
  background:rgba(255,255,255,.68);
  font-size:0;
  font-weight:800;
  line-height:1;
  transition:transform .2s ease,background .2s ease;
}
.page-numeriklub-lp .nk-reference-offer-detail-icon::before{
  content:"+";
  font-size:1.25rem;
}
.page-numeriklub-lp .nk-reference-offer-detail-section[open] .nk-reference-offer-detail-icon{
  color:#fff;
  background:var(--nk-blue-ink);
}
.page-numeriklub-lp .nk-reference-offer-detail-section[open] .nk-reference-offer-detail-icon::before{
  content:"−";
}
.page-numeriklub-lp .nk-reference-offer-detail-section > .nk-reference-offer-details-body{
  margin-top:0;
  padding:clamp(20px,3vw,30px) clamp(22px,3vw,34px);
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
}
.page-numeriklub-lp .nk-reference-offer-detail-actions{
  grid-column:1 / -1;
  display:flex;
  align-items:center;
  gap:12px;
  margin-top:2px;
  padding-top:18px;
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
}
.page-numeriklub-lp .nk-reference-offer-detail-actions .btn{
  min-height:46px;
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-detail-panels{
  display:grid;
  gap:22px;
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section{
  padding-top:20px;
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section:first-child{
  padding-top:0;
  border-top:0;
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section-tag{
  display:inline-flex;
  align-items:center;
  min-height:26px;
  padding:5px 10px;
  border:1px solid currentColor;
  border-radius:999px;
  color:var(--nk-blue-mid);
  background:rgba(var(--nk-cyan-rgb),.10);
  font-size:.78rem;
  font-weight:900;
  letter-spacing:.1em;
  line-height:1;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-reference-offer-detail-section.is-holiday .nk-offer-section-tag{
  color:#9A5700;
  background:rgba(241,138,7,.10);
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section h4{
  margin:11px 0 7px;
  color:var(--nk-blue-ink);
  font-size:clamp(1.03rem,1.5vw,1.2rem);
  font-weight:850;
  line-height:1.2;
  letter-spacing:-.01em;
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section p{
  margin:0;
  color:var(--nk-blue-muted);
  font-size:.94rem;
  line-height:1.65;
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section ul{
  display:grid;
  gap:9px;
  margin:11px 0 0;
  padding:0;
  list-style:none;
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section li{
  display:grid;
  grid-template-columns:20px minmax(0,1fr);
  gap:9px;
  align-items:start;
  color:var(--nk-blue-muted);
  font-size:.92rem;
  line-height:1.52;
}
.page-numeriklub-lp .nk-reference-offer-detail-section .nk-offer-section li > span:first-child{
  display:grid;
  width:20px;
  height:20px;
  place-items:center;
  margin-top:1px;
  border-radius:50%;
  color:var(--nk-blue-deep);
  background:var(--nk-cyan);
  font-size:.7rem;
  font-weight:900;
}
.page-numeriklub-lp .nk-reference-offer-detail-section.is-holiday .nk-offer-section li > span:first-child{
  color:#5F3500;
  background:var(--nk-orange-soft);
}
.page-numeriklub-lp .nk-reference-offer-detail-link{
  padding:0 clamp(22px,3vw,34px) clamp(20px,3vw,30px);
}
.page-numeriklub-lp .nk-reference-offer-detail-link .nk-offer-info-link{
  color:var(--nk-blue-mid);
  font-size:.82rem;
  font-weight:850;
  text-decoration:none;
}
.page-numeriklub-lp .nk-reference-offer-detail-link .nk-offer-info-link:hover{
  color:#D86F00;
  text-decoration:underline;
}

/* Même composition de cartes sur les autres sections de la landing :
   surface blanche, bordure lisible, rayon large, liseré d'accent et ombre
   douce. Les fonds de sections restent alternés, seuls les modules sont
   harmonisés avec la section des formules. */
.page-numeriklub-lp .nk-lp-theme-card,
.page-numeriklub-lp .nk-lp-pedagogy-card,
.page-numeriklub-lp .nk-value-card,
.page-numeriklub-lp #reperes .info-item,
.page-numeriklub-lp .nk-cal-card,
.page-numeriklub-lp #lieux .campus,
.page-numeriklub-lp #rappel .contact-grid > .card,
.page-numeriklub-lp .nk-lp-faq-block .faq-item{
  position:relative;
  border:2px solid rgba(var(--nk-blue-ink-rgb),.14);
  border-radius:24px;
  background:#fff;
  color:var(--nk-blue-ink);
  box-shadow:0 18px 42px rgba(var(--nk-blue-ink-rgb),.12);
  transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease;
}
.page-numeriklub-lp .nk-lp-theme-card:hover,
.page-numeriklub-lp .nk-lp-pedagogy-card:hover,
.page-numeriklub-lp .nk-value-card:hover,
.page-numeriklub-lp #reperes .info-item:hover,
.page-numeriklub-lp .nk-cal-card:hover,
.page-numeriklub-lp #lieux .campus:hover,
.page-numeriklub-lp #rappel .contact-grid > .card:hover,
.page-numeriklub-lp .nk-lp-faq-block .faq-item:hover{
  border-color:rgba(241,138,7,.68);
  box-shadow:0 22px 48px rgba(var(--nk-blue-ink-rgb),.18);
  transform:translateY(-4px);
}
.page-numeriklub-lp .nk-lp-theme-card h4,
.page-numeriklub-lp .nk-lp-pedagogy-card h3,
.page-numeriklub-lp .nk-value-card h3,
.page-numeriklub-lp #reperes .info-item .k,
.page-numeriklub-lp .nk-cal-name,
.page-numeriklub-lp #lieux .campus h4,
.page-numeriklub-lp #rappel .card-title,
.page-numeriklub-lp .nk-lp-faq-block .faq-item summary{
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp .nk-lp-theme-card p,
.page-numeriklub-lp .nk-lp-pedagogy-card .card-body,
.page-numeriklub-lp .nk-value-card .card-body,
.page-numeriklub-lp #reperes .info-item .v,
.page-numeriklub-lp #lieux .campus address,
.page-numeriklub-lp #rappel .card-body,
.page-numeriklub-lp .nk-lp-faq-block .faq-item p{
  color:var(--nk-blue-muted);
}
.page-numeriklub-lp .nk-lp-theme-card:nth-child(3n + 1),
.page-numeriklub-lp .nk-lp-pedagogy-card:nth-child(3n + 1),
.page-numeriklub-lp .nk-value-card:nth-child(3n + 1),
.page-numeriklub-lp #reperes .info-item:nth-child(3n + 1),
.page-numeriklub-lp .nk-cal-card:nth-child(3n + 1),
.page-numeriklub-lp #lieux .campus:nth-child(3n + 1),
.page-numeriklub-lp #rappel .contact-grid > .card:nth-child(3n + 1){
  border-top-color:var(--nk-cyan);
}
.page-numeriklub-lp .nk-lp-theme-card:nth-child(3n + 2),
.page-numeriklub-lp .nk-lp-pedagogy-card:nth-child(3n + 2),
.page-numeriklub-lp .nk-value-card:nth-child(3n + 2),
.page-numeriklub-lp #reperes .info-item:nth-child(3n + 2),
.page-numeriklub-lp .nk-cal-card:nth-child(3n + 2),
.page-numeriklub-lp #lieux .campus:nth-child(3n + 2),
.page-numeriklub-lp #rappel .contact-grid > .card:nth-child(3n + 2){
  border-top-color:var(--nk-orange);
}
.page-numeriklub-lp .nk-lp-theme-card:nth-child(3n),
.page-numeriklub-lp .nk-lp-pedagogy-card:nth-child(3n),
.page-numeriklub-lp .nk-value-card:nth-child(3n),
.page-numeriklub-lp #reperes .info-item:nth-child(3n),
.page-numeriklub-lp .nk-cal-card:nth-child(3n),
.page-numeriklub-lp #lieux .campus:nth-child(3n),
.page-numeriklub-lp #rappel .contact-grid > .card:nth-child(3n){
  border-top-color:var(--nk-yellow);
}
.page-numeriklub-lp .nk-lp-theme-card .nk-lp-theme-cover,
.page-numeriklub-lp .nk-lp-pedagogy-card .nk-lp-pedagogy-media{
  margin:-2px -2px var(--space-4);
  border-radius:22px 22px 0 0;
}
.page-numeriklub-lp .nk-lp-social-panel{
  padding:clamp(18px,3vw,30px);
  border:2px solid rgba(21,49,74,.14);
  border-top:4px solid var(--nk-cyan);
  border-radius:24px;
  background:#fff;
  box-shadow:0 18px 42px rgba(3,14,24,.18);
}
.page-numeriklub-lp #temoignages .nk-lp-social-panel{
  border-top-color:var(--nk-orange);
}
.page-numeriklub-lp .nk-lp-social-panel .nk-community-slider,
.page-numeriklub-lp .nk-lp-social-panel .community-mosaic,
.page-numeriklub-lp .nk-lp-social-panel .nk-community-videos,
.page-numeriklub-lp .nk-lp-social-panel .nk-actu-grid{
  max-width:none;
  margin-top:0;
}
.page-numeriklub-lp .nk-lp-social-panel .nk-community-videos,
.page-numeriklub-lp .nk-lp-social-panel .nk-actu-grid{
  margin-top:var(--space-5);
}
.page-numeriklub-lp .nk-lp-social-panel .nk-community-slider-controls{
  margin-bottom:0;
}
.page-numeriklub-lp .nk-lp-social-panel .nk-community-slide,
.page-numeriklub-lp .nk-lp-social-panel .community-mosaic figure{
  border-radius:16px;
  box-shadow:0 10px 24px rgba(21,49,74,.12);
}
.page-numeriklub-lp .nk-cal-card{
  padding:clamp(22px,3vw,30px);
}
.page-numeriklub-lp .nk-upcoming-section > .container{
  display:grid;
  grid-template-columns:minmax(240px,.72fr) minmax(0,1.28fr);
  align-items:start;
  gap:clamp(28px,5vw,76px);
}
.page-numeriklub-lp .nk-upcoming-section > .container > .section-head{
  margin:0;
  position:sticky;
  top:calc(var(--nav-h,72px) + var(--space-5));
}
.page-numeriklub-lp .nk-upcoming-section > .container > .nk-tabs{
  min-width:0;
  margin-top:clamp(1rem,2.5vw,2.25rem);
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-grid{
  display:flex;
  flex-direction:column;
  gap:var(--space-4);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:
    "head cta"
    "dates cta";
  align-items:center;
  column-gap:clamp(18px,3vw,34px);
  padding:clamp(18px,2.5vw,26px);
  border-top-width:4px;
  background:var(--surface-raised);
  box-shadow:0 12px 28px rgba(3,14,24,.12);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card-head{
  grid-area:head;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:
    "name price"
    "meta price";
  align-items:center;
  column-gap:var(--space-4);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-name{
  grid-area:name;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-meta{
  grid-area:meta;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-price{
  grid-area:price;
  text-align:right;
  white-space:nowrap;
  color:var(--heading);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-dates{
  grid-area:dates;
  margin-top:var(--space-3);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-date{
  flex-direction:row;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-3);
  padding:10px 12px;
  background:rgba(var(--accent-rgb),.06);
  border-color:rgba(var(--accent-rgb),.16);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta{
  grid-area:cta;
  width:min(190px,24vw);
  margin:0;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta .btn{
  min-height:46px;
  width:100%;
  justify-content:center;
  text-align:center;
}
.page-numeriklub-lp .nk-cal-date,
.page-numeriklub-lp .nk-yc-month{
  border-radius:14px;
}
.page-numeriklub-lp .nk-tablist{
  border:2px solid rgba(var(--nk-blue-ink-rgb),.14);
  border-radius:999px;
  background:#fff;
  box-shadow:0 10px 24px rgba(var(--nk-blue-ink-rgb),.08);
}
.page-numeriklub-lp .nk-tab{
  min-height:44px;
  border-radius:999px;
  color:var(--nk-blue-muted);
}
.page-numeriklub-lp .nk-tab.is-active{
  background:var(--nk-orange);
  color:#241200;
}
.page-numeriklub-lp .nk-tab.bg-\[\#3db4e7\]{
  background:var(--nk-orange);
  color:#241200;
}
.page-numeriklub-lp #rappel .contact-grid > .card{
  border-top-color:var(--nk-orange);
}
.page-numeriklub-lp #rappel .field input,
.page-numeriklub-lp #rappel .field select,
.page-numeriklub-lp #rappel .field textarea{
  background:var(--nk-blue-soft);
  color:var(--nk-blue-ink);
  box-shadow:inset 0 0 0 1px rgba(var(--nk-blue-ink-rgb),.18);
  color-scheme:light;
}
.page-numeriklub-lp #rappel .field label{
  color:var(--nk-blue-muted);
}
.page-numeriklub-lp #rappel .nk-callback-form-card .field select{
  appearance:none;
  -webkit-appearance:none;
  background-color:#F4F7FA !important;
  background-image:
    linear-gradient(45deg,transparent 50%,var(--nk-blue-mid) 50%),
    linear-gradient(135deg,var(--nk-blue-mid) 50%,transparent 50%) !important;
  background-position:calc(100% - 19px) 50%,calc(100% - 13px) 50% !important;
  background-size:6px 6px,6px 6px !important;
  background-repeat:no-repeat !important;
}
.page-numeriklub-lp #rappel .card a{
  color:var(--nk-blue-mid);
}
@media(max-width:700px){
  .page-numeriklub-lp .nk-lp-social-panel{
    padding:16px;
  }
  .page-numeriklub-lp .nk-lp-social-panel .nk-community-slider-viewport{
    grid-template-columns:1fr;
  }
}
@media(max-width:900px){
  .page-numeriklub-lp .nk-upcoming-section > .container{
    grid-template-columns:1fr;
    gap:var(--space-6);
  }
  .page-numeriklub-lp .nk-upcoming-section > .container > .section-head{
    position:static;
  }
}
@media(max-width:560px){
  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card{
    grid-template-columns:1fr;
    grid-template-areas:
      "head"
      "dates"
      "cta";
    gap:var(--space-4);
  }
  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta{
    width:100%;
  }
  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-date{
    align-items:flex-start;
    flex-direction:column;
  }
  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-price{
    white-space:normal;
    text-align:left;
  }
}

/* Landing Numériklub : les grilles de contenu doivent réellement s'empiler
   sur mobile. Les règles desktop conservaient deux colonnes de cartes de
   largeur fixe, ce qui créait un débordement horizontal et donnait
   l'impression de grands blancs entre les blocs. */
@media(max-width:700px){
  .page-numeriklub-lp > section.section{
    padding-top:48px;
    padding-bottom:48px;
  }

  .page-numeriklub-lp > section#nk-offers .section-head,
  .page-numeriklub-lp > section#nk-format-choice .section-head{
    margin-bottom:24px;
  }

  .page-numeriklub-lp .nk-reference-offer-grid,
  .page-numeriklub-lp .nk-lp-theme-grid{
    grid-template-columns:minmax(0,1fr);
    gap:16px;
    align-items:start;
  }

  .page-numeriklub-lp .nk-hero-moved-copy{
    margin-top:12px;
    margin-bottom:18px;
  }

  .page-numeriklub-lp .nk-reference-offer-content{
    padding:20px;
  }

  .page-numeriklub-lp .nk-reference-offer-intro{
    margin-top:20px;
  }

  .page-numeriklub-lp .nk-reference-offer-features{
    margin-top:20px;
    gap:10px;
  }

  .page-numeriklub-lp .nk-reference-offer-note{
    margin-top:20px;
    padding:12px 14px;
  }

  .page-numeriklub-lp .nk-reference-offer-footer{
    margin-inline:20px;
    padding:18px 0 20px;
    gap:14px;
  }

  .page-numeriklub-lp > section#nk-offers .section-inline-cta{
    margin-top:20px;
  }

  .page-numeriklub-lp .nk-lp-secondary-block,
  .page-numeriklub-lp .nk-lp-pedagogy-block,
  .page-numeriklub-lp .nk-lp-faq-block{
    margin-top:32px;
    padding-top:24px;
  }

  .page-numeriklub-lp .nk-lp-secondary-head{
    margin-bottom:20px;
  }

  .page-numeriklub-lp .nk-lp-theme-cover,
  .page-numeriklub-lp .nk-lp-pedagogy-media{
    margin-bottom:14px;
  }

  .page-numeriklub-lp .nk-program-grid{
    gap:16px;
    margin-top:24px;
    margin-bottom:32px;
  }

  .page-numeriklub-lp .nk-upcoming-section > .container{
    gap:32px;
  }

  .page-numeriklub-lp .nk-upcoming-section .nk-cal-grid{
    grid-template-columns:minmax(0,1fr);
    gap:16px;
  }

  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card{
    padding:18px;
    gap:16px;
  }
}

@media(max-width:760px){
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
    flex-wrap:wrap;
    min-width:0;
    max-width:100%;
    overflow:hidden;
    row-gap:2px;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{
    flex:0 1 auto;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-reserve{
    display:none;
  }
  .page-numeriklub-lp .nk-lp-pedagogy-card{
    grid-template-columns:auto 1fr;
  }
  .page-numeriklub-lp .nk-reference-offer-grid{
    grid-template-columns:1fr;
  }
  .page-numeriklub-lp .nk-reference-offer-footer{
    align-items:flex-start;
    flex-direction:column;
  }
  .page-numeriklub-lp .nk-reference-offer-actions{
    width:100%;
    justify-items:stretch;
  }
  .page-numeriklub-lp .nk-lp-secondary-block{
    margin-top:0;
    padding-top:0;
    border-top:0;
  }
  .page-numeriklub-lp .nk-reference-offer-actions .btn{
    justify-content:center;
    width:100%;
  }
  .page-numeriklub-lp .nk-reference-offer-detail{
    justify-self:center;
  }
  .page-numeriklub-lp .nk-reference-offer-details-body{
    grid-template-columns:1fr;
  }
}

/* Thématiques — grille éditoriale de la maquette de référence. */
.page-numeriklub-lp .nk-lp-theme-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:24px;
  align-items:stretch;
}
.page-numeriklub-lp .nk-lp-theme-card{
  display:flex;
  min-width:0;
  flex-direction:column;
  padding:0;
}
.page-numeriklub-lp .nk-lp-theme-cover{
  position:relative;
  height:clamp(9.5rem,16vw,10.5rem);
  margin:-2px -2px 0;
  border-radius:22px 22px 0 0;
  background:var(--nk-blue-deep);
}
.page-numeriklub-lp .nk-lp-theme-cover img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .45s var(--ease-out);
}
.page-numeriklub-lp .nk-lp-theme-card:hover .nk-lp-theme-cover img{
  transform:scale(1.05);
}
.page-numeriklub-lp .nk-lp-theme-cover-shade{
  position:absolute;
  inset:35% 0 0;
  background:linear-gradient(180deg,transparent,rgba(var(--nk-blue-deep-rgb),.78));
  pointer-events:none;
}
.page-numeriklub-lp .nk-lp-theme-cover-index{
  position:absolute;
  left:16px;
  bottom:14px;
  display:grid;
  width:38px;
  height:38px;
  place-items:center;
  border-radius:10px;
  background:var(--nk-cyan);
  color:var(--nk-blue-deep);
  font-size:.82rem;
  font-weight:900;
  box-shadow:0 8px 18px rgba(8,20,32,.24);
}
.page-numeriklub-lp .nk-lp-theme-card:nth-child(4n + 1) .nk-lp-theme-cover-index{
  background:var(--nk-orange);
  color:#081420;
}
.page-numeriklub-lp .nk-lp-theme-card:nth-child(4n + 3) .nk-lp-theme-cover-index{
  background:#8B5CF6;
  color:#fff;
}
.page-numeriklub-lp .nk-lp-theme-card:nth-child(4n) .nk-lp-theme-cover-index{
  background:var(--nk-yellow);
  color:#3F3600;
}
.page-numeriklub-lp .nk-lp-theme-content{
  display:flex;
  flex:1;
  flex-direction:column;
  padding:20px 20px 0;
}
.page-numeriklub-lp .nk-lp-theme-index{
  margin:0 0 6px;
  color:var(--nk-blue-mid);
  font-size:.75rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-lp-theme-card h4{
  font-size:1.2rem;
  line-height:1.15;
}
.page-numeriklub-lp .nk-lp-theme-meta{
  font-size:.8rem;
}
.page-numeriklub-lp .nk-lp-theme-card p{
  margin:.55rem 0 0;
  font-size:.9rem;
  line-height:1.52;
}
.page-numeriklub-lp .nk-lp-theme-programme{
  display:grid;
  gap:6px;
  margin:14px 0 0;
  padding:12px 0 0;
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
  font-size:.8rem;
}
.page-numeriklub-lp .nk-lp-theme-programme li{
  gap:7px;
}
.page-numeriklub-lp .nk-lp-theme-programme li span{
  color:var(--nk-blue-mid);
}
.page-numeriklub-lp .nk-lp-theme-action{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-height:52px;
  margin:18px 20px 0;
  padding:14px 0 16px;
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
  color:var(--nk-blue-mid);
  font-size:.86rem;
  font-weight:900;
  text-decoration:none;
}
.page-numeriklub-lp .nk-lp-theme-action:hover,
.page-numeriklub-lp .nk-lp-theme-action:focus-visible{
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp .nk-lp-theme-action span:last-child{
  color:var(--nk-cyan);
  font-size:1.2rem;
  transition:transform .25s ease;
}
.page-numeriklub-lp .nk-lp-theme-action:hover span:last-child,
.page-numeriklub-lp .nk-lp-theme-action:focus-visible span:last-child{
  transform:translateX(3px);
}
@media(min-width:1180px){
  .page-numeriklub-lp .nk-lp-theme-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
}
@media(max-width:900px){
  .page-numeriklub-lp .nk-lp-theme-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:600px){
  .page-numeriklub-lp .nk-lp-theme-grid{
    grid-template-columns:1fr;
    gap:16px;
  }
}

/* Pédagogie — même rythme de cartes que les thématiques. */
.page-numeriklub-lp .nk-lp-pedagogy-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:24px;
  align-items:stretch;
}
.page-numeriklub-lp .nk-lp-pedagogy-card{
  display:flex;
  min-width:0;
  flex-direction:column;
  padding:0;
}
.page-numeriklub-lp .nk-lp-pedagogy-media{
  position:relative;
  height:clamp(9.5rem,16vw,10.5rem);
  margin:-2px -2px 0;
  overflow:hidden;
  border-radius:22px 22px 0 0;
  background:var(--nk-blue-deep);
}
.page-numeriklub-lp .nk-lp-pedagogy-media img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform .45s var(--ease-out);
}
.page-numeriklub-lp .nk-lp-pedagogy-card:hover .nk-lp-pedagogy-media img{
  transform:scale(1.05);
}
.page-numeriklub-lp .nk-lp-pedagogy-media-shade{
  position:absolute;
  inset:35% 0 0;
  background:linear-gradient(180deg,transparent,rgba(var(--nk-blue-deep-rgb),.78));
  pointer-events:none;
}
.page-numeriklub-lp .nk-lp-pedagogy-media-index{
  position:absolute;
  left:16px;
  bottom:14px;
  display:grid;
  width:38px;
  height:38px;
  place-items:center;
  border-radius:10px;
  background:var(--nk-cyan);
  color:var(--nk-blue-deep);
  font-size:.82rem;
  font-weight:900;
  box-shadow:0 8px 18px rgba(8,20,32,.24);
}
.page-numeriklub-lp .nk-lp-pedagogy-card:nth-child(4n + 1) .nk-lp-pedagogy-media-index{
  background:var(--nk-orange);
  color:#081420;
}
.page-numeriklub-lp .nk-lp-pedagogy-card:nth-child(4n + 3) .nk-lp-pedagogy-media-index{
  background:#8B5CF6;
  color:#fff;
}
.page-numeriklub-lp .nk-lp-pedagogy-card:nth-child(4n) .nk-lp-pedagogy-media-index{
  background:var(--nk-yellow);
  color:#3F3600;
}
.page-numeriklub-lp .nk-lp-pedagogy-content{
  display:flex;
  flex:1;
  flex-direction:column;
  padding:20px 20px 22px;
}
.page-numeriklub-lp .nk-lp-pedagogy-index{
  margin:0 0 6px;
  color:var(--nk-blue-mid);
  font-size:.75rem;
  font-weight:900;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.page-numeriklub-lp .nk-lp-pedagogy-card h3{
  font-size:1.2rem;
  line-height:1.15;
}
.page-numeriklub-lp .nk-lp-pedagogy-card .card-body{
  margin:.6rem 0 0;
  font-size:.9rem;
  line-height:1.52;
}
.page-numeriklub-lp .nk-lp-spirit-grid .nk-value-card{
  display:flex;
  flex-direction:column;
  min-height:100%;
  padding:clamp(20px,2.5vw,28px);
}
.page-numeriklub-lp .nk-value-icon{
  display:grid;
  width:48px;
  height:48px;
  place-items:center;
  margin-bottom:18px;
  border-radius:14px;
  color:#08212F;
  background:var(--nk-cyan);
  box-shadow:0 8px 18px rgba(61,180,231,.24);
}
.page-numeriklub-lp .nk-value-card:nth-child(3n + 1) .nk-value-icon{
  background:var(--nk-orange);
}
.page-numeriklub-lp .nk-value-card:nth-child(3n) .nk-value-icon{
  background:var(--nk-yellow);
}
.page-numeriklub-lp .nk-value-icon svg{
  width:24px;
  height:24px;
  stroke:currentColor;
}
.page-numeriklub-lp .nk-lp-spirit-grid .nk-value-card .card-body{
  margin-top:.7rem;
  line-height:1.55;
}
.page-numeriklub-lp .nk-approach-values{
  gap:16px;
  align-items:stretch;
}
.page-numeriklub-lp .nk-approach-value-card{
  display:flex;
  min-width:0;
  min-height:250px;
  flex-direction:column;
  padding:18px 16px 16px;
}
.page-numeriklub-lp .nk-approach-value-index{
  display:grid;
  width:34px;
  height:34px;
  place-items:center;
  margin-bottom:16px;
  border-radius:10px;
  color:#0B2940;
  background:var(--nk-orange);
  font-size:.8rem;
  font-weight:900;
}
.page-numeriklub-lp .nk-approach-value-card:nth-child(2) .nk-approach-value-index{background:var(--nk-cyan);}
.page-numeriklub-lp .nk-approach-value-card:nth-child(3) .nk-approach-value-index{background:var(--nk-yellow);}
.page-numeriklub-lp .nk-approach-value-card:nth-child(4) .nk-approach-value-index{
  color:#fff;
  background:#A86AE8;
}
.page-numeriklub-lp .nk-approach-value-card h3{
  margin:0;
  font-size:1.05rem;
  line-height:1.2;
}
.page-numeriklub-lp .nk-approach-value-card .card-body{
  margin:.7rem 0 0;
  font-size:.82rem;
  line-height:1.48;
}
.page-numeriklub-lp .nk-approach-value-label{
  margin-top:auto;
  padding-top:16px;
  color:var(--nk-blue-mid);
  font-size:.75rem;
  font-weight:900;
}
.page-numeriklub-lp .nk-approach-panels{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:24px;
  margin-top:clamp(28px,4vw,48px);
}
.page-numeriklub-lp .nk-approach-panel{
  display:flex;
  min-width:0;
  flex-direction:column;
  padding:clamp(22px,3vw,32px);
}
.page-numeriklub-lp .nk-approach-panel-copy .eyebrow{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:var(--nk-blue-mid);
}
.page-numeriklub-lp .nk-approach-panel-copy .eyebrow::before{
  content:"✦";
  color:var(--nk-orange);
  font-size:.9rem;
}
.page-numeriklub-lp .nk-approach-panel-parents .eyebrow::before{color:var(--nk-cyan);}
.page-numeriklub-lp .nk-approach-panel h3{
  max-width:22ch;
  margin:16px 0 0;
  font-size:clamp(1.3rem,2.2vw,1.7rem);
  line-height:1.16;
}
.page-numeriklub-lp .nk-approach-panel-copy > p{
  max-width:58ch;
  margin:16px 0 0;
  color:var(--nk-blue-mid);
  font-size:.86rem;
  line-height:1.55;
}
.page-numeriklub-lp .nk-approach-proof{
  display:flex;
  align-items:center;
  gap:14px;
  margin-top:auto;
  padding:14px;
  border:1px solid rgba(var(--nk-blue-ink-rgb),.08);
  border-radius:14px;
  background:rgba(var(--nk-blue-soft-rgb),.48);
}
.page-numeriklub-lp .nk-approach-proof > img{
  flex:0 0 64px;
  width:64px;
  height:64px;
  object-fit:cover;
  border-radius:10px;
}
.page-numeriklub-lp .nk-approach-proof-label{
  display:block;
  margin-bottom:4px;
  color:var(--nk-orange-dark);
  font-size:.75rem;
  font-weight:900;
}
.page-numeriklub-lp .nk-approach-proof strong{
  display:block;
  color:var(--nk-blue-ink);
  font-size:.88rem;
}
.page-numeriklub-lp .nk-approach-proof p{
  margin:4px 0 0;
  color:var(--nk-blue-mid);
  font-size:.75rem;
  line-height:1.42;
}
.page-numeriklub-lp .nk-approach-proof-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  margin-top:auto;
}
.page-numeriklub-lp .nk-approach-proof-item{
  display:flex;
  min-width:0;
  gap:8px;
  padding:12px 10px;
  border:1px solid rgba(var(--nk-blue-ink-rgb),.08);
  border-radius:12px;
  background:rgba(var(--nk-blue-soft-rgb),.42);
}
.page-numeriklub-lp .nk-approach-proof-icon{
  display:grid;
  flex:0 0 18px;
  width:18px;
  height:18px;
  place-items:center;
  color:var(--nk-blue-mid);
}
.page-numeriklub-lp .nk-approach-proof-icon svg{
  width:16px;
  height:16px;
  stroke:currentColor;
}
.page-numeriklub-lp .nk-approach-proof-item strong{
  display:block;
  color:var(--nk-blue-ink);
  font-size:.78rem;
  line-height:1.25;
}
.page-numeriklub-lp .nk-approach-proof-item p{
  margin:4px 0 0;
  color:var(--nk-blue-mid);
  font-size:.75rem;
  line-height:1.35;
}
.page-numeriklub-lp #pourquoi h3[data-blur-reveal]{
  opacity:1;
  transform:none;
  transition:none;
}
.page-numeriklub-lp .nk-cal-card .nk-cal-cta{
  margin-top:auto;
  padding-top:14px;
  border-top:1px solid rgba(21,49,74,.12);
}
.page-numeriklub-lp .nk-cal-card .nk-cal-cta .btn{
  width:100%;
  justify-content:center;
}
.page-numeriklub-lp .nk-upcoming-section > .container{
  display:block;
}
.page-numeriklub-lp .nk-upcoming-section > .container > .section-head{
  position:static;
  max-width:860px;
  margin:0 0 clamp(28px,4vw,42px);
}
.page-numeriklub-lp .nk-upcoming-section > .container > .section-head h2{
  max-width:18ch;
}
.page-numeriklub-lp .nk-upcoming-section .nk-tabs{
  margin-top:clamp(1rem,2.5vw,2.25rem);
}
.page-numeriklub-lp .nk-upcoming-section .nk-tablist{
  margin-bottom:clamp(20px,3vw,30px);
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(16px,2vw,24px);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card{
  display:flex;
  min-width:0;
  flex-direction:column;
  gap:0;
  padding:clamp(20px,2.4vw,28px);
  border-top-width:2px;
  border-radius:20px;
  background:#fff;
  box-shadow:0 14px 30px rgba(var(--nk-blue-ink-rgb),.10);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card:nth-child(3n + 1){
  border-top-color:var(--nk-cyan);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card:nth-child(3n + 2),
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card:nth-child(3n + 3){
  border-top-color:var(--nk-orange);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card-head{
  display:block;
}
.page-numeriklub-lp .nk-upcoming-card-badges{
  display:flex;
  align-items:center;
  min-height:28px;
  margin-bottom:16px;
}
.page-numeriklub-lp .nk-upcoming-card-badge{
  display:inline-flex;
  align-items:center;
  min-height:28px;
  padding:5px 11px;
  border-radius:999px;
  color:var(--nk-blue-ink);
  background:rgba(var(--nk-cyan-rgb),.16);
  font-size:.78rem;
  font-weight:850;
  line-height:1.1;
}
.page-numeriklub-lp .nk-upcoming-card:nth-child(n + 2) .nk-upcoming-card-badge{
  color:#8A4A00;
  background:#FFF0D8;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-name{
  margin:0;
  color:var(--nk-blue-ink);
  font-size:clamp(1.28rem,2vw,1.65rem);
  line-height:1.12;
  letter-spacing:-.025em;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-name[data-blur-reveal],
.page-numeriklub-lp .nk-upcoming-help h3[data-blur-reveal]{
  opacity:1;
  transform:none;
  transition:none;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-meta{
  display:block;
  margin-top:12px;
  color:var(--nk-blue-muted);
  font-family:var(--font-ui);
  font-size:.92rem;
  font-weight:600;
  letter-spacing:0;
  line-height:1.45;
  text-transform:none;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-dates{
  display:grid;
  gap:9px;
  margin:clamp(22px,3vw,30px) 0 0;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-date{
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  justify-content:flex-start;
  gap:10px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-date-icon{
  display:inline-grid;
  width:1.15rem;
  height:1.15rem;
  place-items:center;
  flex:0 0 auto;
  color:var(--nk-blue-mid);
  font-size:1.02rem;
  line-height:1.35;
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-date-icon svg{
  display:block;
  width:100%;
  height:100%;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card:nth-child(n + 2) .nk-cal-date-icon{
  color:#C56E00;
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-date-copy{
  display:grid;
  min-width:0;
  gap:2px;
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-date-id{
  color:var(--nk-blue-muted);
  font-family:var(--font-ui);
  font-size:.78rem;
  letter-spacing:0;
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-date-label{
  color:var(--nk-blue-muted);
  font-size:.9rem;
  font-weight:650;
  line-height:1.4;
}
.page-numeriklub-lp .nk-upcoming-section .nk-cal-card-footer{
  display:grid;
  gap:17px;
  margin-top:auto;
  padding-top:22px;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-price{
  color:var(--nk-blue-ink);
  font-family:var(--font-display);
  font-size:clamp(1.5rem,2.4vw,1.9rem);
  font-weight:900;
  line-height:1;
  text-align:left;
  white-space:normal;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta{
  width:100%;
  margin:0;
  padding-top:17px;
  border-top:1px solid rgba(var(--nk-blue-ink-rgb),.12);
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta .btn{
  min-height:46px;
  width:100%;
  justify-content:center;
}
.page-numeriklub-lp .nk-upcoming-help{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:clamp(18px,4vw,42px);
  margin-top:clamp(26px,4vw,44px);
  padding:clamp(20px,3vw,28px);
  border:1px solid rgba(var(--nk-blue-ink-rgb),.10);
  border-radius:20px;
  background:linear-gradient(100deg,rgba(var(--nk-cyan-rgb),.10),#fff 52%,rgba(var(--nk-orange-rgb),.10));
  box-shadow:0 12px 26px rgba(var(--nk-blue-ink-rgb),.08);
}
.page-numeriklub-lp .nk-upcoming-help-copy{
  min-width:0;
}
.page-numeriklub-lp .nk-upcoming-help h3{
  margin:0;
  color:var(--nk-blue-ink);
  font-size:clamp(1.04rem,1.8vw,1.3rem);
  line-height:1.2;
}
.page-numeriklub-lp .nk-upcoming-help p{
  max-width:62ch;
  margin:7px 0 0;
  color:var(--nk-blue-muted);
  font-size:.88rem;
  line-height:1.5;
}
.page-numeriklub-lp .nk-upcoming-help-cta{
  flex:0 0 auto;
  min-height:44px;
  white-space:nowrap;
}
@media(max-width:980px){
  .page-numeriklub-lp .nk-upcoming-section .nk-cal-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:700px){
  .page-numeriklub-lp .nk-upcoming-section .nk-cal-grid{
    grid-template-columns:1fr;
  }
  .page-numeriklub-lp .nk-upcoming-help{
    align-items:stretch;
    flex-direction:column;
  }
  .page-numeriklub-lp .nk-upcoming-help-cta{
    width:100%;
    justify-content:center;
  }
}
/* Keep each calendar CTA in normal flow so it cannot overlap the card copy. */
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  min-width:0;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-dates{
  flex:1 1 auto;
  min-height:0;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-card-footer{
  display:flex;
  flex:0 0 auto;
  flex-direction:column;
  min-width:0;
  margin-top:auto;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta{
  position:relative;
  z-index:1;
  flex:0 0 auto;
}
.page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta .btn{
  position:relative;
  display:flex;
  min-height:46px;
  width:100%;
  align-items:center;
  justify-content:center;
  white-space:normal;
}
.page-numeriklub-lp #lieux .campus,
.page-numeriklub-lp #rappel .contact-grid > .card{
  display:flex;
  flex-direction:column;
}
.page-numeriklub-lp #lieux .campus .campus-map{
  margin-top:auto;
}
.page-numeriklub-lp #rappel .contact-grid > .card .btn{
  align-self:flex-start;
}
@media(max-width:1100px){
  .page-numeriklub-lp .nk-lp-pedagogy-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .page-numeriklub-lp .nk-approach-values{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:600px){
  .page-numeriklub-lp .nk-lp-pedagogy-grid{
    grid-template-columns:1fr;
  }
  .page-numeriklub-lp .nk-approach-values,
  .page-numeriklub-lp .nk-approach-panels{
    grid-template-columns:1fr;
  }
  .page-numeriklub-lp .nk-approach-value-card{
    min-height:0;
  }
  .page-numeriklub-lp .nk-approach-proof-grid{
    grid-template-columns:1fr;
  }
}

/* ---------------------------------------------------------
   Numériklub · Petites vacances — page dédiée
   Recompose les blocs génériques dans le rythme de la landing
   de référence, sans créer un second moteur de page.
   --------------------------------------------------------- */
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"]{
  --accent:var(--nk-cyan);
  --accent-rgb:var(--nk-cyan-rgb);
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#programme,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#images,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#faq{
  --bg-deep:#F7FBFE;
  --bg:#FFFFFF;
  --surface:#FFFFFF;
  --surface-raised:#F7FBFE;
  --text:var(--nk-blue-ink);
  --text-secondary:var(--nk-blue-muted);
  --heading:var(--nk-blue-ink);
  --heading-soft:var(--nk-blue-mid);
  --grad-heading:linear-gradient(115deg,var(--nk-blue-ink) 8%,var(--nk-blue-mid) 92%);
  --eyebrow:var(--nk-blue-muted);
  --tint:var(--nk-blue-ink-rgb);
  --border:rgba(var(--nk-blue-ink-rgb),.13);
  --border-strong:rgba(var(--nk-blue-ink-rgb),.22);
  --shadow-card:0 14px 32px rgba(var(--nk-blue-ink-rgb),.10);
  background:linear-gradient(180deg,#FFFFFF 0%,#F4FAFD 100%) !important;
  color:var(--text);
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#format,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#campus{
  --bg-deep:#D8F0FA;
  --bg:#EAF7FD;
  --surface:#FFFFFF;
  --surface-raised:#F7FCFE;
  --text:var(--nk-blue-ink);
  --text-secondary:var(--nk-blue-muted);
  --heading:var(--nk-blue-ink);
  --heading-soft:var(--nk-blue-mid);
  --grad-heading:linear-gradient(115deg,var(--nk-blue-ink) 8%,var(--nk-blue-mid) 92%);
  --eyebrow:var(--nk-blue-muted);
  --tint:var(--nk-blue-ink-rgb);
  --border:rgba(var(--nk-blue-ink-rgb),.14);
  --border-strong:rgba(var(--nk-blue-ink-rgb),.24);
  --shadow-card:0 14px 32px rgba(var(--nk-blue-ink-rgb),.12);
  background:linear-gradient(180deg,#EAF7FD 0%,#D8F0FA 100%) !important;
  color:var(--text);
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes{
  --bg-deep:var(--nk-blue-deep);
  --bg:var(--nk-blue-deep);
  --surface:var(--nk-blue-dark-surface);
  --surface-raised:var(--nk-blue-dark-raised);
  --text:#DCE7EF;
  --text-secondary:var(--nk-blue-light);
  --heading:#F4F8FB;
  --heading-soft:var(--nk-blue-light);
  --grad-heading:linear-gradient(115deg,#F4F8FB 8%,var(--nk-blue-light) 92%);
  --eyebrow:var(--nk-blue-light);
  --tint:var(--nk-blue-light-rgb);
  --border:rgba(var(--nk-blue-light-rgb),.22);
  --border-strong:rgba(var(--nk-blue-light-rgb),.34);
  background:
    radial-gradient(75% 90% at 90% 0%,rgba(var(--nk-cyan-rgb),.18),transparent 60%),
    linear-gradient(180deg,#08212F 0%,#0E3044 100%) !important;
  color:var(--text);
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .cols-3{
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(18px,2.5vw,30px);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .cols-3 > .card:nth-child(2){
  transform:none;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .cols-3 > .card:nth-child(5){
  grid-column:1 / -1;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .card.prog,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#images .card.prog{
  border-radius:18px;
  border-color:rgba(var(--nk-blue-ink-rgb),.14);
  box-shadow:0 16px 34px rgba(var(--nk-blue-ink-rgb),.10);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .prog-cover{
  aspect-ratio:16 / 9;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .card.prog:nth-child(5){
  display:grid;
  grid-template-columns:minmax(220px,.78fr) minmax(0,1.22fr);
  column-gap:clamp(20px,3vw,40px);
  align-items:start;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .card.prog:nth-child(5) .prog-cover{
  grid-row:1 / span 6;
  margin:calc(var(--space-6) * -1) 0 calc(var(--space-6) * -1) calc(var(--space-6) * -1);
  height:100%;
  min-height:260px;
  aspect-ratio:auto;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .card.prog:nth-child(5) > :not(.prog-cover){
  grid-column:2;
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#format .info-grid{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#format .info-item{
  min-height:150px;
  border-radius:16px;
  background:rgba(255,255,255,.88);
  border-color:rgba(var(--nk-blue-ink-rgb),.14);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#programme .about-block{
  max-width:920px;
  padding:clamp(24px,4vw,44px);
  border:1px solid rgba(var(--nk-blue-ink-rgb),.12);
  border-radius:20px;
  background:rgba(255,255,255,.88);
  box-shadow:0 16px 34px rgba(var(--nk-blue-ink-rgb),.08);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#programme .prose{
  max-width:72ch;
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .filter-pills{
  gap:10px;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .filter-pill{
  background:#FFFFFF;
  border-color:rgba(var(--nk-blue-ink-rgb),.2);
  font-weight:800;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .filter-pill.is-active,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .filter-pill:hover,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .filter-pill:focus-visible{
  background:var(--nk-cyan);
  border-color:var(--nk-cyan);
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .timeline-cards{
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .timeline-cards .card{
  min-width:0;
  border-top:4px solid var(--nk-cyan);
  border-radius:16px;
  background:#FFFFFF;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .timeline-cards > [hidden]{
  display:none !important;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .nk-periodes-table{
  background:#FFFFFF;
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .section-head h2{
  background:none;
  color:#F4F8FB;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .steps{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:14px;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .step{
  min-width:0;
  min-height:220px;
  flex-direction:column;
  gap:18px;
  padding:20px;
  border:1px solid rgba(var(--nk-blue-light-rgb),.2);
  border-radius:16px;
  background:rgba(23,71,99,.76);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .step .n{
  width:46px;
  height:46px;
  border-radius:50%;
  background:var(--nk-cyan);
  color:var(--nk-blue-ink);
  box-shadow:none;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .step h4{
  color:#F4F8FB;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .step p{
  color:var(--nk-blue-light);
}

.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#images .cols-2{
  gap:clamp(20px,3vw,36px);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#images .prog-cover{
  aspect-ratio:16 / 9;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#campus .campus,
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#faq .faq-item{
  border-radius:16px;
  background:#FFFFFF;
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#campus .campus{
  border-color:rgba(var(--nk-blue-ink-rgb),.14);
}
.page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#faq .faq{
  max-width:none;
}

@media(max-width:1100px){
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .steps{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .timeline-cards{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:820px){
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#format .info-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#campus .grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:680px){
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .cols-3,
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#format .info-grid,
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#campus .grid{
    grid-template-columns:1fr;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .cols-3 > .card:nth-child(5){
    grid-column:auto;
    display:block;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .card.prog:nth-child(5) .prog-cover{
    height:auto;
    min-height:0;
    aspect-ratio:16 / 9;
    margin:calc(var(--space-6) * -1) calc(var(--space-6) * -1) var(--space-5);
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#univers .card.prog:nth-child(5) > :not(.prog-cover){
    grid-column:auto;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .steps{
    grid-template-columns:1fr;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#etapes .step{
    min-height:0;
    flex-direction:row;
    align-items:flex-start;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > section#periodes-filtres .timeline-cards{
    grid-template-columns:1fr;
  }
}

/* Pages d’offre Numériklub : toutes les cartes reprennent le gabarit de
   « Choisissez selon le moment et le rythme de votre enfant ». Les contenus
   gardent leurs mises en page propres (couvertures, étapes, programmes), mais
   partagent la même surface claire, le même rayon, le même liseré et la même
   profondeur visuelle. */
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card{
  --nk-detail-card-pad:clamp(22px,3vw,34px);
  position:relative;
  overflow:hidden;
  border:2px solid rgba(var(--nk-blue-ink-rgb),.14);
  border-radius:24px;
  background:#fff;
  color:var(--nk-blue-ink);
  box-shadow:0 18px 42px rgba(var(--nk-blue-ink-rgb),.12);
  transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease;
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card:not(.has-cover){
  padding:var(--nk-detail-card-pad);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card:hover{
  border-color:rgba(241,138,7,.68);
  box-shadow:0 22px 48px rgba(var(--nk-blue-ink-rgb),.18);
  transform:translateY(-4px);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card:nth-child(3n + 1){
  border-top-color:var(--nk-cyan);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card:nth-child(3n + 2){
  border-top-color:var(--nk-orange);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card:nth-child(3n){
  border-top-color:var(--nk-yellow);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card h3,
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card h4,
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card .card-title{
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card p,
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card .card-body,
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card address{
  color:var(--nk-blue-muted);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card.has-cover .prog-cover{
  border-radius:22px 22px 0 0;
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card .n{
  background:var(--nk-cyan);
  color:var(--nk-blue-ink);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card:nth-child(3n + 2) .n{
  background:var(--nk-orange);
}
.page-numeriklub-lp:has(> section#nk-format-choice) > section:not(#nk-format-choice) .card:nth-child(3n) .n{
  background:var(--nk-yellow);
}

/* Le CTA de la barre mobile reste sombre malgré le dégradé global des
   .btn-primary en thème clair. */
:root.light:has(.page-numeriklub-lp) .mobile-conversion-bar .btn-reserve,
:root:has(.page-numeriklub-lp) .mobile-conversion-bar .btn-reserve{
  background:#0E2438;
  background-image:none;
  color:#FFFFFF;
}

/* =========================================================
   FORMATION CONTINUE — grammaire cards / sections
   Couche limitée aux pages historiques FC et à la landing
   campagne : aucun contenu ni comportement n'est modifié.
   ========================================================= */
.page[data-page^="/formation-continue"],
.page[data-page="/lp/formation-continue"]{
  --fc-card-gap:clamp(16px,2vw,24px);
  --fc-section-space:clamp(72px,8vw,116px);
}

.page[data-page^="/formation-continue"] > section.section,
.page[data-page="/lp/formation-continue"] > section.section{
  padding-block:var(--fc-section-space);
}

.page[data-page^="/formation-continue"] > section.section > .container,
.page[data-page="/lp/formation-continue"] > section.section > .container{
  max-width:1180px;
}

.page[data-page^="/formation-continue"] > section.section:nth-of-type(odd),
.page[data-page="/lp/formation-continue"] > section.section:nth-of-type(odd){
  background-image:
    radial-gradient(70% 80% at 100% 0%,rgba(var(--accent-rgb),.10),transparent 68%),
    linear-gradient(180deg,rgba(11,30,46,.72) 0%,rgba(8,20,32,.98) 100%),
    var(--bg-noise);
}

.page[data-page^="/formation-continue"] > section.section:nth-of-type(even),
.page[data-page="/lp/formation-continue"] > section.section:nth-of-type(even){
  background-image:linear-gradient(180deg,var(--surface) 0%,var(--surface-raised) 100%);
}

:root.light .page[data-page^="/formation-continue"] > section.section:nth-of-type(odd),
:root.light .page[data-page="/lp/formation-continue"] > section.section:nth-of-type(odd){
  background-image:
    radial-gradient(70% 80% at 100% 0%,rgba(var(--accent-rgb),.07),transparent 68%),
    linear-gradient(180deg,#F7FAFC 0%,#E9F1F7 100%);
}

:root.light .page[data-page^="/formation-continue"] > section.section:nth-of-type(even),
:root.light .page[data-page="/lp/formation-continue"] > section.section:nth-of-type(even){
  background-image:linear-gradient(180deg,#FFFFFF 0%,#F1F6FA 100%);
}

.page[data-page^="/formation-continue"] > section.section .section-head,
.page[data-page="/lp/formation-continue"] > section.section .section-head{
  max-width:900px;
  margin-bottom:clamp(28px,4vw,48px);
}

.page[data-page^="/formation-continue"] > section.section .section-head .num,
.page[data-page="/lp/formation-continue"] > section.section .section-head .num{
  color:var(--accent-soft);
  letter-spacing:.14em;
}

.page[data-page^="/formation-continue"] > section.section .section-head h2,
.page[data-page="/lp/formation-continue"] > section.section .section-head h2{
  max-width:22ch;
  font-size:clamp(2rem,4vw,3.25rem);
  line-height:1.04;
}

.page[data-page^="/formation-continue"] > section.section .section-head p,
.page[data-page="/lp/formation-continue"] > section.section .section-head p{
  max-width:72ch;
  margin-top:var(--space-4);
  line-height:1.6;
}

/* Cards régulières : média en tête, contenu flexible, CTA aligné en pied. */
.page[data-page^="/formation-continue"] .grid,
.page[data-page="/lp/formation-continue"] .grid{
  gap:var(--fc-card-gap);
  align-items:stretch;
}

.page[data-page^="/formation-continue"] .card.prog,
.page[data-page="/lp/formation-continue"] .card.prog{
  min-width:0;
  padding:clamp(20px,2.2vw,30px);
  border-color:rgba(var(--accent-rgb),.20);
  background:
    linear-gradient(155deg,rgba(var(--accent-rgb),.075),transparent 46%),
    var(--surface);
  box-shadow:0 12px 30px rgba(8,20,32,.16),inset 0 1px 0 rgba(var(--tint),.08);
}

.page[data-page^="/formation-continue"] .card.prog:hover,
.page[data-page="/lp/formation-continue"] .card.prog:hover{
  border-color:rgba(var(--accent-rgb),.52);
  box-shadow:0 18px 38px rgba(8,20,32,.24),0 0 28px rgba(var(--accent-rgb),.10);
}

.page[data-page^="/formation-continue"] .prog .prog-head,
.page[data-page="/lp/formation-continue"] .prog .prog-head{
  align-items:flex-start;
  gap:var(--space-3);
}

.page[data-page^="/formation-continue"] .prog .prog-head-l,
.page[data-page="/lp/formation-continue"] .prog .prog-head-l{
  align-items:flex-start;
}

.page[data-page^="/formation-continue"] .prog h3,
.page[data-page="/lp/formation-continue"] .prog h3{
  min-width:0;
  font-size:clamp(1.08rem,1.7vw,1.35rem);
  line-height:1.16;
  text-wrap:balance;
}

.page[data-page^="/formation-continue"] .prog > .card-body,
.page[data-page="/lp/formation-continue"] .prog > .card-body{
  line-height:1.58;
}

.page[data-page^="/formation-continue"] .prog > .mt-6,
.page[data-page="/lp/formation-continue"] .prog > .mt-6{
  margin-top:auto;
  padding-top:var(--space-2);
}

.page[data-page^="/formation-continue"] .card.prog.has-cover,
.page[data-page="/lp/formation-continue"] .card.prog.has-cover{
  padding-top:0;
}

.page[data-page^="/formation-continue"] .card.prog.has-cover .prog-cover,
.page[data-page="/lp/formation-continue"] .card.prog.has-cover .prog-cover{
  margin:0 calc(clamp(20px,2.2vw,30px) * -1) var(--space-5);
  width:calc(100% + 2 * clamp(20px,2.2vw,30px));
  aspect-ratio:16/9;
}

.page[data-page^="/formation-continue"] .prog-cover::after,
.page[data-page="/lp/formation-continue"] .prog-cover::after{
  background:linear-gradient(180deg,transparent 48%,rgba(8,20,32,.68) 100%);
}

.page[data-page^="/formation-continue"] .card.prog.has-cover:hover .prog-cover img,
.page[data-page="/lp/formation-continue"] .card.prog.has-cover:hover .prog-cover img{
  transform:scale(1.045);
  filter:saturate(1.08);
}

.page[data-page^="/formation-continue"] .prog .badge,
.page[data-page="/lp/formation-continue"] .prog .badge{
  flex:0 0 auto;
  color:var(--accent-soft);
  background:rgba(var(--accent-rgb),.10);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.28);
}

.page[data-page^="/formation-continue"] .badge-row,
.page[data-page="/lp/formation-continue"] .badge-row{
  gap:8px;
}

.page[data-page^="/formation-continue"] .info-grid,
.page[data-page="/lp/formation-continue"] .info-grid{
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:var(--fc-card-gap);
}

.page[data-page^="/formation-continue"] .info-item,
.page[data-page="/lp/formation-continue"] .info-item{
  min-width:0;
  padding:clamp(18px,2vw,26px);
  flex-direction:column;
  gap:var(--space-3);
  border-top:2px solid rgba(var(--accent-rgb),.46);
}

.page[data-page^="/formation-continue"] .info-item .k,
.page[data-page="/lp/formation-continue"] .info-item .k{
  color:var(--accent-soft);
  font-size:var(--text-2xs);
}

.page[data-page^="/formation-continue"] .info-item .v,
.page[data-page="/lp/formation-continue"] .info-item .v{
  margin-top:0;
  line-height:1.5;
}

.page[data-page^="/formation-continue"] .steps,
.page[data-page="/lp/formation-continue"] .steps{
  gap:var(--fc-card-gap);
}

.page[data-page^="/formation-continue"] .step,
.page[data-page="/lp/formation-continue"] .step{
  min-width:0;
  align-items:flex-start;
  padding:clamp(18px,2vw,26px);
  border-left:3px solid rgba(var(--accent-rgb),.48);
}

.page[data-page^="/formation-continue"] .step .n,
.page[data-page="/lp/formation-continue"] .step .n{
  color:var(--accent-soft);
  background:rgba(var(--accent-rgb),.10);
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.25);
}

.page[data-page^="/formation-continue"] .gp-list,
.page[data-page="/lp/formation-continue"] .gp-list{
  gap:var(--space-4);
}

.page[data-page^="/formation-continue"] .gp-list li::before,
.page[data-page="/lp/formation-continue"] .gp-list li::before{
  background:var(--accent);
  box-shadow:0 0 0 4px rgba(var(--accent-rgb),.10);
}

.page[data-page^="/formation-continue"] .faq,
.page[data-page="/lp/formation-continue"] .faq{
  gap:10px;
}

.page[data-page^="/formation-continue"] .faq details,
.page[data-page="/lp/formation-continue"] .faq details{
  padding:clamp(16px,2vw,24px);
  border-left:2px solid transparent;
}

.page[data-page^="/formation-continue"] .faq details[open],
.page[data-page="/lp/formation-continue"] .faq details[open]{
  border-left-color:var(--accent);
}

/* La landing de campagne garde son chrome bare, mais reçoit un
   hero/rythme propre et une hiérarchie centrée dans les sections. */
.page[data-page="/lp/formation-continue"] > .page-hero{
  padding-block:clamp(48px,7vw,92px) clamp(40px,6vw,76px);
  background:
    radial-gradient(60% 90% at 88% 10%,rgba(var(--accent-rgb),.18),transparent 66%),
    linear-gradient(180deg,var(--bg-deep),var(--bg));
}

.page[data-page="/lp/formation-continue"] > .page-hero + section.section{
  padding-top:clamp(64px,8vw,108px);
}

.page[data-page="/lp/formation-continue"] > section.section .section-head{
  margin-inline:auto;
}

.page[data-page="/lp/formation-continue"] > section.section .section-head h2,
.page[data-page="/lp/formation-continue"] > section.section .section-head p{
  margin-inline:auto;
  text-align:center;
}

/* Section 01 stays aligned with its content; later campaign sections stay centered. */
.page[data-page="/lp/formation-continue"] > section.section .section-head[data-section-number="01"],
.page[data-page="/lp/formation-continue"] > section.section .section-head[data-section-number="01"] h2,
.page[data-page="/lp/formation-continue"] > section.section .section-head[data-section-number="01"] p{
  margin-inline:0;
  text-align:left;
}

@media(max-width:980px){
  .page[data-page^="/formation-continue"] .info-grid,
  .page[data-page="/lp/formation-continue"] .info-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:680px){
  .page[data-page^="/formation-continue"] > section.section,
  .page[data-page="/lp/formation-continue"] > section.section{
    padding-block:clamp(56px,12vw,76px);
  }

  .page[data-page^="/formation-continue"] > section.section .section-head h2,
  .page[data-page="/lp/formation-continue"] > section.section .section-head h2{
    font-size:clamp(1.85rem,8vw,2.5rem);
  }

  .page[data-page^="/formation-continue"] .info-grid,
  .page[data-page="/lp/formation-continue"] .info-grid{
    grid-template-columns:1fr;
  }

  .page[data-page^="/formation-continue"] .card.prog,
  .page[data-page="/lp/formation-continue"] .card.prog{
    padding:20px;
  }

  .page[data-page^="/formation-continue"] .card.prog.has-cover .prog-cover,
  .page[data-page="/lp/formation-continue"] .card.prog.has-cover .prog-cover{
    margin-inline:-20px;
    width:calc(100% + 40px);
  }
}

@media(prefers-reduced-motion:reduce){
  .page[data-page^="/formation-continue"] .prog-cover img,
  .page[data-page="/lp/formation-continue"] .prog-cover img{
    transition:none;
  }
}

/* Les badges de cadrage des fiches parcours contiennent parfois une phrase
   longue en anglais : ils doivent se replier dans la colonne mobile au lieu
   d'élargir toute la page. */
.page[data-page^="/formation-continue"] .fc-pp-fomo .badge-session{
  max-width:100%;
  min-width:0;
  white-space:normal;
  line-height:1.35;
  overflow-wrap:anywhere;
}

/* Numériklub LP — dernier niveau mobile.
   Ce bloc reste en fin de fichier pour ne pas être réécrit par les règles
   éditoriales des grilles déclarées plus haut. */
@media(max-width:700px){
  .page-numeriklub-lp > section.section{
    padding-block:40px;
  }

  .page-numeriklub-lp > .page-hero .hero-art{
    width:min(82vw,560px);
    max-height:50vh;
  }

  .page-numeriklub-lp[data-page="/lp/numeriklub/parcours-annuel"] > .page-hero-art > .hero-art,
  .page-numeriklub-lp[data-page="/lp/numeriklub/petites-vacances"] > .page-hero-art > .hero-art{
    height:clamp(270px,35vw,460px);
    max-height:clamp(270px,35vw,460px);
  }

  .page-numeriklub-lp .nk-reference-offer-grid,
  .page-numeriklub-lp .nk-lp-theme-grid,
  .page-numeriklub-lp .nk-upcoming-section .nk-cal-grid{
    width:100%;
    min-width:0;
    grid-template-columns:minmax(0,1fr);
    gap:16px;
  }

  .page-numeriklub-lp > section#nk-offers .section-head,
  .page-numeriklub-lp > section#nk-format-choice .section-head{
    margin-bottom:20px;
  }

  .page-numeriklub-lp .nk-reference-offer-content{
    padding:18px;
  }

  .page-numeriklub-lp .nk-reference-offer-intro{
    margin-top:16px;
  }

  .page-numeriklub-lp .nk-reference-offer-features{
    margin-top:16px;
    gap:8px;
  }

  .page-numeriklub-lp .nk-reference-offer-note{
    margin-top:16px;
    padding:10px 12px;
  }

  .page-numeriklub-lp .nk-reference-offer-footer{
    margin-inline:18px;
    padding:14px 0 16px;
    gap:12px;
  }

  .page-numeriklub-lp .nk-lp-secondary-block,
  .page-numeriklub-lp .nk-lp-pedagogy-block,
  .page-numeriklub-lp .nk-lp-faq-block{
    margin-top:24px;
    padding-top:18px;
  }

  .page-numeriklub-lp .nk-lp-secondary-head{
    margin-bottom:8px;
  }

  .page-numeriklub-lp .nk-lp-secondary-grid{
    width:100%;
    min-width:0;
    margin-top:0;
  }

  .page-numeriklub-lp .nk-lp-theme-content{
    padding:16px 16px 0;
  }

  .page-numeriklub-lp #thematiques .nk-lp-secondary-head{
    margin-bottom:8px;
  }

  .page-numeriklub-lp .nk-lp-theme-action{
    min-height:44px;
    margin:14px 16px 0;
    padding:10px 0 12px;
  }

  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card{
    gap:14px;
    padding:16px;
  }

  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-dates{
    margin-top:16px;
  }

  .page-numeriklub-lp .nk-upcoming-section .nk-upcoming-card .nk-cal-cta{
    padding-top:10px;
  }
}

.page-numeriklub-lp[data-page="/lp/numeriklub/parcours-annuel"] .nk-offer-track-cards + .grid{
  margin-top:var(--space-6);
}

@media(max-width:600px){
  .page-numeriklub-lp > section.section{
    padding-block:32px;
  }
}

/* Numériklub — rythme mobile des pages historiques.
   Les pages /numeriklub/* partagent les cartes de la LP mais ne passent pas
   par ses derniers overrides : réduire ici les réserves verticales visibles
   sur les offres, le calendrier et les blocs de qualification. */
@media(max-width:700px){
  .page-numeriklub:not(.page-numeriklub-lp) > section#ateliers{
    padding-top:40px;
  }

  body[data-route="/numeriklub/sur-mesure"] .page > section.section{
    padding-block:40px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) > section.section{
    padding-block:40px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) > .page-hero{
    padding-bottom:40px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .section-head{
    margin-bottom:24px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-tabs{
    margin-top:32px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-tablist{
    margin-bottom:20px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-cal{
    margin-top:24px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-cal-head{
    margin-bottom:16px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-cal-card{
    gap:12px;
    padding:16px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-cal-date{
    padding:10px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-yc-surmesure{
    gap:12px;
    margin-top:16px;
    padding:16px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-tab-cta{
    gap:12px;
    margin-top:20px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .card.prog{
    padding:20px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .card.prog .mt-6{
    margin-top:20px;
  }

  .page:not(.page-numeriklub-lp):has(.nk-calendrier-sec) .nk-program-grid{
    margin-top:20px;
    margin-bottom:24px;
  }
}

/* Numériklub — resserrement des transitions mobiles.
   Les blocs gardent leur contenu et leur hiérarchie, mais les CTA qui suivent
   une grille ne doivent pas reprendre l'échelle desktop de .mt-8. */
@media(max-width:700px){
  .page-numeriklub-lp .nk-program-grid,
  .page-numeriklub:not(.page-numeriklub-lp) .nk-program-grid{
    margin-bottom:24px;
  }

  .page-numeriklub-lp .nk-program-grid + .center.mt-8,
  .page-numeriklub-lp .nk-program-grid ~ .center.mt-8,
  .page-numeriklub:not(.page-numeriklub-lp) .nk-program-grid + .center.mt-8,
  .page-numeriklub:not(.page-numeriklub-lp) .nk-program-grid ~ .center.mt-8{
    margin-top:24px !important;
  }

  .page-numeriklub:not(.page-numeriklub-lp) .nk-contact-head{
    margin-top:32px;
    margin-bottom:24px;
  }

  .page-numeriklub-lp > section#rappel.nk-callback-section .nk-lp-faq-block{
    margin-top:24px;
  }
}

/* Hub Numériklub : même système visuel que la landing LP, sans supprimer les
   rubriques métier propres au hub. Les sections portent data-lp-section pour
   garder cette correspondance explicite plutôt que de dépendre de leur ordre. */
.page-numeriklub-hub > section[data-lp-section="offers"],
.page-numeriklub-hub > section[data-lp-section="calendar"]{
  background:linear-gradient(180deg,var(--nk-blue-soft) 0%,var(--nk-bg-light) 100%) !important;
}
.page-numeriklub-hub > section[data-lp-section="soft"]{
  background:linear-gradient(180deg,var(--nk-blue-soft-2) 0%,#C5E6F3 100%) !important;
}
.page-numeriklub-hub > section[data-lp-section="dark"],
.page-numeriklub-hub > section[data-lp-section="media"]{
  background:
    radial-gradient(80% 90% at 90% 0%,rgba(var(--nk-cyan-rgb),.12),transparent 60%),
    linear-gradient(180deg,var(--nk-blue-dark) 0%,#0B283A 100%) !important;
}
.page-numeriklub-hub > section[data-lp-section="light"]{
  background:var(--nk-bg-light) !important;
}
.page-numeriklub-hub > section[data-lp-section="conversion"]{
  background:
    radial-gradient(70% 100% at 0% 0%,rgba(var(--nk-cyan-rgb),.13),transparent 62%),
    var(--nk-blue-deep) !important;
}
.page-numeriklub-hub > section[data-lp-section="offers"] .section-head,
.page-numeriklub-hub > section[data-lp-section="calendar"] .section-head,
.page-numeriklub-hub > section[data-lp-section="soft"] .section-head,
.page-numeriklub-hub > section[data-lp-section="light"] .section-head{
  max-width:760px;
}
.page-numeriklub-hub > section[data-lp-section="offers"] .grid{
  align-items:stretch;
}
.page-numeriklub-hub > section[data-lp-section="offers"] .card.prog,
.page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card{
  display:flex;
  flex-direction:column;
  min-width:0;
  border:1px solid rgba(var(--nk-blue-ink-rgb),.14);
  border-top:4px solid var(--nk-orange);
  border-radius:14px;
  background:#fff;
  box-shadow:0 12px 26px rgba(var(--nk-blue-ink-rgb),.09);
  padding:clamp(22px,3vw,34px);
}
.page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card:nth-child(2n){
  border-top-color:var(--nk-cyan);
}
.page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card:hover{
  border-color:rgba(241,138,7,.5);
  box-shadow:0 16px 32px rgba(var(--nk-blue-ink-rgb),.14);
}
.page-numeriklub-hub > section[data-lp-section="offers"] .nk-card-price{
  margin-top:14px;
  color:var(--nk-blue-ink);
}
.page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-ateliers-visual{
  border-radius:14px;
  overflow:hidden;
  box-shadow:0 14px 30px rgba(var(--nk-blue-ink-rgb),.14);
}
.page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-ateliers-visual img{
  display:block;
  width:100%;
}
.page-numeriklub-hub > section[data-lp-section="media"] .section-head h2,
.page-numeriklub-hub > section[data-lp-section="media"] .section-head p,
.page-numeriklub-hub > section[data-lp-section="media"] .section-head .num{
  color:#F4F8FB;
  background:none;
  -webkit-text-fill-color:initial;
}
.page-numeriklub-hub > section[data-lp-section="media"] .nk-shelf-card,
.page-numeriklub-hub > section[data-lp-section="media"] .nk-actu-embed{
  border:1px solid rgba(220,231,239,.18);
  border-radius:14px;
  background:rgba(32,65,90,.72);
  box-shadow:0 14px 30px rgba(3,14,24,.24);
  overflow:hidden;
}
.page-numeriklub-hub > section[data-lp-section="media"] .nk-shelf-cap{
  padding:12px 14px;
  color:var(--nk-blue-ink);
  background:#fff;
  font-weight:750;
}

/* Le contact du hub reprend la composition LP : preuve et canaux à gauche,
   formulaire unique à droite. Les informations campus restent présentes dans
   cette colonne au lieu de repousser le formulaire sous une carte séparée. */
.page-numeriklub-hub > section#contact.nk-callback-section{
  background:
    radial-gradient(70% 100% at 0% 0%,rgba(var(--nk-cyan-rgb),.13),transparent 62%),
    #08212F !important;
  color:#F4F8FB;
}
.page-numeriklub-hub > section#contact[data-lp-section="rappel"]{
  background:
    radial-gradient(70% 100% at 0% 0%,rgba(61,180,231,.13),transparent 62%),
    #08212F !important;
}
html:has(.page-numeriklub-hub) section#contact.nk-callback-section{
  background:
    radial-gradient(70% 100% at 0% 0%,rgba(61,180,231,.13),transparent 62%),
    #08212F !important;
}
html:has(.page-numeriklub-hub) section#contact.nk-callback-section .nk-callback-copy h2{
  color:#F4F8FB !important;
}
.page-numeriklub-hub > section#contact .nk-callback-copy h2{
  color:#F4F8FB;
}
.page-numeriklub-hub > section#contact .nk-callback-campus{
  margin-top:30px;
  max-width:470px;
}
.page-numeriklub-hub > section#contact .nk-callback-campus .eyebrow{
  color:var(--nk-yellow);
}
.nk-callback-campus-list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
  margin-top:10px;
}
.nk-callback-campus-list a{
  display:grid;
  gap:3px;
  min-width:0;
  padding:10px 11px;
  color:#DCE7EF;
  border:1px solid rgba(220,231,239,.18);
  border-radius:6px;
  background:rgba(8,20,32,.2);
  text-decoration:none;
}
.nk-callback-campus-list a:hover{
  border-color:var(--nk-cyan);
  background:rgba(var(--nk-cyan-rgb),.1);
}
.nk-callback-campus-list strong{
  color:#F4F8FB;
  font-size:.77rem;
}
.nk-callback-campus-list span{
  color:#B9CEDB;
  font-size:.76rem;
}
.nk-callback-email{
  display:inline-block;
  margin-top:15px;
  color:#DCE7EF;
  font-size:.86rem;
}
.page-numeriklub-hub > section#contact .nk-socials{
  margin-top:12px;
}
.page-numeriklub-hub > section#contact .nk-social{
  color:#DCE7EF;
}
.page-numeriklub-hub > section#contact .nk-callback-section-head{
  position:absolute;
}
.page-numeriklub-hub > section#contact .nk-callback-form-card{
  border-top:4px solid var(--nk-orange) !important;
}
.page-numeriklub-hub > section#contact .nk-callback-form-card .field input,
.page-numeriklub-hub > section#contact .nk-callback-form-card .field select,
.page-numeriklub-hub > section#contact .nk-callback-form-card .field textarea{
  background-color:#F4F7FA !important;
  background-image:none !important;
  color:var(--nk-blue-ink) !important;
}

/* Carte de rappel : le hub et la landing partagent le même panneau blanc,
   avec uniquement le filet orange comme bordure visible. Le style explicite
   évite que les règles de cartes de chaque route réintroduisent une ombre ou
   une couleur de bordure différente. */
.page-numeriklub-lp > section#rappel .nk-callback-form-card,
.page-numeriklub-hub > section#contact .nk-callback-form-card{
  border:0 solid rgba(220,231,239,.18) !important;
  border-top:4px solid var(--nk-orange) !important;
  border-radius:14px !important;
  background:#FFFFFF !important;
  box-shadow:0 14px 30px rgba(3,14,24,.24) !important;
}

/* Le libellé d'envoi reste contrasté sur l'orange dans les deux thèmes et
   dans les deux parcours, sans changer le contrat du formulaire. */
.page-numeriklub-lp > section#rappel .nk-callback-form .btn-primary,
.page-numeriklub-hub > section#contact .nk-callback-form .btn-primary{
  --accent:var(--nk-orange);
  --accent-soft:var(--nk-orange-soft);
  --accent-rgb:var(--nk-orange-rgb);
  --on-accent:#241200;
  background:var(--nk-orange) !important;
  color:#241200 !important;
  border-color:transparent !important;
}
.page-numeriklub-lp > section#rappel .nk-callback-form .btn-primary:hover,
.page-numeriklub-lp > section#rappel .nk-callback-form .btn-primary:focus-visible,
.page-numeriklub-hub > section#contact .nk-callback-form .btn-primary:hover,
.page-numeriklub-hub > section#contact .nk-callback-form .btn-primary:focus-visible{
  background:var(--nk-orange-soft) !important;
  color:var(--nk-blue-ink) !important;
}

@media(min-width:901px){
  .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}
@media(max-width:700px){
  html:has(.page-numeriklub-hub) section.page-numeriklub-hub > section.section,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > section.section{
    padding-block:48px !important;
  }
  html:has(.page-numeriklub-hub) section#calendrier-sec .nk-tabs{
    margin-top:32px;
  }
  .page-numeriklub-hub > section.section{
    padding-block:48px;
  }
  .page-numeriklub-hub > section#calendrier-sec .nk-tabs{
    margin-top:32px;
  }
  .nk-callback-campus-list{
    grid-template-columns:1fr;
  }
  .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-grid{
    grid-template-columns:1fr;
  }
}

/* Hub Numériklub — CTA alignés sur la landing.
   Le système global applique un gradient de surface aux boutons en thème clair.
   Ici l’orange est le signal de réservation : le primaire reste plein, les
   alternatives restent transparentes et bordées, sans voile gris. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-primary,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .prog-cta{
  --accent:var(--nk-orange);
  --accent-soft:var(--nk-orange-soft);
  --accent-rgb:var(--nk-orange-rgb);
  --on-accent:#FFFFFF;
  background:var(--nk-orange) !important;
  color:#FFFFFF !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    0 8px 20px rgba(var(--nk-orange-rgb),.24) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-primary:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-primary:focus-visible,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .prog-cta:hover{
  background:var(--nk-orange-soft) !important;
  color:var(--nk-blue-ink) !important;
  filter:none;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.34),
    0 10px 24px rgba(var(--nk-orange-rgb),.30) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-secondary,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-rdv{
  --accent:var(--nk-orange);
  --accent-soft:var(--nk-orange-soft);
  --accent-rgb:var(--nk-orange-rgb);
  background:transparent !important;
  border:1px solid rgba(var(--nk-orange-rgb),.68) !important;
  box-shadow:none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-secondary:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-secondary:focus-visible,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-rdv:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-rdv:focus-visible{
  background:rgba(var(--nk-orange-rgb),.10) !important;
  border-color:var(--nk-orange) !important;
  box-shadow:0 0 18px rgba(var(--nk-orange-rgb),.16) !important;
}
html:has(.page-numeriklub-hub) .nav-cta{
  --cta:var(--nk-orange);
  --cta-rgb:var(--nk-orange-rgb);
  --on-cta:#FFFFFF;
  background:var(--nk-orange) !important;
  color:#FFFFFF !important;
  box-shadow:0 6px 18px rgba(var(--nk-orange-rgb),.24) !important;
}
html:has(.page-numeriklub-hub) .nav-cta:hover{
  background:var(--nk-orange-soft) !important;
  color:var(--nk-blue-ink) !important;
}

/* Header du hub : contrairement aux pages de contenu en thème clair, la
   navigation accompagne ici le hero sombre. Les tokens clairs du thème global
   ne doivent donc pas recolorer les rubriques et leurs sous-menus en bleu
   foncé sur fond sombre. */
html:has(.page-numeriklub-hub) .nav{
  background:rgba(8,20,32,.94) !important;
  color:#F4F8FB;
  border-bottom-color:rgba(220,231,239,.16);
}
html:has(.page-numeriklub-hub) .nav-link,
html:has(.page-numeriklub-hub) .nav-toggle,
html:has(.page-numeriklub-hub) .nav-dropdown-link{
  color:#DCE7EF !important;
}
html:has(.page-numeriklub-hub) .nav-link:hover,
html:has(.page-numeriklub-hub) .nav-link.active,
html:has(.page-numeriklub-hub) .nav-item.open > .nav-toggle,
html:has(.page-numeriklub-hub) .nav-item.hover-open > .nav-toggle{
  color:#FFFFFF !important;
  background:rgba(var(--nk-cyan-rgb),.12);
}
html:has(.page-numeriklub-hub) .universe-trigger,
html:has(.page-numeriklub-hub) .nav-search-btn,
html:has(.page-numeriklub-hub) .nav-burger{
  color:#F4F8FB;
}
html:has(.page-numeriklub-hub) .nav-tools .lang-toggle button:not(.active){
  color:rgba(220,231,239,.7) !important;
}
html:has(.page-numeriklub-hub) .nav-search-btn kbd{
  color:rgba(220,231,239,.7);
}
html:has(.page-numeriklub-hub) .theme-toggle{
  display:none !important;
}
html:has(.page-numeriklub-hub) .caret{
  color:#B3C8D8;
}
html:has(.page-numeriklub-hub) .nav-dropdown{
  background:#0B1E2E !important;
  border-color:rgba(220,231,239,.16);
}
html:has(.page-numeriklub-hub) .nav-dropdown-link:hover{
  color:#FFFFFF !important;
  background:rgba(var(--nk-cyan-rgb),.12);
}

/* Les pages Numériklub détaillées conservent le chrome sombre du hub :
   leurs héros sont sombres même si le thème automatique du contenu est clair. */
body[data-route^="/numeriklub/"] .nav{
  background:rgba(8,20,32,.94) !important;
  color:#F4F8FB;
  border-bottom-color:rgba(220,231,239,.16);
}
body[data-route^="/numeriklub/"] .nav-link,
body[data-route^="/numeriklub/"] .nav-toggle,
body[data-route^="/numeriklub/"] .nav-dropdown-link{
  color:#DCE7EF !important;
}
body[data-route^="/numeriklub/"] .nav-link:hover,
body[data-route^="/numeriklub/"] .nav-link.active,
body[data-route^="/numeriklub/"] .nav-item.open > .nav-toggle,
body[data-route^="/numeriklub/"] .nav-item.hover-open > .nav-toggle{
  color:#FFFFFF !important;
  background:rgba(var(--nk-cyan-rgb),.12);
}
body[data-route^="/numeriklub/"] .universe-trigger,
body[data-route^="/numeriklub/"] .nav-search-btn,
body[data-route^="/numeriklub/"] .nav-burger{
  color:#F4F8FB;
}
body[data-route^="/numeriklub/"] .nav-tools .lang-toggle button:not(.active){
  color:rgba(220,231,239,.7) !important;
}
body[data-route^="/numeriklub/"] .nav-search-btn kbd{color:rgba(220,231,239,.7);}
body[data-route^="/numeriklub/"] .caret{color:#B3C8D8;}
body[data-route^="/numeriklub/"] .nav-dropdown{
  background:#0B1E2E !important;
  border-color:rgba(220,231,239,.16);
}
body[data-route^="/numeriklub/"] .nav-dropdown-link:hover{
  color:#FFFFFF !important;
  background:rgba(var(--nk-cyan-rgb),.12);
}
body[data-route^="/numeriklub/"] .nav-cta,
body.theme-orange[data-route="/parcours-annuel"] .nav-cta,
body.theme-orange[data-route="/stages-vacances"] .nav-cta,
body.theme-orange[data-route="/grandes-vacances"] .nav-cta,
body.theme-orange[data-route="/sur-mesure"] .nav-cta,
body.theme-orange[data-route="/entreprises"] .nav-cta,
body.theme-orange[data-route="/etablissements"] .nav-cta,
body.theme-orange[data-route="/parents"] .nav-cta,
body.theme-orange[data-route="/tarifs"] .nav-cta,
body.theme-orange[data-route="/faq"] .nav-cta,
body.theme-orange[data-route="/calendrier"] .nav-cta,
body.theme-orange[data-route="/reservation"] .nav-cta,
body.theme-orange[data-route^="/thematiques/"] .nav-cta{
  color:#241200;
  background:var(--nk-orange);
}
body[data-route^="/numeriklub/"] .nav-cta:hover,
body.theme-orange[data-route="/parcours-annuel"] .nav-cta:hover,
body.theme-orange[data-route="/stages-vacances"] .nav-cta:hover,
body.theme-orange[data-route="/grandes-vacances"] .nav-cta:hover,
body.theme-orange[data-route="/sur-mesure"] .nav-cta:hover,
body.theme-orange[data-route="/entreprises"] .nav-cta:hover,
body.theme-orange[data-route="/etablissements"] .nav-cta:hover,
body.theme-orange[data-route="/parents"] .nav-cta:hover,
body.theme-orange[data-route="/tarifs"] .nav-cta:hover,
body.theme-orange[data-route="/faq"] .nav-cta:hover,
body.theme-orange[data-route="/calendrier"] .nav-cta:hover,
body.theme-orange[data-route="/reservation"] .nav-cta:hover,
body.theme-orange[data-route^="/thematiques/"] .nav-cta:hover{
  color:#241200;
  background:var(--nk-orange-soft);
}
@media(max-width:1340px){
  body[data-route^="/numeriklub/"] .nav-burger{
    border:1px solid rgba(220,231,239,.28);
    background:rgba(var(--nk-cyan-rgb),.10);
  }
  body[data-route^="/numeriklub/"] .nav-collapse{
    background:linear-gradient(180deg,rgba(8,20,32,.98),rgba(11,30,46,.98)) !important;
    border-bottom-color:rgba(220,231,239,.16);
    box-shadow:0 24px 60px rgba(8,20,32,.55),inset 0 1px 0 rgba(220,231,239,.10);
  }
}
@media(max-width:760px){
  body[data-route^="/numeriklub/"] .nav-dropdown{
    background:#10293e !important;
    border-left:2px solid rgba(var(--nk-cyan-rgb),.65);
  }
}

/* Cartes et listes éditoriales : sections de sous-page parfois sombres,
   cartes blanches systématiquement encre foncée pour garder le contraste. */
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .card{
  color:#0E2438;
}
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .card h2,
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .card h3,
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .card h4,
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .card .card-title,
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .card .card-body,
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .card .gp-list li{
  color:#0E2438;
}
body[data-route^="/numeriklub/"] .page[data-page^="/numeriklub/"] .gp-list{
  color:#0E2438;
}
/* Entreprises & CSE : ces cartes suivent le thème, elles ne sont pas
   systématiquement blanches. Restaurer les couleurs liées à leur surface. */
body[data-route="/numeriklub/entreprises"] .page[data-page="/numeriklub/entreprises"] :is(.card,.gp-list){
  color:var(--text);
}
body[data-route="/numeriklub/entreprises"] .page[data-page="/numeriklub/entreprises"] .card :is(h2,h3,h4,.card-title){
  color:var(--heading);
}
body[data-route="/numeriklub/entreprises"] .page[data-page="/numeriklub/entreprises"] .card :is(.card-body,.gp-list li){
  color:var(--text-secondary);
}
body[data-route="/numeriklub/entreprises"] .page[data-page="/numeriklub/entreprises"] > .page-hero-art > .container{
  padding-right:clamp(420px,48vw,620px);
}
@media(max-width:1100px){
  body[data-route="/numeriklub/entreprises"] .page[data-page="/numeriklub/entreprises"] > .page-hero-art > .container{
    padding-right:clamp(320px,40vw,440px);
  }
}
@media(max-width:760px){
  body[data-route="/numeriklub/entreprises"] .page[data-page="/numeriklub/entreprises"] > .page-hero-art > .container{
    padding-right:0;
  }
}

/* Dialogue de notification des dates — formulaire cloné uniquement au clic. */
.nk-date-dialog[hidden]{display:none !important;}
.nk-stage-selector{padding-block:clamp(32px,5vw,68px);background:var(--surface,#101018);}
.page-nk-theme .page-hero-art img{object-fit:contain;}
.nk-theme-section{padding-block:clamp(42px,6vw,86px);}
.nk-theme-section:nth-of-type(even){background:rgba(127,127,127,.07);}
.nk-theme-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:12px;list-style:none;margin:26px 0;padding:0;}
.nk-theme-list li{padding:18px 20px;border:1px solid rgba(127,127,127,.38);background:rgba(127,127,127,.08);font-size:1.04rem;line-height:1.55;}
.nk-theme-formats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:18px;margin-top:24px;}
.nk-theme-formats p{padding:22px;border:1px solid rgba(127,127,127,.38);line-height:1.65;}
.nk-theme-formats .btn{margin-top:14px;display:table;}
.nk-orbit-more{display:inline-flex;gap:6px;align-items:center;margin-top:12px;color:var(--accent,#ff8a00);font-weight:800;text-decoration:underline;text-underline-offset:3px;}
.nk-orbit-more:focus-visible{outline:2px solid currentColor;outline-offset:4px;}
.nk-stage-selector-inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(200px,280px);align-items:end;gap:24px;}
.nk-stage-selector h2{margin:8px 0;font-size:clamp(1.5rem,3vw,2.3rem);}
.nk-stage-selector p{margin:0;}
.nk-stage-selector .field{display:grid;gap:8px;min-width:0;font-weight:700;}
.nk-stage-selector select{width:100%;min-height:46px;padding:10px 12px;color:#15151a;background:#fff;border:1px solid currentColor;border-radius:2px;}
.nk-stage-sessions{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,245px),1fr));gap:12px;padding:0;margin:24px 0 0;list-style:none;}
.nk-stage-sessions li{display:grid;gap:6px;padding:16px;border:1px solid rgba(127,127,127,.36);background:rgba(127,127,127,.08);}
.nk-stage-placeholder{margin:24px 0 0 !important;font-weight:700;}
.nk-stage-foot{margin-top:18px !important;font-size:.95rem;}
@media(max-width:700px){.nk-stage-selector-inner{grid-template-columns:minmax(0,1fr);}.nk-stage-selector .field{max-width:none;}}
.nk-date-dialog:not([hidden]){
  position:fixed;
  inset:0;
  z-index:1300;
  display:grid;
  place-items:center;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:clamp(10px,3vw,28px);
  background:rgba(5,14,24,.78);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
}
.nk-date-backdrop{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
  padding:0;
  background:transparent;
  cursor:default;
}
.nk-date-box{
  position:relative;
  z-index:1;
  width:min(100%,620px);
  max-height:min(92dvh,860px);
  overflow:auto;
  overscroll-behavior:contain;
  padding:clamp(20px,4vw,34px);
  border:1px solid rgba(14,36,56,.14);
  border-radius:22px;
  background:#FFFFFF;
  color:#0E2438;
  color-scheme:light;
  box-shadow:0 30px 100px rgba(0,0,0,.42);
}
.nk-date-box :is(h1,h2,h3,h4,.card-title,label){color:#0E2438;}
.nk-date-close{
  position:absolute;
  top:12px;
  right:12px;
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  border:1px solid rgba(14,36,56,.16);
  border-radius:50%;
  background:#F1F6FA;
  color:#0E2438;
  font-size:26px;
  line-height:1;
  cursor:pointer;
}
.nk-date-close:hover{background:#E3EDF4;}
.nk-date-fields{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
  min-width:0;
}
.nk-date-fields .field{min-width:0;margin:0;}
.nk-date-fields input,
.nk-date-fields select,
.nk-date-fields textarea{
  box-sizing:border-box;
  width:100%;
  min-width:0;
  max-width:100%;
  border-color:#C8D5DF;
  background:#FFFFFF;
  color:#0E2438;
}
.nk-date-fields :is(input,select,textarea):focus-visible,
.nk-date-close:focus-visible{
  outline:3px solid #078FAF;
  outline-offset:2px;
}
.nk-date-fields .field-full{grid-column:1/-1;}
@media(max-width:390px){
  .nk-date-dialog:not([hidden]){padding:8px;}
  .nk-date-box{
    width:100%;
    max-height:calc(100dvh - 16px);
    padding:54px 14px 18px;
    border-radius:16px;
  }
  .nk-date-fields{grid-template-columns:minmax(0,1fr);gap:12px;}
  .nk-date-fields .field-full{grid-column:auto;}
  .nk-date-close{top:8px;right:8px;}
}
@media(max-width:1340px){
  html:has(.page-numeriklub-hub) .nav-burger{
    border-color:rgba(220,231,239,.28);
    background:rgba(var(--nk-cyan-rgb),.10);
  }
}
@media(max-width:1100px){
  html:has(.page-numeriklub-hub) .nav-collapse{
    background:linear-gradient(180deg,rgba(8,20,32,.98),rgba(11,30,46,.98)) !important;
    border-bottom-color:rgba(220,231,239,.16);
    box-shadow:0 24px 60px rgba(8,20,32,.55),inset 0 1px 0 rgba(220,231,239,.10);
  }
}
/* Menu mobile Numériklub : un panneau opaque et des entrées lisibles même
   quand le hero animé passe derrière. Garder logo, recherche et burger sur
   une seule ligne pour que le volet ne démarre pas au milieu de l'écran. */
@media(max-width:760px){
  html:has(.page-numeriklub-hub) .nav{--nav-text:.95rem;}
  html:has(.page-numeriklub-hub) .nav-inner{
    flex-wrap:nowrap;
    gap:8px;
    padding:10px 16px;
  }
  html:has(.page-numeriklub-hub) .nav-switcher{
    flex:1 1 auto;
    min-width:0;
    margin-right:0;
  }
  html:has(.page-numeriklub-hub) .universe-trigger{padding:4px 0;}
  html:has(.page-numeriklub-hub) .universe-brand{
    height:32px;
    max-width:48vw;
  }
  html:has(.page-numeriklub-hub) .nav-search-btn,
  html:has(.page-numeriklub-hub) .nav-burger{
    flex:0 0 44px;
    width:44px;
    margin:0;
  }
  html:has(.page-numeriklub-hub) .nav-search-btn{justify-content:center;padding:0;}
  html:has(.page-numeriklub-hub) .nav-collapse{
    background:#0B1E2E !important;
    border-bottom:1px solid rgba(220,231,239,.24);
    max-height:calc(100dvh - 64px);
    padding:12px 16px 18px;
  }
  html:has(.page-numeriklub-hub) .nav-menu{gap:4px;}
  html:has(.page-numeriklub-hub) .nav-tools{flex-wrap:wrap;}
  html:has(.page-numeriklub-hub) .nav-tools .lang-toggle{flex-shrink:0;}
  html:has(.page-numeriklub-hub) .nav-tools .lang-toggle button{color:#DCE7EF;}
  html:has(.page-numeriklub-hub) .nav-tools .lang-toggle button.active{color:#081420;}
  html:has(.page-numeriklub-hub) .nav-dropdown{
    background:#10293e !important;
    border-left:2px solid rgba(var(--nk-cyan-rgb),.65);
    margin:0 8px 6px;
  }
  html:has(.page-numeriklub-hub) .nav-dropdown-link{
    font-size:.9rem;
    padding:12px 14px;
  }
  html:has(.page-numeriklub-hub) .universe-panel{
    background:#0B1E2E;
    box-shadow:0 20px 40px rgba(0,0,0,.45);
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu{
    background:#0B1E2E;
    border-color:rgba(220,231,239,.24);
    box-shadow:0 20px 40px rgba(0,0,0,.45);
    padding:14px;
    gap:8px;
  }
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu a{
    font-size:.95rem;
    padding:12px;
  }
}
@media(max-width:360px){
  html:has(.page-numeriklub-hub) .nav-tools .lang-toggle .lang-code,
  html:has(.page-numeriklub-lp) .nav-numeriklub .lp-bare-menu-lang .lang-code{
    font-size:.75rem;
  }
}

/* Réservation Numériklub — même hiérarchie avant le rappel.
   Les boutons ouvrant le parcours de réservation restent orange plein, avec
   un texte brun suffisamment contrasté dans les deux thèmes. Le gabarit est
   partagé par le hero, les offres, le calendrier, le header et la barre mobile
   pour éviter qu'une règle de section réintroduise une variante locale. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-reserve.btn-primary,
html:has(.page-numeriklub-lp) .page-numeriklub-lp .btn-reserve.btn-primary,
html:has(.page-numeriklub-hub) .nav-cta.btn-reserve,
html:has(.page-numeriklub-lp) .nav-cta.btn-reserve,
html:has(.page-numeriklub-hub) .mobile-conversion-bar .btn-reserve,
html:has(.page-numeriklub-lp) .mobile-conversion-bar .btn-reserve{
  --accent:var(--nk-orange);
  --accent-soft:var(--nk-orange-soft);
  --accent-rgb:var(--nk-orange-rgb);
  --on-accent:#241200;
  min-height:48px;
  height:48px;
  padding-block:0;
  background:var(--nk-orange) !important;
  background-image:none !important;
  color:#241200 !important;
  border-color:transparent !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.22),
    0 8px 20px rgba(var(--nk-orange-rgb),.24) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-reserve.btn-primary:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-reserve.btn-primary:focus-visible,
html:has(.page-numeriklub-lp) .page-numeriklub-lp .btn-reserve.btn-primary:hover,
html:has(.page-numeriklub-lp) .page-numeriklub-lp .btn-reserve.btn-primary:focus-visible,
html:has(.page-numeriklub-hub) .nav-cta.btn-reserve:hover,
html:has(.page-numeriklub-hub) .nav-cta.btn-reserve:focus-visible,
html:has(.page-numeriklub-lp) .nav-cta.btn-reserve:hover,
html:has(.page-numeriklub-lp) .nav-cta.btn-reserve:focus-visible,
html:has(.page-numeriklub-hub) .mobile-conversion-bar .btn-reserve:hover,
html:has(.page-numeriklub-hub) .mobile-conversion-bar .btn-reserve:focus-visible,
html:has(.page-numeriklub-lp) .mobile-conversion-bar .btn-reserve:hover,
html:has(.page-numeriklub-lp) .mobile-conversion-bar .btn-reserve:focus-visible{
  background:var(--nk-orange-soft) !important;
  background-image:none !important;
  color:var(--nk-blue-ink) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.34),
    0 10px 24px rgba(var(--nk-orange-rgb),.30) !important;
}

/* Le lockup du hub reprend la présence de celui de la LP : aucune opacité
   héritée, et une largeur suffisante pour lire NUMÉRIKLUB dans le chrome. */
html:has(.page-numeriklub-hub) .universe-brand.lg-on-dark{
  display:block !important;
  height:42px;
  max-width:210px;
  opacity:1;
  filter:none;
}
html:has(.page-numeriklub-hub) .universe-brand.lg-on-light{
  display:none !important;
}
/* Les sous-pages Numériklub gardent un header sombre, quel que soit le
   thème global : afficher le lockup prévu pour fond sombre comme sur le hub. */
body[data-route^="/numeriklub/"] .universe-brand.lg-on-dark{
  display:block !important;
  opacity:1;
  filter:none;
}
body[data-route^="/numeriklub/"] .universe-brand.lg-on-light{
  display:none !important;
}

/* Le hub Numériklub possède quatre rubriques courtes : conserver sa navigation
   de bureau jusqu'à 1100px évite de faire disparaître le menu trop tôt. Le
   seuil global de 1340px reste nécessaire pour Academy et Formation Continue. */
@media (min-width:1101px) and (max-width:1340px){
  html:has(.page-numeriklub-hub) .nav-inner{
    flex-wrap:nowrap;
  }
  html:has(.page-numeriklub-hub) .nav-burger{
    display:none;
  }
  html:has(.page-numeriklub-hub) .nav-collapse{
    display:flex;
    position:static;
    flex-direction:row;
    align-items:center;
    gap:10px;
    padding:0;
    max-height:none;
    overflow:visible;
    background:none;
    border:0;
    box-shadow:none;
    backdrop-filter:none;
    -webkit-backdrop-filter:none;
  }
  html:has(.page-numeriklub-hub) .nav-menu{
    --nav-gap:4px;
    flex-direction:row;
    align-items:center;
    margin-left:0;
  }
  html:has(.page-numeriklub-hub) .nav-link,
  html:has(.page-numeriklub-hub) .nav-toggle{
    width:auto;
    text-align:center;
    justify-content:center;
    padding-inline:7px;
  }
  html:has(.page-numeriklub-hub) .nav-tools{
    flex:0 0 auto;
  }
}

/* À 1101–1200px, le hub conserve son menu horizontal. Écarter la recherche
   du menu déroulant et neutraliser explicitement les surfaces du mode clair. */
@media (min-width:1101px) and (max-width:1200px){
  html:has(.page-numeriklub-hub) .nav-collapse{
    background:none !important;
    box-shadow:none !important;
  }
  html:has(.page-numeriklub-hub) .nav-search-btn{
    order:5;
    margin-left:8px;
    margin-right:0;
  }
}

/* À la frontière basse, le lockup et les actions consomment presque toute la
   largeur disponible. Réduire uniquement les espacements (pas la taille du
   texte) laisse les quatre rubriques françaises dans leur propre boîte, sans
   empiéter sur la recherche ou les actions. */
@media (min-width:1101px) and (max-width:1150px){
  html:has(.page-numeriklub-hub) .universe-brand{
    max-width:180px !important;
  }
  html:has(.page-numeriklub-hub) .universe-trigger{
    gap:6px;
    padding-inline:8px;
  }
  html:has(.page-numeriklub-hub) .nav-collapse{
    gap:6px;
  }
  html:has(.page-numeriklub-hub) .nav-menu{
    --nav-gap:2px;
    justify-content:flex-start;
  }
  html:has(.page-numeriklub-hub) .nav-link,
  html:has(.page-numeriklub-hub) .nav-toggle{
    padding-inline:4px;
  }
  html:has(.page-numeriklub-hub) .nav-tools{
    gap:4px;
  }
  html:has(.page-numeriklub-hub) .nav-cta{
    padding-inline:7px;
  }
}

/* Hub Numériklub — badges et calendrier.
   Les surfaces grises globales sont remplacées par des repères cyan/bleu,
   tandis que l'orange reste réservé aux actions de réservation. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .badge{
  color:var(--nk-blue-ink);
  background:rgba(var(--nk-cyan-rgb),.14);
  box-shadow:inset 0 0 0 1px rgba(var(--nk-cyan-rgb),.34);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-tablist{
  border-color:rgba(var(--nk-cyan-rgb),.34);
  background:rgba(var(--nk-cyan-rgb),.10);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-tab{
  color:var(--nk-blue-muted);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-tab:hover{
  color:var(--nk-blue-ink);
  background:rgba(var(--nk-cyan-rgb),.12);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-tab.is-active{
  background:var(--nk-orange);
  color:#241200;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month{
  border-color:rgba(var(--nk-blue-ink-rgb),.16);
  background:rgba(var(--nk-cyan-rgb),.06);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-date{
  border-color:rgba(var(--nk-cyan-rgb),.20);
  background:rgba(var(--nk-cyan-rgb),.09);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-eyebrow,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-meta,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-date-id{
  color:var(--nk-blue-muted);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-filter{
  border-color:rgba(var(--nk-cyan-rgb),.28);
  color:var(--nk-blue-muted);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-filter:hover{
  color:var(--nk-blue-ink);
  border-color:var(--nk-cyan);
  background:rgba(var(--nk-cyan-rgb),.10);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-filter.is-active{
  background:var(--nk-orange);
  border-color:var(--nk-orange);
  color:#241200;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price{
  border-color:rgba(var(--nk-cyan-rgb),.20);
  background:rgba(var(--nk-cyan-rgb),.08);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-surmesure{
  background:rgba(var(--nk-cyan-rgb),.09);
  box-shadow:inset 0 0 0 1px rgba(var(--nk-cyan-rgb),.20);
}

/* Les tags d’offre doivent rester lisibles sur les cartes claires. La teinte
   de chaque univers reprend la palette de la landing au lieu du voile cyan
   global, trop proche du fond du hub. */
.page-home .u-card.theme-orange .badge.tag{
  background:var(--nk-orange);
  color:#fff;
  box-shadow:inset 0 0 0 1px rgba(var(--nk-orange-rgb),.72),0 5px 12px rgba(var(--nk-orange-rgb),.18);
}
.page-home .u-card.theme-cyan .badge.tag{
  background:var(--nk-cyan);
  color:var(--nk-blue-ink);
  box-shadow:inset 0 0 0 1px rgba(var(--nk-cyan-rgb),.72),0 5px 12px rgba(var(--nk-cyan-rgb),.16);
}
.page-home .u-card.theme-magenta .badge.tag{
  background:#CE1A63;
  color:#fff;
  box-shadow:inset 0 0 0 1px rgba(206,26,99,.72),0 5px 12px rgba(206,26,99,.16);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-hub-offer-card .badge{
  background:rgba(var(--nk-cyan-rgb),.14);
  color:var(--nk-blue-ink);
  box-shadow:inset 0 0 0 1px rgba(var(--nk-cyan-rgb),.34),0 5px 12px rgba(14,36,56,.08);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-offer-card .badge{
  color:#FFFFFF;
  background:var(--nk-blue-ink);
  box-shadow:inset 0 0 0 1px rgba(var(--nk-cyan-rgb),.52),0 5px 12px rgba(14,36,56,.16);
}

/* La section 04 accueille des photos documentaires : le cadrage reste
   homogène malgré les formats portrait et paysage des fichiers source. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media{
  aspect-ratio:16/9;
  overflow:hidden;
  border-radius:var(--radius-photo);
  background:var(--nk-blue-soft);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center;
}

/* Hub Numériklub — contours illustrés 2D pour toutes les cartes.
   Le trait plein et l'ombre sans flou donnent un aspect dessin animé tout en
   gardant les surfaces et les accents propres à chaque section. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-shelf-card{
  border:2px solid var(--nk-card-outline) !important;
  border-radius:12px;
  box-shadow:5px 5px 0 var(--nk-card-outline);
  transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-shelf-card:hover{
  transform:translate(-2px,-2px);
  box-shadow:7px 7px 0 var(--nk-card-outline);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card{
  border-top:4px solid var(--nk-card-outline) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card:nth-child(2n){
  border-top-color:var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card:hover{
  box-shadow:7px 7px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#contact .nk-callback-form-card{
  border:2px solid var(--nk-card-outline) !important;
  border-top:4px solid var(--nk-card-outline) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#contact .nk-callback-form-card:hover{
  box-shadow:7px 7px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#esprit .card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="media"] .nk-shelf-card{
  border-color:var(--nk-card-outline) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#esprit .card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="media"] .nk-shelf-card:hover{
  box-shadow:7px 7px 0 var(--nk-card-outline);
}
@media(prefers-reduced-motion:reduce){
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-shelf-card{
    transition:none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .card:hover,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card:hover,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month:hover,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price:hover,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-shelf-card:hover{
    transform:none;
  }
}

/* Hub + landing Numériklub — même carte illustrée sur les deux parcours.
   Toutes les variantes partagent maintenant le contour et l'ombre jaunes :
   les couleurs d'univers restent réservées aux contenus et aux CTA. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub [class$="-card"],
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .card,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] [class$="-card"],
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-lp-social-panel{
  border:2px solid var(--nk-card-outline) !important;
  border-top:4px solid var(--nk-card-outline) !important;
  border-radius:12px !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
  transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub [class$="-card"]:hover,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .card:hover,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] [class$="-card"]:hover,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-lp-social-panel:hover{
  border-color:var(--nk-card-outline) !important;
  box-shadow:7px 7px 0 var(--nk-card-outline) !important;
  transform:translate(-2px,-2px);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#esprit .card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="media"] .nk-shelf-card{
  border-color:var(--nk-card-outline) !important;
  border-top-color:var(--nk-card-outline) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#contact .nk-callback-form-card{
  border:2px solid var(--nk-card-outline) !important;
  border-top:4px solid var(--nk-card-outline) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card:nth-child(2n){
  border-top-color:var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#contact .nk-callback-form-card:hover{
  border-color:var(--nk-card-outline) !important;
  box-shadow:7px 7px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] > section#rappel .nk-callback-form-card{
  border:2px solid var(--nk-card-outline) !important;
  border-top:4px solid var(--nk-card-outline) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
}
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] > section#rappel .nk-callback-form-card:hover{
  border-color:var(--nk-card-outline) !important;
  box-shadow:7px 7px 0 var(--nk-card-outline) !important;
}
@media(prefers-reduced-motion:reduce){
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub [class$="-card"],
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .card,
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] [class$="-card"],
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-lp-social-panel{
    transition:none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .card:hover,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub [class$="-card"]:hover,
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .card:hover,
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] [class$="-card"]:hover,
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-lp-social-panel:hover{
    transform:none;
  }
}

/* Homepage principale — les cartes de la section 02 suivent le même langage
   2D bleu marine que les cartes Numériklub. */
.page-home > section#decouverte .card{
  border:2px solid var(--nk-card-outline) !important;
  border-top:4px solid var(--nk-card-outline) !important;
  border-radius:12px !important;
  background:#fff !important;
  color:var(--nk-blue-ink) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
  transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out);
}
.page-home > section#decouverte .card:hover{
  border-color:var(--nk-card-outline) !important;
  box-shadow:7px 7px 0 var(--nk-card-outline) !important;
  transform:translate(-2px,-2px);
}

/* Homepage principale — la section 03 est volontairement sombre : ses cartes
   repassent en surface blanche pour garder une lecture immédiate. */
.page-home > section#pourquoi .card{
  border:2px solid var(--nk-card-outline) !important;
  border-top:4px solid var(--nk-card-outline) !important;
  border-radius:12px !important;
  background:#fff !important;
  color:var(--nk-blue-ink) !important;
  box-shadow:5px 5px 0 var(--nk-card-outline) !important;
  transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out);
}
.page-home > section#pourquoi .card:hover{
  border-color:var(--nk-card-outline) !important;
  box-shadow:7px 7px 0 var(--nk-card-outline) !important;
  transform:translate(-2px,-2px);
}
.page-home > section#pourquoi .card-title,
.page-home > section#pourquoi .card h3,
.page-home > section#pourquoi .card h4{
  color:var(--nk-blue-ink) !important;
}
.page-home > section#pourquoi .card-body,
.page-home > section#pourquoi .card p{
  color:var(--nk-blue-muted) !important;
}
@media(prefers-reduced-motion:reduce){
  .page-home > section#decouverte .card,
  .page-home > section#pourquoi .card{
    transition:none;
  }
  .page-home > section#decouverte .card:hover,
  .page-home > section#pourquoi .card:hover{
    transform:none;
  }
}

/* Carte « Prochain départ annuel » — même traitement 2D que les cartes du Hub,
   avec une gamme graphite neutre pour alléger la carte blanche. */
#hub-fomo-numeriklub{
  --hub-2d-ink:#4A5057;
  --hub-2d-muted:#5D646B;
  --hub-2d-outline:var(--nk-card-outline);
  border:2px solid var(--hub-2d-outline) !important;
  border-top:4px solid var(--hub-2d-outline) !important;
  border-radius:12px !important;
  background:#fff !important;
  color:var(--hub-2d-ink) !important;
  box-shadow:5px 5px 0 var(--hub-2d-outline) !important;
  transition:transform .2s var(--ease-out),box-shadow .2s var(--ease-out),border-color .2s var(--ease-out);
}
#hub-fomo-numeriklub:hover{
  border-color:var(--hub-2d-outline) !important;
  box-shadow:7px 7px 0 var(--hub-2d-outline) !important;
  transform:translate(-2px,-2px);
}
#hub-fomo-numeriklub .hub-fomo-media{
  border:2px solid var(--hub-2d-outline);
  border-radius:8px;
  box-shadow:3px 3px 0 var(--hub-2d-outline);
}
#hub-fomo-numeriklub .hub-fomo-copy h2{
  color:var(--hub-2d-ink) !important;
}
#hub-fomo-numeriklub .hub-fomo-copy>p:not(.hub-fomo-note){
  color:var(--hub-2d-muted) !important;
}
#hub-fomo-numeriklub .hub-fomo-meta{
  color:var(--hub-2d-muted) !important;
}
@media(prefers-reduced-motion:reduce){
  #hub-fomo-numeriklub{
    transition:none;
  }
  #hub-fomo-numeriklub:hover{
    transform:none;
  }
}

/* Cartes Numériklub — retour au contour neutre demandé par la direction
   artistique : trait fin gris bleuté, sans ombre dure ni déplacement 2D. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"]{
  --nk-card-outline:var(--nk-wire-outline);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-shelf-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub [class$="-card"],
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .card,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] [class$="-card"],
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-lp-social-panel,
.page-home > section#decouverte .card,
.page-home > section#pourquoi .card,
#hub-fomo-numeriklub{
  border:1px solid var(--nk-card-outline) !important;
  border-top:1px solid var(--nk-card-outline) !important;
  border-radius:var(--radius-ui,2px) !important;
  box-shadow:none !important;
  transform:none;
  transition:border-color .2s var(--ease-out);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#contact .nk-callback-form-card,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] > section#rappel .nk-callback-form-card{
  border:1px solid var(--nk-card-outline) !important;
  border-top:1px solid var(--nk-card-outline) !important;
  border-radius:var(--radius-ui,2px) !important;
  box-shadow:none !important;
  transform:none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-shelf-card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub [class$="-card"]:hover,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .card:hover,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] [class$="-card"]:hover,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-lp-social-panel:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section[data-lp-section="offers"] .nk-hub-offer-card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#contact .nk-callback-form-card:hover,
html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] > section#rappel .nk-callback-form-card:hover,
.page-home > section#decouverte .card:hover,
.page-home > section#pourquoi .card:hover,
#hub-fomo-numeriklub:hover{
  border-color:var(--nk-card-outline) !important;
  box-shadow:none !important;
  transform:none !important;
}
#hub-fomo-numeriklub .hub-fomo-media{
  border:1px solid var(--nk-card-outline);
  border-radius:var(--radius-ui,2px);
  box-shadow:none;
}
@media(prefers-reduced-motion:reduce){
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-cal-card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-month,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-yc-price,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-shelf-card,
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .card,
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] [class$="-card"],
  html:has(.page-numeriklub-lp[data-page="/lp/numeriklub"]) .page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-lp-social-panel,
  .page-home > section#decouverte .card,
  .page-home > section#pourquoi .card,
  #hub-fomo-numeriklub{
    transition:none;
  }
}

/* Hub Numériklub — reprise de la section « Où nous retrouver » de la LP :
   fond clair, diorama latéral et trois cartes campus lisibles. */
.page-numeriklub-hub > section#lieux{
  position:relative;
  overflow:hidden;
  background:var(--nk-bg-soft) !important;
  color:var(--nk-blue-ink);
}
.page-numeriklub-hub > section#lieux > .container{
  position:relative;
  z-index:1;
}
.page-numeriklub-hub > section#lieux .section-head{
  position:relative;
  z-index:1;
  max-width:min(780px,62%);
}
.page-numeriklub-hub > section#lieux .grid{
  position:relative;
  z-index:1;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#lieux .campus{
  position:relative;
  border:2px solid rgba(var(--nk-blue-ink-rgb),.14) !important;
  border-top:2px solid rgba(var(--nk-blue-ink-rgb),.14) !important;
  border-radius:24px !important;
  background:#fff !important;
  color:var(--nk-blue-ink) !important;
  box-shadow:0 18px 42px rgba(var(--nk-blue-ink-rgb),.12) !important;
  transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#lieux .campus:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#lieux .campus:focus-within{
  border-color:rgba(241,138,7,.68) !important;
  box-shadow:0 22px 48px rgba(var(--nk-blue-ink-rgb),.18) !important;
  transform:translateY(-4px) !important;
}
.page-numeriklub-hub > section#lieux .campus:nth-child(3n + 1){
  border-top-color:var(--nk-cyan) !important;
}
.page-numeriklub-hub > section#lieux .campus:nth-child(3n + 2){
  border-top-color:var(--nk-orange) !important;
}
.page-numeriklub-hub > section#lieux .campus:nth-child(3n){
  border-top-color:var(--nk-yellow) !important;
}
.page-numeriklub-hub > section#lieux .campus h4{
  color:var(--nk-blue-ink);
}
.page-numeriklub-hub > section#lieux .campus address{
  color:var(--nk-blue-muted);
}
@media(max-width:760px){
  .page-numeriklub-hub > section#lieux .section-head{
    max-width:100%;
    padding-right:clamp(2.5rem,15vw,6rem);
  }
}
@media(max-width:520px){
  .page-numeriklub-hub > section#lieux .section-head{
    padding-right:0;
  }
}
@media(prefers-reduced-motion:reduce){
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#lieux .campus{
    transition:none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#lieux .campus:hover,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#lieux .campus:focus-within{
    transform:none !important;
  }
}

/* La neutralisation globale des cartes NK ne doit pas désactiver la
   constellation interactive de la section « Les thématiques ». */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-card{
  border:1px solid var(--nk-wire-outline) !important;
  border-top:1px solid var(--nk-wire-outline) !important;
  border-radius:var(--radius-md) !important;
  box-shadow:inset 0 0 0 1px rgba(var(--tint),.1),0 14px 34px rgba(0,0,0,.5) !important;
  transform:translateY(calc(var(--lift,0px) + var(--float,0px))) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) !important;
  transition:transform .35s var(--ease,ease),box-shadow .35s var(--ease,ease),background .35s var(--ease,ease) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-card:focus-visible{
  border-color:var(--nk-wire-outline) !important;
  box-shadow:inset 0 0 0 1px rgba(var(--accent-rgb),.6),0 22px 44px rgba(0,0,0,.55) !important;
  transform:translateY(calc(var(--lift,0px) + var(--float,0px))) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) !important;
}
@media(prefers-reduced-motion:reduce){
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-card{
    animation:none;
    transition:none !important;
    transform:none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-card:hover,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-card:focus-visible{
    transform:none !important;
  }
}

/* Hub uniquement : les cartes thématiques doivent agrandir la grille, pas
   recouvrir la carte voisine lorsqu'un programme est ouvert. */
.page-numeriklub-hub .nk-orbit{display:flex;flex-direction:column;min-height:0;gap:var(--space-5);}
.page-numeriklub-hub .nk-orbit-stage{position:static;transform:none;width:min(100%,620px);margin:0 auto;}
.page-numeriklub-hub .nk-orbit-ring{position:static;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4);perspective:none;}
.page-numeriklub-hub .nk-orbit-ring .nk-orbit-card,
.page-numeriklub-hub .nk-orbit-ring .nk-orbit-card:nth-child(n){
  position:static;top:auto;right:auto;bottom:auto;left:auto;width:auto;min-width:0;
  animation:none;transform:none!important;will-change:auto;
}
.page-numeriklub-hub .nk-orbit-trigger{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:0;border:0;background:none;color:inherit;text-align:left;cursor:pointer;}
.page-numeriklub-hub .nk-orbit-trigger:focus-visible{outline:2px solid var(--nk-orange);outline-offset:5px;}
.page-numeriklub-hub .nk-orbit-card:not(.is-expanded):hover .nk-orbit-prog,
.page-numeriklub-hub .nk-orbit-card:not(.is-expanded):focus-within .nk-orbit-prog{max-height:0;opacity:0;margin-top:0;padding-top:0;border-top:0;}
.page-numeriklub-hub .nk-orbit-card.is-expanded .nk-orbit-prog,
.page-numeriklub-hub .nk-orbit-card.is-expanded:hover .nk-orbit-prog,
.page-numeriklub-hub .nk-orbit-card.is-expanded:focus-within .nk-orbit-prog{
  max-height:800px;opacity:1;margin-top:var(--space-1);padding-top:var(--space-3);
  border-top:1px solid var(--border,rgba(var(--tint),.1));
}
.page-numeriklub-hub .nk-orbit-trigger[aria-expanded="true"] .nk-orbit-chev{transform:rotate(180deg);}
.page-numeriklub-hub .nk-orbit-hint-touch{display:none;}
@media(hover:none){
  .page-numeriklub-hub .nk-orbit-hint-pointer{display:none;}
  .page-numeriklub-hub .nk-orbit-hint-touch{display:inline;}
  .page-numeriklub-hub .nk-orbit-card:not(.is-expanded) .nk-orbit-prog{max-height:0;opacity:0;margin-top:0;padding-top:0;border-top:0;}
}
@media(max-width:1180px){.page-numeriklub-hub .nk-orbit-ring{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:640px){.page-numeriklub-hub .nk-orbit-ring{grid-template-columns:1fr;}}

/* La section médias n'utilise pas le chevauchement décoratif du présentoir LP. */
.page-numeriklub-hub .nk-shelf{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:var(--space-5);perspective:none;align-items:start;}
.page-numeriklub-hub .nk-shelf-card,
.page-numeriklub-hub .nk-shelf-card:nth-child(n){width:100%;min-width:0;margin:0;transform:none!important;}
.page-numeriklub-hub .nk-shelf-card .ig-lazy,
.page-numeriklub-hub .nk-shelf-card .ig-embed{width:100%;max-width:100%;}
.page-numeriklub-hub .nk-photo-grid{max-width:none;grid-template-columns:repeat(2,minmax(0,1fr));}
html:has(.page-numeriklub-hub) #hub-fomo-numeriklub .hub-fomo-meta span+span::before{content:none;}
.page-numeriklub-hub .nk-yc[data-filter="summer"] .nk-yc-day[data-kind="stage"]{opacity:1;}
.page-numeriklub-hub .nk-yc-territory-select{min-height:42px;padding:8px 12px;border:1px solid rgba(var(--tint),.3);border-radius:var(--radius-ui);background:var(--surface);color:var(--text);}
@media(max-width:640px){.page-numeriklub-hub .nk-photo-grid{grid-template-columns:1fr;}}

.page-numeriklub-hub .resa-head,
.page-numeriklub-hub .resa-steps,
.page-numeriklub-hub .resa-body{padding-left:var(--space-5);padding-right:var(--space-5);}
.page-numeriklub-hub .resa-steps{gap:var(--space-4);}
.page-numeriklub-hub .resa-step{gap:8px;min-width:max-content;}
.page-numeriklub-hub .resa-step-l{overflow:visible;text-overflow:clip;}
@media(max-width:600px){
  .page-numeriklub-hub .resa-steps{gap:var(--space-3);}
  .page-numeriklub-hub .resa-step{min-width:max-content;}
  .page-numeriklub-hub > .page-hero .hero-stats{margin-bottom:clamp(220px,62vw,270px);}
  .page-numeriklub-hub > .page-hero-art > .hero-rider{
    top:auto;bottom:54px;opacity:1;
  }
  html:has(.page-numeriklub-hub) #hub-fomo-numeriklub .hub-fomo-icon,
  html:has(.page-numeriklub-hub) #hub-fomo-numeriklub .hub-fomo-copy{grid-column:1 / -1;}
}

/* Menu mobile : le panneau est ancré au bas réel du header (mesuré par le
   contrôleur), couvre le viewport restant et garde son propre défilement.
   Tous les sélecteurs passent par .nav-collapse pour laisser la LP à menu nu
   intacte. */
@media(max-width:1340px){
  .nav-burger{
    min-width:48px;
    min-height:48px;
  }
  .nav-item.has-children .nav-dropdown{
    position:static;
    width:auto;
    min-width:0;
  }
  .nav-item.has-children.hover-open .nav-dropdown{
    display:none;
  }
  .nav-item.has-children.open .nav-dropdown{
    display:block !important;
  }

  html.nav-menu-open{
    overflow:hidden;
  }
  html.nav-menu-open :is(.sticky-cta-mobile,.fc-budget-dock,.hub-fomo-banner,.campaign-announcement){
    visibility:hidden;
    pointer-events:none;
  }
  html.nav-menu-open body{
    position:fixed;
    top:var(--nav-scroll-y,0px);
    width:100%;
  }
  html.nav-menu-open .nav-inner{
    max-width:none;
  }
  html.nav-menu-open .nav-collapse{
    display:flex !important;
    position:absolute;
    top:100%;
    left:50%;
    right:auto;
    width:100vw;
    height:calc(100dvh - var(--mobile-nav-top,70px));
    max-height:none !important;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
    transform:translateX(-50%);
    background:#0B1E2E !important;
    color:#DCE7EF !important;
    border-bottom:1px solid rgba(220,231,239,.24);
    box-shadow:0 24px 60px rgba(8,20,32,.55),inset 0 1px 0 rgba(220,231,239,.10);
  }
  html.nav-menu-open .nav-collapse :is(.nav-link,.nav-toggle,.nav-dropdown-link),
  html.nav-menu-open .nav-collapse .nav-tools :is(a,button){
    min-height:48px;
    min-width:48px;
    color:#DCE7EF !important;
  }
  html.nav-menu-open .nav-collapse .nav-tools{
    flex-wrap:wrap;
    flex-shrink:0;
  }
  html.nav-menu-open .nav-collapse .lang-toggle{
    height:48px;
    min-height:48px;
    flex-shrink:0;
  }
  html.nav-menu-open .nav-collapse .nav-tools .nav-cta:not(.nav-cta-ghost){
    color:var(--on-cta) !important;
  }
  html.nav-menu-open .nav-collapse .nav-tools .nav-cta-ghost{
    color:#DCE7EF !important;
    background:#10293E !important;
  }
  html.nav-menu-open .nav-collapse .nav-tools :is(.nav-wa,.lang-toggle button.active){
    color:#081420 !important;
  }
  html.nav-menu-open .nav-collapse .nav-tools .lang-toggle button.active{
    background:#DCE7EF;
  }
  html.nav-menu-open .nav-collapse .nav-dropdown{
    position:static;
    width:auto;
    min-width:0;
    background:#0B1E2E !important;
    color:#DCE7EF !important;
    box-shadow:none;
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
  html.nav-menu-open .nav-collapse .nav-tools{
    flex-wrap:wrap;
    align-items:center;
  }
  html.nav-menu-open .nav-collapse .nav-tools .lang-toggle{
    height:48px;
  }
  html.nav-menu-open .nav-collapse .nav-cta{
    min-height:48px;
    height:auto;
  }
  html.nav-menu-open .nav-collapse :is(.nav-link,.nav-toggle,.nav-dropdown-link):focus-visible,
  html.nav-menu-open .nav-collapse .nav-tools :is(a,button):focus-visible{
    outline:2px solid #DCE7EF;
    outline-offset:2px;
  }
}

/* Mobile burger: the desktop flex-end menu must not consume the panel's
   remaining height and push its first item down. Keep tools at the bottom
   instead; longer accordions scroll inside the viewport-sized panel. */
@media (max-width:1340px){
  html.nav-menu-open #site-nav .nav-collapse{
    /* The containing .nav-inner excludes the nav's 1px bottom border. */
    top:calc(100% + 1px);
    box-sizing:border-box;
    height:calc(100dvh - var(--mobile-nav-top,70px));
    min-height:0;
    padding-block:20px;
    justify-content:flex-start;
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  html.nav-menu-open #site-nav .nav-collapse .nav-menu{
    flex:0 0 auto;
    min-height:0;
    justify-content:flex-start;
  }
  html.nav-menu-open #site-nav .nav-collapse .nav-menu > :first-child{
    margin-top:0;
  }
  html.nav-menu-open #site-nav .nav-collapse .nav-tools{
    flex:0 0 auto;
    margin-top:auto;
  }
}

/* LOT100 burger: common panel geometry, including the bare LP shell.
   Keep the existing flex-start list and scroll-lock controller intact. */
/* Client review: reduce only the wide global Academy lockup, not FI/FC. */
.universe-panel .universe-row[href="/"] .universe-row-logo{
  height:22px;
  max-width:155px;
}
@media (max-width:1340px){
  html.nav-menu-open :is(.nav-collapse,[data-bare-mobile-menu].open){
    display:flex;
    position:absolute;
    top:calc(100% + 1px);
    left:50%;
    right:auto;
    width:100vw;
    transform:translateX(-50%);
    box-sizing:border-box;
    height:calc(100dvh - var(--mobile-nav-top,70px));
    min-height:0;
    max-height:none;
    padding:20px 16px;
    margin:0;
    flex-direction:column;
    align-items:stretch;
    justify-content:flex-start;
    gap:16px;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:contain;
  }
  html.nav-menu-open .nav-collapse .nav-menu{
    flex:0 0 auto;
    min-height:0;
    justify-content:flex-start;
    margin:0;
    gap:4px;
  }
  html.nav-menu-open .nav-collapse .nav-tools{
    flex:0 0 auto;
    margin-top:auto;
    flex-wrap:wrap;
    gap:8px;
    align-items:center;
  }
  #navLinks#navLinks .nav-tools .nav-cta{
    display:inline-flex !important;
    flex-direction:row !important;
    gap:6px;
    align-items:center;
    justify-content:center;
    white-space:nowrap !important;
    width:auto !important;
    flex:1 1 auto !important;
    min-width:max-content;
    height:48px !important;
    min-height:48px !important;
    padding:0 12px !important;
    font-size:.875rem;
    line-height:1.2;
  }
  #navLinks#navLinks :is(.nav-wa,.lang-toggle,.lang-toggle button){
    height:48px !important;
    min-height:48px !important;
    box-sizing:border-box;
  }
  html.nav-menu-open [data-bare-mobile-menu].open{
    gap:4px;
    background:#0B1E2E;
    color:#DCE7EF;
  }
  html.nav-menu-open :is(.nav-link,.nav-toggle,.nav-dropdown-link,[data-bare-mobile-menu] a){
    box-sizing:border-box;
    min-height:48px;
    padding:12px 14px;
    text-align:left;
    font-size:.95rem;
    line-height:1.4;
  }
  html.nav-menu-open [data-bare-mobile-menu] a{
    color:#DCE7EF;
    flex:0 0 auto;
  }
  html.nav-menu-open .nav-toggle > [class~="caret"]{
    display:inline-block;
    flex:0 0 auto;
    min-width:12px;
    font-size:12px;
    color:inherit;
    opacity:1;
    transform:rotate(0deg);
    transition:transform .2s ease;
  }
  html.nav-menu-open .nav-item.open > .nav-toggle > [class~="caret"]{
    transform:rotate(180deg);
  }
  /* FC sub-page conversion bars must not intercept the menu's last links. */
  html.nav-menu-open :is(.mobile-conversion-bar,.fc-mobile-conversion){
    display:none !important;
  }
  /* Intentional doubled #app: NK's forced-visible CTA group has one ID
     and six classes. Both IDs are known to its CSS filter. Open menu only. */
  html.nav-menu-open #app#app [data-mobile-conversion-bar]{
    display:none !important;
  }
}
@media (prefers-reduced-motion:reduce){
  html.nav-menu-open .nav-toggle > [class~="caret"]{transition:none;}
}

/* Client-approved mobile touch targets. Keep the wider desktop controls intact. */
@media (max-width:760px){
  body[data-route^="/blog"] #app :is(.blog-cat,.blog-tag){
    min-height:44px;
    box-sizing:border-box;
  }
  body[data-route^="/blog"] #app .blog-cat{align-items:center;}
  body[data-route^="/blog"] #app .blog-tag{
    display:inline-flex;
    align-items:center;
  }
  .resa-modal .resa-close{
    width:44px;
    height:44px;
  }
  body:is([data-route="/academy"],[data-route^="/academy/"],
    [data-route="/formation-continue"],[data-route^="/formation-continue/"])
    #site-nav .universe-trigger{
    min-height:44px;
    box-sizing:border-box;
  }
}

/* Annual NK booking action: retain the approved orange CTA and ensure its
   active label clears the normal-text contrast floor. Disabled states remain
   owned by the existing button styles. */
.resa-modal .resa-actions > .btn-primary:not(:disabled):not([disabled]):not([aria-disabled="true"]){
  color:#1C1C1C !important;
}

/* LP consent: use one native checkbox only. Explicitly neutralize any
   checkbox/label pseudo-decoration without touching names, values or handlers. */
html:has(.page-numeriklub-lp)
  :is(.page-numeriklub-lp,.resa-modal) :is(.resa-rgpd,.optin-label)
  input[type="checkbox"]{
  -webkit-appearance:checkbox !important;
  appearance:auto !important;
}
html:has(.page-numeriklub-lp)
  :is(.page-numeriklub-lp,.resa-modal) :is(.resa-rgpd,.optin-label)::before,
html:has(.page-numeriklub-lp)
  :is(.page-numeriklub-lp,.resa-modal) :is(.resa-rgpd,.optin-label)::after,
html:has(.page-numeriklub-lp)
  :is(.page-numeriklub-lp,.resa-modal) :is(.resa-rgpd,.optin-label)
  input[type="checkbox"]::before,
html:has(.page-numeriklub-lp)
  :is(.page-numeriklub-lp,.resa-modal) :is(.resa-rgpd,.optin-label)
  input[type="checkbox"]::after{
  content:none !important;
  display:none !important;
}

/* Final audit: NK theme headers and gallery arrows need a 44px touch target. */
@media (max-width:767px){
  body[data-route="/numeriklub"] #app button:not(.btn){
    min-width:44px;
    min-height:44px;
  }
}

@import "./numeriklub-lot5-public.css";

/* Numériklub Lot 4 offer-page layouts */
.page-nk-lot4 {
  --nk-lot4-ink: #18243d;
  --nk-lot4-muted: #63718a;
  --nk-lot4-line: rgba(35, 64, 112, .14);
}

.page-nk-lot4 .nk-lot4-gallery {
  display: grid;
  gap: clamp(1.25rem, 3vw, 2rem);
}

.page-nk-lot4 .nk-lot4-media-track {
  display: grid;
  align-items: start;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: .8rem;
}

.page-nk-lot4 .nk-lot4-media-track:focus-visible {
  outline: 3px solid #6c86ff;
  outline-offset: 4px;
}

.page-nk-lot4 .nk-lot4-photo {
  min-width: 0;
  overflow: hidden;
  margin: 0;
  border-radius: 1rem;
  background: #f2f5fa;
  box-shadow: 0 8px 24px rgba(26, 43, 75, .09);
}

.page-nk-lot4 .nk-lot4-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.page-nk-lot4 .nk-lot4-photo figcaption {
  padding: .7rem .85rem .8rem;
  color: var(--nk-lot4-ink);
  font-size: .88rem;
  font-weight: 650;
  line-height: 1.4;
}

.page-nk-lot4 .nk-lot4-video {
  min-width: 0;
  margin: 0;
  grid-column: span 2;
}

.page-nk-lot4 .nk-lot4-video video {
  aspect-ratio: 4 / 3;
}

.page-nk-lot4 .nk-lot4-compare-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  gap: 1rem;
}

.page-nk-lot4 .nk-lot4-compare-card,
.page-nk-lot4 .nk-lot4-facts article,
.page-nk-lot4 .nk-lot4-territory {
  min-width: 0;
  padding: clamp(1rem, 2.4vw, 1.45rem);
  border: 1px solid var(--nk-lot4-line);
  border-radius: 1.1rem;
  background: #fff;
  box-shadow: 0 10px 30px rgba(26, 43, 75, .06);
}

.page-nk-lot4 .nk-lot4-compare-card {
  display: flex;
  flex-direction: column;
}

.page-nk-lot4 .nk-lot4-compare-card h3 {
  margin: 0 0 1rem;
  color: var(--nk-lot4-ink);
  font-size: clamp(1.1rem, 1.7vw, 1.35rem);
}

.page-nk-lot4 .nk-lot4-compare-card dl {
  display: grid;
  gap: .9rem;
  margin: 0;
}

.page-nk-lot4 .nk-lot4-compare-card dl > div {
  padding-top: .8rem;
  border-top: 1px solid var(--nk-lot4-line);
}

.page-nk-lot4 .nk-lot4-compare-card dt,
.page-nk-lot4 .nk-lot4-facts h3 {
  margin: 0 0 .35rem;
  color: var(--nk-lot4-muted);
  font-size: .76rem;
  font-weight: 750;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.page-nk-lot4 .nk-lot4-compare-card dd {
  margin: 0;
  color: var(--nk-lot4-ink);
  line-height: 1.5;
}

.page-nk-lot4 .nk-lot4-price {
  margin: auto 0 1rem;
  padding-top: 1rem;
  color: var(--nk-lot4-ink);
  font-size: 1.45rem;
  font-weight: 800;
}

.page-nk-lot4 .nk-lot4-choice {
  width: 100%;
  justify-content: center;
}

.page-nk-lot4 .nk-lot4-tabs {
  overflow: hidden;
  border: 1px solid var(--nk-lot4-line);
  border-radius: 1.1rem;
  background: #fff;
}

.page-nk-lot4 .nk-lot4-tab-list {
  display: flex;
  gap: .35rem;
  overflow-x: auto;
  padding: .65rem;
  border-bottom: 1px solid var(--nk-lot4-line);
  background: #f5f7fb;
  scrollbar-width: thin;
}

.page-nk-lot4 .nk-lot4-tab-list [role="tab"] {
  flex: 1 0 max-content;
  min-height: 2.9rem;
  padding: .7rem 1rem;
  border: 0;
  border-radius: .75rem;
  background: transparent;
  color: var(--nk-lot4-ink);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}

.page-nk-lot4 .nk-lot4-tab-list [role="tab"][aria-selected="true"] {
  background: #fff;
  box-shadow: 0 3px 12px rgba(26, 43, 75, .1);
}

.page-nk-lot4 .nk-lot4-tab-list [role="tab"]:focus-visible {
  outline: 3px solid #6c86ff;
  outline-offset: 2px;
}

.page-nk-lot4 .nk-lot4-tab-panels {
  padding: clamp(1rem, 3vw, 1.8rem);
  color: var(--nk-lot4-ink);
}

.page-nk-lot4 .nk-lot4-tab-panels > [role="tabpanel"][hidden] {
  display: none;
}

.page-nk-lot4 .nk-lot4-tab-panels > [role="tabpanel"] > p:first-child {
  margin-top: 0;
}

.page-nk-lot4 .nk-lot4-tab-panels ol {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .8rem;
  padding: 0;
  list-style: none;
  counter-reset: nk-track-stage;
}

.page-nk-lot4 .nk-lot4-tab-panels ol li {
  padding: 1rem;
  border: 1px solid var(--nk-lot4-line);
  border-radius: .9rem;
  counter-increment: nk-track-stage;
}

.page-nk-lot4 .nk-lot4-tab-panels ol li h4::before {
  content: counter(nk-track-stage, decimal-leading-zero) " · ";
  color: var(--nk-lot4-muted);
}

.page-nk-lot4 .nk-lot4-tab-panels ol li h4 {
  margin: 0 0 .5rem;
}

.page-nk-lot4 .nk-lot4-tab-panels ol li p:last-child,
.page-nk-lot4 .nk-lot4-final-outcome {
  margin-bottom: 0;
}

.page-nk-lot4 .nk-lot4-stage-outcome {
  color: var(--nk-lot4-muted);
}

.page-nk-lot4 .nk-lot4-final-outcome {
  padding: 1rem;
  border-radius: .8rem;
  background: #f4f6fc;
}

.page-nk-lot4 .nk-lot4-timeline {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
}

.page-nk-lot4 .nk-lot4-timeline > li {
  position: relative;
  min-width: 0;
  padding: 1.5rem 1rem 0 0;
}

.page-nk-lot4 .nk-lot4-timeline > li::before {
  position: absolute;
  top: .45rem;
  right: 0;
  left: 0;
  height: 2px;
  background: var(--nk-lot4-line);
  content: "";
}

.page-nk-lot4 .nk-lot4-timeline-dot {
  position: absolute;
  top: .14rem;
  left: 0;
  z-index: 1;
  width: .65rem;
  height: .65rem;
  border: 3px solid #fff;
  border-radius: 50%;
  background: #5168d7;
  box-shadow: 0 0 0 1px #5168d7;
}

.page-nk-lot4 .nk-lot4-timeline h3 {
  margin: .25rem 0 .5rem;
  color: var(--nk-lot4-ink);
  font-size: 1rem;
}

.page-nk-lot4 .nk-lot4-timeline p {
  margin: 0;
  color: var(--nk-lot4-muted);
  line-height: 1.5;
}

.page-nk-lot4 .nk-lot4-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .9rem;
}

.page-nk-lot4 .nk-lot4-facts p {
  margin: 0;
  color: var(--nk-lot4-ink);
  line-height: 1.55;
}

.page-nk-lot4 .nk-lot4-facts a,
.page-nk-lot4 .nk-lot4-campus-link {
  display: inline-block;
  margin-top: .7rem;
  font-weight: 700;
}

.page-nk-lot4 .nk-lot4-theme-links {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
}

.page-nk-lot4 .nk-lot4-theme-links a {
  display: inline-flex;
  min-height: 2.8rem;
  align-items: center;
  gap: .5rem;
  padding: .7rem 1rem;
  border: 1px solid var(--nk-lot4-line);
  border-radius: 999px;
  background: #fff;
  color: var(--nk-lot4-ink);
  font-weight: 700;
  text-decoration: none;
}

.page-nk-lot4 .nk-lot4-theme-links a:hover {
  border-color: #667bd7;
  background: #f5f7ff;
}

.page-nk-lot4 .nk-lot4-holiday-dates {
  display: grid;
  gap: 1rem;
}

.page-nk-lot4 .nk-lot4-price-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .75rem;
}

.page-nk-lot4 .nk-lot4-price-list > div {
  display: flex;
  justify-content: space-between;
  gap: .75rem;
  padding: .9rem 1rem;
  border: 1px solid var(--nk-lot4-line);
  border-radius: .8rem;
  background: #f8f9fc;
}

.page-nk-lot4 .nk-lot4-price-list strong {
  color: var(--nk-lot4-ink);
}

.page-nk-lot4 .nk-lot4-discount {
  margin: 0;
  color: var(--nk-lot4-ink);
  font-weight: 750;
}

.page-nk-lot4 .nk-lot4-territory-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: .8rem;
}

.page-nk-lot4 .nk-lot4-territory h3 {
  margin: 0 0 .7rem;
  color: var(--nk-lot4-ink);
}

.page-nk-lot4 .nk-lot4-territory ul {
  display: grid;
  gap: .55rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.page-nk-lot4 .nk-lot4-territory li {
  display: grid;
  gap: .2rem;
  padding-top: .55rem;
  border-top: 1px solid var(--nk-lot4-line);
}

.page-nk-lot4 .nk-lot4-territory li strong {
  color: var(--nk-lot4-muted);
  font-size: .8rem;
}

.page-nk-lot4 .nk-lot4-territory li span {
  color: var(--nk-lot4-ink);
}

.page-nk-lot4 .nk-lot4-dayline {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

@media (max-width: 900px) {
  .page-nk-lot4 .nk-lot4-media-track {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .page-nk-lot4 .nk-lot4-compare-grid,
  .page-nk-lot4 .nk-lot4-facts {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .page-nk-lot4 .nk-lot4-media-track {
    grid-auto-columns: minmax(76%, 1fr);
    grid-auto-flow: column;
    grid-template-columns: none;
    overflow-x: auto;
    padding: .15rem .1rem .8rem;
    scroll-padding-inline: 1rem;
    scroll-snap-type: x mandatory;
    scrollbar-width: thin;
  }

  .page-nk-lot4 .nk-lot4-photo {
    scroll-snap-align: start;
  }

  .page-nk-lot4 .nk-lot4-video {
    grid-column: auto;
    scroll-snap-align: start;
  }

  .page-nk-lot4 .nk-lot4-compare-grid,
  .page-nk-lot4 .nk-lot4-facts,
  .page-nk-lot4 .nk-lot4-territory-grid,
  .page-nk-lot4 .nk-lot4-price-list {
    grid-template-columns: minmax(0, 1fr);
  }

  .page-nk-lot4 .nk-lot4-tab-list {
    margin-inline: 0;
  }

  .page-nk-lot4 .nk-lot4-tab-list [role="tab"] {
    flex: 0 0 auto;
    max-width: min(70vw, 17rem);
    white-space: normal;
  }

  .page-nk-lot4 .nk-lot4-tab-panels ol {
    grid-template-columns: minmax(0, 1fr);
  }

  .page-nk-lot4 .nk-lot4-timeline,
  .page-nk-lot4 .nk-lot4-dayline {
    grid-template-columns: minmax(0, 1fr);
    gap: .9rem;
    padding-left: .2rem;
  }

  .page-nk-lot4 .nk-lot4-timeline > li {
    padding: 0 0 .35rem 1.2rem;
  }

  .page-nk-lot4 .nk-lot4-timeline > li::before {
    top: .4rem;
    right: auto;
    bottom: -.85rem;
    left: .29rem;
    width: 2px;
    height: auto;
  }

  .page-nk-lot4 .nk-lot4-timeline > li:last-child::before {
    display: none;
  }

  .page-nk-lot4 .nk-lot4-timeline-dot {
    top: .1rem;
    left: 0;
  }
}
/* Lot 4 — hub mobile controls. Desktop layouts keep their existing grids. */
.nk-hub-carousel-nav {
  display: none;
}

.nk-hub-campus-disclosure > summary {
  display: none;
}

.nk-date-rgpd .optin-label {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  font-size: 0.86rem;
  line-height: 1.45;
  cursor: pointer;
}

.nk-date-rgpd input[type="checkbox"] {
  width: 1rem;
  height: 1rem;
  flex: 0 0 auto;
  margin-top: 0.15rem;
}

@media (max-width: 760px) {
  .nk-hub-carousel-nav {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin: 0 0 0.75rem;
  }

  .nk-hub-carousel-nav button {
    display: inline-grid;
    place-items: center;
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 50%;
    background: var(--surface, #17191f);
    color: inherit;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
  }

  .nk-hub-carousel-nav button:focus-visible,
  .nk-hub-theme-carousel [tabindex="0"]:focus-visible,
  .nk-hub-media-carousel [tabindex="0"]:focus-visible {
    outline: 3px solid #f2a900;
    outline-offset: 3px;
  }

  .page-numeriklub-hub .nk-hub-theme-carousel .nk-orbit-ring {
    display: flex;
    grid-template-columns: none;
    gap: 0.9rem;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 0.25rem;
    padding: 0.2rem 0.25rem 1rem;
    scrollbar-width: thin;
  }

  .page-numeriklub-hub .nk-hub-theme-carousel .nk-orbit-card,
  .page-numeriklub-hub .nk-hub-theme-carousel .nk-orbit-ring .nk-orbit-card:nth-child(n) {
    flex: 0 0 min(84vw, 370px);
    width: min(84vw, 370px);
    min-width: 0;
    scroll-snap-align: start;
  }

  .page-numeriklub-hub .nk-hub-media-carousel .nk-shelf {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.9rem;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 0.25rem;
    padding: 0.2rem 0.25rem 1rem;
    scrollbar-width: thin;
  }

  .page-numeriklub-hub .nk-hub-media-carousel .nk-shelf-card,
  .page-numeriklub-hub .nk-hub-media-carousel .nk-shelf-card:nth-child(n) {
    flex: 0 0 min(84vw, 370px);
    width: min(84vw, 370px);
    scroll-snap-align: start;
  }

  .page-numeriklub-hub .nk-hub-campus-disclosure {
    margin-top: 1rem;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 1rem;
    overflow: clip;
  }

  .page-numeriklub-hub .nk-hub-campus-disclosure > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.15rem;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
  }

  .page-numeriklub-hub .nk-hub-campus-disclosure > summary::-webkit-details-marker {
    display: none;
  }

  .page-numeriklub-hub .nk-hub-campus-disclosure > summary::after {
    content: "+";
    color: #f2a900;
    font-size: 1.4rem;
    line-height: 1;
  }

  .page-numeriklub-hub .nk-hub-campus-disclosure[open] > summary::after {
    content: "−";
  }

  .page-numeriklub-hub .nk-hub-campus-disclosure > .grid {
    padding: 0 0.75rem 0.75rem;
  }

  .page-numeriklub-hub #calendrier-sec .nk-tablist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
  }

  .page-numeriklub-hub #calendrier-sec .nk-tab {
    min-width: 0;
    padding-inline: 0.65rem;
    line-height: 1.25;
  }
}

@media (prefers-reduced-motion: reduce) {
  .page-numeriklub-hub .nk-hub-theme-carousel .nk-orbit-ring,
  .page-numeriklub-hub .nk-hub-media-carousel .nk-shelf {
    scroll-behavior: auto;
  }
}
/* Native home accessibility: no presentation adapter or observer is needed. */
#app .page-numeriklub-hub :is(a,button,[tabindex]):focus-visible:not(:where(form *,dialog *,[role="dialog"] *)) {
  outline: 3px solid #0059CF !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 3px #fff !important;
}
/* Numériklub hub — Version C, client-approved.
   Loaded last; every selector is confined to the /numeriklub hub. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub {
  --nk-cta: #FE9F14;
  --nk-cta-hover: #FF8800;
  --nk-on-cta: #1C1C1C;
  --nk-soleil: #FFE936;
  --nk-lagon: #3CB7EB;
  --nk-ecran: #0059CF;
  --nk-encre: #0E2438;
  --nk-texte-2: #39556F;
  --nk-ciel: #EAF7FD;
  --nk-ciel-2: #D8F0FA;
  --nk-trait: 1px solid rgba(21,49,74,.10);
  --nk-trait-sombre: 1px solid rgba(162,219,244,.22);
  --nk-trait-ctrl: #2C5C88;
  --nk-elev-1: 0 1px 2px rgba(21,49,74,.06), 0 8px 22px rgba(21,49,74,.07);
  --nk-elev-2: 0 2px 4px rgba(21,49,74,.08), 0 16px 34px rgba(21,49,74,.12);
  --nk-elev-sombre: 0 10px 30px rgba(0,0,0,.28);
  --nk-elev-sombre-2: 0 18px 40px rgba(0,0,0,.38);
  --nk-r-carte: 16px;
  --nk-r-media: 12px;
  --nk-r-ctrl: 10px;
  --nk-ease: cubic-bezier(.23,1,.32,1);
  --nk-u-2d: #FF3E51;
  --nk-u-3d: #00B99F;
  --nk-u-jeu: #0059CF;
  --nk-u-contenu: #8ACA00;
  --nk-u-esport: #3CB7EB;
}

/* The header and campaign ribbon are outside the page wrapper. */
html:has(.page-numeriklub-hub) .campaign-announcement {
  background: var(--nk-soleil, #FFE936);
  color: #1C1C1C;
}
html:has(.page-numeriklub-hub) .campaign-announcement-cta {
  min-height: 40px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: #1C1C1C;
  box-shadow: none;
  font-weight: 900;
  text-decoration: underline;
  text-underline-offset: 3px;
}
html:has(.page-numeriklub-hub) .campaign-announcement-cta:hover {
  background: transparent;
  color: #1C1C1C;
  box-shadow: none;
}
html:has(.page-numeriklub-hub) .campaign-announcement-badge {
  background: var(--nk-encre, #0E2438);
  color: #fff;
}
html:has(.page-numeriklub-hub) #site-nav .nav {
  background: rgba(8,20,32,.88);
  border-bottom-color: rgba(162,219,244,.18);
}
html:has(.page-numeriklub-hub) #site-nav .nav-cta:not(.nav-cta-ghost) {
  min-height: 40px;
  border-radius: var(--nk-r-ctrl, 10px);
  background: var(--nk-cta, #FE9F14);
  color: var(--nk-on-cta, #1C1C1C);
  box-shadow: none;
}
html:has(.page-numeriklub-hub) #site-nav .nav-cta:not(.nav-cta-ghost):hover {
  background: var(--nk-cta-hover, #FF8800);
  color: var(--nk-on-cta, #1C1C1C);
  box-shadow: none;
  transform: none;
}

/* Tokens are assigned above, used below with root-aware values. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub {
  color: #DCE7EF;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :where(h1,h2,h3,h4) {
  font-family: "Nunito", sans-serif;
  font-weight: 900;
  letter-spacing: -.02em;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :where(a,button,input,select,textarea,[tabindex]):focus-visible {
  outline: 3px solid var(--nk-ecran);
  outline-offset: 3px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .eyebrow {
  color: var(--nk-lagon);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head .eyebrow,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hub-fomo-copy > .eyebrow {
  color: var(--nk-ecran);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#ateliers,#ete) .section-head .eyebrow {
  color: var(--nk-lagon);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .eyebrow b {
  display: inline-grid;
  min-width: 28px;
  min-height: 28px;
  place-items: center;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--nk-encre);
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#ateliers,#ete) .eyebrow b {
  background: var(--nk-lagon);
  color: var(--nk-encre);
}

/* Card system: quiet outlines, subtle elevation, no glass or offset shadows. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(
  .card, .nk-orbit-card, .nk-hub-offer-card, .nk-esprit, .nk-shelf-card,
  .nk-upcoming-row, .nk-calendar-territories, .nk-yc-month, .nk-yc-surmesure,
  .nk-callback-form-card, .campus
) {
  border: var(--nk-trait);
  border-radius: var(--nk-r-carte);
  background: #fff;
  box-shadow: var(--nk-elev-1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(
  #ateliers .nk-orbit-card, #ete .nk-shelf-card, #contact .nk-callback-form-card
) {
  border: var(--nk-trait-sombre);
  background: rgba(14,48,68,.75);
  box-shadow: var(--nk-elev-sombre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-orbit-card,.nk-hub-offer-card,.nk-upcoming-row) {
  transition: transform 200ms var(--nk-ease), box-shadow 200ms var(--nk-ease);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-orbit-card,.nk-hub-offer-card,.nk-upcoming-row):hover {
  transform: translateY(-3px);
  box-shadow: var(--nk-elev-2);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-orbit-card,.nk-shelf-card,.nk-callback-form-card) {
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-esprit,.faq details.card,.campus,.nk-yc-surmesure) {
  box-shadow: var(--nk-elev-1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-esprit,.nk-hub-offer-card,.nk-shelf-card) img {
  border-radius: var(--nk-r-media);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-hub-offer-card .prog-head {
  align-items: flex-start;
}

/* CTA and secondary controls. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-primary,.btn-reserve,.btn-primary-link,.nk-offer-reserve) {
  min-height: 48px;
  border: 0;
  border-radius: var(--nk-r-ctrl);
  background: var(--nk-cta);
  color: var(--nk-on-cta);
  box-shadow: none;
  font-weight: 900;
  transition: transform 140ms var(--nk-ease), background-color 140ms ease;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-primary,.btn-reserve,.btn-primary-link,.nk-offer-reserve):hover {
  background: var(--nk-cta-hover);
  color: var(--nk-on-cta);
  box-shadow: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-primary,.btn-reserve,.btn-primary-link,.nk-offer-reserve):active {
  transform: scale(.97);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-secondary,.btn-outline,.nk-yc-surmesure .btn) {
  min-height: 48px;
  border: 1.5px solid var(--nk-trait-ctrl);
  border-radius: var(--nk-r-ctrl);
  background: #fff;
  color: var(--nk-encre);
  box-shadow: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#ateliers,#ete,#contact) :is(.btn-secondary,.btn-outline) {
  border-color: rgba(220,231,239,.75);
  background: transparent;
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .btn-secondary:hover {
  border-color: var(--nk-ecran);
  background: var(--nk-ciel);
  color: var(--nk-encre);
}

/* Night-sky hero: retain established background/art, remove float collisions and reveal animation. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home {
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home h1 {
  opacity: 1;
  filter: none;
  animation: none;
  background: none;
  -webkit-background-clip: initial;
  background-clip: initial;
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home h1 :is(em,.nk-hero-title-mark) {
  padding: 0 .16em;
  border-radius: 12px;
  background: var(--nk-soleil);
  color: var(--nk-encre);
  font-style: normal;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-reperes {
  gap: 10px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home :is(.hero-stat,.stat,.hero-stats > span) {
  min-height: 48px;
  align-items: center;
  padding: 8px 12px;
  border-radius: var(--nk-r-ctrl);
  background: rgba(255,255,255,.05);
  box-shadow: inset 0 0 0 1px rgba(162,219,244,.28);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home :is(.hero-stat strong,.hero-stat b,.stat b) {
  color: #fff;
  font-size: 20px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home :is(.hero-stat span,.stat span) {
  color: #B3C8D8;
  font-size: 13px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-location,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-loc:not(.hero-reperes) {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats + .hero-loc {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-floats .page-hero-floats-inner,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-floats .hero-floats {
  left: 52%;
  width: 48%;
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-partners {
  border-top: 1px solid rgba(162,219,244,.14);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home :is(.hero-marquee,.hero-partners) img {
  filter: grayscale(1) brightness(0) invert(1);
  opacity: .72;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home :is(.hero-marquee,.hero-partners) :is(span,strong) {
  color: #fff;
  opacity: .72;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-hero-marquee-label {
  display: inline-flex;
  align-items: center;
  margin-right: 18px;
  color: #7AA0BE;
  white-space: nowrap;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}
/* Annual start feature. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
  max-width: 1200px;
  margin: 0 auto;
  border: var(--nk-trait);
  border-radius: var(--nk-r-carte);
  background: #fff;
  color: var(--nk-encre);
  box-shadow: var(--nk-elev-1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-icon {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-copy > .eyebrow {
  color: var(--nk-ecran);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-meta span {
  border-radius: 999px;
  background: var(--nk-ciel);
  color: var(--nk-encre);
  font-size: 13px;
  font-weight: 800;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-note {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-media img {
  border-radius: var(--nk-r-media);
}

/* 01 — workshop orbit cards. Preserve JS-controlled card behaviour and touch orbit. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
  overflow: hidden;
  color: #DCE7EF;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card :is(.nk-orbit-name,.nk-orbit-card-head) {
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card .nk-orbit-ic {
  width: 40px;
  height: 40px;
  flex: 0 0 40px;
  border: 4px solid #0E3044;
  border-radius: 12px;
  background: var(--nk-u, var(--nk-u-jeu));
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card .nk-orbit-ic img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card .nk-orbit-prog li::marker {
  color: var(--nk-u, var(--nk-u-jeu));
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card .nk-orbit-prog li::before {
  background: var(--nk-u, var(--nk-u-jeu));
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-more {
  display: block;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(162,219,244,.18);
  color: var(--nk-lagon);
  font-weight: 800;
  opacity: 1;
  visibility: visible;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card-dessin-animation-2d { --nk-u: var(--nk-u-2d); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card-3d-impression-3d { --nk-u: var(--nk-u-3d); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card-createur-contenu-biznesskid { --nk-u: var(--nk-u-contenu); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card-esport-hors-ecran { --nk-u: var(--nk-u-esport); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card-jeu-video-robotique { --nk-u: var(--nk-u-jeu); }

/* 02 — pass cards and the one available discount treatment. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head {
  position: relative;
  min-height: 0;
  aspect-ratio: 16 / 9;
  padding: 14px;
  align-items: flex-end;
  border-radius: 16px 16px 0 0;
  background: var(--nk-ciel-2);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head-l > .ic-chip {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border-radius: 16px 16px 0 0;
  background: transparent;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head-l > .ic-chip img {
  width: 100%;
  height: 100%;
  border-radius: 16px 16px 0 0;
  object-fit: cover;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head h3 {
  position: relative;
  z-index: 1;
  padding: 8px 10px;
  border-radius: 9px;
  background: rgba(255,255,255,.94);
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .badge {
  position: absolute;
  z-index: 2;
  top: 12px;
  right: 12px;
  background: var(--nk-soleil);
  color: #1C1C1C;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head ~ :is(.card-body,.nk-offer-facts,.nk-hub-offer-dates,.nk-offer-info,.nk-card-price,.mt-6) {
  margin-inline: 18px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-offer-facts li > span:first-child {
  display: inline-grid;
  width: 18px;
  height: 18px;
  place-items: center;
  border-radius: 50%;
  background: var(--nk-ciel);
  color: var(--nk-ecran);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price {
  order: 2;
  position: relative;
  margin-top: auto;
  margin-inline: 0;
  padding: 14px 18px 4px;
  border-top: 2px dotted rgba(21,49,74,.18);
  background: var(--nk-ciel);
  color: var(--nk-encre);
  font-size: 18px;
  font-weight: 900;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::before,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::after {
  position: absolute;
  top: -11px;
  width: 20px;
  height: 20px;
  border: var(--nk-trait);
  border-radius: 50%;
  background: var(--nk-ciel);
  content: "";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::before {
  left: -11px;
  clip-path: inset(0 0 0 50%);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::after {
  right: -11px;
  clip-path: inset(0 50% 0 0);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 {
  order: 3;
  margin: 0 !important;
  padding: 4px 18px 14px;
  border-radius: 0 0 16px 16px;
  background: var(--nk-ciel);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 .btn {
  width: 100%;
  justify-content: center;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-offer-info {
  order: 1;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-offer-info-link {
  color: var(--nk-ecran);
  font-size: 14px;
  font-weight: 800;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-discount {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-offer-fomo {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 12px 18px 0;
  padding: 12px 16px;
  border-radius: 16px;
  outline: 2px dashed #D9BE00;
  outline-offset: -7px;
  background: #FFFBD6;
  color: #1C1C1C;
  font-size: 14px;
  font-weight: 700;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-offer-fomo-mark {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-discount-value {
  display: inline-grid;
  min-width: max-content;
  place-items: center;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--nk-soleil);
  color: #1C1C1C;
  font-size: 24px;
  font-weight: 900;
}

/* 03 — calm ethos cards; use existing media for a simple decorative seal. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit {
  position: relative;
  overflow: visible;
  padding: 0 0 18px;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media {
  position: relative;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media::after {
  position: absolute;
  right: 14px;
  bottom: -24px;
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border: 2px dotted var(--nk-seal, var(--nk-u-jeu));
  border-radius: 50%;
  background: #fff;
  color: var(--nk-seal, var(--nk-u-jeu));
  content: "";
  transform: rotate(-8deg);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(1) { --nk-seal: var(--nk-u-jeu); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(2) { --nk-seal: var(--nk-u-3d); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(3) { --nk-seal: var(--nk-u-2d); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(4) { --nk-seal: #5E8A00; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit > :is(h3,p) {
  margin-inline: 18px;
}

/* 04 — calendar billets. Year-colour keys remain the Lot 8 palette. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-territory-list,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-calendar-territories {
  display: inline-flex;
  gap: 6px;
  padding: 6px;
  border: var(--nk-trait);
  border-radius: 14px;
  background: #fff;
  box-shadow: var(--nk-elev-1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-territory-button {
  min-height: 44px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-territory-button[aria-pressed="true"] {
  background: var(--nk-soleil);
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-tab {
  min-height: 44px;
  border: 1.5px solid var(--nk-trait-ctrl);
  border-radius: 999px;
  background: #fff;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-tab[aria-selected="true"] {
  background: var(--nk-trait-ctrl);
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-filter {
  min-height: 40px;
  border: 1.5px solid var(--nk-trait-ctrl);
  border-radius: 999px;
  background: #fff;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-filter.is-active {
  border-color: var(--nk-trait-ctrl);
  background: var(--nk-trait-ctrl);
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-list {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 14px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row {
  --nk-stub: 112px;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0,1fr) var(--nk-stub);
  gap: 0;
  overflow: visible;
  min-height: 136px;
  padding: 0;
  border-left: 6px solid var(--nk-lagon);
  border-radius: 16px;
  background: #fff;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-copy {
  display: contents;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row > :is(.nk-upcoming-period,.nk-upcoming-date,.nk-upcoming-duration,.nk-upcoming-details,.nk-upcoming-holiday-note) {
  grid-column: 1;
  margin-inline: 14px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-period {
  align-self: end;
  margin-top: 14px;
  color: var(--nk-ecran);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-date {
  color: var(--nk-encre);
  font-size: 25px;
  font-weight: 900;
  line-height: 1.08;
  font-variant-numeric: tabular-nums;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-duration,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-details {
  color: var(--nk-texte-2);
  font-size: 14px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-price,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row > .btn {
  grid-column: 2;
  align-self: stretch;
  justify-self: stretch;
  margin: 0;
  display: grid;
  place-items: center;
  padding: 10px;
  border: 0;
  border-left: 2px dotted rgba(21,49,74,.18);
  border-radius: 0 16px 16px 0;
  background: var(--nk-ciel);
  color: var(--nk-encre);
  text-align: center;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-price {
  grid-row: 1 / span 2;
  font-size: 24px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row > .btn {
  grid-row: 3 / span 2;
  align-content: center;
  font-size: 13px;
  line-height: 1.25;
  border: 0;
  border-radius: 10px;
  background: var(--nk-cta);
  color: var(--nk-on-cta);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
  grid-row: 1 / span 4;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer > .btn {
  grid-row: 1 / span 4;
  border: 1.5px solid var(--nk-trait-ctrl);
  background: #fff;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::before,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::after {
  position: absolute;
  z-index: 2;
  right: calc(var(--nk-stub) - 10px);
  width: 20px;
  height: 20px;
  border: var(--nk-trait);
  border-radius: 50%;
  background: var(--nk-ciel);
  content: "";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::before {
  top: -11px;
  clip-path: inset(50% 0 0);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::after {
  bottom: -11px;
  clip-path: inset(0 0 50%);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer {
  grid-column: 1 / -1;
  --nk-stub: 180px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual { border-left-color: var(--nk-ecran); }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer { border-left-color: #C5D0DA; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-holiday-note {
  width: max-content;
  max-width: calc(100% - 28px);
  padding: 4px 7px;
  border-radius: 6px;
  background: #FFF7B8;
  color: #7A5B00;
  font-size: 12px;
  font-weight: 800;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-month {
  border: var(--nk-trait);
  border-radius: var(--nk-r-carte);
  background: #fff;
  box-shadow: var(--nk-elev-1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-day.nk-yc-stage {
  background: #0059CF;
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-day.nk-yc-weekly,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-day.nk-yc-session {
  border: 2px solid #3CB7EB;
  background: #D8F0FA;
  color: #0E2438;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-day.nk-yc-holiday {
  background: #E9EDF1;
  color: #39556F;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-surmesure {
  border: var(--nk-trait);
  background: #fff;
  box-shadow: var(--nk-elev-1);
}

/* 05 — video shelf and 06 — FAQ. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card {
  overflow: hidden;
  border: var(--nk-trait-sombre);
  background: rgba(14,48,68,.75);
  box-shadow: var(--nk-elev-sombre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .nk-shelf-cap {
  color: #DCE7EF;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card :is(button,.nk-shelf-play) {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--nk-soleil);
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq {
  display: grid;
  gap: 12px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq details.card {
  margin: 0;
  border: var(--nk-trait);
  border-radius: var(--nk-r-carte);
  background: #fff;
  box-shadow: var(--nk-elev-1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq summary {
  min-height: 62px;
  color: var(--nk-encre);
  font-size: 17px;
  font-weight: 800;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq summary::after {
  display: grid;
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  place-items: center;
  border-radius: 9px;
  background: var(--nk-ciel);
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq details[open] summary::after {
  background: var(--nk-soleil);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq details > p {
  color: var(--nk-texte-2);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .nk-hub-faq-group > h3 {
  display: inline-flex;
  min-height: 36px;
  align-items: center;
  margin: 22px 0 12px;
  padding: 0 14px;
  border-radius: 999px;
  background: var(--nk-encre);
  color: #fff;
  font-size: 14px;
  font-weight: 800;
}

/* 07 — campus boarding-pass appearance using the existing card and map DOM. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0,1fr) 96px;
  overflow: hidden;
  padding: 18px 0 0 18px;
  border: var(--nk-trait);
  border-radius: var(--nk-r-carte);
  background: #fff;
  color: var(--nk-encre);
  box-shadow: var(--nk-elev-1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus h4 {
  grid-column: 1;
  margin: 0;
  color: var(--nk-encre);
  font-size: 20px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus h4::before {
  display: block;
  margin-bottom: 4px;
  color: var(--nk-encre);
  font-size: 40px;
  line-height: 1;
  content: "972";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus:nth-child(2) h4::before { content: "971"; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus:nth-child(3) h4::before { content: "973"; }
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="972"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(1),
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="971"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(2),
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="973"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(3) {
  border: 2px solid var(--nk-soleil) !important;
  box-shadow: 0 0 0 1px var(--nk-soleil), var(--nk-elev-1) !important;
}
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="972"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(1) h4::after,
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="971"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(2) h4::after,
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="973"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(3) h4::after {
  display: block;
  width: max-content;
  margin-top: 8px;
  padding: 4px 8px;
  border-radius: 999px;
  background: var(--nk-soleil);
  color: var(--nk-encre);
  content: "Votre campus";
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .06em;
  text-transform: uppercase;
}
html:lang(en):has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="972"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(1) h4::after,
html:lang(en):has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="971"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(2) h4::after,
html:lang(en):has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="973"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(3) h4::after {
  content: "Your campus";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus::after {
  grid-column: 2;
  grid-row: 1 / span 3;
  align-self: stretch;
  margin: -18px 0 0;
  padding: 16px 8px;
  border-left: 2px dotted rgba(162,219,244,.5);
  background:
    repeating-linear-gradient(90deg, #fff 0 2px, transparent 2px 4px, #fff 4px 5px, transparent 5px 8px, #fff 8px 11px, transparent 11px 13px) center 44px / 100% 32px no-repeat,
    #0B1E2E;
  color: #DCE7EF;
  content: "Campus";
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .08em;
  text-align: center;
  text-transform: uppercase;
}
html:lang(en):has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus::after {
  content: "Campus";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .role,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus address {
  grid-column: 1;
  color: var(--nk-texte-2);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus address a {
  color: var(--nk-encre);
  font-size: 14px;
  font-weight: 800;
  overflow-wrap: anywhere;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map {
  grid-column: 1 / -1;
  margin: 14px -18px 0;
  border-top: var(--nk-trait);
  border-radius: 0 0 16px 16px;
  overflow: hidden;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-frame {
  width: 100%;
  min-height: 160px;
  border: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions {
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  padding-inline: 14px;
  color: var(--nk-ecran);
  font-weight: 800;
}

/* 08 — contact form, including consent and campus quick-call rows. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form-card {
  padding: clamp(18px,3vw,28px);
  border: var(--nk-trait-sombre);
  border-radius: var(--nk-r-carte);
  background: rgba(14,48,68,.75);
  box-shadow: var(--nk-elev-sombre);
  color: #DCE7EF;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form-card :is(.card-title,.nk-callback-form-sub) {
  color: #DCE7EF;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form :is(input,select,textarea) {
  min-height: 46px;
  border: 1.5px solid rgba(162,219,244,.55);
  border-radius: var(--nk-r-ctrl);
  background: rgba(8,20,32,.6);
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form textarea {
  min-height: 96px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form :is(input,select,textarea):focus {
  border-color: var(--nk-lagon);
  outline: 2px solid var(--nk-lagon);
  outline-offset: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-campus-list a {
  min-height: 48px;
  align-items: center;
  border: 1px solid rgba(162,219,244,.3);
  border-radius: 12px;
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-date-rgpd input[type="checkbox"] {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  accent-color: var(--nk-soleil);
}

@media (max-width: 1150px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-grid {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
}
@media (max-width: 900px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-floats .page-hero-floats-inner,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-floats .hero-floats {
    display: none;
  }
}
@media (max-width: 760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub {
    overflow-x: clip;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.container,.section .container) {
    padding-inline: 16px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-grid,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .grid,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .grid {
    grid-template-columns: minmax(0,1fr);
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-list {
    grid-template-columns: minmax(0,1fr);
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row {
    --nk-stub: 96px;
    min-height: 128px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer {
    --nk-stub: 120px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-date {
    font-size: 22px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-hub-theme-carousel .nk-orbit-ring .nk-orbit-card {
    flex-basis: 74%;
    width: 74%;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus {
    grid-template-columns: minmax(0,1fr) 96px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-field-grid {
    grid-template-columns: minmax(0,1fr);
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-primary,.btn-reserve,.btn-primary-link,.nk-offer-reserve,.btn-secondary,.btn-outline) {
    min-height: 44px;
  }
}
@media (max-width: 480px) {
  html:has(.page-numeriklub-hub) .campaign-announcement-inner {
    gap: 8px;
    padding-inline: 12px;
  }
  html:has(.page-numeriklub-hub) .campaign-announcement-viewport {
    min-width: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-tablist {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-tab {
    min-width: 0;
    padding-inline: 8px;
  }
}
@media (prefers-reduced-motion: reduce) {
  html:has(.page-numeriklub-hub) .campaign-announcement [data-marquee],
  html:has(.page-numeriklub-hub) .campaign-announcement .marquee-track {
    animation: none !important;
    transform: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub *,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub *::before,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* Final cascade guard: legacy hub rules later in site.css used !important
   offset borders/shadows. Reassert the approved Version C surface system. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(
  .card, [class$="-card"], .nk-orbit-card, .nk-upcoming-row, .nk-yc-month,
  .nk-yc-price, .nk-calendar-territories, .nk-yc-surmesure, #hub-fomo-numeriklub
) {
  border: var(--nk-trait) !important;
  border-top: var(--nk-trait) !important;
  border-radius: var(--nk-r-carte) !important;
  box-shadow: var(--nk-elev-1) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#ateliers .nk-orbit-card,#ete .nk-shelf-card,#contact .nk-callback-form-card) {
  border: var(--nk-trait-sombre) !important;
  background: rgba(14,48,68,.75) !important;
  box-shadow: var(--nk-elev-sombre) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-orbit-card,.nk-hub-offer-card,.nk-upcoming-row):hover {
  box-shadow: var(--nk-elev-2) !important;
  transform: translateY(-3px) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#ateliers .nk-orbit-card,#ete .nk-shelf-card,#contact .nk-callback-form-card):hover {
  box-shadow: var(--nk-elev-sombre-2) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
  border: var(--nk-trait) !important;
  border-top: var(--nk-trait) !important;
  border-radius: var(--nk-r-carte) !important;
  box-shadow: var(--nk-elev-1) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub:hover {
  box-shadow: var(--nk-elev-1) !important;
  transform: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form-card {
  border: var(--nk-trait) !important;
  border-top: var(--nk-trait) !important;
  border-radius: var(--nk-r-carte) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form-card {
  border: var(--nk-trait-sombre) !important;
  background: rgba(14,48,68,.75) !important;
  box-shadow: var(--nk-elev-sombre) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form-card:hover {
  box-shadow: var(--nk-elev-sombre) !important;
  transform: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq details.card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-month,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-surmesure {
  border: var(--nk-trait) !important;
  border-top: var(--nk-trait) !important;
  background: #fff !important;
  box-shadow: var(--nk-elev-1) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card:hover,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row:hover {
  box-shadow: var(--nk-elev-2) !important;
  transform: translateY(-3px) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row {
  border: var(--nk-trait) !important;
  border-left: 6px solid var(--nk-lagon) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual {
  border-left-color: var(--nk-ecran) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer {
  border-left-color: #C5D0DA !important;
}

/* Supplied flat illustrations: hub-only replacements, shared originals intact. */
.page-numeriklub-hub img.hero-rider { content: url("/assets/numeriklub/ui-c/hero-rider-2d-cutout.png"); }
.page-numeriklub-hub #format-annuel .ic-chip img { content: url("/assets/numeriklub/ui-c/hub/annuel.webp"); }
.page-numeriklub-hub #format-petites .ic-chip img { content: url("/assets/numeriklub/ui-c/hub/petites-vacances.webp"); }
.page-numeriklub-hub #format-grandes .ic-chip img { content: url("/assets/numeriklub/ui-c/hub/grandes-vacances.webp"); }
.page-numeriklub-hub #format-surmesure .ic-chip img { content: url("/assets/numeriklub/ui-c/hub/sur-mesure.webp"); }
.page-numeriklub-hub img[src$="/esprit/ancrage-caraibe.webp"] { content: url("/assets/numeriklub/ui-c/esprit/ancrage-caraibe.webp"); }
.page-numeriklub-hub img[src$="/esprit/continuite-pro.webp"] { content: url("/assets/numeriklub/ui-c/esprit/continuite-pro.webp"); }
.page-numeriklub-hub img[src$="/esprit/mascotte-ete.webp"] { content: url("/assets/numeriklub/ui-c/esprit/mascotte-ete.webp"); }
.page-numeriklub-hub img[src$="/esprit/pedagogie-studio.webp"] { content: url("/assets/numeriklub/ui-c/esprit/pedagogie-studio.webp"); }
.page-numeriklub-lp img[src$="/scenes/annuels-room.webp"] { content: url("/assets/numeriklub/ui-c/scenes/annuels-room-cutout.webp"); }
.page-numeriklub-lp img[src$="/scenes/art.webp"] { content: url("/assets/numeriklub/ui-c/scenes/art.webp"); }
.page-numeriklub-lp img[src$="/scenes/build.webp"] { content: url("/assets/numeriklub/ui-c/scenes/build.webp"); }
.page-numeriklub-lp img[src$="/scenes/coding.webp"] { content: url("/assets/numeriklub/ui-c/scenes/coding.webp"); }
.page-numeriklub-lp img[src$="/scenes/island.webp"] { content: url("/assets/numeriklub/ui-c/scenes/island.webp"); }
.page-numeriklub-lp img[src$="/scenes/petites-vacances.webp"] { content: url("/assets/numeriklub/ui-c/scenes/petites-vacances.webp"); }
.page-numeriklub-lp img[src$="/scenes/summercamps.webp"] { content: url("/assets/numeriklub/ui-c/scenes/summercamps.webp"); }
.page-numeriklub-lp img[src$="/scenes/world.webp"] { content: url("/assets/numeriklub/ui-c/scenes/world.webp"); }
.page-numeriklub-hub #ateliers img[src$="/robotique.webp"] { content: url("/assets/numeriklub/ui-c/ateliers/robotique.webp"); }
.page-numeriklub-lp img[src$="/floats/controller.webp"] { content: url("/assets/numeriklub/ui-c/floats/controller.webp"); }
.page-numeriklub-lp img[src$="/floats/cube.webp"] { content: url("/assets/numeriklub/ui-c/floats/cube.webp"); }
.page-numeriklub-lp img[src$="/floats/headphones.webp"] { content: url("/assets/numeriklub/ui-c/floats/headphones.webp"); }
.page-numeriklub-lp img[src$="/floats/heart.webp"] { content: url("/assets/numeriklub/ui-c/floats/heart.webp"); }
.page-numeriklub-lp img[src$="/floats/mascot.webp"] { content: url("/assets/numeriklub/ui-c/floats/mascot.webp"); }
.page-numeriklub-lp img[src$="/floats/planet.webp"] { content: url("/assets/numeriklub/ui-c/floats/planet.webp"); }
.page-numeriklub-lp img[src$="/floats/rocket.webp"] { content: url("/assets/numeriklub/ui-c/floats/rocket.webp"); }
.page-numeriklub-lp img[src$="/floats/star.webp"] { content: url("/assets/numeriklub/ui-c/floats/star.webp"); }
.page-numeriklub-lp img[src$="/icons/blocks.webp"] { content: url("/assets/numeriklub/ui-c/icons/blocks.webp"); }
.page-numeriklub-lp img[src$="/icons/esport.webp"] { content: url("/assets/numeriklub/ui-c/icons/esport.webp"); }
.page-numeriklub-lp img[src$="/icons/gamepad.webp"] { content: url("/assets/numeriklub/ui-c/icons/gamepad.webp"); }
.page-numeriklub-lp img[src$="/icons/like.webp"] { content: url("/assets/numeriklub/ui-c/icons/like.webp"); }
.page-numeriklub-lp img[src$="/icons/mascot.webp"] { content: url("/assets/numeriklub/ui-c/icons/mascot.webp"); }
.page-numeriklub-lp img[src$="/icons/planet.webp"] { content: url("/assets/numeriklub/ui-c/icons/planet.webp"); }
.page-numeriklub-lp img[src$="/icons/rocket.webp"] { content: url("/assets/numeriklub/ui-c/icons/rocket.webp"); }

/* The single coupon reuses editorial copy; duplicate nodes remain CSS-hidden. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-offer-fomo { display: none; }
.page-numeriklub-hub .nk-hub-discount-coupon {
  display: flex;
  align-items: center;
  gap: 14px;
  max-width: 820px;
  margin: 24px 0 0;
  padding: 16px;
  border-radius: 16px;
  outline: 2px dashed #D9BE00;
  outline-offset: -7px;
  background: #FFFBD6;
  color: #1C1C1C;
  font-size: 14px;
  font-weight: 700;
}
.page-numeriklub-hub .nk-hub-discount-coupon .nk-discount-value {
  flex: 0 0 auto;
  padding: 8px 12px;
  border-radius: 10px;
  background: var(--nk-soleil);
  font-size: 24px;
  font-weight: 900;
  white-space: nowrap;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-stat {
  display: flex;
  flex-direction: row;
  gap: 8px;
}
.page-numeriklub-hub .hero-stats { flex-wrap: wrap; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-hero-marquee-label {
  color: #7AA0BE;
  opacity: 1;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-primary,.btn-reserve) {
  box-shadow: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero .btn-rdv {
  border: 1.5px solid rgba(220,231,239,.75);
  border-radius: var(--nk-r-ctrl);
  background: transparent;
  color: #fff;
  box-shadow: none;
  min-height: 48px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq summary::after {
  content: "+";
  transform: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq details[open] summary::after {
  content: "−";
}

/* Grid children stay in their existing calendar wrappers. */
.page-numeriklub-hub #calendrier-sec .nk-upcoming-copy > :is(
  .nk-upcoming-period,.nk-upcoming-date,.nk-upcoming-duration,.nk-upcoming-details,.nk-upcoming-holiday-note
) {
  grid-column: 1;
  margin-inline: 14px;
}
.page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-details {
  display: contents;
}
.page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-price {
  grid-column: 2;
  grid-row: 1 / 3;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
  grid-row: 3 / 5;
}

/* Boarding pass: existing map/directions move visually through display:contents. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus {
  --nk-campus-label: "Campus";
  grid-template-rows: auto auto auto auto;
  gap: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus h4::before { content: none; }
.page-numeriklub-hub .nk-campus-code {
  display: block;
  margin-bottom: 6px;
  font-size: 40px;
  font-weight: 900;
  line-height: 1;
}
.page-numeriklub-hub #lieux .campus h4 { grid-row: 1; }
.page-numeriklub-hub #lieux .campus > .role { grid-column: 1; grid-row: 2; padding-right: 12px; }
.page-numeriklub-hub #lieux .campus > address { grid-column: 1; grid-row: 3; min-width: 0; padding-right: 12px; }
.page-numeriklub-hub #lieux .campus::before {
  content: var(--nk-campus-label);
  grid-column: 2;
  grid-row: 1 / 4;
  margin-top: -18px;
  padding: 20px 8px;
  border-left: 2px dashed rgba(162,219,244,.5);
  background: #0B1E2E;
  color: #DCE7EF;
  text-align: center;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
}
.page-numeriklub-hub .nk-campus-barcode {
  z-index: 1;
  grid-column: 2;
  grid-row: 2;
  align-self: center;
  justify-self: center;
  width: 60px;
  height: 44px;
  background: repeating-linear-gradient(90deg,#DCE7EF 0 2px,transparent 2px 4px,#DCE7EF 4px 5px,transparent 5px 8px);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map { display: contents; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-frame {
  grid-column: 1 / -1;
  grid-row: 4;
  width: calc(100% + 18px);
  height: 200px;
  margin: 14px 0 0 -18px;
  border: var(--nk-trait);
  border-radius: 16px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions {
  z-index: 1;
  grid-column: 2;
  grid-row: 3;
  align-self: end;
  padding: 8px;
  border-radius: 0;
  background: transparent;
  color: #DCE7EF;
  text-align: center;
  font-size: 12px;
  overflow-wrap: anywhere;
}
.page-numeriklub-hub #lieux address a[href^="tel:"]::before,
.page-numeriklub-hub #lieux address a[href^="mailto:"]::before {
  display: block;
  color: var(--nk-texte-2);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.page-numeriklub-hub #lieux address a[href^="tel:"]::before { content: "Téléphone"; }
.page-numeriklub-hub #lieux address a[href^="mailto:"]::before { content: "E-mail"; }
html[lang="en"] .page-numeriklub-hub #lieux address a[href^="tel:"]::before { content: "Phone"; }
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="972"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(1),
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="971"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(2),
html:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="973"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(3) {
  --nk-campus-label: "Votre campus";
  outline: 2px solid var(--nk-soleil);
  outline-offset: 0;
}
html[lang="en"]:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="972"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(1),
html[lang="en"]:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="971"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(2),
html[lang="en"]:has(.page-numeriklub-hub .nk-territory-button[data-nk-stage-territory="973"][aria-pressed="true"]) .page-numeriklub-hub #lieux .campus:nth-child(3) {
  --nk-campus-label: "Your campus";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .field label {
  color: #DCE7EF;
}
html:has(.page-numeriklub-hub) .nk-date-rgpd input[type="checkbox"] {
  width: 20px;
  height: 20px;
  border-radius: 6px;
  accent-color: #FFE936;
}
@media (max-width:760px) {
  .page-numeriklub-hub .nk-hub-discount-coupon { gap: 10px; padding: 14px; }
  .page-numeriklub-hub .nk-hub-discount-coupon .nk-discount-value { padding: 8px; }
  .page-numeriklub-hub .hero-stat { flex: 1 1 145px; }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-orbit-card,.nk-hub-offer-card,.nk-upcoming-row):hover {
    transform: none !important;
  }
  .page-numeriklub-hub :is(.nk-orbit-card,.nk-hub-offer-card,.nk-upcoming-row),
  .page-numeriklub-hub [data-marquee] {
    animation: none !important;
    transition: none !important;
  }
  .page-numeriklub-hub [data-marquee] { transform: none !important; }
}

/* Explicit precedence over the legacy !important light-mode and offer rules. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head .num {
  color: var(--nk-ecran) !important;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.page-numeriklub-hub .nk-section-number {
  display: inline-grid;
  min-width: 26px;
  min-height: 24px;
  margin-right: 6px;
  padding: 3px 5px;
  place-items: center;
  border-radius: 6px;
  background: var(--nk-encre);
  color: #fff;
  letter-spacing: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#ateliers,#ete,#contact) .section-head .num {
  color: var(--nk-lagon) !important;
}
.page-numeriklub-hub :is(#ateliers,#ete,#contact) .nk-section-number {
  background: #fff;
  color: var(--nk-encre);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-stats { display: flex; gap: 8px; flex-wrap: wrap; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-stat { border: 0; flex: 0 1 auto; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero .btn-rdv {
  border: 1.5px solid rgba(220,231,239,.75) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-grid {
  grid-template-columns: repeat(4,minmax(0,1fr)) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card {
  padding: 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head {
  position: relative;
  display: block;
  min-height: 0;
  aspect-ratio: auto;
  align-items: stretch;
  padding: 0;
  margin: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head-l {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head-l > .ic-chip {
  position: static;
  inset: auto;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  border: 0;
  box-shadow: none;
  flex: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head h3 {
  position: static;
  padding: 14px 18px 6px;
  margin: 0;
  border-radius: 0;
  background: #fff;
  color: var(--nk-encre);
  font-size: 18px;
}
.page-numeriklub-hub #formats .badge { max-width: calc(100% - 24px); white-space: normal; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-offer-facts {
  grid-template-columns: minmax(0,1fr) !important;
  gap: 8px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-offer-info-link {
  min-height: 44px;
  padding: 0;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: var(--nk-ecran) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#format-grandes,#format-surmesure) .btn-reserve,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer > .btn {
  border: 1.5px solid var(--nk-trait-ctrl) !important;
  background: #fff !important;
  color: var(--nk-encre) !important;
  box-shadow: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row {
  background:
    repeating-linear-gradient(0deg,rgba(21,49,74,.18) 0 5px,transparent 5px 10px) right var(--nk-stub) top / 2px 100% no-repeat,
    linear-gradient(90deg,#fff calc(100% - var(--nk-stub)),var(--nk-ciel) 0) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-price {
  background: transparent;
  border: 0;
}
.page-numeriklub-hub .nk-price-prefix { display: block; font-size: 11px; font-weight: 800; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row > .btn {
  max-width: calc(var(--nk-stub) - 20px);
  align-self: center;
  justify-self: center;
  margin: 8px 0;
  padding: 8px;
  min-height: 48px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus :is(h4)::before,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus :is(h4)::after,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus::after {
  content: none !important;
}
.page-numeriklub-hub #lieux .campus::before { position: static; width: auto; height: auto; }
.page-numeriklub-hub #lieux address a { display: block; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form :is(input:not([type="checkbox"]),select,textarea) {
  border: 1.5px solid rgba(162,219,244,.55) !important;
  background: rgba(8,20,32,.6) !important;
  color: #fff !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact :is(label,.optin-label,.optin-label span,.card-title) {
  color: #DCE7EF !important;
}
.page-numeriklub-hub #contact :is(input,textarea)::placeholder { color: #A2BDCF; opacity: 1; }
.page-numeriklub-hub #contact input[type="checkbox"] {
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
  border-radius: 6px;
  accent-color: var(--nk-soleil);
}
@media (max-width:1150px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-grid {
    grid-template-columns: repeat(2,minmax(0,1fr)) !important;
  }
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-grid {
    grid-template-columns: minmax(0,1fr) !important;
  }
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card .nk-orbit-name {
  color: rgba(255,255,255,.95);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus address a {
  display: block;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-primary,.btn-reserve.btn-primary) {
  background: var(--nk-cta) !important;
  color: var(--nk-on-cta) !important;
  box-shadow: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.btn-primary,.btn-reserve.btn-primary):hover {
  background: var(--nk-cta-hover) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #format-grandes .mt-6 .btn-secondary {
  border: 1.5px solid var(--nk-trait-ctrl) !important;
  background: #fff !important;
  color: var(--nk-encre) !important;
  box-shadow: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-offer-fomo,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-note,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-discount {
  display: none !important;
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .campaign-announcement-badge-link {
    min-height: 44px;
    color: #1C1C1C;
    text-decoration: underline;
    text-underline-offset: 3px;
  }
  html:has(.page-numeriklub-hub) .campaign-announcement-badge {
    padding: 0 4px !important;
    border: 0 !important;
    background: transparent !important;
    color: #1C1C1C !important;
    box-shadow: none !important;
  }
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.page-hero-home,#ateliers,#ete,#contact)
  :where(a,button,input,select,textarea,[tabindex]):focus-visible {
  outline-color: var(--nk-lagon) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form
  :is(input:not([type="checkbox"]),select,textarea):focus-visible {
  border: 2px solid var(--nk-lagon) !important;
  outline: 3px solid var(--nk-lagon) !important;
  outline-offset: 3px;
}

/* UI C — lot 1. Presentation only: preserve DOM, lead fields and CTA bindings. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
  isolation: isolate;
  overflow: hidden;
  padding-bottom: 0 !important;
  min-height: 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .container {
  position: relative;
  z-index: 5;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .eyebrow { order: 0; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home h1 { order: 1; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .lead { order: 2; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-reperes { order: 3; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-cta { order: 4; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats {
  order: 5;
  margin: 24px 0 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-loc:not(.hero-reperes) { order: 6; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
  top: calc((100% - 110px) / 2);
  bottom: auto !important;
  right: clamp(-190px,-13vw,-70px) !important;
  width: min(67.2vw,966px) !important;
  max-width: none !important;
  height: calc(clamp(470px,70vh,660px) * 1.4) !important;
  max-height: none !important;
  object-position: center;
  transform: translateY(-50%) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
  top: calc((100% - 110px) / 2);
  bottom: auto !important;
  right: clamp(214px,25vw,370px) !important;
  height: calc(clamp(238px,34vh,425px) * 1.4) !important;
  max-height: none;
  animation: none !important;
  transform: translateY(-50%) rotate(-3deg) scaleX(var(--rider-flip,-1)) !important;
}

/* The opaque, raised strip also covers any hero artwork underneath it. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
  order: 9;
  position: relative !important;
  z-index: 10;
  left: 50% !important;
  right: auto !important;
  width: 100vw !important;
  max-width: none !important;
  margin: 28px 0 0 !important;
  padding: 18px max(16px,calc((100vw - 1200px) / 2));
  display: flex;
  align-items: center;
  gap: 24px;
  background: #0B1E2E !important;
  transform: translateX(-50%) !important;
  mask-image: none !important;
  -webkit-mask-image: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-hero-marquee-label {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  margin: 0;
  background: #0B1E2E;
  color: #fff !important;
  opacity: .72 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .marquee-track {
  min-width: 0;
  flex: 1 1 auto;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee img,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee img:hover {
  filter: brightness(0) invert(1) !important;
  opacity: .72 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
  grid-template-columns: 200px minmax(0,1fr) auto;
  gap: 28px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-media { grid-column: 1; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-copy {
  grid-column: 2;
  min-width: 0;
  overflow-wrap: break-word;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-action { grid-column: 3; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-copy > p {
  max-width: 100%;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .btn {
  white-space: nowrap;
}

/* Existing punctuation is visually suppressed, not rewritten in editorial data.
   Keep every label mirrored for FR/EN while retaining the original accessible DOM. */
.page-numeriklub-hub #ateliers { --nk-section-label: "LES THÉMATIQUES"; }
.page-numeriklub-hub #formats { --nk-section-label: "FORMATS D’ATELIERS"; }
.page-numeriklub-hub #esprit { --nk-section-label: "L’ESPRIT NUMÉRIKLUB"; }
.page-numeriklub-hub #calendrier-sec { --nk-section-label: "LE CALENDRIER"; }
.page-numeriklub-hub #ete { --nk-section-label: "LES VOIX DU KLUB"; }
.page-numeriklub-hub #faq { --nk-section-label: "INFOS PRATIQUES · FAQ"; }
.page-numeriklub-hub #lieux { --nk-section-label: "OÙ NOUS RETROUVER"; }
.page-numeriklub-hub #contact { --nk-section-label: "CONTACT"; }
html[lang="en"] .page-numeriklub-hub #ateliers { --nk-section-label: "THE THEMES"; }
html[lang="en"] .page-numeriklub-hub #formats { --nk-section-label: "WORKSHOP FORMATS"; }
html[lang="en"] .page-numeriklub-hub #esprit { --nk-section-label: "THE NUMÉRIKLUB SPIRIT"; }
html[lang="en"] .page-numeriklub-hub #calendrier-sec { --nk-section-label: "THE CALENDAR"; }
html[lang="en"] .page-numeriklub-hub #ete { --nk-section-label: "VOICES OF THE KLUB"; }
html[lang="en"] .page-numeriklub-hub #faq { --nk-section-label: "PRACTICAL INFO · FAQ"; }
html[lang="en"] .page-numeriklub-hub #lieux { --nk-section-label: "WHERE TO FIND US"; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head .num {
  font-size: 0 !important;
  letter-spacing: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head .nk-section-number {
  font-size: 12px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head .num::after {
  content: var(--nk-section-label);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}

html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
  display: flex;
  flex-direction: column;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-more {
  margin-top: auto;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers :is(.nk-orbit-desc,.nk-orbit-prog) strong {
  color: #DCE7EF !important;
  font-weight: 700 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta .btn:not(.btn-reserve) {
  border: 1.5px solid rgba(220,231,239,.75) !important;
  background: transparent !important;
  color: #DCE7EF !important;
  box-shadow: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta .btn-wa-ic {
  color: #25D366 !important;
}
@media (min-width:1181px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring {
    grid-template-columns: repeat(8,minmax(0,1fr));
    align-items: stretch;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card { grid-column: span 2; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(4n+1):nth-last-child(3) {
    grid-column: 2 / span 2;
  }
}

/* Existing metadata becomes plain text below the title; only the season marker
   is yellow. Position images explicitly so all four replacements really fill 16:9. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card {
  --nk-formula-stub: 148px;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(0,1.05fr);
  grid-template-rows: auto auto auto auto auto minmax(24px,1fr) var(--nk-formula-stub);
  gap: 0;
  align-items: start;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > * { grid-column: 1 / -1; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head {
  grid-row: 1;
  background: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head-l > .ic-chip {
  position: relative !important;
  overflow: hidden;
  aspect-ratio: 16 / 9;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head-l > .ic-chip img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head h3 {
  min-height: 72px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head .badge {
  position: static;
  display: block;
  padding: 0 18px 12px;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent !important;
  color: #39556F !important;
  box-shadow: none;
  white-space: normal;
  font-size: 14px;
  line-height: 1.5;
  font-weight: 600;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head:has(.badge)::after {
  content: "Cette saison";
  position: absolute;
  top: 10px;
  right: 10px;
  padding: 4px 8px;
  border-radius: 999px;
  background: #FFE936;
  color: #1C1C1C;
  font-size: 11px;
  font-weight: 800;
  line-height: 1.4;
}
html[lang="en"]:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head:has(.badge)::after {
  content: "This season";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .card-body {
  grid-row: 2;
  color: #39556F !important;
  font-size: 15px;
  line-height: 1.55;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-offer-facts { grid-row: 3; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-dates { grid-row: 4; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-offer-info { grid-row: 5; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price {
  order: initial;
  grid-column: 1;
  grid-row: 7;
  align-self: stretch;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  margin: 0 !important;
  padding: 16px 8px 18px 18px;
  border: 0 !important;
  border-top: 2px dotted rgba(21,49,74,.18) !important;
  border-radius: 0 !important;
  background: #EAF7FD !important;
  color: #0E2438 !important;
  font-size: 18px;
  font-weight: 900;
  line-height: 1.25;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::before {
  content: "Tarif";
  position: static;
  width: auto;
  height: auto;
  margin: 0 0 5px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  clip-path: none;
  font-size: 11px;
  font-weight: 700;
}
html[lang="en"]:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::before { content: "Price"; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::after { content: none; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 {
  order: initial;
  grid-column: 2;
  grid-row: 7;
  align-self: stretch;
  display: flex;
  align-items: center;
  margin: 0 !important;
  padding: 16px 14px 18px 8px;
  border-top: 2px dotted rgba(21,49,74,.18);
  border-radius: 0;
  background: #EAF7FD !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 .btn {
  min-width: 0;
  width: 100%;
  padding: 10px 8px;
  font-size: 12px;
  line-height: 1.3;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card::before,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card::after {
  content: "";
  position: absolute;
  z-index: 2;
  top: auto;
  bottom: calc(var(--nk-formula-stub) - 10px);
  width: 20px;
  height: 20px;
  border: var(--nk-trait);
  border-radius: 50%;
  background: #EAF7FD;
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card::before { left: -11px; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card::after { right: -11px; }

@media (max-width:980px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
    grid-template-columns: 200px minmax(0,1fr);
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-media { grid-row: 1 / span 2; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-action {
    grid-column: 2;
    justify-content: flex-start;
  }
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
    display: block;
    width: min(128.8vw,602px) !important;
    height: calc(clamp(260px,68vw,360px) * 1.4) !important;
    top: auto;
    right: -55px !important;
    bottom: 82px !important;
    transform: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
    display: block;
    height: min(80vw,330px) !important;
    top: auto;
    right: 48% !important;
    bottom: 110px !important;
    transform: translateX(35%) rotate(-3deg) scaleX(var(--rider-flip,-1)) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats { margin: 24px 0 0; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
    margin-top: 360px !important;
    gap: 16px;
    padding: 16px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-hero-marquee-label {
    max-width: 112px;
    white-space: normal;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
    grid-template-columns: minmax(0,1fr);
    gap: 18px;
    padding: 18px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub :is(.hub-fomo-media,.hub-fomo-copy,.hub-fomo-action) {
    grid-column: 1;
    grid-row: auto;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-media { max-height: 200px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .btn {
    font-size: 14px;
    padding-inline: 14px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card { --nk-formula-stub: 128px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head h3 { min-height: 0; }
}

/* UI C — lot 2. Hub sections 03–08 only. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .grid {
  grid-template-columns: repeat(4,minmax(0,1fr));
  align-items: stretch;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit {
  min-width: 0;
  height: 100%;
  overflow: hidden;
  border-radius: 16px !important;
  box-shadow: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:hover {
  box-shadow: none !important;
  transform: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media {
  width: 100%;
  margin: 0 0 34px;
  aspect-ratio: 16 / 10;
  overflow: visible;
  border-radius: 16px 16px 0 0;
  background: #0E3044;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 16px 16px 0 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media::after {
  z-index: 2;
  left: 16px;
  right: auto;
  bottom: -24px;
  width: 48px;
  height: 48px;
  background: #fff;
  box-shadow: 0 2px 10px rgba(0,0,0,.13);
}
@media (max-width:1100px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .grid {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .grid {
    grid-template-columns: minmax(0,1fr);
  }
}

/* Calendar controls and annual ticket. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-calendar-territories {
  display: inline-flex;
  width: max-content;
  max-width: 100%;
  flex-wrap: wrap;
  vertical-align: top;
  margin: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-territory-button {
  min-height: 44px;
  height: 44px;
  flex: 0 0 auto;
  padding: 0 18px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-territory-button:not([aria-pressed="true"]):hover {
  background: #EAF7FD;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-tabs {
  margin-top: 16px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-tab {
  text-transform: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual {
  --nk-stub: 200px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-copy > :is(.nk-upcoming-period,.nk-upcoming-details) {
  margin-left: 18px;
}
/* The final separator is editorial text: conceal only its last glyph without altering data. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-details {
  /* Later display:contents rules otherwise discard the wrapper and its
     inline end mask, leaving the separator before the detached price. */
  display: block !important;
  grid-column: 1;
  grid-row: 2;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-details::after {
  display: inline-block !important;
  width: .85em;
  height: 1.25em;
  margin-left: -.85em;
  vertical-align: -.25em;
  background: #fff;
  content: "" !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-price {
  position: absolute;
  top: 14px;
  right: 12px;
  width: calc(var(--nk-stub) - 24px);
  border: 0;
  background: transparent;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
  width: calc(var(--nk-stub) - 10px);
  max-width: none;
  padding: 8px 4px;
  font-size: 13px;
  white-space: nowrap;
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual {
    --nk-stub: 136px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
    width: calc(var(--nk-stub) - 12px);
    white-space: normal;
  }
}

/* Media captions touch their image. The embed has a dark initial loading surface. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .section-head > p {
  color: #B3C8D8 !important;
  font-weight: 400 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card {
  gap: 0;
  overflow: hidden;
  border-radius: 16px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed {
  position: relative;
  width: 100%;
  margin: 0;
  border-radius: 16px 16px 0 0;
  background: #0E3044 !important;
  box-shadow: none;
  overflow: hidden;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed::before {
  position: absolute;
  z-index: 1;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(105deg,#0E3044 30%,#24485F 50%,#0E3044 70%) 0 0 / 200% 100%;
  animation: nk-media-skeleton 1.8s ease-in-out infinite, nk-media-uncover .5s ease 4s forwards;
  content: "";
}
@keyframes nk-media-skeleton { to { background-position: -200% 0; } }
@keyframes nk-media-uncover { to { opacity: 0; visibility: hidden; } }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card iframe {
  background: #0E3044 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .nk-shelf-cap {
  margin: 0;
  padding: 12px 14px;
  border-radius: 0 0 16px 16px;
  background: #fff !important;
  color: #0E2438 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-gallery-head > .eyebrow {
  font-size: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-gallery-head > .eyebrow::after {
  content: "LA VIE DU KLUB";
  font-size: 12px;
  font-weight: 900;
  letter-spacing: .12em;
}
html[lang="en"]:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-gallery-head > .eyebrow::after {
  content: "LIFE AT THE KLUB";
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed::before {
    animation: none;
    opacity: 0;
  }
}

/* FAQ heading, group labels and compact questions. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .section-head h2 {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  background: none !important;
  -webkit-background-clip: initial !important;
  -webkit-text-fill-color: #0E2438 !important;
  color: #0E2438 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .nk-hub-faq-group > h3 {
  background: #0E2438 !important;
  color: #fff !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq { gap: 12px; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq summary {
  min-height: 0;
  padding-block: 16px;
}

/* Campus boarding passes: equal top edge and footer baseline. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .nk-hub-campus-disclosure > .grid {
  align-items: stretch;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus:nth-child(2) {
  margin-top: 0 !important;
  align-self: stretch;
  transform: none !important;
  grid-template-rows: auto auto 1fr auto;
  padding: 18px 0 0 18px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions {
  min-height: 44px;
  padding: 8px 2px;
  font-size: 0 !important;
  overflow-wrap: normal;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions::after {
  content: "Itinéraire ↗";
  font-size: 12px;
  font-weight: 800;
  line-height: 1.25;
  white-space: nowrap;
}
html[lang="en"]:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions::after {
  content: "Directions ↗";
}

/* Contact: unhide the section label but not its redundant secondary H2. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-section-head {
  position: static !important;
  width: auto !important;
  height: auto !important;
  margin: 0 0 16px !important;
  padding: 0 !important;
  clip: auto !important;
  overflow: visible !important;
  white-space: normal !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-section-head .section-head :is(h2,p) {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-copy h2 {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  background: none !important;
  -webkit-background-clip: initial !important;
  -webkit-text-fill-color: #fff !important;
  color: #fff !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form .optin-label,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form .optin-label span {
  color: #B3C8D8 !important;
  font-size: 13px !important;
  font-weight: 400 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form input[type="checkbox"] {
  appearance: none;
  width: 20px !important;
  height: 20px !important;
  min-height: 20px;
  flex: 0 0 20px !important;
  margin-top: 2px;
  border: 1.5px solid rgba(220,231,239,.8) !important;
  border-radius: 6px !important;
  background: transparent !important;
  cursor: pointer;
  position: relative;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form input[type="checkbox"]:checked {
  border-color: #FFE936 !important;
  background: #FFE936 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form input[type="checkbox"]:checked::after {
  position: absolute;
  top: 2px;
  left: 6px;
  width: 5px;
  height: 10px;
  border: solid #0E2438;
  border-width: 0 2px 2px 0;
  content: "";
  transform: rotate(45deg);
}

/* Specificity guards against the older illustrated-card and generic form-input rules. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#esprit .nk-esprit.card,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#esprit .nk-esprit.card:hover {
  box-shadow: none !important;
  transform: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form input[type="checkbox"] {
  box-sizing: border-box !important;
  min-width: 20px !important;
  max-width: 20px !important;
  min-height: 20px !important;
  max-height: 20px !important;
  padding: 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-price {
  display: flex;
  align-items: center;
  justify-content: center;
  grid-column: auto;
  grid-row: auto;
  align-self: start;
  top: 18px;
  height: 40px;
  padding: 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
  width: calc(var(--nk-stub) - 4px);
  font-size: 12px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus {
  min-height: 615px;
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
    width: calc(var(--nk-stub) - 12px);
    font-size: 13px;
  }
}
@media (max-width:370px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus {
    min-height: 715px;
  }
}

html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-price {
  column-gap: 4px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-gallery-head h3 {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  background: none !important;
  -webkit-background-clip: initial !important;
  -webkit-text-fill-color: #F4F8FB !important;
  color: #F4F8FB !important;
}

/* UI C — lot 3. Presentation only: no DOM, editorial or integration changes. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > section.section {
  padding-block: 80px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub h2 {
  max-width: 22ch !important;
}

/* A fixed label column cannot be painted over by the moving logo track. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
  display: grid;
  grid-template-columns: max-content minmax(0,1fr);
  gap: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-hero-marquee-label {
  z-index: 3;
  align-self: stretch;
  display: flex;
  align-items: center;
  padding-right: 24px;
  background: #0B1E2E;
  opacity: 1 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .marquee-track {
  width: 100%;
  min-width: 0;
  overflow: hidden;
  mask-image: linear-gradient(to right,transparent 0,#000 48px,#000 100%);
  -webkit-mask-image: linear-gradient(to right,transparent 0,#000 48px,#000 100%);
}

/* Offer footer: canonical text remains accessible; its visual split is bilingual. */
.page-numeriklub-hub #format-annuel { --nk-offer-main: "580 à 620 €"; --nk-offer-unit: "/ an selon le parcours"; }
.page-numeriklub-hub #format-petites { --nk-offer-main: "156 à 260 €"; --nk-offer-unit: "/ session"; }
.page-numeriklub-hub #format-grandes { --nk-offer-main: "dès 260 €"; --nk-offer-unit: "/ semaine"; }
.page-numeriklub-hub #format-surmesure { --nk-offer-main: "Sur devis"; --nk-offer-unit: ""; }
html[lang="en"] .page-numeriklub-hub #format-annuel { --nk-offer-main: "€580 to €620"; --nk-offer-unit: "/ year depending on track"; }
html[lang="en"] .page-numeriklub-hub #format-petites { --nk-offer-main: "€156 to €260"; --nk-offer-unit: "/ session"; }
html[lang="en"] .page-numeriklub-hub #format-grandes { --nk-offer-main: "from €260"; --nk-offer-unit: "/ week"; }
html[lang="en"] .page-numeriklub-hub #format-surmesure { --nk-offer-main: "On request"; --nk-offer-unit: ""; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card {
  grid-template-columns: minmax(0,1fr);
  grid-template-rows: auto auto auto auto auto minmax(12px,1fr) auto auto;
  --nk-formula-stub: 144px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price {
  grid-column: 1;
  grid-row: 7;
  padding: 16px 18px 8px;
  font-size: 0;
  align-items: flex-start;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::before {
  content: var(--nk-offer-main);
  margin: 0;
  font-size: 20px;
  font-weight: 900;
  line-height: 1.25;
  white-space: nowrap;
  color: #0E2438;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::after {
  content: var(--nk-offer-unit);
  position: static;
  display: block;
  inset: auto;
  width: auto;
  height: auto;
  min-height: 1.4em;
  margin-top: 4px;
  border: 0;
  border-radius: 0;
  clip-path: none;
  background: transparent;
  color: #39556F;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.4;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 {
  grid-column: 1;
  grid-row: 8;
  padding: 8px 18px 16px;
  border-top: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 .btn {
  white-space: nowrap;
  width: 100%;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats :is(#format-grandes,#format-surmesure) .prog-head::after {
  content: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .card-body {
  font-size: 15px;
  margin-bottom: 12px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-offer-facts {
  margin-top: 0 !important;
}

/* Esprit: headings never depend on scroll reveal; background mirrors the real photo. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit :is(h3,[data-blur-reveal]) {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  visibility: visible !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit .card-body {
  font-size: 15px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media::after {
  font-size: 12px;
  font-weight: 900;
  color: var(--nk-seal);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(1) .nk-esprit-media::after { content: "PRO"; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(2) .nk-esprit-media::after { content: "A→Z"; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(3) .nk-esprit-media::after { content: "12"; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit:nth-child(4) .nk-esprit-media::after { content: "↗"; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media {
  background-position: center;
  background-size: cover;
}
.page-numeriklub-hub #esprit .nk-esprit:nth-child(1) .nk-esprit-media { background-image: url("/assets/numeriklub/media/digital-workshop.webp"); }
.page-numeriklub-hub #esprit .nk-esprit:nth-child(2) .nk-esprit-media { background-image: url("/assets/numeriklub/media/collaborative-workshop.webp"); }
.page-numeriklub-hub #esprit .nk-esprit:nth-child(3) .nk-esprit-media { background-image: url("/assets/numeriklub/media/workshop-coaching.webp"); }
.page-numeriklub-hub #esprit .nk-esprit:nth-child(4) .nk-esprit-media { background-image: url("/assets/numeriklub/media/jeunes-certificats-numeriklub-web.webp"); }

/* Compact annual/summer tickets with the copy centered alongside the action stack. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec :is(.nk-upcoming-row-annual,.nk-upcoming-row-summer) {
  min-height: 0 !important;
  grid-template-rows: auto auto;
  row-gap: 6px;
  padding-block: 14px;
  align-content: center;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec :is(.nk-upcoming-row-annual,.nk-upcoming-row-summer) .nk-upcoming-period {
  grid-row: 1;
  align-self: end;
  margin-block: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec :is(.nk-upcoming-row-annual,.nk-upcoming-row-summer) .nk-upcoming-details {
  grid-row: 2;
  align-self: start;
  margin-block: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-price {
  top: 50%;
  height: 28px;
  transform: translateY(-36px);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
  grid-row: 1 / 3;
  align-self: center;
  margin: 36px 0 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer > .btn {
  grid-row: 1 / 3;
  align-self: center;
  width: calc(var(--nk-stub) - 10px);
  margin: 0 !important;
  padding: 8px 4px;
  font-size: 12px;
  white-space: nowrap;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-tablist {
  border: 0 !important;
  outline: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  padding: 0;
}

/* FAQ: only the summary supplies padding; do not double it on the details card. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .nk-hub-faq-group > h3 {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  background: #0E2438 !important;
  color: #fff !important;
  -webkit-text-fill-color: #fff !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq details.card {
  padding: 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq summary {
  box-sizing: border-box;
  min-height: 64px;
  padding: 16px 18px;
  line-height: 1.35;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq .faq details > p {
  margin: 0;
  padding: 0 18px 16px;
}

@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > section.section {
    padding-block: 56px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
    padding-top: 24px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home h1 {
    line-height: 1.12 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-hero-title-mark {
    padding-block: 0 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    width: 100%;
    gap: 6px;
    margin-bottom: 0 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat {
    min-width: 0;
    padding: 8px 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    text-align: center;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat-value {
    font-size: 17px !important;
    white-space: nowrap;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat-label {
    font-size: 12px !important;
    line-height: 1.3;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
    margin-top: 290px !important;
    min-height: 100px;
    padding: 16px;
    isolation: isolate;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-hero-marquee-label {
    max-width: 118px;
    padding-right: 24px;
    font-size: 11px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
    bottom: 100px !important;
    height: 290px !important;
    width: 440px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
    bottom: 116px !important;
    height: 250px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#formats .nk-hub-offer-grid,#esprit .grid) {
    display: grid;
    grid-template-columns: none !important;
    grid-template-rows: none;
    grid-auto-flow: column;
    grid-auto-columns: 84%;
    align-items: stretch;
    gap: 16px;
    padding: 0 1px 12px;
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: 1px;
    overscroll-behavior-x: contain;
    scrollbar-width: thin;
    scrollbar-color: #2C5C88 #D8F0FA;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#formats .nk-hub-offer-card,#esprit .nk-esprit) {
    grid-column: auto !important;
    min-width: 0;
    scroll-snap-align: start;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media {
    aspect-ratio: 16 / 10;
  }
  @supports (scroll-marker-group: after) {
    html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#formats .nk-hub-offer-grid,#esprit .grid) {
      scroll-marker-group: after;
    }
    html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#formats .nk-hub-offer-grid,#esprit .grid)::scroll-marker-group {
      display: flex;
      gap: 8px;
      justify-content: center;
      margin-top: 12px;
    }
    html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#formats .nk-hub-offer-card,#esprit .nk-esprit)::scroll-marker {
      content: "";
      width: 8px;
      height: 8px;
      border: 0;
      border-radius: 999px;
      background: #A2BACB;
    }
    html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(#formats .nk-hub-offer-card,#esprit .nk-esprit)::scroll-marker:target-current {
      background: #2C5C88;
    }
  }
}

/* Bilingual cascade and mobile density guards. */
html[lang="en"]:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .nk-card-price::before {
  content: var(--nk-offer-main);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer {
  --nk-stub: 180px;
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub h2 {
    font-size: 32px !important;
    line-height: 1.12 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head > p {
    font-size: 15px;
    line-height: 1.5;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-lead {
    font-size: 15px;
    line-height: 1.55;
    margin-bottom: 24px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat {
    min-height: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-loc:empty {
    display: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
    bottom: 116px !important;
    height: 274px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
    bottom: 132px !important;
    height: 230px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-gallery {
    margin-top: 24px;
    padding-top: 24px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-grid {
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 12px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-frame {
    aspect-ratio: 16 / 10;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-cap {
    padding: 10px;
    font-size: 11px;
    line-height: 1.4;
  }

  /* Shared footer layout is compacted only while this hub is present. */
  html:has(.page-numeriklub-hub) #site-footer .footer-main {
    padding: 56px 0 28px;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-cols {
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 24px 16px;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col {
    min-width: 0;
    font-size: 14px;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:first-child {
    grid-column: 1 / -1;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(3) {
    grid-column: 1 / -1;
    grid-row: 3;
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 12px;
    align-items: start;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(3) h5 {
    grid-column: 1 / -1;
    margin: 0;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(3) p {
    margin: 0;
    font-size: 13px;
    line-height: 1.45;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col a {
    overflow-wrap: anywhere;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-wa .btn {
    width: 100%;
    padding: 8px;
    font-size: 12px;
    white-space: normal;
  }
}

@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats > .hero-stat {
    min-height: 0 !important;
    height: auto !important;
    padding: 8px 10px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-loc:not(.hero-reperes) {
    margin-top: 0 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head {
    margin-bottom: 16px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-lead {
    margin-bottom: 16px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-photo-gallery-head {
    margin-bottom: 16px;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-main {
    padding-bottom: 16px;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-cols {
    gap: 16px;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-bottom {
    margin-top: 24px;
    padding: 16px 0 0;
    font-size: 11px;
    line-height: 1.5;
  }
}

/* UI C — lot 4. Hub only; business markup and editorial values stay untouched. */
/* Inner headings stay readable; reveal belongs to their whole header/card wrapper. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub [data-blur-reveal]:not(.section-head [data-blur-reveal]),
html:has(.page-numeriklub-hub) .page-numeriklub-hub :is(.nk-orbit-ring,.nk-hub-offer-grid,.nk-shelf) [data-blur-reveal],
html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head [data-blur-reveal] {
  opacity: 1 !important;
  visibility: visible !important;
  filter: none !important;
  transform: none !important;
  transition: none !important;
  animation: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > :is(.hero-art,.hero-rider) {
  opacity: 1 !important;
  visibility: visible !important;
  filter: none !important;
  animation: none !important;
  transition: none !important;
}

/* UI C — lot 6: hero composition and partner-strip handoff. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
  position: relative;
  z-index: 2;
  overflow-x: clip !important;
  overflow-y: visible !important;
  overflow-clip-margin: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home::after {
  position: absolute;
  z-index: 0;
  right: calc(clamp(220px,30vw,410px) + 100px);
  bottom: 136px;
  width: 116px;
  height: 20px;
  border-radius: 50%;
  background: radial-gradient(ellipse,rgba(0,0,0,.48) 0%,rgba(0,0,0,.24) 48%,transparent 76%);
  content: "";
  filter: blur(6px);
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home h1 :is(em,.nk-hero-title-mark) {
  display: inline-block;
  line-height: 1;
  padding: .02em .08em .06em;
  border-radius: 12px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-cta .btn {
  box-sizing: border-box;
  height: 48px;
  min-height: 48px;
  border-radius: 12px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-cta .btn-rdv .btn-rdv-ic {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats > .hero-stat {
  box-sizing: border-box;
  height: 48px;
  min-height: 48px;
  border-radius: 12px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
  top: 0 !important;
  right: 0 !important;
  bottom: auto !important;
  width: min(62vw,880px) !important;
  height: min(74vh,640px) !important;
  max-width: none !important;
  max-height: none !important;
  transform: none !important;
  object-fit: contain;
  object-position: center top;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
  top: auto !important;
  right: clamp(220px,30vw,410px) !important;
  bottom: 128px !important;
  height: clamp(270px,36vh,360px) !important;
  max-height: none !important;
  overflow: visible;
  isolation: isolate;
  transform: rotate(-3deg) scaleX(var(--rider-flip,-1)) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > img.hero-rider {
  filter: drop-shadow(0 8px 12px rgba(0,0,0,.3)) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-floats {
  left: 52%;
  right: 0;
  width: 48%;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float {
  display: block !important;
  width: clamp(54px,5vw,72px);
  filter: drop-shadow(0 8px 12px rgba(0,0,0,.3));
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-1 { top: 7%; right: 8%; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-2 { top: 7%; left: 8%; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-3 { top: 29%; right: 34%; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-4 { top: 29%; right: 8%; left: auto; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-5 { top: 53%; right: 8%; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-6 { top: 53%; right: 34%; left: auto; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-7 { bottom: 9%; right: 34%; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-8 { bottom: 9%; right: 8%; left: auto; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
  position: relative !important;
  z-index: 12;
  padding-inline: 40px;
  box-shadow: 0 16px 28px rgba(0,0,0,.3);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
  position: relative;
  z-index: 1;
  margin-top: 16px;
}

@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats > .hero-stat {
    height: 48px !important;
    min-height: 48px !important;
    padding: 4px 6px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat-value {
    font-size: 16px !important;
    line-height: 1;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat-label {
    font-size: 11px !important;
    line-height: 1.05;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
    padding-inline: 16px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
    top: auto !important;
    right: -12px !important;
    bottom: 100px !important;
    width: min(120vw,480px) !important;
    height: min(74vw,288px) !important;
    transform: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
    top: auto !important;
    right: 48% !important;
    bottom: 124px !important;
    height: min(62vw,242px) !important;
    transform: rotate(-3deg) scaleX(var(--rider-flip,-1)) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home::after {
    left: clamp(36px,12vw,48px);
    right: auto;
    bottom: 126px;
    width: 112px;
    height: 14px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float {
    display: block !important;
    width: 36px;
    animation: none;
    transform: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-floats {
    display: block !important;
    z-index: 2;
    left: 58%;
    width: 42%;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-1 { top: auto; right: 3%; bottom: 142px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-2 { top: auto; left: 6%; right: auto; bottom: 142px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-3 { top: auto; right: 3%; bottom: 202px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-4 { top: auto; left: 6%; right: auto; bottom: 202px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-5 { top: auto; right: 3%; bottom: 262px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-6 { top: auto; left: 6%; right: auto; bottom: 262px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-7 { top: auto; right: 3%; bottom: 322px; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-8 { top: auto; left: 6%; right: auto; bottom: 322px; }
}

@media (max-width:420px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
    padding-inline: 16px;
  }
}

/* Calendar: the same 248px stub and 16px inset for every desktop ticket. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .section-head > p {
  max-width: 60ch !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-list {
  grid-template-columns: repeat(2,minmax(0,1fr));
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row {
  --nk-stub: 248px;
  grid-template-columns: minmax(0,1fr) var(--nk-stub);
  grid-template-rows: auto auto auto auto;
  min-height: 0;
  padding-block: 16px;
  row-gap: 4px;
  align-content: center;
  overflow: visible !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-copy {
  display: contents;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-copy > :not(.nk-upcoming-price) {
  grid-column: 1;
  min-width: 0;
  margin-block: 0;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-period { grid-row: 1; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec :is(.nk-upcoming-date,.nk-upcoming-details) { grid-row: 2; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-duration { grid-row: 3; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-holiday-note { grid-row: 4; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-details {
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip;
  max-width: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row .nk-upcoming-price {
  position: absolute;
  inset: 50% 16px auto auto;
  width: calc(var(--nk-stub) - 32px);
  height: 28px;
  transform: translateY(-36px);
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 0 !important;
  border: 0;
  font-size: 20px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row > .btn {
  grid-column: 2;
  grid-row: 1 / 5;
  align-self: center;
  justify-self: center;
  width: calc(var(--nk-stub) - 32px);
  max-width: calc(var(--nk-stub) - 32px);
  margin: 36px 0 0 !important;
  padding: 10px 8px;
  white-space: nowrap;
  font-size: 12px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer > .btn {
  margin: 0 !important;
}

/* One native video rail; real embeds retain a minimum usable width of 326px. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-hub-media-carousel .nk-shelf {
  display: flex;
  flex-wrap: nowrap;
  justify-content: flex-start;
  align-items: stretch;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  left: auto !important;
  transform: none !important;
  gap: 16px;
  min-width: 0;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-padding-inline: 1px;
  overscroll-behavior-x: contain;
  padding: 1px 1px 12px;
  scrollbar-width: thin;
  scrollbar-color: #B3C8D8 #24485F;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card:nth-child(n) {
  flex: 0 0 340px;
  width: 340px;
  min-width: 326px;
  margin: 0;
  scroll-snap-align: start;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed {
  position: relative;
  aspect-ratio: 9 / 16;
  height: auto !important;
  min-height: 0;
  border: 1px solid rgba(255,255,255,.08);
  background: #173447 !important;
  isolation: isolate;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed::before {
  z-index: 0;
  opacity: 1;
  visibility: visible;
  background: linear-gradient(105deg,transparent 35%,rgba(255,255,255,.035) 50%,transparent 65%) 0 0 / 200% 100%;
  animation: nk-media-skeleton 2.4s ease-in-out infinite !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card iframe {
  position: absolute;
  z-index: 1;
  inset: 0;
  width: 100% !important;
  min-width: 326px;
  height: 100% !important;
  transform: none !important;
  background: transparent !important;
}
@supports (scroll-marker-group:after) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf {
    scroll-marker-group: after;
  }
  .page-numeriklub-hub #ete .nk-shelf-card:nth-child(1) { --nk-reel-label: "Vidéo 1"; }
  .page-numeriklub-hub #ete .nk-shelf-card:nth-child(2) { --nk-reel-label: "Vidéo 2"; }
  .page-numeriklub-hub #ete .nk-shelf-card:nth-child(3) { --nk-reel-label: "Vidéo 3"; }
  .page-numeriklub-hub #ete .nk-shelf-card:nth-child(4) { --nk-reel-label: "Vidéo 4"; }
  html[lang="en"] .page-numeriklub-hub #ete .nk-shelf-card:nth-child(1) { --nk-reel-label: "Video 1"; }
  html[lang="en"] .page-numeriklub-hub #ete .nk-shelf-card:nth-child(2) { --nk-reel-label: "Video 2"; }
  html[lang="en"] .page-numeriklub-hub #ete .nk-shelf-card:nth-child(3) { --nk-reel-label: "Video 3"; }
  html[lang="en"] .page-numeriklub-hub #ete .nk-shelf-card:nth-child(4) { --nk-reel-label: "Video 4"; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf::scroll-marker-group {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 12px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card::scroll-marker {
    content: "" / var(--nk-reel-label,"Vidéo");
    width: 8px;
    height: 8px;
    border: 0;
    border-radius: 999px;
    background: #B3C8D8;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card::scroll-marker:target-current {
    background: #FFE936;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card::scroll-marker:focus-visible {
    outline: 2px solid #3CB7EB;
    outline-offset: 4px;
  }
}
@media (min-width:1200px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-hub-media-carousel {
    margin-inline: -48px;
  }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed::before {
    animation: none !important;
  }
}

/* Contact decoration never covers a social link, and never receives pointer events. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact > .nk-sec-deco {
  width: 96px !important;
  height: auto !important;
  left: 32px !important;
  bottom: 24px !important;
  opacity: .22 !important;
  z-index: 0 !important;
  pointer-events: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact > .container {
  position: relative;
  z-index: 1;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-whatsapp > strong > span {
  display: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 8px 14px;
  border: 1px solid rgba(179,200,216,.45);
  border-radius: 999px;
  box-shadow: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .prog-head .badge {
  padding: 10px 18px;
  font-size: 13px;
  color: #39556F !important;
}

@media (max-width:680px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-list {
    grid-template-columns: minmax(0,1fr);
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row {
    --nk-ticket-bottom: 108px;
    grid-template-columns: minmax(0,1fr);
    grid-template-rows: auto auto auto auto minmax(16px,1fr) 44px 64px;
    row-gap: 0;
    padding: 16px 16px 0;
    border-left-width: 1px;
    background:
      repeating-linear-gradient(90deg,rgba(21,49,74,.18) 0 5px,transparent 5px 10px) left 0 bottom var(--nk-ticket-bottom) / 100% 2px no-repeat,
      linear-gradient(0deg,var(--nk-ciel) var(--nk-ticket-bottom),#fff 0) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-copy > :not(.nk-upcoming-price) {
    margin: 0 0 6px !important;
    align-self: start;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-details {
    display: contents;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-details::after {
    content: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row .nk-upcoming-price {
    position: static;
    inset: auto;
    grid-column: 1;
    grid-row: 6;
    align-self: stretch;
    justify-content: flex-start;
    width: auto;
    height: auto;
    padding-top: 16px !important;
    transform: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row > .btn {
    grid-column: 1;
    grid-row: 7;
    width: 100%;
    max-width: none;
    margin: 0 0 16px !important;
    min-height: 48px;
    white-space: nowrap;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer {
    --nk-ticket-bottom: 80px;
    grid-template-rows: auto auto auto auto 16px 0 80px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-summer > .btn {
    margin: 16px 0 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::before,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::after {
    top: auto;
    bottom: calc(var(--nk-ticket-bottom) - 10px);
    clip-path: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::before {
    left: -11px;
    right: auto;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row::after {
    right: -11px;
    left: auto;
  }
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) {
    --nk-hub-bottom-bar: 64px;
    scroll-padding-bottom: calc(var(--nk-hub-bottom-bar) + env(safe-area-inset-bottom,0px));
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .nk-hub-campus-disclosure > summary::after {
    color: #0059CF !important;
  }
  html:has(.page-numeriklub-hub) .campaign-announcement {
    box-sizing: border-box;
    height: calc(var(--nk-hub-bottom-bar) + env(safe-area-inset-bottom,0px));
    padding-bottom: env(safe-area-inset-bottom,0px);
  }
  html:has(.page-numeriklub-hub) .campaign-announcement-inner {
    height: 100%;
  }
  html:has(.page-numeriklub-hub) .campaign-announcement-badge-link {
    position: relative;
    z-index: 3;
    display: flex;
    align-items: center;
    align-self: stretch;
    padding-right: 12px;
    background: #FFE936 !important;
  }
  html:has(.page-numeriklub-hub) .campaign-announcement-badge-link::after {
    content: "";
    position: absolute;
    inset: 0 auto 0 100%;
    width: 24px;
    background: linear-gradient(to right,#FFE936,transparent);
    pointer-events: none;
  }
  html:has(.page-numeriklub-hub) .campaign-announcement-badge {
    background: #FFE936 !important;
  }
  html:has(.page-numeriklub-hub) .campaign-announcement-viewport {
    min-width: 0;
    overflow: hidden;
  }
  html:has(.page-numeriklub-hub) #site-footer {
    padding-bottom: calc(var(--nk-hub-bottom-bar) + env(safe-area-inset-bottom,0px));
  }
}

/* UI C — lot 5: keep the native rail, without a second position indicator. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-hub-media-carousel .nk-shelf {
  scrollbar-width: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-hub-media-carousel .nk-shelf::-webkit-scrollbar,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-hub-media-carousel .nk-shelf::-webkit-scrollbar-button {
  display: none;
  width: 0;
  height: 0;
}

/* Reserve room below the social links for the complete decorative image. */
@media (min-width:1024px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#contact {
    padding-bottom: 160px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact > .nk-sec-deco {
    left: max(48px,calc((100% - 1200px) / 2 + 32px)) !important;
    bottom: 48px !important;
    height: 96px !important;
    object-fit: contain;
    transform: none !important;
    translate: none !important;
    rotate: none !important;
    animation: none !important;
    clip-path: none !important;
  }
}
@media (max-width:1023px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact > .nk-sec-deco {
    display: none !important;
  }
}

/* UI C — lot 10, point 65: visible by default, independent of title observers.
   View timelines resolve from the current scroll position even when a wheel
   jump skips the entry range. No-support/reduced-motion keeps the base state. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub
  :is(.section-head,.nk-orbit-card,.nk-hub-offer-card,.hub-fomo-banner,.nk-esprit,.nk-upcoming-row,#faq details.card,.campus,.nk-callback-form-card) {
  --nk-card-entry-start: 0%;
  opacity: 1;
  visibility: visible;
  translate: none;
  animation: none;
  transition: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .section-head {
  transform: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub
  :is(.nk-orbit-card,.nk-hub-offer-card,.nk-esprit,.nk-upcoming-row,#faq details.card,.campus):nth-child(2 of :is(.nk-orbit-card,.nk-hub-offer-card,.nk-esprit,.nk-upcoming-row,details.card,.campus)) {
  --nk-card-entry-start: 3%;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub
  :is(.nk-orbit-card,.nk-hub-offer-card,.nk-esprit,.nk-upcoming-row,#faq details.card,.campus):nth-child(3 of :is(.nk-orbit-card,.nk-hub-offer-card,.nk-esprit,.nk-upcoming-row,details.card,.campus)) {
  --nk-card-entry-start: 6%;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub
  :is(.nk-orbit-card,.nk-hub-offer-card,.nk-esprit,.nk-upcoming-row,#faq details.card,.campus):nth-child(n+4 of :is(.nk-orbit-card,.nk-hub-offer-card,.nk-esprit,.nk-upcoming-row,details.card,.campus)) {
  --nk-card-entry-start: 9%;
}
@keyframes nk-ui-c-card-entry {
  from { opacity: 0; translate: 0 16px; }
  to { opacity: 1; translate: 0 0; }
}
@media (prefers-reduced-motion:no-preference) {
  @supports (animation-timeline:view()) {
    /* Hidden overflow creates a non-scrolling local timeline. Clip decor
       without creating that scroll container, so entry tracks the page. */
    html:has(.page-numeriklub-hub) .page-numeriklub-hub
      > :is(#calendrier-sec,#faq,#lieux,#contact) {
      overflow: clip;
    }
    html:has(.page-numeriklub-hub) .page-numeriklub-hub
      :is(.section-head,.nk-orbit-card,.nk-hub-offer-card,.hub-fomo-banner,.nk-esprit,.nk-upcoming-row,#faq details.card,.campus,.nk-callback-form-card) {
      animation: nk-ui-c-card-entry auto var(--ease-out) both;
      animation-timeline: view();
      animation-range: entry var(--nk-card-entry-start) entry 35%;
    }
  }
}
/* A horizontal rail must never contain an invisible slide, including slides
   initially outside the viewport. Disable both observer and view reveals. */
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub
    :is(#ateliers .nk-orbit-card,#formats .nk-hub-offer-card,#esprit .nk-esprit,#ete .nk-shelf-card) {
    opacity: 1 !important;
    translate: none !important;
    animation: none !important;
    transition: none !important;
  }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub
    :is(.section-head,.nk-orbit-card,.nk-hub-offer-card,.hub-fomo-banner,.nk-esprit,.nk-upcoming-row,#faq details.card,.campus,.nk-callback-form-card) {
    opacity: 1 !important;
    translate: none !important;
    animation: none !important;
    transition: none !important;
  }
}

/* Fixed reel window: the iframe's header/footer lie outside the 9:16 crop.
   Cross-origin actions cannot be styled directly. Non-interactive iframe
   surfaces let wheel gestures scroll the host page; card captions/links
   remain outside the crop and keep their normal pointer/keyboard behavior. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed {
  --nk-ig-header-crop: 60px;
  aspect-ratio: 9 / 16;
  overflow: hidden;
  contain: paint;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed iframe {
  top: calc(-1 * var(--nk-ig-header-crop));
  bottom: auto;
  height: calc(100% + var(--nk-ig-header-crop) + 160px) !important;
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed::before {
  pointer-events: none;
}

/* UI C — lot 7. The strip is the scene's bottom reference, not viewport
   height: short/tall copy and FR/EN keep the same artwork handoff. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
  --nk-band-height: 80px;
  --nk-scene-width: calc(50vw - 24px);
  --nk-scene-height: calc(var(--nk-scene-width) * 1177 / 1400);
  --nk-copy-width: min(520px,calc(50vw - 100px));
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .container {
  min-height: calc(var(--nk-scene-height) + var(--nk-band-height)) !important;
  padding-bottom: 0 !important;
  z-index: 10;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .container
  > :is(.eyebrow,h1,.lead,.hero-reperes,.hero-cta,.hero-stats) {
  max-width: var(--nk-copy-width) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home h1 {
  font-size: clamp(46px,4.1vw,60px);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats {
  flex-wrap: wrap;
  margin-bottom: 28px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
  top: auto !important;
  bottom: calc(var(--nk-band-height) - 12px) !important;
  right: 24px !important;
  width: var(--nk-scene-width) !important;
  height: var(--nk-scene-height) !important;
  z-index: 1;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-art > img {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain;
  object-position: center bottom;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
  top: auto !important;
  right: calc(24px + var(--nk-scene-width) * .56) !important;
  bottom: calc(var(--nk-band-height) + 24px) !important;
  height: clamp(230px,25vw,330px) !important;
  z-index: 7 !important;
  opacity: 1 !important;
  mask: none !important;
  /* The original PNG has alpha .53 inside the trousers. Alpha transfer
     restores opacity without replacing/repainting the supplied artwork.
     Fully transparent cutout pixels stay transparent. */
  filter: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cfilter%20id%3D%22opaque%22%20color-interpolation-filters%3D%22sRGB%22%3E%3CfeComponentTransfer%3E%3CfeFuncA%20type%3D%22linear%22%20slope%3D%224%22%2F%3E%3C%2FfeComponentTransfer%3E%3C%2Ffilter%3E%3C%2Fsvg%3E#opaque") drop-shadow(0 8px 12px rgba(0,0,0,.3)) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > :is(.hero-bg,.hero-aurora) {
  z-index: 0 !important;
  pointer-events: none;
}
/* The former blurred ground ellipse was independent of the scene and could
   become a dark dot near the CTA as the hero resized. The rider has its own
   cutout shadow; no free-floating ground overlay is needed. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home::after,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-cta::before,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-cta::after,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-cta .btn-rdv::before,
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-cta .btn-rdv::after {
  display: none !important;
  content: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-cta .btn-rdv-ic {
  display: none !important;
}

/* Hub calendar: all territorial variants are readable without a selector. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-yc-day.nk-yc-stage.nk-yc-holiday {
  background-color: #0059CF;
  color: #fff;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-common {
  grid-column: 1 / -1;
  grid-template-rows: auto auto;
  min-height: 140px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-variants {
  grid-row: 2;
  margin: 8px 14px !important;
  display: grid;
  gap: 4px;
  color: #39556F;
  font-size: 15px;
  line-height: 1.55;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-variants p {
  margin: 0;
  overflow-wrap: anywhere;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-variants strong {
  color: inherit;
  font-weight: 800;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-dates-link {
  display: block;
  width: fit-content;
  margin-top: 6px;
  color: #39556F;
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 3px;
}
@media (max-width:680px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-copy > .nk-upcoming-variants {
    margin: 0 0 6px !important;
  }
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-month-holidays {
  margin-top: 8px;
  border-top: 1px solid var(--nk-trait-ctrl);
  padding-top: 6px;
  color: var(--nk-texte-2);
  font-size: 12px;
  line-height: 1.45;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-month-holidays p {
  margin: 4px 0;
}
@media (max-width:640px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-common {
    grid-template-columns: minmax(0,1fr);
    grid-template-rows: auto auto auto;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-common .nk-upcoming-price {
    position: static;
    grid-column: 1;
    grid-row: 3;
    width: auto;
    transform: none;
    margin: 8px 18px;
    justify-content: flex-start;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-common > .btn {
    grid-column: 1;
    grid-row: 4;
    width: calc(100% - 36px);
    max-width: none;
    margin: 4px 18px 0 !important;
  }
}

/* Six independent decorations follow the scene's arc. The seventh/eighth
   stay hidden; no decorative item can fall underneath the partner strip. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-floats {
  top: auto !important;
  bottom: calc(var(--nk-band-height) - 12px) !important;
  left: auto !important;
  right: 24px !important;
  width: var(--nk-scene-width) !important;
  height: var(--nk-scene-height) !important;
  z-index: 6 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float {
  width: clamp(40px,4.2vw,60px);
  right: auto;
  bottom: auto;
  animation: nk-ui-c-hero-float 5s ease-in-out infinite alternate;
  transform: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-1 { top: 4%; left: 72%; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-2 { top: 5%; left: 9%; animation-delay: -.8s; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-3 { top: 8%; left: 37%; animation-delay: -1.6s; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-4 { top: 38%; left: 86%; animation-delay: -2.4s; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-5 { top: 62%; left: 82%; animation-delay: -3.2s; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-6 { top: 79%; left: 63%; animation-delay: -4s; }
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home :is(.hero-float-7,.hero-float-8) {
  display: none !important;
}
@keyframes nk-ui-c-hero-float {
  from { translate: 0 0; }
  to { translate: 0 -6px; }
}

/* UI C — lot 8. All layout/paint changes stay on the approved hub. */
@media (min-width:1024px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats {
    display: grid !important;
    grid-template-columns: repeat(3,max-content);
    width: max-content;
    gap: 8px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats > .hero-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0;
    padding: 8px 14px !important;
    height: 48px !important;
    min-height: 48px !important;
    white-space: nowrap;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat-value {
    font-size: 16px !important;
    line-height: 16px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stat-label {
    font-size: 13px !important;
    line-height: 14px;
  }
}

/* A still-loading CSS mask paints transparent. Sample an entirely opaque
   patch of the SAME planet asset (native x680–880, y850–1000, scaled 6×).
   This gates the character/decorations on the planet bitmap, without a
   timer, a hero markup change, or an image-load script. Once ready, the
   sampled mask is solid over each whole box: no silhouette is cropped. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > :is(.hero-rider,.hero-floats) {
  mask: url("/assets/numeriklub/hero-planet-2d.webp") -4080px -5100px / 8400px 7062px no-repeat !important;
  mask-mode: alpha;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
  opacity: 1 !important;
  visibility: visible !important;
  filter: none !important;
  animation: none !important;
  transition: none !important;
}

html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .marquee-track.nk-partners-loop {
  display: flex;
  gap: 0;
  animation: nk-ui-c-partners-loop 70s linear infinite !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-partners-group {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 32px;
  padding-right: 32px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-partners-group .hero-marquee-logo {
  width: 140px;
  flex: 0 0 140px;
}
@keyframes nk-ui-c-partners-loop {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-partners-group .hero-marquee-logo {
    width: 96px;
    flex-basis: 96px;
  }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-partners-loop {
    animation: none !important;
  }
}

/* The four current embeds expose 4:5 media after a fixed 54px header.
   A 144%-wide provider frame makes that media cover the 9:16 window,
   with a small safe media-only crop. Its footer stays below the window.
   Keep provider width >=326px, including on 320px phones. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card {
  position: relative;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed {
  container-type: inline-size;
  aspect-ratio: 9 / 16;
  border: 0;
  overflow: hidden;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed iframe {
  top: -56px !important;
  bottom: auto !important;
  left: 50% !important;
  right: auto !important;
  width: 144% !important;
  min-width: 326px !important;
  height: 850px !important;
  transform: translateX(-50%) !important;
  transform-origin: top center;
  pointer-events: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-reel-open {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: block;
  border-radius: 16px;
  cursor: pointer;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-reel-open:focus-visible {
  outline: 3px solid var(--nk-lagon);
  outline-offset: -4px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .ig-embed::after {
  content: "▶";
  position: absolute;
  z-index: 3;
  left: 50%;
  top: 50%;
  translate: -50% -50%;
  display: grid;
  place-items: center;
  width: 60px;
  height: 60px;
  padding-left: 4px;
  border: 2px solid rgba(255,255,255,.8);
  border-radius: 50%;
  background: rgba(11,30,46,.85);
  color: #fff;
  font-size: 24px;
  opacity: 0;
  transition: opacity .2s ease;
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card:is(:hover,:focus-within) .ig-embed::after {
  opacity: 1;
}

/* No decorative planet can cross the Esprit text/cards at any width. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit > .nk-sec-deco {
  display: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta {
  /* The section's flex container already supplies a 24px row gap. */
  margin-top: 8px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-theme-carousel {
  margin-bottom: 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta .btn {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 48px !important;
  min-height: 48px !important;
  padding-block: 8px !important;
  border-radius: 12px !important;
}
@media (min-width:681px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual {
    grid-template-rows: minmax(0,1fr);
    align-items: center;
    align-content: center;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-copy {
    display: grid;
    grid-column: 1;
    grid-row: 1 / -1;
    align-self: center;
    align-content: center;
    gap: 6px;
    margin-block: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-copy > * {
    grid-row: auto;
    align-self: auto;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-details {
    display: block !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec .nk-upcoming-row-annual > .btn {
    grid-row: 1;
  }
}

/* Blue loading surfaces instead of white frames. Request the decorative
   replacement early in an invisible 1px background, while the real image
   keeps its accessible/native markup and fades on entry to the viewport. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats :is(#format-grandes,#format-surmesure) .ic-chip {
  background: #e4f3fb !important;
  overflow: clip !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats,
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats :is(#format-grandes,#format-surmesure) {
  overflow: clip !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats :is(#format-grandes,#format-surmesure) .ic-chip::after {
  content: "";
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #format-grandes .ic-chip::after {
  background-image: url("/assets/numeriklub/ui-c/hub/grandes-vacances.webp");
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #format-surmesure .ic-chip::after {
  background-image: url("/assets/numeriklub/ui-c/hub/sur-mesure.webp");
}
@keyframes nk-ui-c-formula-image {
  from { opacity: 0; }
  to { opacity: 1; }
}
@supports (animation-timeline:view()) {
  @media (prefers-reduced-motion:no-preference) {
    html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats :is(#format-grandes,#format-surmesure) .ic-chip img {
      animation: nk-ui-c-formula-image .4s ease-out both;
      animation-timeline: view();
      animation-range: entry 0% entry 60%;
    }
  }
}
@media (max-width:760px) and (prefers-reduced-motion:no-preference) {
  @supports (animation-timeline:view()) {
    html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats :is(#format-grandes,#format-surmesure) .ic-chip img {
      animation-timeline: view(inline);
    }
  }
}

/* The moving track cannot serve as its own clipping viewport. Fixed covers
   protect the gutter/label and supply a stationary fade to their right. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
  --nk-label-width: 180px;
  box-sizing: border-box;
  display: grid;
  grid-template-columns: var(--nk-label-width) minmax(0,1fr);
  height: var(--nk-band-height);
  min-height: 0;
  padding: 12px 40px;
  margin-top: auto !important;
  overflow: hidden;
  isolation: isolate;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee::before {
  content: "";
  position: absolute;
  z-index: 2;
  inset: 0 auto 0 0;
  width: calc(40px + var(--nk-label-width) + 48px);
  background: linear-gradient(to right,#0B1E2E calc(100% - 48px),transparent);
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-hero-marquee-label {
  z-index: 3;
  max-width: none;
  width: 100%;
  min-width: 0;
  white-space: nowrap;
  font-size: 11px;
  letter-spacing: .08em;
  line-height: 1.2;
  padding-right: 24px;
  background: #0B1E2E;
  opacity: 1 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .marquee-track {
  position: relative;
  z-index: 1;
  width: max-content !important;
  gap: 32px;
  align-items: center;
  mask: none !important;
  overflow: visible;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .hero-marquee-logo {
  flex: 0 0 auto;
  height: 40px;
  width: auto;
  max-width: 180px;
  object-fit: contain;
}

/* Above-the-fold promotion is immediate, on every width. Request the same
   existing photo through CSS rather than waiting for the lazy <img>; its
   HTML attributes, content and source remain untouched. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
  opacity: 1 !important;
  translate: none !important;
  animation: none !important;
  transition: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-media {
  background: #fff url("/assets/numeriklub/media/collaborative-workshop.webp") center / cover no-repeat !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub .hub-fomo-media img {
  opacity: 1 !important;
  visibility: visible !important;
  filter: none !important;
  animation: none !important;
  transition: none !important;
}

@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
    --nk-band-height: 64px;
    --nk-scene-width: calc(100vw - 48px);
    --nk-copy-width: 100%;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .container {
    min-height: 0 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats {
    margin-bottom: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home h1 {
    font-size: 32px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
    margin-top: calc(var(--nk-scene-height) + 48px) !important;
    grid-template-columns: minmax(0,1fr);
    grid-template-rows: 14px 28px;
    gap: 6px;
    padding: 7px 16px;
    height: 64px;
    min-height: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-hero-marquee-label {
    height: 14px;
    padding: 0;
    line-height: 14px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee::before {
    inset: 0 0 auto;
    width: 100%;
    height: 28px;
    background: #0B1E2E;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee::after {
    content: "";
    position: absolute;
    z-index: 2;
    inset: 28px 0 0;
    background: linear-gradient(to right,#0B1E2E,transparent 32px,transparent calc(100% - 32px),#0B1E2E);
    pointer-events: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .hero-marquee-logo {
    height: 28px;
    max-width: 128px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
    left: 32px !important;
    right: auto !important;
    bottom: calc(var(--nk-band-height) + 14px) !important;
    height: min(52vw,200px) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float {
    width: 32px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-1 { top: 2%; left: 68%; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-2 { top: -14%; left: 9%; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-3 { top: 32%; left: 85%; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float-5 { top: 73%; left: 68%; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home :is(.hero-float-4,.hero-float-6) {
    display: none !important;
  }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-float {
    animation: none;
    translate: none;
  }
}

/* UI C — lot 9. Hub-only paint and responsive finishing; no HTML/JS changes. */
@media (min-width:761px) {
  /* The eager HTML image uses decoding=async. Its complete flag does not
     guarantee that Chrome has painted it after the splash reveals #app.
     Paint the identical cached bitmap as a CSS background in the same box,
     independently of that replaced-image decode. A stable composited layer
     avoids waiting for a scroll invalidation. Geometry and art are unchanged. */
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
    background: url("/assets/numeriklub/hero-planet-2d.webp") center bottom / contain no-repeat;
    content-visibility: visible !important;
    contain: none !important;
    will-change: auto !important;
    backface-visibility: hidden;
    transform: translate3d(0,0,0) !important;
  }
}

@media (max-width:680px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
    --nk-band-height: 76px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
    display: block !important;
    height: 76px !important;
    min-height: 76px !important;
    padding: 0 !important;
    overflow: hidden;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-hero-marquee-label {
    position: absolute;
    inset: 9px 16px auto;
    z-index: 3;
    display: block;
    width: auto;
    max-width: none;
    height: 14px;
    padding: 0;
    background: transparent;
    text-align: center;
    font-size: 10px;
    line-height: 14px;
    letter-spacing: .1em;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .marquee-track.nk-partners-loop {
    position: absolute !important;
    inset: 32px auto auto 0;
    width: max-content !important;
    height: 34px;
    overflow: visible !important;
    mask-image: none !important;
    -webkit-mask-image: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-partners-group,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee .nk-partners-group .hero-marquee-logo {
    height: 34px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee::before {
    display: none !important;
    content: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .hero-marquee::after {
    inset: 28px 0 0;
    height: auto;
    background: linear-gradient(to right,#0B1E2E,transparent 24px,transparent calc(100% - 24px),#0B1E2E);
    pointer-events: none;
  }
}

@media (max-width:1023px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub
    :is(#esprit .grid,#formats .nk-hub-offer-grid,#ateliers .nk-orbit-ring) {
    scrollbar-width: none !important;
    -ms-overflow-style: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub
    :is(#esprit .grid,#formats .nk-hub-offer-grid,#ateliers .nk-orbit-ring)::-webkit-scrollbar,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub
    :is(#esprit .grid,#formats .nk-hub-offer-grid,#ateliers .nk-orbit-ring)::-webkit-scrollbar-button {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
  }
}

@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card:nth-child(n) {
    /* Keep the caption inside the 70vh card budget, without sacrificing the
       9:16 media crop on short screens. The next card remains visible. */
    --nk-reel-width: min(78%,calc((70vh - 80px) * 9 / 16));
    flex: 0 0 var(--nk-reel-width) !important;
    width: var(--nk-reel-width) !important;
    min-width: 0 !important;
    max-width: 78% !important;
    max-height: 70vh;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf-card .ig-embed {
    flex-shrink: 0;
    max-height: calc(70vh - 80px);
  }
}

.page-numeriklub-lp img[src$="/hero-planet-2d.webp"] {
  content: url("/assets/numeriklub/ui-c/hero-planet-2d-cutout.webp");
}
.page-numeriklub-lp img[src$="/hero-planet-3d.webp"] {
  content: url("/assets/numeriklub/ui-c/hero-planet-2d-cutout.webp");
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > :is(.hero-rider,.hero-floats) {
  mask-image: url("/assets/numeriklub/ui-c/hero-planet-2d-cutout.webp") !important;
}
@media (min-width:761px) {
  .page-numeriklub-lp.page-numeriklub-hub > .page-hero-home > .hero-art {
    background-image: url("/assets/numeriklub/ui-c/hero-planet-2d-cutout.webp") !important;
  }
}

/* LP mobile: reserve a complete scene below the copy and badges. */
@media (max-width:760px) {
  .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home {
    --nk-lp-island-height: calc((100vw - 40px) * 1177 / 1400);
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .container {
    padding-bottom: calc(var(--nk-lp-island-height) + 100px) !important;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-art {
    top: auto !important;
    bottom: 76px !important;
    left: 20px !important;
    right: auto !important;
    width: calc(100% - 40px) !important;
    max-width: calc(100% - 40px) !important;
    height: var(--nk-lp-island-height) !important;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-rider {
    top: auto !important;
    bottom: 100px !important;
    right: 40px !important;
  }
}

/* Cutouts only: shared originals, hero boxes and conversion flows stay intact. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
  background-image: url("/assets/numeriklub/ui-c/hero-planet-2d-cutout.webp") !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp) > .page-hero-home > .hero-art {
  /* The supplied drawing genuinely ends at the bottom of its native canvas.
     Fade the last 12%, including the brush canvas and both interactive states. */
  mask-image: linear-gradient(to bottom,#000 88%,transparent 100%);
  mask-mode: alpha;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp) > .page-hero-home > .hero-art > :is(img,.hero-flip-rev) {
  content: url("/assets/numeriklub/ui-c/hero-planet-2d-cutout.webp");
  object-fit: contain;
}
/* Fail open if a fast scroll skips an observer. Entry remains a 550ms
   fade/translation, triggered by the existing is-in class; no JS changes. */
@property --nk-ui-c-image-alpha {
  syntax: "<number>";
  inherits: false;
  initial-value: 1;
}
@keyframes nk-ui-c-image-entry {
  from { --nk-ui-c-image-alpha: 0; }
  to { --nk-ui-c-image-alpha: 1; }
}
@keyframes nk-ui-c-title-entry {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: none; }
}
@keyframes nk-ui-c-card-entry {
  from { opacity: 0; transform: translateY(20px); }
  to { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion:no-preference) {
  /* A fade, not a floating transform. The typed property also works where
     the existing mobile/base-image rules deliberately force opacity:1. */
  html:has(.page-numeriklub-lp) .page-numeriklub-lp > .page-hero-home > .hero-art,
  .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-rider,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
    animation: nk-ui-c-image-entry .55s var(--ease-out) !important;
    filter: opacity(var(--nk-ui-c-image-alpha)) !important;
  }
  .page-numeriklub-lp img[src$="/scenes/annuels-room.webp"] {
    animation: nk-ui-c-image-entry .55s var(--ease-out);
    filter: opacity(var(--nk-ui-c-image-alpha));
  }
  .page-numeriklub-lp [data-gp]:not(.is-in) img[src$="/scenes/annuels-room.webp"] {
    animation-name: none;
  }
  .page-numeriklub-lp [data-gp].is-in img[src$="/scenes/annuels-room.webp"] {
    animation-name: nk-ui-c-image-entry;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-blur-reveal]:not(.is-in) {
    opacity: 1;
    filter: none;
    transform: none;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-blur-reveal].is-in {
    animation: nk-ui-c-title-entry .55s var(--ease-out) backwards;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-gp].gp-anim:not(.is-in) :is(.card,.prose),
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-gp].gp-anim:not(.is-in) > .container > .lead {
    opacity: 1;
    filter: none;
    transform: none;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-gp].gp-anim.is-in :is(.card,.prose),
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-gp].gp-anim.is-in > .container > .lead {
    animation: nk-ui-c-card-entry .55s var(--ease-out) backwards;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-gp].gp-anim.is-in :is(.grid,.steps,.info-grid,.faq) > :nth-child(2) { animation-delay: .07s; }
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-gp].gp-anim.is-in :is(.grid,.steps,.info-grid,.faq) > :nth-child(3) { animation-delay: .14s; }
  :is(.page-numeriklub-hub,.page-numeriklub-lp) [data-gp].gp-anim.is-in :is(.grid,.steps,.info-grid,.faq) > :nth-child(n+4) { animation-delay: .21s; }
}

/* Approved UI-C image substitutions. Canonical data also uses these paths
   so the replaced originals are never requested, including reservation modals. */
.page-numeriklub-lp img[src$="/scenes/academy-rooms.webp"] {
  content: url("/assets/numeriklub/ui-c/hub/sur-mesure.webp");
}
.page-numeriklub-lp img[src$="/scenes/academy-rooms-cutout.webp"] {
  content: url("/assets/numeriklub/ui-c/hub/sur-mesure-cutout.webp");
}
.page-numeriklub-hub #ateliers .nk-orbit-img:is(
  [src$="/scenes/academy-rooms-cutout.webp"],
  [src$="/scenes/academy-rooms.webp"]
) {
  content: url("/assets/numeriklub/ui-c/scenes/academy-rooms-flat.webp");
}
.page-numeriklub-hub #ateliers .nk-orbit-img {
  filter: none;
}
.page-numeriklub-hub #ateliers .nk-orbit-stage::before {
  content: none;
}
.page-numeriklub-lp img[src$="/annuels-scene.webp"] {
  content: url("/assets/numeriklub/ui-c/scenes/annuels-room-cutout.webp");
}
.page-numeriklub-lp img[src$="/propositions/parcours-annuel.webp"] {
  content: url("/assets/numeriklub/ui-c/hub/annuel.webp");
}
.page-numeriklub-lp img[src$="/propositions/petites-vacances.webp"] {
  content: url("/assets/numeriklub/ui-c/scenes/petites-vacances.webp");
}
.page-numeriklub-lp img[src$="/propositions/robotique.webp"] {
  content: url("/assets/numeriklub/ui-c/ateliers/robotique.webp");
}
.page-numeriklub-lp img[src$="/propositions/modelisation-3d.webp"] {
  content: url("/assets/numeriklub/ui-c/scenes/coding.webp");
}
.page-numeriklub-lp img[src$="/propositions/projets-finis.webp"] {
  content: url("/assets/numeriklub/ui-c/scenes/world.webp");
}
/* Transparent hero/decorative placements use the derived alpha variants;
   framed covers keep the supplied illustration's original background. */
.page-numeriklub-lp :is(.hero-art,.nk-offer-decorations img)[src$="/ui-c/hub/annuel.webp"] {
  content: url("/assets/numeriklub/ui-c/hub/annuel-cutout.webp");
  object-fit: contain;
  object-position: bottom;
}
.page-numeriklub-lp .hero-art[src$="/ui-c/hub/sur-mesure.webp"] {
  content: url("/assets/numeriklub/ui-c/hub/sur-mesure-cutout.webp");
  object-fit: contain;
  object-position: bottom;
}
.page-numeriklub-lp :is(.nk-section-side-visual,.nk-offer-decorations) img[src*="/ui-c/"] {
  object-fit: contain;
}
.page-numeriklub-lp :is(.prog-cover,.nk-lp-theme-cover) img[src*="/ui-c/"] {
  object-fit: cover;
  object-position: center;
}
.page-numeriklub-lp :is(.prog-cover,.nk-lp-theme-cover):has(img[src$="/ui-c/hub/sur-mesure.webp"]) {
  height: auto;
  aspect-ratio: 1430 / 1100;
}
.page-numeriklub-lp .nk-lp-theme-cover:has(img[src$="/ui-c/ateliers/robotique.webp"]) {
  height: auto;
  aspect-ratio: 1;
}
.page-numeriklub-lp .nk-lp-theme-cover:has(img[src$="/ui-c/scenes/coding.webp"]) {
  height: auto;
  aspect-ratio: 1452 / 1083;
}
.page-numeriklub-lp .nk-lp-theme-cover:has(img[src$="/ui-c/scenes/world.webp"]) {
  height: auto;
  aspect-ratio: 1448 / 1086;
}

/* Static LP mascot: retain the original 760×1018 box and ground contact.
   The supplied flat has its lowest opaque point 71px left and 11px higher. */
.page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-rider {
  aspect-ratio: 760 / 1018;
  transform: rotate(var(--rot)) scaleX(var(--rider-flip));
  pointer-events: none;
}
.page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-rider > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: bottom;
  transform: translate(9.342105263%,1.080550098%);
}
.page-numeriklub-lp[data-page="/lp/numeriklub"] #pourquoi .nk-section-side-visual img {
  aspect-ratio: 760 / 1075;
  object-fit: contain;
  object-position: bottom;
}
@media (prefers-reduced-motion:reduce) {
  .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-rider {
    animation: none !important;
  }
}

/* Hub ateliers — airy, in-flow orbit. Keep the scene's supplied 1536×672
   composition intact; the cards flank it in normal grid flow, so expansion
   grows the row rather than colliding with the illustration or its copy. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers {
  /* Clip section decoration without creating a non-scrolling view timeline. */
  overflow: clip;
}
@property --nk-orbit-float {
  syntax: "<length>";
  inherits: false;
  initial-value: 0px;
}
@property --nk-orbit-entry-progress {
  syntax: "<number>";
  inherits: false;
  initial-value: 1;
}

@keyframes nk-orbit-card-float {
  0%, 100% { --nk-orbit-float: -6px; }
  50% { --nk-orbit-float: 6px; }
}
@keyframes nk-orbit-card-entry {
  /* Individual translate composes with the static rotation and pointer tilt.
     Keep every card painted, including during fast scroll jumps. */
  from { --nk-orbit-entry-progress: 0; opacity: .75; translate: 0 14px; }
  to { --nk-orbit-entry-progress: 1; opacity: 1; translate: 0 0; }
}

html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
  width: 100%;
  max-width: 620px;
  margin: 0 auto;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage .nk-orbit-img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1536 / 672;
  object-fit: contain;
  object-position: center;
}

@media (min-width: 1181px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(400px,2.1fr) minmax(0,1fr);
    gap: clamp(18px,2vw,30px);
    row-gap: 44px;
    align-items: stretch;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
    grid-column: 2;
    grid-row: 1 / span 4;
    align-self: center;
    width: 100%;
    max-width: none;
    margin: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-theme-carousel {
    display: grid;
    grid-column: 1 / -1;
    grid-row: 1 / span 4;
    grid-template-columns: subgrid;
    grid-template-rows: subgrid;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring {
    display: contents;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-carousel-nav {
    display: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
    grid-column: 1;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(1) { grid-column: 1; grid-row: 1; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(2) { grid-column: 3; grid-row: 1; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(3) { grid-column: 1; grid-row: 2; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(4) { grid-column: 3; grid-row: 2; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(5) { grid-column: 1 !important; grid-row: 3; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(6) { grid-column: 3; grid-row: 3; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(7) { grid-column: 1; grid-row: 4; }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
    --nk-orbit-rest-y: -16px;
    --nk-orbit-rest-rotation: -1.2deg;
    --nk-orbit-float-duration: 6.2s;
    --nk-orbit-float-delay: -1.1s;
    transform: translateY(calc(var(--lift,0px) + var(--nk-orbit-rest-y) + var(--nk-orbit-float,0px)))
      rotate(var(--nk-orbit-rest-rotation))
      rotateX(clamp(-1.5deg,var(--rx,0deg),1.5deg))
      rotateY(clamp(-1.5deg,var(--ry,0deg),1.5deg)) !important;
    animation: nk-orbit-card-entry .55s var(--ease-out,ease) backwards,
      nk-orbit-card-float var(--nk-orbit-float-duration) ease-in-out infinite !important;
    transition: transform .35s var(--ease,ease), box-shadow .35s var(--ease,ease);
    box-shadow: 0 10px 24px rgba(3,20,34,.24), 0 2px 6px rgba(3,20,34,.14) !important;
    will-change: transform;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(2n) {
    --nk-orbit-rest-y: 12px;
    --nk-orbit-rest-rotation: 1.35deg;
    --nk-orbit-float-delay: -3.4s;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(3n) {
    --nk-orbit-rest-y: -8px;
    --nk-orbit-rest-rotation: -.8deg;
    --nk-orbit-float-delay: -5.1s;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(4n) {
    --nk-orbit-rest-y: 12px;
    --nk-orbit-rest-rotation: .7deg;
    --nk-orbit-float-delay: -2.2s;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(6) {
    --nk-orbit-rest-y: 12px;
    --nk-orbit-rest-rotation: .9deg;
    --nk-orbit-float-delay: -4.6s;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(7) {
    --nk-orbit-rest-y: -8px;
    --nk-orbit-rest-rotation: -.6deg;
    --nk-orbit-float-delay: -5.8s;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(5) {
    --nk-orbit-float-delay: -2.8s;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
    animation-delay: 0s, var(--nk-orbit-float-delay) !important;
  }
  @supports (animation-timeline: view()) {
    @media (prefers-reduced-motion: no-preference) {
      html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
        animation: nk-orbit-card-entry auto var(--ease-out,ease) both,
          nk-orbit-card-float var(--nk-orbit-float-duration) ease-in-out infinite !important;
        animation-timeline: view(), auto !important;
        animation-range: entry var(--nk-card-entry-start,0%) entry 35%, normal !important;
        animation-delay: 0s, var(--nk-orbit-float-delay) !important;
      }
    }
  }
}

html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-carousel-nav {
  display: none;
}

@media (max-width: 760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit {
    display: flex;
    flex-direction: column;
    gap: 20px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
    order: -1;
    width: 100%;
    max-width: 620px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage .nk-orbit-img {
    height: auto;
    aspect-ratio: 1536 / 672;
    object-fit: contain;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-theme-carousel {
    display: block;
    width: 100%;
    overflow: visible;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-carousel-nav {
    display: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring {
    display: grid;
    grid-template-columns: minmax(0,1fr);
    gap: 14px;
    width: 100%;
    overflow: visible;
    scroll-snap-type: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring .nk-orbit-card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring .nk-orbit-card:nth-child(n) {
    position: static;
    width: 100%;
    min-width: 0;
    grid-column: auto;
    grid-row: auto;
    flex-basis: auto;
    margin: 0;
    --nk-orbit-rest-y: 0px;
    --nk-orbit-rest-rotation: 0deg;
    --nk-orbit-float: 0px;
    transform: none !important;
    animation: none !important;
    transition: box-shadow .2s ease;
    will-change: auto;
  }
  @media (prefers-reduced-motion: no-preference) {
    html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring .nk-orbit-card:nth-child(n) {
      /* Older rail rules force opacity/translate. Animate a typed progress
         instead, without restoring invisible slides or a continuous float. */
      transform: translateY(calc((1 - var(--nk-orbit-entry-progress)) * 14px)) !important;
      filter: opacity(calc(.75 + .25 * var(--nk-orbit-entry-progress))) !important;
    }
    html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers[data-gp].is-in .nk-orbit-card {
      animation: nk-orbit-card-entry .55s var(--ease-out,ease) backwards !important;
    }
    @supports (animation-timeline: view()) {
      html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring .nk-orbit-card:nth-child(n) {
        /* Only the entry reveal: never the desktop continuous float. */
        animation: nk-orbit-card-entry auto var(--ease-out,ease) both !important;
        animation-timeline: view() !important;
        animation-range: entry var(--nk-card-entry-start,0%) entry 35% !important;
      }
    }
  }
}

@media (prefers-reduced-motion: reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
    --nk-orbit-float: 0px;
    transform: none !important;
    translate: none !important;
    animation: none !important;
    transition: none !important;
    will-change: auto;
  }
}

/* Preserve the square source artwork's proportions inside a native panoramic
   transparent canvas: contain cannot undo stretching baked into an image. */
.page-numeriklub-hub #ateliers .nk-orbit-img {
  content: url("/assets/numeriklub/ui-c/scenes/academy-rooms-proportional.webp");
}
.page-numeriklub-hub #ateliers .nk-orbit-stage {
  /* Crop only the transparent side margins of the panoramic canvas. The
     architectural drawing is uniformly scaled, not squeezed to fill it. */
  overflow: hidden;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage .nk-orbit-img {
  width: 200%;
  max-width: none;
  margin-left: 0;
  height: auto;
  aspect-ratio: 1536 / 672;
  object-fit: contain;
}

/* Edge-only, white-matte decontamination; the white interior details remain
   opaque. The existing bottom mask remains because the source is truncated. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
  background-image: url("/assets/numeriklub/ui-c/hero-planet-2d-clean-cutout.webp") !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) > .page-hero-home > .hero-art:is(img) {
  content: url("/assets/numeriklub/ui-c/hero-planet-2d-clean-cutout.webp");
  /* An img already paints the cutout; a second background copy would show
     through its transparent pixels and create apparent edge artifacts. */
  background-image: none !important;
}

/* Neutral objects, not characters. Keep both mascot illustrations unchanged.
   Match shared and UI-C source filenames without changing content or JS. */
:is(.page-numeriklub-hub,.page-numeriklub-lp) img[src$="/floats/controller.webp"] {
  content: url("/assets/numeriklub/ui-c/floats/controller-faceless.webp");
}
:is(.page-numeriklub-hub,.page-numeriklub-lp) img[src$="/floats/rocket.webp"] {
  content: url("/assets/numeriklub/ui-c/floats/rocket-faceless.webp");
}
:is(.page-numeriklub-hub,.page-numeriklub-lp) img[src$="/icons/gamepad.webp"] {
  content: url("/assets/numeriklub/ui-c/icons/gamepad-faceless.webp");
}
:is(.page-numeriklub-hub,.page-numeriklub-lp) img[src$="/icons/rocket.webp"] {
  content: url("/assets/numeriklub/ui-c/icons/rocket-faceless.webp");
}
:is(.page-numeriklub-hub,.page-numeriklub-lp) img[src$="/icons/esport.webp"] {
  content: url("/assets/numeriklub/ui-c/icons/esport-faceless.webp");
}

/* Hub partner strip: logos only, full bleed, with stationary edge fades.
   Clip its moving content, not the hero's block axis or the outer shadow. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
  overflow: clip visible !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .container {
  min-height: 0 !important;
  overflow: visible;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats {
  margin-bottom: 0 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
  --nk-label-width: 0px;
  display: block !important;
  height: var(--nk-band-height) !important;
  min-height: var(--nk-band-height) !important;
  margin-top: 28px !important;
  padding: 20px 0 !important;
  overflow: clip !important;
  mask: none !important;
  box-shadow: 0 16px 28px rgba(0,0,0,.3) !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee::before {
  content: none !important;
  display: none !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee::after {
  content: "";
  display: block;
  position: absolute;
  inset: 0 !important;
  height: auto;
  z-index: 2;
  background: linear-gradient(90deg,#0B1E2E,transparent clamp(24px,4vw,56px),
    transparent calc(100% - clamp(24px,4vw,56px)),#0B1E2E);
  pointer-events: none;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home
  .hero-marquee .marquee-track.nk-partners-loop {
  position: relative !important;
  inset: auto !important;
  height: 40px;
  overflow: visible !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
  margin-bottom: 32px;
}
@media (min-width:761px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
    height: min(var(--nk-scene-height),calc(100% - var(--nk-band-height) - 12px)) !important;
    object-fit: contain;
    object-position: center bottom;
  }
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home {
    --nk-band-height: 64px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-stats {
    /* Reserve the intact scene before the stats, rather than between stats
       and strip. CTA → illustration → stats → logos remains in normal flow. */
    margin-top: calc(var(--nk-scene-height) + 32px) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home .hero-marquee {
    margin-top: 20px !important;
    padding-block: 15px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home
    .hero-marquee .marquee-track.nk-partners-loop {
    height: 34px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-art {
    bottom: calc(var(--nk-band-height) + 80px) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-rider {
    bottom: calc(var(--nk-band-height) + 104px) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home > .hero-floats {
    /* The decorative objects belong to the illustration, not the stats row. */
    bottom: calc(var(--nk-band-height) + 80px) !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
    margin-bottom: 24px;
  }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .page-hero-home
    .hero-marquee .marquee-track.nk-partners-loop {
    animation: none !important;
  }
}

/* Global Numériklub UI audit.
   Surface-local colors: root theme aliases must not strand pale text on
   independently light cards. Forms, booking dialogs and clickable card
   geometry are deliberately excluded. Approved hero/orbit/reveal rules above
   remain the source of truth. */
:is(.page-numeriklub-hub,.page-numeriklub-lp) {
  --nk-audit-section-space: 80px;
  --nk-audit-card-space: 24px;
  --nk-audit-h2: 48px;
  --nk-audit-h3: 22px;
}

/* P1 — text against the actual surface, in both global themes. */
html:has(.page-numeriklub-lp) .page-numeriklub-lp > .page-hero
  :is(.lead,.hero-reperes,.hero-stat-label) {
  color: #F4F8FB !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero .eyebrow {
  color: #91D9FA;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub
  #formats .nk-hub-offer-dates .eyebrow {
  color: #0059CF;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub
  #lieux .campus-map-directions::after {
  color: #39556F;
}
.page-nk-lot4 > .section {
  --nk-lot4-ink: var(--text);
  --nk-lot4-muted: var(--text-secondary);
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  .section-head .num {
  color: var(--text-secondary);
}
.page-nk-lot4 :is(.nk-lot4-facts article,.nk-lot4-compare-card,
  .nk-lot4-territory,.nk-lot4-tabs,.nk-lot4-final-outcome) {
  --nk-lot4-ink: #0E2438;
  --nk-lot4-muted: #39556F;
  color: #0E2438;
}
.page-nk-lot4 :is(.nk-lot4-facts a,.nk-lot4-price-list span) {
  color: #0E2438;
}
.page-nk-lot4 :is(.nk-lot4-price-list strong,.nk-lot4-theme-links a,
  .nk-lot4-theme-links a span) {
  color: #0E2438;
}
.page-nk-lot4 .nk-lot4-dayline p {
  color: var(--text-secondary);
}
/* These are static information cards, not offer links or floating cards. */
html:has(.page-numeriklub-lp) .page-nk-lot4
  :is(.card.prog,.card.info-item,.card.campus,.faq-item) {
  --text: #0E2438;
  --text-secondary: #39556F;
  --text-muted: #39556F;
  --heading: #0E2438;
  --ink: #0E2438;
  --muted: #39556F;
  --surface: #FFFFFF;
  --surface-raised: #FFFFFF;
  --elevation: #FFFFFF;
  background: #FFFFFF !important;
  color: #0E2438;
}
html:has(.page-numeriklub-lp) .page-nk-lot4
  :is(.card.prog h3,.card.prog .card-body,.card.info-item .k,
    .card.info-item .v,.card.campus h4,.card.campus .role,
    .card.campus address,.card.campus address a,.faq-item summary,
    .faq-item summary span,.faq-item p) {
  color: #0E2438;
}
.page-nk-lot4 .nk-periodes-table {
  background: #FFFFFF !important;
  color: #0E2438;
}
.page-nk-lot4 .campus-map-directions {
  background: #0E2438;
  color: #F4F8FB;
}
.page-nk-lot4 .nk-periodes-table :is(th,td) {
  color: #0E2438;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-lp-theme-action span {
  color: #0059CF;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.nk-lp-theme-cover-index,.nk-approach-value-index) {
  background: #0059CF !important;
  color: #FFFFFF !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-media::after {
  color: #0E2438;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec
  .nk-upcoming-period {
  color: #0E2438;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.campus,.campus address a)::before {
  font-size: 12px !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-offer-fomo-mark {
  color: inherit;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  .nk-approach-panel .eyebrow::before {
  color: #39556F;
}

/* Client refinement — the hub atelier scene is the centre of a balanced,
   in-flow frame. The existing wrappers remain in the DOM for semantics and
   touch controls; display:contents lets their seven cards join the grid. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers > .container > .section-head {
  width: min(100%, 760px);
  margin: 0 auto 28px;
  align-items: center;
  text-align: center;
}
@media (min-width:1100px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers > .container {
    box-sizing: border-box;
    width: calc(100% - 64px);
    max-width: 1360px;
    padding-inline: 32px;
  }
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers > .container > .section-head > :is(h2,p) {
  margin-inline: auto;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
  display: block;
  width: min(100%,600px);
  max-width: 600px;
  margin: 0 auto;
  overflow: hidden;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage .nk-orbit-img {
  /* The native 1536×672 canvas contains a ~713px-wide drawing centred
     between transparent side margins. Crop those margins locally, while
     scaling both image axes equally and keeping its native aspect ratio. */
  display: block;
  width: 215% !important;
  max-width: none;
  height: auto;
  aspect-ratio: 1536 / 672;
  object-fit: contain;
  object-position: center;
  margin: 0 0 0 -57.5%;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-hint {
  margin-inline: auto;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
  min-width: 0;
  width: auto;
  box-sizing: border-box;
}

@media (min-width:1100px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) minmax(520px,1.5fr) minmax(0,1fr) !important;
    grid-template-areas:
      "top-left top-centre top-right"
      "side-left scene side-right"
      ". scene ."
      "bottom-left . bottom-right"
      "actions actions actions";
    /* A zero-height continuation lets the scene size the shared middle row,
       rather than leaving an intrinsic empty track beneath the illustration. */
    grid-template-rows: auto auto 0 auto auto;
    gap: 22px;
    align-items: stretch;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
    grid-area: scene;
    align-self: center;
    justify-self: center;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-theme-carousel,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring {
    display: contents !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-carousel-nav {
    display: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(1) {
    grid-area: top-left;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(2) {
    grid-area: top-centre;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(3) {
    grid-area: top-right;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(4) {
    grid-area: side-left !important;
    align-self: center;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(5) {
    grid-area: side-right !important;
    align-self: center;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(6) {
    grid-area: bottom-left !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(7) {
    grid-area: bottom-right !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta {
    grid-area: actions;
    justify-content: center;
    margin-top: 2px !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
    --nk-orbit-rest-y: 0px !important;
    --nk-orbit-rest-rotation: 0deg;
    --nk-orbit-float-duration: 6.2s;
    transform: translateY(calc(var(--nk-orbit-rest-y) + var(--nk-orbit-float,0px)))
      rotate(var(--nk-orbit-rest-rotation))
      rotateX(clamp(-1.5deg,var(--rx,0deg),1.5deg))
      rotateY(clamp(-1.5deg,var(--ry,0deg),1.5deg)) !important;
    animation: nk-orbit-card-entry .55s var(--ease-out,ease) backwards,
      nk-orbit-card-float var(--nk-orbit-float-duration) ease-in-out infinite !important;
    animation-delay: 0s, var(--nk-orbit-float-delay,-1.1s) !important;
  }
  @supports (animation-timeline: view()) {
    @media (prefers-reduced-motion: no-preference) {
      html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
        animation: nk-orbit-card-entry auto var(--ease-out,ease) both,
          nk-orbit-card-float var(--nk-orbit-float-duration) ease-in-out infinite !important;
        animation-timeline: view(), auto !important;
        animation-range: entry var(--nk-card-entry-start,0%) entry 35%, normal !important;
        animation-delay: 0s, var(--nk-orbit-float-delay,-1.1s) !important;
      }
    }
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(2n) {
    --nk-orbit-rest-rotation: 1deg;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(3n) {
    --nk-orbit-rest-rotation: -.8deg;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(4n) {
    --nk-orbit-rest-rotation: .7deg;
  }
}

@media (min-width:760px) and (max-width:1099px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit {
    display: grid !important;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 20px;
    align-items: stretch;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
    grid-column: 1 / -1;
    grid-row: 1;
    width: 100%;
    max-width: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-theme-carousel,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring {
    display: contents !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-carousel-nav {
    display: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(n) {
    position: relative !important;
    grid-column: auto !important;
    grid-row: auto !important;
    width: 100%;
    margin: 0;
    --nk-orbit-rest-y: 0px;
    --nk-orbit-rest-rotation: 0deg;
    --nk-orbit-float: 0px;
    transform: none !important;
    animation: none !important;
    transition: box-shadow .2s ease;
    will-change: auto;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta {
    grid-column: 1 / -1;
    justify-content: center;
    margin-top: 0 !important;
  }
}

@media (max-width:759px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers > .container > .section-head {
    margin-bottom: 20px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit {
    display: grid !important;
    grid-template-columns: minmax(0,1fr);
    gap: 18px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
    grid-column: 1;
    grid-row: 1;
    width: 100%;
    max-width: 600px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-theme-carousel,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring {
    display: contents !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-carousel-nav {
    display: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(n) {
    position: relative !important;
    grid-column: 1 !important;
    grid-row: auto !important;
    width: 100%;
    margin: 0;
    --nk-orbit-rest-y: 0px;
    --nk-orbit-rest-rotation: 0deg;
    --nk-orbit-float: 0px;
    transform: none !important;
    animation: none !important;
    transition: box-shadow .2s ease;
    will-change: auto;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta {
    grid-column: 1;
    justify-content: center;
    margin-top: 0 !important;
  }
}

/* Static feature banner aligns to the same editorial container as the sections. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
  box-sizing: border-box;
  width: min(1200px,calc(100% - 48px));
  max-width: 1200px;
  border-radius: var(--nk-r-carte);
  box-shadow: var(--nk-elev-1);
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #hub-fomo-numeriklub {
    width: calc(100% - 32px);
  }
}

/* Marketing actions only: never a submit button or a booking/modal action. */
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-footer,.campaign-announcement)
  :is(.btn,.btn-primary-link,.nk-offer-reserve,
    .nk-tab,.nk-territory-button,.nk-yc-filter,.nk-lot4-tab-list [role="tab"],
    .nk-community-slider-btn,.nk-community-slider-dot,.nk-photo-nav,
    .nk-lp-theme-nav,.nk-offer-nav,.nk-shelf-play):not(:where(
      form *,dialog *,[role="dialog"] *,.resa-modal *,.resa-overlay *,
      .nk-callback-form-card *,.nk-structure-sim *,.nk-structure-simulation *,
      .nk-estimate *,.nk-qualification *,.nk-qualify-modal *,.nk-date-modal *,
      a.card,button.card,.nk-orbit-card,.nk-lp-theme-card,.nk-hub-offer-card
    )) {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 48px !important;
  min-height: 48px !important;
  max-width: 100%;
  min-width: 0;
  padding-block: 0 !important;
  border-radius: 10px !important;
  font-size: 14px !important;
  line-height: 1.2 !important;
  white-space: normal !important;
  text-align: center;
  overflow-wrap: break-word;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.nk-community-slider-btn,.nk-community-slider-dot,.nk-photo-nav,
    .nk-lp-theme-nav,.nk-offer-nav,.nk-shelf-play) {
  width: 48px;
  min-width: 48px;
  flex: 0 0 48px;
}
/* Keep small pagination marks, but make their actual buttons touch-sized. */
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-community-slider-dot {
  background: transparent !important;
  padding: 0;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-community-slider-dot::after {
  content: "";
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #39556F;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  .nk-community-slider-dot:is(.is-active,[aria-current="true"],[aria-selected="true"])::after {
  background: #0059CF;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.btn-primary,.btn-reserve,.btn-primary-link,.nk-offer-reserve):not(:where(
    form *,dialog *,[role="dialog"] *,.resa-modal *,.resa-overlay *,
    .nk-callback-form-card *,.nk-structure-sim *,.nk-estimate *,
    .nk-qualification *,.nk-qualify-modal *,.nk-date-modal *
  )) {
  background: #FE9F14 !important;
  color: #1C1C1C !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.btn-primary,.btn-reserve,.btn-primary-link,.nk-offer-reserve):not(:where(
    form *,dialog *,[role="dialog"] *,.resa-modal *,.resa-overlay *,
    .nk-callback-form-card *,.nk-structure-sim *,.nk-estimate *,
    .nk-qualification *,.nk-qualify-modal *,.nk-date-modal *
  )):hover {
  background: #FF8800 !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.btn-rdv,.btn-secondary,.btn-outline):not(:where(
    form *,dialog *,[role="dialog"] *,.resa-modal *,.nk-callback-form-card *,
    .nk-structure-sim *,.nk-estimate *,.nk-qualification *,.nk-date-modal *
  )) {
  background: #FFFFFF !important;
  color: #0E2438 !important;
  border-color: #39556F;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-footer,.campaign-announcement)
  .btn-wa:not(:where(form *,dialog *,[role="dialog"] *,.resa-modal *,
    .nk-callback-form-card *,.nk-structure-sim *,.nk-estimate *)) {
  color: #0E2438 !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-footer,.campaign-announcement)
  .btn-wa:not(:where(form *,dialog *,[role="dialog"] *,.resa-modal *,
    .nk-callback-form-card *,.nk-structure-sim *,.nk-estimate *)) .btn-wa-label {
  color: inherit;
}
html:has(.page-numeriklub-lp) :is(#site-nav .nav-cta,.campaign-announcement-cta) {
  box-sizing: border-box;
  height: 48px;
  min-height: 48px;
  border-radius: 10px;
  font-size: 14px;
  line-height: 1.2;
  max-width: 100%;
}
html:has(.page-numeriklub-lp) #site-nav .nav-cta {
  color: #1C1C1C;
}
html:has(.page-numeriklub-lp) #site-nav .lang-toggle button.active,
html:has(.page-numeriklub-lp) #site-nav .lang-toggle button.active .lang-code {
  color: #FFFFFF;
}
html:has(.page-numeriklub-lp) #site-nav .lang-toggle button.active {
  background: #0059CF;
}
html.light:has(.page-numeriklub-lp) #site-footer :is(h5,.footer-bottom span,
  .lp-bare-rgpd,.lp-bare-rights) {
  color: #39556F;
}
html.light:has(.page-numeriklub-lp) #site-footer .footer-campaign
  :is(h5,.footer-bottom span) {
  color: #DCE7EF;
}

/* P2 — one spacing/type scale; approved handoffs and forms are exceptions. */
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  > section.section:not(:is(#ateliers,#contact,#rappel)):not(:has(form)) {
  padding-block: var(--nk-audit-section-space) !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  > section.section:not(:is(#ateliers,#contact,#rappel)):not(:has(form))
  .section-head > h2 {
  font-size: var(--nk-audit-h2) !important;
  font-weight: 900;
  line-height: 1.1;
  margin-bottom: 16px;
}
html:has(.page-numeriklub-lp) .page-nk-lot4
  :is(.prog-head h3,.nk-lot4-compare-card h3,.nk-lot4-territory h3,
    .nk-lot4-holiday-dates > h3,.nk-lot4-choice > h3),
.page-numeriklub-lp[data-page="/lp/numeriklub"]
  :is(.nk-offer-section > h3,.nk-approach-panel-copy > h3) {
  font-size: var(--nk-audit-h3);
  font-weight: 900;
  line-height: 1.2;
  margin-bottom: 12px;
}
.page-nk-lot4 :is(.nk-lot4-compare-card,.nk-lot4-facts article,.nk-lot4-territory,
  .card.info-item,.card.campus) {
  padding: var(--nk-audit-card-space);
  border-radius: 16px;
  box-shadow: 0 1px 2px rgba(21,49,74,.06), 0 8px 22px rgba(21,49,74,.07);
}
.page-nk-lot4 .card.prog {
  border-radius: 16px;
  box-shadow: 0 1px 2px rgba(21,49,74,.06), 0 8px 22px rgba(21,49,74,.07);
}
.page-nk-lot4 .card.prog > :is(.prog-head,.card-body) {
  margin-inline: 0;
  padding-inline: var(--nk-audit-card-space);
}
.page-nk-lot4 :is(.grid,.info-grid,.nk-lot4-compare-grid,.nk-lot4-facts,
  .nk-lot4-territory-grid) {
  align-items: stretch;
}
@media (min-width:761px) {
  .page-nk-lot4 :is(.grid,.info-grid,.nk-lot4-compare-grid,.nk-lot4-facts,
    .nk-lot4-territory-grid) {
    grid-auto-rows: 1fr;
  }
}
.page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-offer-section > p,
.page-numeriklub-lp[data-page="/lp/numeriklub"] #rappel details p {
  max-width: 65ch;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.nk-price-prefix,.nk-offer-section li span) {
  font-size: 12px !important;
}
.page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home .hero-cta {
  /* Keep the approved scene's vertical reference while its 51.5px action
     becomes 48px. This is a wrapper reservation, not a taller button. */
  min-height: 52px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub
  #formats .prog-head::after {
  font-size: 12px !important;
}
html:has(.page-numeriklub-lp) #site-footer .footer-bottom > span {
  font-size: 12px;
}

/* Two-color focus stays visible on light, dark and orange surfaces.
   Do not restyle native form controls or the booking flow. */
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,
  #site-footer,.campaign-announcement)
  :is(a,button,summary,[tabindex]):not(:where(form *,dialog *,[role="dialog"] *,
    .resa-modal *,.resa-overlay *,.nk-callback-form-card *, .nk-structure-sim *,
    .nk-estimate *,.nk-qualification *,.nk-qualify-modal *,.nk-date-modal *
  )):focus-visible {
  outline: 3px solid #0059CF !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 3px #FFFFFF !important;
}
@media (max-width:760px) {
  :is(.page-numeriklub-hub,.page-numeriklub-lp) {
    --nk-audit-section-space: 56px;
    --nk-audit-card-space: 16px;
    --nk-audit-h2: 32px;
    --nk-audit-h3: 20px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home
    .hero-stats .hero-stat .hero-stat-label,
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #ete .nk-photo-cap {
    font-size: 12px !important;
  }
  .page-numeriklub-lp .nk-community-slider-controls {
    flex-wrap: wrap;
  }
  .page-numeriklub-lp .nk-community-slider-dots {
    order: 3;
    flex-basis: 100%;
    justify-content: center;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp
    :is(.nk-social-advice .btn,.cta-final .hero-cta .btn) {
    padding-inline: 6px;
    gap: 4px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-social-advice {
    padding: 16px !important;
  }
  /* Shrink grid content, never hide document overflow or flatten the orbit. */
  .page-nk-lot4 :is(.grid > .card,.info-grid > .card,
    .nk-lot4-compare-card,.nk-lot4-facts article,.nk-lot4-territory) {
    min-width: 0;
    overflow-wrap: break-word;
  }
}

/* The workshops section is deliberately excluded from the LP-only type scale. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .section-head > h2 {
  max-width: 24ch !important;
  font-size: var(--nk-audit-h2) !important;
  line-height: 1.1;
  margin-bottom: 14px;
}
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .section-head > h2 {
    font-size: 32px !important;
  }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    translate: none !important;
    animation: none !important;
    transition: none !important;
  }
}

/* Mobile and tablet corrections — scoped to the approved /numeriklub hub.
   Desktop's orbit frame, imagery, rotations and reveal remain unchanged. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-hint-pointer {
  display: inline;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-hint-touch {
  display: none;
}
@media (max-width: 1099px), (hover: none), (pointer: coarse) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-hint-pointer {
    display: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub .nk-orbit-hint-touch {
    display: inline;
  }
}

@media (max-width: 760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-section-cta > * {
    box-sizing: border-box;
    width: 100%;
    height: 48px;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    margin: 0;
  }
  /* Keep the canonical price visible below the dates, outside the inline
     date flow, so the end mask removes the separator rather than the euro. */
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec
    .nk-upcoming-row-annual .nk-upcoming-details {
    position: relative;
    padding-bottom: 40px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #calendrier-sec
    .nk-upcoming-row-annual .nk-upcoming-details > .nk-upcoming-price {
    position: absolute;
    inset: auto auto 0 0;
    margin: 0;
    max-width: 100%;
  }

  /* Budget: 78px for controls, top/bottom padding, border and an 11px
     breathing allowance, plus the device's bottom safe-area inset. */
  html:has(.page-numeriklub-hub) {
    --nk-mobile-bar-budget: calc(78px + env(safe-area-inset-bottom, 0px));
  }
  html:has(.page-numeriklub-hub) .mobile-conversion-bar {
    box-sizing: border-box;
    min-height: var(--nk-mobile-bar-budget);
    align-items: center;
  }
  /* Reserve space even while the conversion controls are hidden: the yellow
     campaign announcement can remain fixed to the bottom independently. */
  html:has(.page-numeriklub-hub) body {
    padding-bottom: var(--nk-mobile-bar-budget) !important;
  }
}

@media (min-width: 760px) and (max-width: 1099px) {
  /* Keep the artwork in a bounded right-hand lane, clear of the copy column. */
  html:has(.page-numeriklub-hub) .page-numeriklub-hub > section#lieux .section-head {
    width: 50%;
    max-width: 50%;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .nk-campus-side-visual {
    right: clamp(16px, 3vw, 32px);
    width: clamp(220px, 36vw, 360px);
  }
}

@media (max-width: 759px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .nk-campus-side-visual {
    display: none;
  }
}

@media (max-width: 599px) {
  html:has(.page-numeriklub-hub) #site-footer .footer-cols {
    grid-template-columns: minmax(0, 1fr);
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(3) {
    grid-template-columns: minmax(0, 1fr);
    gap: 20px;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(3) a[href^="tel:"] {
    display: inline-flex;
    max-width: 100%;
    white-space: nowrap;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(4) .footer-wa,
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(4) .footer-wa .btn-wa {
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-col:nth-child(4) .footer-wa .btn-wa {
    justify-content: center;
    white-space: nowrap;
  }
  html:has(.page-numeriklub-hub) #site-footer .footer-bottom .footer-certif-logos {
    box-sizing: border-box;
    flex: 0 0 100%;
    width: 100%;
    border-top: 1px solid rgba(255,255,255,.18);
  }
}

/* France 2030 is a white transparent mark; its dedicated dark tile restores
   contrast at every footer breakpoint without changing the other logos. */
html:has(.page-numeriklub-hub) #site-footer .footer-certif-logos img[src*="france-2030.webp"] {
  box-sizing: content-box;
  height: 22px;
  padding: 5px 8px;
  border-radius: 5px;
  background: #0E2438;
  filter: none;
  opacity: 1;
}

@media (max-width: 599px) {
  html.light:has(.page-numeriklub-hub) #site-footer .footer-bottom .footer-certif-logos {
    border-top-color: rgba(14,36,56,.16);
  }
}

/* Lot 28 — desktop composition and legibility refinements.  Keep this
   contract inside the Numériklub hub / its matching LP pages. */
@media (min-width: 1100px) {
  html:has(.page-numeriklub-lp) .campaign-announcement-main { gap: 10px; }
  html:has(.page-numeriklub-lp) .campaign-announcement-viewport {
    min-width: 0;
    margin-left: 8px;
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 10px, #000 88%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 10px, #000 88%, transparent);
  }
}

/* CTA refinement — intentionally limited to explicitly marked Numériklub
   actions. Ordinary navigation, campaign links and every form control remain
   outside this contract. */
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) {
  box-sizing: border-box !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  min-width: 0 !important;
  max-width: 100% !important;
  min-height: 48px !important;
  height: 48px !important;
  padding: 0 24px !important;
  border: 2px solid transparent !important;
  border-radius: 2px !important;
  font-family: "Nunito", sans-serif !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  line-height: 1.15 !important;
  letter-spacing: 0 !important;
  text-align: center !important;
  text-decoration: none !important;
  text-transform: none !important;
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  box-shadow: none !important;
  transition: background-color .25s ease-out, color .25s ease-out,
    border-color .25s ease-out, box-shadow .25s ease-out,
    transform .25s ease-out !important;
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="primary"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #1C1C1C !important;
  background: #FE9F14 !important;
  border-color: #FE9F14 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="primary"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #1C1C1C !important;
  background: #FF8800 !important;
  border-color: #FF8800 !important;
  box-shadow: 0 5px 12px rgba(201,103,0,.22) !important;
  transform: translateY(-2px);
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #0E3044 !important;
  background: #F8FCFE !important;
  border-color: #0E3044 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"][data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #FFFFFF !important;
  background: transparent !important;
  border-color: #FFFFFF !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #0E3044 !important;
  background: #E3F4FC !important;
  border-color: #0E3044 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"][data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #FFFFFF !important;
  background: rgba(255,255,255,.12) !important;
  border-color: #FFFFFF !important;
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="whatsapp"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #FFFFFF !important;
  background: #167A3D !important;
  border-color: #167A3D !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="whatsapp"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #FFFFFF !important;
  background: #105F30 !important;
  border-color: #105F30 !important;
  box-shadow: 0 5px 12px rgba(10,82,39,.22) !important;
  transform: translateY(-2px);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="whatsapp"] :is(svg,.btn-wa-ic,.nk-cta-icon) {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  min-height: 48px !important;
  height: auto !important;
  padding: 0 4px !important;
  position: relative !important;
  border-color: transparent !important;
  color: #0059A8 !important;
  background: transparent !important;
  text-decoration: none !important;
  box-shadow: none !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"][data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #FFFFFF !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"]:not(:where(form *,button[type="submit"],input[type="submit"]))::after {
  align-self: stretch;
  position: absolute;
  inset: auto 4px 8px;
  height: 2px;
  background: currentColor;
  content: "";
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .25s ease-out;
  pointer-events: none;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #003D78 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"][data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #FFFFFF !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover::after {
  transform: scaleX(1);
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])):focus-visible {
  outline: 3px solid #0059CF !important;
  outline-offset: 3px !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])):focus-visible {
  outline-color: #FFE936 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])):active {
  transform: scale(.98);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta]:not(:where(form *,button[type="submit"],input[type="submit"])):active {
  transform: scale(.98) !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui .nk-cta-arrow {
  display: inline-block;
  flex: 0 0 auto;
  transition: transform .25s ease-out;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:hover .nk-cta-arrow {
  transform: translateX(4px);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui .nk-cta-arrow-phrase {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}

/* Keep the established alignment of CTA rows; only add a consistent gap. */
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  :not(:where(form *))
  :has(> .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) +
    .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"]))) {
  gap: 12px;
}

/* In the four-column Formats layout the inner card lane is narrower than a
   16px label plus the required 48px of button padding. Expand the marked CTA
   into the existing side gutters, leaving all price copy in its current inset. */
@media (min-width: 1200px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6
    .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) {
    width: calc(100% + 40px) !important;
    max-width: calc(100% + 40px) !important;
    margin-inline: -20px !important;
  }
}

@media (max-width: 767px) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    :not(:where(form *))
    :has(> .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) +
      .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])))
    :not(:has(> :not(.nk-cta-ui))) {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    :not(:where(form *))
    :has(> .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) +
      .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])))
    :not(:has(> :not(.nk-cta-ui)))
    > .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 48px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])),
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui .nk-cta-arrow,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui[data-nk-cta="text"]::after {
    transition: none !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])):is(:hover,:active),
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui:hover .nk-cta-arrow,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui[data-nk-cta="text"]:hover::after {
    transform: none !important;
  }
}

/* /numeriklub only — format-card scene and complete, left-aligned FAQ titles. */
body[data-route="/numeriklub"] .page-numeriklub-hub #formats #format-annuel .prog-head .ic-chip img,
body[data-route="/numeriklub"] .page-numeriklub-hub #formats #format-grandes .prog-head .ic-chip img {
  content: normal !important;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
body[data-route="/numeriklub"] .page-numeriklub-hub #formats #format-grandes .ic-chip::after {
  background-image: none !important;
  content: none !important;
}
body[data-route="/numeriklub"] .page-numeriklub-hub #faq .faq details > summary {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-start !important;
  gap: 12px !important;
  text-align: left !important;
  white-space: normal !important;
  overflow: visible !important;
  clip-path: none !important;
  text-indent: 0 !important;
}
body[data-route="/numeriklub"] .page-numeriklub-hub #faq .faq details > summary .nk-home-faq-title {
  display: block !important;
  min-width: 0 !important;
  max-width: none !important;
  max-height: none !important;
  flex: 1 1 auto !important;
  overflow: visible !important;
  clip-path: none !important;
  -webkit-line-clamp: unset !important;
  text-align: left !important;
  text-overflow: clip !important;
  white-space: normal !important;
}
body[data-route="/numeriklub"] .page-numeriklub-hub #faq .faq details > summary .nk-home-faq-icon {
  display: block !important;
  width: 32px !important;
  height: 32px !important;
  flex: 0 0 32px !important;
  padding: 7px;
  border: 1px solid #C9E8F5;
  border-radius: 10px;
  background: #EAF7FD;
  color: #0059CF;
  stroke: currentColor;
}
body[data-route="/numeriklub"] .page-numeriklub-hub #faq .faq details > summary::after {
  margin-left: auto !important;
  flex: 0 0 30px !important;
  align-self: center !important;
}


/* Lot 30 — paired cutouts, no duplicate background, no cropped-base fade.
   Decorating layers never intercept the existing conversion controls. */
html:has(.page-numeriklub-lp) .page-numeriklub-lp > .page-hero-home > .hero-art.nk-hero-flip {
  background: none !important;
  mask: none !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp > .page-hero-home > :is(.hero-rider.nk-hero-flip,.hero-floats) {
  mask: none !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-hero-flip {
  pointer-events: none !important;
  cursor: inherit !important;
  overflow: visible;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-hero-flip > img {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  content: normal !important;
  object-fit: contain !important;
  object-position: center !important;
  transform: none !important;
  opacity: 1 !important;
  transition: none !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-hero-flip > .hero-flip-rev,
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-hero-flip.has-nk-brush > .hero-flip-base {
  visibility: hidden !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-rider.nk-hero-flip {
  width: auto !important;
  aspect-ratio: 760 / 1018;
  filter: drop-shadow(0 8px 12px rgba(0,0,0,.3)) !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-float.nk-hero-flip {
  aspect-ratio: 1;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-hero-brush {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 2;
  pointer-events: none !important;
  opacity: 1 !important;
}
.page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-rider.nk-hero-flip > :is(img,canvas) {
  transform: translate(9.342105263%,1.080550098%) !important;
}

/* Exact presentation markers win older, zone-specific button sizing.
   Text links stay compact; conversion controls all use the 48px system. */
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer) .nk-cta-ui.nk-cta-ui {
  font-size: 15px !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer) .nk-cta-ui .nk-cta-arrow-phrase {
  display: inline-block;
  white-space: nowrap;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer) .nk-cta-ui.nk-cta-ui[data-nk-cta="text"] {
  min-height: 0 !important;
  height: auto !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp .nk-cta-group {
  gap: 12px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 .btn.nk-cta-ui {
  font-size: 15px !important;
  padding-inline: 24px !important;
}
/* The itinerary rail keeps its approved short generated label and full
   accessible DOM label. Animate the arrow separately, not the whole campus. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui {
  font-size: 0 !important;
  gap: 4px !important;
  background-image: linear-gradient(currentColor,currentColor) !important;
  background-size: 0 2px !important;
  background-repeat: no-repeat !important;
  background-position: 4px calc(100% - 8px) !important;
  transition: background-size .25s ease-out !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui::before {
  content: "Itinéraire";
  font-size: 15px;
  font-weight: 700;
}
html[lang="en"]:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui::before {
  content: "Directions";
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui::after {
  position: static;
  inset: auto;
  height: auto;
  content: "↗";
  background: none;
  font-size: 15px;
  font-weight: 700;
  transform: none;
  transition: transform .25s ease-out;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui:hover {
  background-size: calc(100% - 8px) 2px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui:hover::after {
  transform: translateX(4px);
}
@media (max-width:767px) {
  html:has(.page-numeriklub-lp) .nk-cta-group.nk-cta-group {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
  }
  html:has(.page-numeriklub-lp) .nk-cta-group > .nk-cta-ui {
    width: 100% !important;
    flex: 0 0 48px !important;
  }
}
@media (max-width:1099px), (hover:none), (pointer:coarse), (prefers-reduced-motion:reduce) {
  .page-numeriklub-lp .hero-flip-hint { display: none !important; }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .campus .campus-map-directions.nk-cta-ui::after {
    transition: none !important;
    transform: none !important;
  }
}

/* Balanced display copy for the hub and the equivalent editorial LP blocks;
   forms, dialogs and unrelated Numériklub microsites remain untouched. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #contact .nk-callback-form-card > .card-title {
  font-family: "Nunito", sans-serif;
  font-weight: 700;
}

@media (min-width: 1100px) {
  html:has(.page-numeriklub-lp) .page-numeriklub-lp :is(h2,h3):not(:where(
    form *,dialog *,[role="dialog"] *,.resa-modal *,.nk-callback-form-card *
  )) {
    text-wrap: balance;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .section-head {
    margin-bottom: 22px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .section-head > h2 {
    margin-bottom: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #esprit .nk-esprit-lead {
    margin-top: 0;
  }
  /* All four partner files share a 1376 × 768 transparent canvas, but their
     painted heights are 616 / 263 / 157 / 535px. Normalize the painted
     marks to 34px rather than shrinking their mostly empty canvases. */
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee
    :is(.marquee-track,.nk-partners-group) {
    height: 64px;
    align-items: center;
    gap: 40px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee .hero-marquee-logo {
    width: calc(var(--nk-logo-canvas-h,42.4px) * 1376 / 768) !important;
    height: var(--nk-logo-canvas-h,42.4px) !important;
    flex: 0 0 calc(var(--nk-logo-canvas-h,42.4px) * 1376 / 768) !important;
    max-width: none;
    max-height: none;
    margin-inline: var(--nk-logo-left,-11.6px) var(--nk-logo-right,-11.8px);
    object-fit: contain;
    opacity: 1 !important;
    filter: brightness(0) invert(1) !important;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee-logo[src*="microforce"] {
    --nk-logo-canvas-h: 99.3px;
    --nk-logo-left: -15px;
    --nk-logo-right: -15.6px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee-logo[src*="credit-mutuel"] {
    --nk-logo-canvas-h: 166.3px;
    --nk-logo-left: -15.6px;
    --nk-logo-right: -14.9px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee-logo[src*="guyane-developpement"] {
    --nk-logo-canvas-h: 48.8px;
    --nk-logo-left: -6.7px;
    --nk-logo-right: -5.7px;
  }
  /* A deliberate 3 × 3 editorial orbit: the island is the central column
     across the two balanced lower rows; the touch/tablet rail stays intact. */
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) minmax(520px,1.5fr) minmax(0,1fr) !important;
    grid-template-rows: auto minmax(0,1fr) minmax(0,1fr) auto auto;
    grid-template-areas:
      "first second third"
      "four scene five"
      "six scene seven"
      "hint hint hint"
      "actions actions actions";
    column-gap: clamp(24px,2vw,32px);
    row-gap: 26px;
    align-items: stretch;
    overflow: visible;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-stage {
    display: contents;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-img {
    grid-area: scene;
    align-self: center;
    justify-self: start;
    width: 215%;
    max-width: none;
    height: auto;
    aspect-ratio: 1536 / 672;
    object-fit: contain;
    object-position: center;
    margin-block: -3.359375% !important;
    clip-path: inset(3.57142857% 26.7578125% 3.57142857%);
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-hint {
    grid-area: hint;
    justify-self: center;
    align-self: start;
    margin: 0;
    padding-top: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-theme-carousel,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ring {
    display: contents;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-hub-carousel-nav {
    display: none;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card {
    min-width: 0;
    height: 100%;
    display: flex;
    flex-direction: column;
    grid-row: auto;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(1) { grid-area: first; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(2) { grid-area: second; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(3) { grid-area: third; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(4) { grid-area: four !important; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(5) { grid-area: five !important; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(6) { grid-area: six !important; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(7) { grid-area: seven !important; }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card:nth-child(5) {
    grid-column: 3 !important;
    grid-row: 2 !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-card .nk-orbit-more {
    margin-top: auto;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-grid {
    align-items: stretch;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head {
    display: flex;
    flex-direction: column;
    padding: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head-l > h3 {
    /* Reserve two lines for EN, but align the visible title at the bottom:
       its whitespace belongs above the title, never before the info band. */
    min-height: calc(2.3em + 22px);
    display: flex;
    align-items: flex-end;
    line-height: 1.15;
    margin-bottom: 0;
    padding-bottom: 8px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card .prog-head .badge {
    flex: 1;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-discount-coupon {
    width: 100%;
    max-width: none;
    box-sizing: border-box;
    margin-top: 24px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .section-head > h2 {
    margin-bottom: 14px;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .section-head > p {
    margin-top: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 .btn {
    min-width: 0;
    padding-inline: 8px !important;
    font-size: 12px !important;
    white-space: nowrap !important;
  }

  html:has(.page-numeriklub-lp) .page-numeriklub-lp #calendrier-sec .nk-upcoming-row {
    --nk-stub: 272px;
    grid-template-columns: minmax(0,1fr) var(--nk-stub);
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #calendrier-sec .nk-upcoming-row > .btn {
    height: 48px !important;
    min-height: 48px !important;
    padding: 6px 8px !important;
    font-size: 12px !important;
    line-height: 1.15;
    white-space: nowrap !important;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-hub-media-carousel {
    position: relative;
    width: 100%;
    max-width: 100%;
    margin-inline: 0;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-shelf {
    width: 100%;
    max-width: 100%;
    margin-inline: 0;
    padding-inline: 0;
    scroll-padding-inline: 0 24px;
    justify-content: flex-start;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ete .nk-hub-media-carousel::after {
    position: absolute;
    inset: 0 0 0 auto;
    width: 56px;
    background: linear-gradient(90deg,transparent,#0E3044);
    content: "";
    pointer-events: none;
  }

  /* Keep the entire illustration in the intro, never behind campus cards. */
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #lieux .nk-campus-side-visual {
    position: absolute !important;
    top: 64px !important;
    right: max(32px,calc((100% - 1200px) / 2 + 24px)) !important;
    left: auto !important;
    bottom: auto !important;
    display: block;
    width: clamp(170px,18vw,230px);
    height: 150px;
    margin: 0;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #lieux .nk-campus-side-visual img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center bottom;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #lieux .nk-hub-campus-disclosure {
    margin-top: 16px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #lieux .campus-map-directions {
    color: #fff !important;
    background: #0E2438;
    opacity: 1;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #lieux .campus-map-directions::after {
    color: #fff !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #faq > .nk-sec-deco-tr {
    top: 144px !important;
    left: calc(max(32px,(100% - 1200px) / 2) + 760px) !important;
    right: auto !important;
    width: 108px !important;
    height: 108px !important;
    object-fit: contain;
  }
}

/* Lot 29 — three desktop-only refinements. Approved sections and all mobile
   compositions retain the previous rules. Preserve each original asset. */
@media (min-width: 1100px) {
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee .nk-partners-group {
    gap: 40px;
    padding-inline-end: 40px;
  }
  /* Optical sizing: compensate transparent gutters so the existing 40px gap
     is measured between painted marks, not between their large canvases.
     The very wide Crédit Mutuel lockup is capped at 140px painted width:
     preserving its proportions makes its painted height approximately 18px. */
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee-logo[src*="ministere-culture"] {
    --nk-logo-canvas-h: 57.35px;
    --nk-logo-left: -15.68px;
    --nk-logo-right: -15.91px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee-logo[src*="microforce"] {
    --nk-logo-canvas-h: 73px;
    --nk-logo-left: -11.03px;
    --nk-logo-right: -11.5px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee-logo[src*="credit-mutuel"] {
    --nk-logo-canvas-h: 87.06px;
    --nk-logo-left: -8.16px;
    --nk-logo-right: -7.82px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp .hero-marquee-logo[src*="guyane-developpement"] {
    --nk-logo-canvas-h: 66.03px;
    --nk-logo-left: -9.03px;
    --nk-logo-right: -7.65px;
  }

  /* The approved cutout has transparent top/bottom gutters: this 236px
     canvas paints approximately 210px of artwork. Reserve its intro lane. */
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #lieux .nk-campus-side-visual {
    width: 320px;
    height: 236px;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp #lieux .section-head {
    min-height: 220px;
  }

  /* Keep the complete label and arrow together without shrinking the text.
     Only the offer-card footer buttons are affected, never form buttons. */
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-card > .mt-6 .btn {
    font-size: 14px !important;
    padding-inline: 4px !important;
    white-space: nowrap !important;
  }
}

html:has(.page-numeriklub-lp) .nk-cta-ui[data-nk-cta="text"]:not(:has(.nk-cta-arrow)):not(.campus-map-directions)::before {
  content: "→"; order: 1; position: static; display: inline-block;
  width: auto; height: auto; background: none; filter: none;
  transform: none; transition: transform .25s ease-out;
}
html:has(.page-numeriklub-lp) .nk-cta-ui[data-nk-cta="text"]:not(:has(.nk-cta-arrow)):not(.campus-map-directions):hover::before {
  transform: translateX(4px);
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-lp) .nk-cta-ui::before { transform: none !important; transition: none !important; }
}

/* The campaign's shared announcement sits outside the page/nav/footer roots. */
html:has(.page-numeriklub-lp) :is(.campaign-announcement,#site-nav) .campaign-announcement-whatsapp.nk-cta-ui[data-nk-cta="whatsapp"] {
  height: 48px !important; min-height: 48px !important;
  padding: 0 24px !important; border: 2px solid #167A3D !important;
  border-radius: 2px !important; font-size: 15px !important; font-weight: 700 !important;
  color: #fff !important; background: #167A3D !important;
  transition: background-color .25s ease-out,transform .25s ease-out,box-shadow .25s ease-out !important;
}
html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp.nk-cta-ui:hover {
  background: #105F30 !important; border-color: #105F30 !important;
  transform: translateY(-2px); box-shadow: 0 5px 12px rgba(10,82,39,.22);
}
html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp.nk-cta-ui:focus-visible {
  outline: 3px solid #0059CF !important; outline-offset: 3px !important;
}
html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp.nk-cta-ui:active { transform: scale(.98); }
@media (max-width:760px) {
  html:has(.page-numeriklub-lp) :is(.campaign-announcement,#site-nav) .campaign-announcement-whatsapp.nk-cta-ui {
    width: 72px !important; min-width: 72px !important;
    font-size: 0 !important; gap: 0 !important;
  }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-lp) .campaign-announcement-whatsapp.nk-cta-ui {
    transform: none !important; transition: none !important;
  }
}

@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui),
  html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):is(:hover,:active,:focus-visible)::before,
  html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):is(:hover,:active,:focus-visible)::after,
  html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) .nk-cta-arrow {
    transform: none !important; transition: none !important;
  }
}

/* Marked-CTA contract: match the two-ID legacy compatibility selector. */
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(.campus-map-directions) {
  height: 48px !important; min-height: 48px !important;
  padding: 0 24px !important; border-width: 2px !important; border-style: solid !important;
  border-radius: 2px !important; font-size: 15px !important; font-weight: 700 !important;
  line-height: 1.15 !important;
  transition: color .25s ease-out,background-color .25s ease-out,border-color .25s ease-out,box-shadow .25s ease-out,transform .25s ease-out !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="primary"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) {
  color: #1c1c1c !important; background: #FE9F14 !important; border-color: #FE9F14 !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="primary"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):hover {
  background: #FF8800 !important; border-color: #FF8800 !important;
  transform: translateY(-2px) !important; box-shadow: 0 5px 12px rgba(201,103,0,.22) !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="secondary"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) {
  color: #0E3044 !important; background: #F8FCFE !important; border-color: #0E3044 !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="secondary"][data-nk-surface="dark"]:is(.nk-cta-ui,#site-nav .nk-cta-ui) {
  color: #fff !important; background: transparent !important; border-color: #fff !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="secondary"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):hover {
  color: #0E3044 !important; background: #E3F4FC !important; border-color: #0E3044 !important;
  transform: translateY(-2px) !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="secondary"][data-nk-surface="dark"]:is(.nk-cta-ui,#site-nav .nk-cta-ui):hover {
  color: #fff !important; background: rgba(255,255,255,.12) !important; border-color: #fff !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="whatsapp"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) {
  color: #fff !important; background: #167A3D !important; border-color: #167A3D !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="whatsapp"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):hover {
  background: #105F30 !important; border-color: #105F30 !important;
  transform: translateY(-2px) !important; box-shadow: 0 5px 12px rgba(10,82,39,.22) !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="text"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(.campus-map-directions) {
  height: auto !important; min-height: 0 !important; padding: 0 4px !important;
  color: #0059A8 !important; background: transparent !important; border-color: transparent !important;
  box-shadow: none !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui.nk-cta-ui[data-nk-cta="text"][data-nk-surface="dark"]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(.campus-map-directions) { color: #fff !important; }
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta="text"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(.campus-map-directions)::after {
  top: auto !important; bottom: 0 !important; height: 1px !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui:is([data-nk-cta="primary"],[data-nk-cta="secondary"])[data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(:has(.nk-cta-arrow))::after {
  content: "→" !important; display: inline-block !important; position: static !important;
  width: auto !important; height: auto !important; margin-left: 4px !important;
  opacity: 1 !important; pointer-events: none;
  background: none !important; border: none !important; transform: none !important;
  transition: transform .25s ease-out !important;
}
@media (prefers-reduced-motion:no-preference) {
  html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui.nk-cta-ui:is([data-nk-cta="primary"],[data-nk-cta="secondary"])[data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(:has(.nk-cta-arrow)):hover::after {
    transform: translateX(4px) !important;
  }
}
html:has(.page-numeriklub-lp) .nk-cta-ui:is([data-nk-cta="primary"],[data-nk-cta="secondary"]):not(:has(.nk-cta-arrow))::after {
  content: "→"; display: inline-block; margin-left: 4px; transition: transform .25s ease-out;
}
html:has(.page-numeriklub-lp) .nk-cta-ui:is([data-nk-cta="primary"],[data-nk-cta="secondary"]):not(:has(.nk-cta-arrow)):hover::after { transform: translateX(4px); }
@media (max-width:760px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .btn.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) {
    white-space: normal !important; flex-wrap: wrap !important;
    align-content: center !important; gap: 0 4px !important;
  }
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):active { transform: scale(.98) !important; }
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):focus-visible {
  outline: 3px solid #0059CF !important; outline-offset: 3px !important;
}
html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface="dark"]:is(.nk-cta-ui,#site-nav .nk-cta-ui):focus-visible { outline-color: #FFE936 !important; }
@media (max-width:767px) {
  html:has(.page-numeriklub-lp) .nk-cta-group { width: 100% !important; }
}
@media (prefers-reduced-motion:reduce) {
  html:has(.page-numeriklub-lp) :is(.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui),
  html:has(.page-numeriklub-lp) .nk-cta-ui::after { transform: none !important; transition: none !important; }
}

/* Appended CTA cascade: keep marked actions authoritative over legacy button
   sizing rules without changing any unmarked links or section geometry. */
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) {
  display: inline-flex !important;
  box-sizing: border-box !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  width: auto;
  min-width: 0 !important;
  max-width: 100% !important;
  height: 48px !important;
  min-height: 48px !important;
  padding: 0 24px !important;
  border: 2px solid transparent !important;
  border-radius: 2px !important;
  font-family: "Nunito", sans-serif !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  line-height: 1.15 !important;
  white-space: nowrap !important;
  overflow-wrap: normal !important;
  text-decoration: none !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="primary"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #1C1C1C !important;
  background: #FE9F14 !important;
  border-color: #FE9F14 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="primary"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #1C1C1C !important;
  background: #FF8800 !important;
  border-color: #FF8800 !important;
  box-shadow: 0 5px 12px rgba(201,103,0,.22) !important;
  transform: translateY(-2px);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #0E3044 !important;
  background: #F8FCFE !important;
  border-color: #0E3044 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"][data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #FFFFFF !important;
  background: transparent !important;
  border-color: #FFFFFF !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #0E3044 !important;
  background: #E3F4FC !important;
  border-color: #0E3044 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="secondary"][data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #FFFFFF !important;
  background: rgba(255,255,255,.12) !important;
  border-color: #FFFFFF !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="whatsapp"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #FFFFFF !important;
  background: #167A3D !important;
  border-color: #167A3D !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="whatsapp"]:not(:where(form *,button[type="submit"],input[type="submit"])):hover {
  color: #FFFFFF !important;
  background: #105F30 !important;
  border-color: #105F30 !important;
  box-shadow: 0 5px 12px rgba(10,82,39,.22) !important;
  transform: translateY(-2px);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  position: relative !important;
  height: auto !important;
  min-height: 48px !important;
  padding: 0 4px !important;
  border-color: transparent !important;
  color: #0059A8 !important;
  background: transparent !important;
  box-shadow: none !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"][data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])) {
  color: #FFFFFF !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"]:not(:where(form *,button[type="submit"],input[type="submit"]))::after {
  position: absolute;
  inset: auto 4px 8px;
  height: 2px;
  background: currentColor;
  content: "";
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform .25s ease-out;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-cta="text"]:hover::after {
  transform: scaleX(1);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])):focus-visible {
  outline: 3px solid #0059CF !important;
  outline-offset: 3px !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui[data-nk-surface="dark"]:not(:where(form *,button[type="submit"],input[type="submit"])):focus-visible {
  outline-color: #FFE936 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])):active {
  transform: scale(.98);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui .nk-cta-arrow {
  display: inline-block;
  flex: 0 0 auto;
  transition: transform .25s ease-out;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui:hover .nk-cta-arrow {
  transform: translateX(4px);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui .nk-cta-arrow-phrase {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  :not(:where(form *))
  :has(> .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) +
    .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"]))) {
  gap: 12px !important;
}

@media (max-width: 767px) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    :not(:where(form *))
    :has(> .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) +
      .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])))
    :not(:has(> :not(.nk-cta-ui))) {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    :not(:where(form *))
    :has(> .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) +
      .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])))
    :not(:has(> :not(.nk-cta-ui)))
    > .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])) {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 48px !important;
  }
  html:has(.page-numeriklub-hub):has(.mobile-conversion-bar > .nk-cta-ui + .nk-cta-ui) {
    --nk-mobile-bar-budget: calc(138px + env(safe-area-inset-bottom, 0px));
  }
  html:has(.page-numeriklub-hub):has(.mobile-conversion-bar > .nk-cta-ui + .nk-cta-ui) body {
    padding-bottom: var(--nk-mobile-bar-budget) !important;
  }
  html:has(.page-numeriklub-hub):has(.mobile-conversion-bar > .nk-cta-ui + .nk-cta-ui)
    .mobile-conversion-bar {
    min-height: var(--nk-mobile-bar-budget);
  }
}

@media (prefers-reduced-motion: reduce) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])),
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui .nk-cta-arrow,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui[data-nk-cta="text"]::after {
    transition: none !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui:not(:where(form *,button[type="submit"],input[type="submit"])):is(:hover,:active),
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui:hover .nk-cta-arrow,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
    .nk-cta-ui[data-nk-cta="text"]:hover::after {
    transform: none !important;
  }
}
/* Numériklub UI-C final presentation pass.
   Scope stays on the hub / main LP and the shared nav/footer only while one of
   those Numériklub pages is active. Behaviour, editorial copy and destinations
   remain owned by their existing renderers. */

/* Match the existing two-ID compatibility contract; old UI-C declarations
   use both !important and a high-specificity :is() for marked actions. */
/* Opaque surfaces keep the three stats identical above the hero's halo.
   Counter spans are values, not labels; native/reduced-motion values agree. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home
  .hero-stats > .hero-stat {
  background: #18384B !important;
  border: 1px solid #4B6473 !important;
  border-radius: 12px !important;
  height: 56px !important;
  min-height: 56px !important;
  padding: 4px 10px !important;
  opacity: 1 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home
  .hero-stats > .hero-stat .hero-stat-value,
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home
  .hero-stats > .hero-stat .hero-stat-value > [aria-hidden="true"] {
  color: #FFF !important;
  font-size: 16px !important;
  font-weight: 800 !important;
  line-height: 1.1 !important;
  opacity: 1 !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub > .page-hero-home
  .hero-stats > .hero-stat .hero-stat-label {
  color: #E5EDF3 !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  line-height: 1.1 !important;
  opacity: 1 !important;
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav #site-footer):not(:where(form *,button[type="submit"],input[type="submit"])) {
  border-radius: 12px !important;
  font-size: 16px !important;
  font-weight: 700 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  .nk-cta-ui.nk-cta-ui[data-nk-cta="primary"]:is(.nk-cta-ui,#site-nav #site-footer) .nk-cta-arrow {
  display: inline-block !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta="secondary"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui)::after,
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta="secondary"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) .nk-cta-arrow,
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta="whatsapp"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) .nk-cta-arrow {
  display: none !important;
  content: none !important;
  margin: 0 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta="secondary"][data-nk-surface="dark"]:is(.nk-cta-ui,#site-nav .nk-cta-ui):hover {
  color: #fff !important;
  background-color: rgba(255,255,255,.08) !important;
}

/* The entire canonical label remains one flex item. Native single spaces
   stay inside it; only the last word + arrow is nonbreaking. */
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  .nk-cta-ui.nk-cta-ui[data-nk-cta]:is(.nk-cta-ui,#site-nav #site-footer) .nk-cta-label {
  display: block !important;
  font: inherit !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) .nk-cta-arrow-phrase {
  display: inline-block !important;
  white-space: nowrap !important;
  vertical-align: baseline;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta="text"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(.campus-map-directions) {
  gap: 0 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta="text"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(.campus-map-directions)::before {
  margin-inline-start: .28em;
}
/* RDV keeps its calendar cue, including links whose renderer omitted it. */
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui).btn-rdv .btn-rdv-ic {
  display: inline-grid !important;
  width: 16px;
  height: 16px;
  margin: 0 2px 0 0 !important;
  place-items: center;
  flex: 0 0 16px;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav,#site-footer)
  .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui).btn-rdv .btn-rdv-ic svg {
  display: block;
  width: 16px;
  height: 16px;
}

/* Main landing + hub: scale each existing flip parent once, so flat/reveal
   layers keep precisely the same dimensions, transform and rider contact. */
@media (min-width: 1100px) {
  html:has(.page-numeriklub-lp)
    .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-art.nk-hero-flip,
  html:has(.page-numeriklub-hub)
    .page-numeriklub-hub > .page-hero-home > .hero-art.nk-hero-flip {
    scale: .85 !important;
    transform-origin: center bottom !important;
  }
  html:has(.page-numeriklub-lp)
    .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-rider.nk-hero-flip,
  html:has(.page-numeriklub-hub)
    .page-numeriklub-hub > .page-hero-home > .hero-rider.nk-hero-flip {
    scale: .85 !important;
    transform-origin: center bottom !important;
  }
  html:has(.page-numeriklub-lp)
    .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > .hero-art.nk-hero-flip {
    justify-self: center !important;
  }
  html:has(.page-numeriklub-hub)
    .page-numeriklub-hub > .page-hero-home > .hero-art.nk-hero-flip {
    bottom: calc(var(--nk-band-height) + 24px) !important;
  }
  html:has(.page-numeriklub-lp)
    .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home > :is(.hero-art.nk-hero-flip,.hero-rider.nk-hero-flip) {
    translate: 0 -96px !important;
  }
  .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home { --nk-band-height: 90px; }
  /* The generic hero nests its marquee in a positioned copy container.
     Anchor this LP's full-width band to the hero, not the shorter copy box. */
  html:has(.page-numeriklub-lp) .page-numeriklub-lp[data-page="/lp/numeriklub"]
    > .page-hero-home > .container {
    position: static !important;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp[data-page="/lp/numeriklub"]
    > .page-hero-home :is(.hero-marquee,#site-nav #site-footer) {
    position: absolute !important;
    top: auto !important;
    left: 50% !important;
    bottom: 0 !important;
    margin: 0 !important;
    transform: translateX(-50%) !important;
    translate: none !important;
  }
  html:has(.page-numeriklub-lp)
    .page-numeriklub-lp[data-page="/lp/numeriklub"] > .page-hero-home .hero-flip-hint,
  html:has(.page-numeriklub-hub)
    .page-numeriklub-hub > .page-hero-home .hero-flip-hint {
    right: 3% !important;
    left: auto !important;
    bottom: calc(var(--nk-band-height,64px) + 4px) !important;
    z-index: 12;
  }
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) > .page-hero-home .hero-flip-hint[hidden] {
  display: none !important;
}

/* The four existing partner marks are optically normalized on both hero rails. */
@media (max-width: 760px) {
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee {
    display: block !important;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee .nk-partners-loop {
    display: flex !important;
    width: max-content !important;
    height: 100% !important;
    align-items: center !important;
    margin: 0 !important;
    animation: nk-ui-c-partners-loop 70s linear infinite !important;
    will-change: transform;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee .nk-partners-group {
    display: flex !important;
    flex: 0 0 auto !important;
    align-items: center !important;
    gap: 22px !important;
    padding-inline-end: 22px !important;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee .hero-marquee-logo {
    width: calc(var(--nk-mobile-logo-canvas-h,34px) * 1376 / 768) !important;
    height: var(--nk-mobile-logo-canvas-h,34px) !important;
    flex: 0 0 calc(var(--nk-mobile-logo-canvas-h,34px) * 1376 / 768) !important;
    max-width: none !important;
    max-height: none !important;
    margin-inline: var(--nk-mobile-logo-left,-6px) var(--nk-mobile-logo-right,-6px) !important;
    object-fit: contain !important;
    opacity: 1 !important;
    filter: brightness(0) invert(1) !important;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee-logo[src*="ministere-culture"] {
    --nk-mobile-logo-canvas-h: 45px;
    --nk-mobile-logo-left: -12px;
    --nk-mobile-logo-right: -12px;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee-logo[src*="microforce"] {
    --nk-mobile-logo-canvas-h: 58px;
    --nk-mobile-logo-left: -9px;
    --nk-mobile-logo-right: -9px;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee-logo[src*="credit-mutuel"] {
    --nk-mobile-logo-canvas-h: 98px;
    --nk-mobile-logo-left: -9px;
    --nk-mobile-logo-right: -9px;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee-logo[src*="guyane-developpement"] {
    --nk-mobile-logo-canvas-h: 52px;
    --nk-mobile-logo-left: -7px;
    --nk-mobile-logo-right: -7px;
  }
}

/* Workshop accordion chevron follows its existing open state; image motion
   stays inside the fixed icon chip, so card dimensions never change. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers
  .nk-orbit-trigger:is(.is-open,[aria-expanded="true"]) .nk-orbit-chev {
  transform: rotate(180deg);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-chev {
  transition: transform .25s ease;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ic {
  overflow: hidden;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ic img {
  transition: transform .2s cubic-bezier(.34,1.56,.64,1);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
  .nk-hub-offer-card .prog-head .ic-chip-logo {
  overflow: hidden;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
  .nk-hub-offer-card .prog-head .ic-chip-logo img {
  transition: transform .4s ease;
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers
    .nk-orbit-trigger:hover .nk-orbit-ic img {
    transform: scale(1.08);
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-card:hover .prog-head .ic-chip-logo img {
    transform: scale(1.04);
  }
}

@media (max-width: 760px) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) .mobile-conversion-bar.nk-cta-group.nk-cta-group:is(.nk-cta-group,#site-nav .nk-cta-group) {
    box-sizing: border-box;
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    min-height: calc(72px + env(safe-area-inset-bottom,0px)) !important;
    gap: 8px !important;
    align-items: center !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) .mobile-conversion-bar.nk-cta-group.nk-cta-group:is(.nk-cta-group,#site-nav .nk-cta-group) > .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui):not(.btn-wa) {
    flex: 1 1 0 !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) .mobile-conversion-bar.nk-cta-group.nk-cta-group:is(.nk-cta-group,#site-nav .nk-cta-group) > .nk-cta-ui.nk-cta-ui.nk-cta-ui.nk-cta-ui[data-nk-cta="whatsapp"][data-nk-surface]:is(.nk-cta-ui,#site-nav .nk-cta-ui) {
    box-sizing: border-box !important;
    width: 48px !important;
    min-width: 48px !important;
    max-width: 48px !important;
    height: 48px !important;
    min-height: 48px !important;
    flex: 0 0 48px !important;
    padding: 0 !important;
    border-radius: 12px !important;
    font-size: 0 !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp)):has(.mobile-conversion-bar > .nk-cta-ui + .nk-cta-ui) body {
    padding-bottom: calc(72px + env(safe-area-inset-bottom,0px)) !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee .nk-partners-loop {
    display: flex !important;
    width: 100% !important;
    animation: none !important;
    will-change: auto;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee .nk-partners-group:not(:first-child) {
    display: none !important;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee .nk-partners-group:first-child {
    box-sizing: border-box;
    width: 100%;
    flex-wrap: wrap !important;
    justify-content: center;
    gap: 8px 16px !important;
    padding: 0 12px !important;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee {
    height: auto !important;
    min-height: 140px !important;
  }
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee .nk-partners-group:first-child .hero-marquee-logo:nth-child(n+5) {
    display: none !important;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-chev,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #ateliers .nk-orbit-ic img,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-card .prog-head .ic-chip-logo img {
    transition: none !important;
  }
}
@media (min-width:1100px) and (prefers-reduced-motion:reduce) {
  html:has(:is(.page-numeriklub-lp,.page-numeriklub-hub))
    :is(.page-numeriklub-lp,.page-numeriklub-hub) .hero-marquee {
    height: var(--nk-band-height,80px) !important;
    min-height: var(--nk-band-height,80px) !important;
  }
}

/* Lot 33 — Esprit cards + calendar tickets. The shared page scope keeps the
   hub and its matching landing-page section visually in step. */
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-grid {
  display: grid !important;
  grid-auto-flow: row !important;
  overflow: visible !important;
  scroll-marker-group: none !important;
  scroll-snap-type: none !important;
  grid-template-columns: repeat(2,minmax(0,1fr)) !important;
  align-items: stretch;
  gap: 20px !important;
}
@media (min-width:1100px) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-grid {
    grid-template-columns: repeat(4,minmax(0,1fr)) !important;
  }
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit {
  display: flex;
  min-width: 0;
  flex-direction: column;
  overflow: hidden;
  padding: 0 !important;
  border-radius: var(--nk-r-carte,16px) !important;
  background: var(--nk-carte,#fff) !important;
  color: var(--nk-encre,#18384B);
  box-shadow: var(--nk-elev-1,0 4px 14px rgba(24,56,75,.10)) !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-media {
  position: relative;
  width: 100%;
  aspect-ratio: 4 / 3;
  flex: 0 0 auto;
  margin: 0 !important;
  overflow: visible;
  isolation: isolate;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-media::after {
  display: none !important;
  content: none !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-media img {
  display: block;
  width: 100%;
  height: 100%;
  position: absolute;
  inset: 0;
  object-fit: cover !important;
  object-position: center 38%;
  border-radius: var(--nk-r-carte,16px) var(--nk-r-carte,16px) 0 0;
  transition: transform .32s cubic-bezier(.2,.7,.2,1);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit:nth-child(4) .nk-esprit-media img {
  object-position: center 100%;
  height: 180%;
  top: -80%;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-badge {
  position: absolute;
  z-index: 2;
  bottom: -22px;
  left: 22px;
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  border: 2px solid #18384B;
  border-radius: 50%;
  background: var(--nk-cta,#E6B82E);
  color: var(--nk-encre,#18384B);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: -.03em;
  line-height: 1;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit:nth-child(2) .nk-esprit-badge {
  background: #B8E7EA;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit:nth-child(3) .nk-esprit-badge {
  background: #F2C768;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit:nth-child(4) .nk-esprit-badge {
  background: #B5D1A0;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-copy {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 10px;
  padding: 24px 22px 22px !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-copy > h3 {
  margin: 0 !important;
  color: var(--nk-encre,#18384B);
  font-size: 18px !important;
  font-weight: 800;
  line-height: 1.22 !important;
  text-wrap: balance;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-copy > .card-body {
  margin: 0 !important;
  color: var(--nk-texte-2,#4F6572);
  font-size: 15px;
  line-height: 1.58 !important;
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit:hover .nk-esprit-media img {
    transform: scale(1.04);
  }
}

html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-list {
  align-items: stretch;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row {
  box-sizing: border-box;
  display: grid;
  grid-template-columns: minmax(108px,auto) minmax(0,1fr) minmax(118px,160px);
  grid-template-rows: minmax(36px,auto) minmax(44px,auto);
  gap: 7px 16px;
  align-items: center;
  min-width: 0;
  min-height: 132px;
  padding: 17px 18px !important;
  border: 1px solid rgba(24,56,75,.12) !important;
  border-left: 4px solid var(--nk-ecran,#72D6CE) !important;
  border-radius: var(--nk-r-carte,16px) !important;
  background: var(--nk-carte,#fff) !important;
  box-shadow: var(--nk-elev-1,0 4px 14px rgba(24,56,75,.10)) !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row::before,
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row::after {
  display: none !important;
  content: none !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-mini-dates {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 5px;
  min-width: 0;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-common .nk-upcoming-variants {
  display: grid;
  margin: 0 !important;
  gap: 9px;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-variant {
  display: grid;
  grid-template-columns: max-content minmax(0,1fr);
  gap: 5px 10px;
  align-items: center;
  min-width: 0;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-variant.has-territory {
  grid-template-columns: max-content max-content minmax(0,1fr);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-variant .nk-upcoming-mini-dates {
  grid-column: auto;
  grid-row: auto;
  gap: 4px;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-session {
  min-width: 58px;
  padding-inline: 7px;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-day-range {
  font-size: 18px;
  font-weight: 850;
  line-height: 1.08;
  white-space: nowrap;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-territory {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 3px 8px;
  border: 1px solid rgba(24,56,75,.13);
  border-radius: 999px;
  background: rgba(24,56,75,.045);
  color: var(--nk-encre,#18384B);
  font-size: 11px;
  font-weight: 800;
  line-height: 1.15;
  white-space: nowrap;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-variant > p {
  min-width: 0;
  margin: 0;
  color: var(--nk-texte-2,#4F6572);
  font-size: 13px;
  line-height: 1.4;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-block {
  display: flex;
  min-width: 40px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 5px 6px 4px;
  border-radius: 9px;
  background: rgba(114,214,206,.18);
  color: var(--nk-encre,#18384B);
  text-align: center;
  font-variant-numeric: tabular-nums;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-month {
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .08em;
  line-height: 1.1;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-day {
  font-size: 21px;
  font-weight: 850;
  line-height: 1.08;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-dash {
  color: var(--nk-texte-2,#4F6572);
  font-size: 12px;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-icon {
  grid-column: 1;
  grid-row: 1 / span 2;
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  justify-self: center;
  border-radius: 50%;
  background: rgba(114,214,206,.18);
  color: var(--nk-ecran,#287F82);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-icon svg {
  display: block;
  width: 21px;
  height: 21px;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-copy {
  grid-column: 2;
  grid-row: 1 / span 2;
  display: flex;
  min-width: 0;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 4px;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-period {
  margin: 0 !important;
  color: var(--nk-encre,#18384B);
  font-size: 16px;
  font-weight: 800;
  letter-spacing: 0;
  line-height: 1.25;
  text-transform: none;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date {
  color: var(--nk-texte-2,#4F6572);
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-duration,
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-details {
  color: var(--nk-texte-2,#4F6572);
  font-size: 13px;
  line-height: 1.45;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-price {
  grid-column: 3;
  grid-row: 1;
  justify-self: end;
  align-self: end;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  color: var(--nk-encre,#18384B) !important;
  font-size: 17px;
  font-weight: 850;
  line-height: 1.25;
  text-align: right;
  white-space: nowrap;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-copy .nk-upcoming-price {
  display: inline !important;
  grid-column: auto;
  grid-row: auto;
  font-size: inherit;
  font-weight: 800;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row > .btn {
  grid-column: 3;
  grid-row: 2;
  justify-self: end;
  align-self: start;
  width: max-content;
  max-width: 100%;
  min-height: 40px;
  margin: 0 !important;
  padding: 9px 13px !important;
  border: 0 !important;
  border-radius: 10px !important;
  background: var(--nk-cta,#E6B82E) !important;
  color: var(--nk-on-cta,#18384B) !important;
  font-size: 13px;
  line-height: 1.2;
  text-align: center;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-annual,
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-summer {
  grid-column: 1 / -1;
  grid-template-columns: minmax(110px,180px) minmax(0,1fr) minmax(150px,190px);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-annual {
  border-left-color: var(--nk-ecran,#72D6CE) !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-summer {
  border-left-color: #D3AA57 !important;
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-annual .nk-upcoming-date-block {
  background: rgba(114,214,206,.16);
}
html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
  :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-summer .nk-upcoming-date-icon {
  background: rgba(211,170,87,.18);
  color: #765918;
}

@media (max-width:760px) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-grid {
    grid-template-columns: minmax(0,1fr) !important;
    gap: 16px !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-copy {
    padding: 24px 22px 22px !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-list {
    grid-template-columns: minmax(0,1fr) !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-annual,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row-summer {
    grid-column: 1;
    grid-template-columns: minmax(0,1fr);
    grid-template-rows: auto auto auto auto;
    gap: 8px;
    min-height: 0;
    padding: 16px !important;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-mini-dates,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-date-icon {
    grid-column: 1;
    grid-row: 1;
    justify-self: start;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-copy {
    grid-column: 1;
    grid-row: 2;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-price {
    grid-column: 1;
    grid-row: 3;
    justify-self: start;
    align-self: start;
    text-align: left;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-row > .btn {
    grid-column: 1;
    grid-row: 4;
    width: 100%;
    max-width: none;
    justify-self: stretch;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-variant,
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-variant.has-territory {
    grid-template-columns: minmax(0,1fr);
    gap: 5px;
  }
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #calendrier-sec .nk-upcoming-variant .nk-upcoming-mini-dates {
    grid-column: 1;
    grid-row: auto;
  }
}

@media (prefers-reduced-motion:reduce) {
  html:has(:is(.page-numeriklub-hub,.page-numeriklub-lp))
    :is(.page-numeriklub-hub,.page-numeriklub-lp) #esprit .nk-esprit-media img {
    transition: none !important;
  }
}
/* The legacy calendar used display:contents and generated labels. Keep these
   new real date nodes in their own layout; do not inherit that old grid. */
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row {
  --nk-season: #285D7A;
  position: relative !important;
  display: grid !important;
  grid-template-columns: minmax(0,1fr) 260px !important;
  grid-template-rows: auto !important;
  gap: 20px !important;
  align-items: center !important;
  padding: 24px !important;
  border-left-color: var(--nk-season) !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row-common {
  grid-template-columns: minmax(0,1fr) 260px !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined :is([data-nk-period="TO"],[data-nk-session^="TO"]) { --nk-season: #935510; }
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined :is([data-nk-period="PA"],[data-nk-session^="PA"]) { --nk-season: #645086; }
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row-summer { --nk-season: #806A2F; }
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-copy {
  position: static !important;
  transform: none !important;
  translate: none !important;
  display: flex !important;
  flex-direction: column !important;
  flex-wrap: nowrap !important;
  align-content: stretch !important;
  grid-column: 1 !important;
  grid-row: 1 !important;
  gap: 12px !important;
  padding: 0 !important;
  margin: 0 !important;
  min-width: 0 !important;
  align-items: stretch !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row-common .nk-upcoming-copy { grid-column: 1 !important; }
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-period {
  position: static !important;
  display: block !important;
  color: #18384B !important;
  font-size: 18px !important;
  line-height: 1.25 !important;
  font-weight: 800 !important;
  margin: 0 !important;
  text-align: left !important;
  align-self: flex-start !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-details {
  position: static !important;
  display: block !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: #365064 !important;
  padding: 0 !important;
  grid-column: 2 !important;
  grid-row: 1 !important;
  align-self: center !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined :is(.nk-upcoming-copy,.nk-upcoming-period,.nk-upcoming-details)::before,
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined :is(.nk-upcoming-copy,.nk-upcoming-period,.nk-upcoming-details)::after {
  content: none !important; display: none !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-mini-dates {
  position: static !important;
  display: flex !important;
  grid-column: 1 !important;
  grid-row: 1 !important;
  flex-wrap: wrap !important;
  gap: 8px !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-date-block {
  width: 96px !important;
  min-width: 96px !important;
  padding: 0 0 8px !important;
  overflow: hidden !important;
  background: #F1F5F8 !important;
  color: #18384B !important;
  border: 1px solid #CDD9E0 !important;
  border-radius: 8px !important;
  text-align: center !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-date-month {
  display: block !important; width: 100% !important;
  font-size: 11px !important; line-height: 1.3 !important; font-weight: 800 !important;
  color: #FFF !important; background: var(--nk-season) !important; padding: 5px 3px !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined :is(.nk-upcoming-date-day,.nk-upcoming-date-day-range) {
  font-size: 24px !important; line-height: 1.1 !important; font-weight: 800 !important; color: #18384B !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-variant {
  display: grid !important;
  grid-template-columns: 232px minmax(0,1fr) !important;
  gap: 12px !important; align-items: center !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-date-dash {
  align-self: center !important;
  font-size: 22px !important;
  line-height: 1 !important;
  color: var(--nk-season) !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-description {
  display: flex !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: #365064 !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 8px 10px !important;
  grid-column: 2 !important;
  grid-row: 1 !important;
  min-width: 0 !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-description p {
  flex: 1 1 140px;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-description :is(.nk-upcoming-date,.nk-upcoming-duration,.nk-upcoming-holiday-note) {
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: #365064 !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-territory {
  grid-column: 2 !important; grid-row: 1 !important;
  color: #365064 !important; font-size: 12px !important; font-weight: 700 !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-variant p {
  grid-column: 2 !important; grid-row: 1 !important;
  font-size: 14px !important; line-height: 1.5 !important; color: #365064 !important; margin: 0 !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-variant-shared p { grid-column: 2 !important; }
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-price {
  position: absolute !important; top: calc(50% - 48px) !important; right: 24px !important;
  display: flex !important; align-items: baseline !important; gap: 6px !important;
  font-size: 20px !important; line-height: 1.2 !important; font-weight: 800 !important; color: #18384B !important;
  padding: 0 !important; margin: 0 !important;
  transform: none !important;
  translate: none !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row > .btn {
  grid-column: -2 !important; grid-row: 1 !important;
  justify-self: stretch !important; align-self: center !important; width: 100% !important;
  margin: 32px 0 0 !important;
}
:is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row-summer > .btn { margin-top: 0 !important; }
@media (max-width:760px) {
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row {
    grid-template-columns: minmax(0,1fr) !important; gap: 16px !important; padding: 20px !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-copy {
    grid-column: 1 !important; grid-row: auto !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-mini-dates { grid-row: auto !important; }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-variant .nk-upcoming-mini-dates { grid-row: 1 !important; }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-variant {
    grid-template-columns: minmax(0,1fr) !important; gap: 8px !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined :is(.nk-upcoming-details,.nk-upcoming-description) {
    grid-column: 1 !important;
    grid-row: 2 !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-description {
    flex-direction: column !important;
    align-items: flex-start !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-description p {
    flex: none;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined :is(.nk-upcoming-variant p,.nk-upcoming-territory) {
    grid-column: 1 !important; grid-row: auto !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-territory { grid-row: 2 !important; }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-price {
    position: static !important; align-self: start !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row > .btn {
    grid-column: 1 !important; grid-row: auto !important; margin: 0 !important;
  }
}

/* Formats offer-card CTA footer: keep the inset on the footer itself, not as
   negative button margins. The cards have no internal padding, so this yields
   a consistent 20px gutter at every breakpoint without stacking insets. */
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
  .nk-hub-offer-card > .mt-6 {
  box-sizing: border-box !important;
  grid-column: 1 / -1 !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  margin-inline: 0 !important;
  padding: 8px 20px 20px !important;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
  .nk-hub-offer-card > .mt-6 > .btn.nk-cta-ui {
  box-sizing: border-box !important;
  display: flex !important;
  flex: 1 1 auto !important;
  width: 100% !important;
  min-width: 0 !important;
  max-width: 100% !important;
  margin-inline: 0 !important;
  white-space: normal !important;
}
@media (min-width:761px) and (max-width:1099px) {
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row {
    grid-template-columns: minmax(0,1fr) !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-price {
    position: static !important;
    align-self: start !important;
  }
  :is(.page-numeriklub-hub,.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-calendar-refined .nk-upcoming-row > .btn {
    grid-column: 1 !important;
    grid-row: auto !important;
    margin: 0 !important;
  }
}
/* Final Esprit-only refinements. Loaded after the shared UI refinement sheet. */
html:has(:is(.page-numeriklub-hub, .page-numeriklub-lp))
  :is(.page-numeriklub-hub, .page-numeriklub-lp) #esprit .nk-esprit-title-break {
  display: block;
}

@media (max-width: 767px) {
  html:has(:is(.page-numeriklub-hub, .page-numeriklub-lp))
    :is(.page-numeriklub-hub, .page-numeriklub-lp) #esprit .nk-esprit-title-break {
    display: none;
  }
}

@media (min-width: 768px) {
  html:has(:is(.page-numeriklub-hub, .page-numeriklub-lp))
    :is(.page-numeriklub-hub, .page-numeriklub-lp) #esprit h2:has(.nk-esprit-title-break) {
    white-space: nowrap;
    max-width: none !important;
    overflow: visible;
  }
}

html:has(:is(.page-numeriklub-hub, .page-numeriklub-lp))
  :is(.page-numeriklub-hub, .page-numeriklub-lp) #esprit .nk-esprit:nth-child(4) .nk-esprit-media img {
  object-position: center 80%;
}

html:has(:is(.page-numeriklub-hub, .page-numeriklub-lp))
  :is(.page-numeriklub-hub, .page-numeriklub-lp) #esprit .nk-esprit-copy {
  padding: 30px 22px 22px !important;
}
/* LP-only bridge: reuse the home calendar's two-column visual grammar without
   changing the legacy offer button, its form styles, or other Numériklub pages. */
:is(.page-numeriklub-lp,#site-nav #site-footer) #calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-price {
  position: static !important;
  top: auto !important;
  right: auto !important;
  white-space: normal !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-detail-dates {
  list-style: none;
  padding: 0;
  margin: 0;
  flex: 1 1 100%;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-detail-dates .nk-cal-date {
  display: block;
  padding: 0;
  margin: 0;
  border: 0;
  background: transparent;
  color: #365064;
  font-size: 14px;
  line-height: 1.5;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-detail-dates .nk-cal-date-icon {
  display: none;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-detail-dates .nk-cal-date-label {
  font-size: inherit;
  color: inherit;
  font-weight: inherit;
}

#calendrier-sec .nk-lp-calendar-v9 {
  --nk-season: #285D7A;
  position: relative !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 260px !important;
  grid-template-rows: auto !important;
  gap: 20px !important;
  align-items: center !important;
}

#calendrier-sec .nk-lp-calendar-v9.nk-upcoming-row-common,
#calendrier-sec .nk-lp-calendar-v9[data-nk-period="TO"] { --nk-season: #935510; }
#calendrier-sec .nk-lp-calendar-v9[data-nk-period="PA"] { --nk-season: #645086; }
#calendrier-sec .nk-lp-calendar-v9.nk-upcoming-row-summer { --nk-season: #806A2F; }

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-copy {
  position: static !important;
  display: flex !important;
  flex-direction: column !important;
  flex-wrap: nowrap !important;
  align-items: stretch !important;
  gap: 12px !important;
  grid-column: 1 !important;
  grid-row: 1 !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  transform: none !important;
  translate: none !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-period {
  position: static !important;
  display: block !important;
  align-self: flex-start !important;
  margin: 0 !important;
  color: #18384B !important;
  font-size: 18px !important;
  font-weight: 800 !important;
  line-height: 1.25 !important;
  text-align: left !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-variants {
  display: flex !important;
  flex-direction: column !important;
  gap: 10px !important;
  min-width: 0 !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-variant {
  display: grid !important;
  grid-template-columns: 232px minmax(0, 1fr) !important;
  gap: 12px !important;
  align-items: center !important;
  min-width: 0 !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-mini-dates {
  position: static !important;
  display: flex !important;
  flex-wrap: wrap !important;
  grid-column: 1 !important;
  grid-row: 1 !important;
  gap: 8px !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-date-block {
  display: flex !important;
  width: 96px !important;
  min-width: 96px !important;
  flex-direction: column !important;
  gap: 6px !important;
  overflow: hidden !important;
  padding: 0 0 8px !important;
  border: 1px solid #CDD9E0 !important;
  border-radius: 8px !important;
  background: #F1F5F8 !important;
  color: #18384B !important;
  text-align: center !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-date-month {
  display: block !important;
  width: 100% !important;
  padding: 5px 3px !important;
  background: var(--nk-season) !important;
  color: #FFF !important;
  font-size: 11px !important;
  font-weight: 800 !important;
  line-height: 1.3 !important;
}

#calendrier-sec .nk-lp-calendar-v9 :is(.nk-upcoming-date-day, .nk-upcoming-date-day-range) {
  color: #18384B !important;
  font-size: 24px !important;
  font-weight: 800 !important;
  line-height: 1.1 !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-date-dash {
  align-self: center !important;
  color: var(--nk-season) !important;
  font-size: 22px !important;
  line-height: 1 !important;
}

#calendrier-sec .nk-lp-calendar-v9 :is(.nk-upcoming-description, .nk-upcoming-details) {
  position: static !important;
  display: flex !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 8px 10px !important;
  grid-column: 2 !important;
  grid-row: 1 !important;
  min-width: 0 !important;
  padding: 0 !important;
  color: #365064 !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-description p {
  flex: 1 1 140px;
  margin: 0 !important;
  color: #365064 !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-territory {
  color: #365064 !important;
  font-size: 12px !important;
  font-weight: 700 !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-actions {
  display: flex !important;
  grid-column: 2 !important;
  grid-row: 1 !important;
  flex-direction: column !important;
  align-items: stretch !important;
  justify-content: center !important;
  gap: 12px !important;
  min-width: 0 !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-price {
  position: static !important;
  display: flex !important;
  align-items: baseline !important;
  gap: 6px !important;
  margin: 0 !important;
  padding: 0 !important;
  color: #18384B !important;
  font-size: 20px !important;
  font-weight: 800 !important;
  line-height: 1.25 !important;
  transform: none !important;
  translate: none !important;
}

#calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-actions > :is(button, .btn),
#calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-actions :is(button, .btn) {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
}

@media (max-width: 760px) {
  #calendrier-sec .nk-lp-calendar-v9 {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 16px !important;
    padding: 20px !important;
  }

  #calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-copy {
    grid-column: 1 !important;
    grid-row: auto !important;
  }

  #calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-variant {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 8px !important;
  }

  #calendrier-sec .nk-lp-calendar-v9 :is(.nk-upcoming-description, .nk-upcoming-details) {
    grid-column: 1 !important;
    grid-row: 2 !important;
  }

  #calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-description {
    flex-direction: column !important;
    align-items: flex-start !important;
  }

  #calendrier-sec .nk-lp-calendar-v9 .nk-upcoming-description p { flex: none; }

  #calendrier-sec .nk-lp-calendar-v9 .nk-lp-calendar-actions {
    grid-column: 1 !important;
    grid-row: auto !important;
    align-items: stretch !important;
  }
}
/* Only responsive feedback and the single initial hero sequence. */
/* Skip offscreen layout/paint, not content or navigation. Fixed dialogs stay
   outside this containment; the browser resolves anchor targets on demand. */
.page-numeriklub-lp > section.section:not(:has(form,[role="dialog"],.modal)) {
  content-visibility: auto;
  contain-intrinsic-size: auto 800px;
}
.page-numeriklub-lp section :is(.nk-section-side-visual,.ic-chip) {
  content-visibility: auto;
  contain-intrinsic-size: auto 60px;
}
.page-hero:is(.nk-brush-compositing,.nk-brush-fallback) .hero-float {
  animation-play-state: paused !important;
}
/* No NK layer (including decorative floats) uses the legacy CSS crossfade. */
.page-hero .nk-hero-flip > .hero-flip-rev {
  opacity: 0 !important; visibility: hidden !important; transition: none !important;
}
.page-hero .nk-hero-flip > .hero-flip-base {
  opacity: 1 !important; transition: none !important;
}
/* Pause only during painting/drying; resume decorative poses afterwards. */
.page-hero:is(.nk-brush-compositing,.nk-brush-fallback) :is(.hero-art,.hero-rider,.hero-float) {
  animation-play-state: paused !important;
}
.page-hero.nk-brush-compositing > .nk-hero-brush {
  position: absolute;
  inset: auto;
  /* Above the legacy rider (7), below the existing hint (12). */
  z-index: 8 !important;
  display: block;
  pointer-events: none !important;
  opacity: 1 !important;
  max-width: none;
  max-height: none;
  contain: strict;
  isolation: isolate;
  transform: translateZ(0);
  will-change: transform;
}
.page-hero.nk-brush-compositing :is(.hero-art,.hero-rider).nk-hero-flip > .hero-flip-rev {
  visibility: hidden !important;
}
.page-hero.nk-brush-compositing :is(.hero-art,.hero-rider).nk-hero-flip > .hero-flip-base {
  visibility: visible !important;
}
.page-hero:is(.nk-teaser-pending,.nk-teaser-running) .hero-flip-hint {
  opacity: 0 !important;
  pointer-events: none;
}
.page-hero.nk-teaser-finished .hero-flip-hint {
  transition: opacity .3s ease;
}
.page-numeriklub-lp .nk-teaser-finished .hero-flip-hint {
  transition: opacity .3s ease;
}
.page-numeriklub-lp :is(.nk-teaser-pending,.nk-teaser-running) .hero-flip-hint {
  opacity: 0 !important;
  pointer-events: none;
}
@media (prefers-reduced-motion:reduce) {
  .page-hero.nk-teaser-finished .hero-flip-hint { transition: none; }
  .page-numeriklub-lp .nk-teaser-finished .hero-flip-hint { transition: none; }
}
.page-numeriklub-lp .nk-entry-managed h1 {
  animation: none !important; opacity: 1 !important;
  filter: none !important; transform: none !important;
}
.page-numeriklub-lp .nk-entry-managed .nk-hero-title-mark {
  position: relative; isolation: isolate; background: none !important;
}
.page-numeriklub-lp .nk-entry-managed .nk-hero-title-mark::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: #FFE741; border-radius: inherit;
  transform-origin: left center;
  transform: scaleX(var(--nk-highlight-progress,1));
}
.page-numeriklub-lp .nk-intro-word { display: inline-block; }
/* The LP's old gradient text-fill is transparent. Transformed word layers
   cannot inherit its parent background-clip:text: paint each word explicitly. */
.page-numeriklub-lp[data-page="/lp/numeriklub"] .nk-intro-word {
  color: #F4F8FB !important;
  -webkit-text-fill-color: currentColor !important;
}
.page-numeriklub-lp .nk-entry-managed > :is(.hero-art,.hero-rider,.hero-floats) {
  animation: none !important;
}
.page-numeriklub-lp .nk-intro-visual {
  translate: 0 var(--nk-entry-y,0px) !important;
}
@media (min-width:1100px) {
  html:has(.page-numeriklub-lp) .page-numeriklub-lp[data-page="/lp/numeriklub"]
    > .page-hero-home > .hero-art.nk-hero-flip {
    position: absolute !important;
    left: auto !important; right: 3% !important; top: auto !important;
    bottom: calc(var(--nk-band-height,90px) + 24px) !important;
    width: min(48vw,690px) !important;
    height: 630px !important;
    transform: none !important;
    translate: 0 var(--nk-entry-y,0px) !important;
  }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp[data-page="/lp/numeriklub"]
    > .page-hero-home > .hero-rider.nk-hero-flip.nk-intro-visual {
    translate: 0 calc(-96px + var(--nk-entry-y,0px)) !important;
  }
}
@media (min-width:1100px) and (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  .page-numeriklub-lp .nk-entry-managed .hero-float {
    translate: var(--nk-float-x,0px) var(--nk-float-y,0px);
  }
}
.page-numeriklub-lp .nk-stat-final {
  position: absolute !important; width: 1px !important; height: 1px !important;
  padding: 0 !important; margin: -1px !important; overflow: hidden !important;
  clip-path: inset(50%) !important; white-space: nowrap !important;
}
.page-numeriklub-lp .faq details { interpolate-size: allow-keywords; }
.page-numeriklub-lp .faq details::details-content {
  block-size: 0; overflow: clip;
  transition: block-size .3s ease, content-visibility .3s allow-discrete;
}
.page-numeriklub-lp .faq details[open]::details-content { block-size: auto; }
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.faq,#site-nav #site-footer) details summary:not(:has(.faq-chevron))::after {
  content: "+" !important; rotate: 0deg !important; transition: rotate .3s ease !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.faq,#site-nav #site-footer) details[open] summary:not(:has(.faq-chevron))::after { rotate: 45deg !important; }
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is([data-nk-faq-item],#site-nav #site-footer) .faq-chevron {
  transition: transform .3s ease !important; transform: rotate(0deg) !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is([data-nk-faq-item][open],#site-nav #site-footer) .faq-chevron { transform: rotate(45deg) !important; }
.page-numeriklub-lp .nk-calendar-rail { position: relative; isolation: isolate; }
.page-numeriklub-lp .nk-calendar-indicator {
  position: absolute; left: 0; z-index: -1; pointer-events: none;
  border-radius: 12px; background: #0E3044;
  transition: transform .3s ease, width .3s ease;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.nk-calendar-rail,#site-nav #site-footer) .nk-tab {
  position: relative; background: transparent !important; border-radius: 12px !important;
}
html:has(.page-numeriklub-lp) .page-numeriklub-lp
  :is(.nk-calendar-rail,#site-nav #site-footer) .nk-tab.is-active { color: white !important; }
@media (prefers-reduced-motion:reduce) {
  .page-numeriklub-lp .nk-calendar-indicator,
  .page-numeriklub-lp .faq details::details-content { transition: none !important; }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp
    :is(.faq,#site-nav #site-footer) details summary::after { transition: none !important; }
  html:has(.page-numeriklub-lp) .page-numeriklub-lp
    :is([data-nk-faq-item],#site-nav #site-footer) .faq-chevron { transition: none !important; }
  .page-numeriklub-lp .nk-entry-managed .hero-float,
  .page-numeriklub-lp .nk-intro-visual { translate: none !important; }
}

/* Numériklub's island hero stays flat at rest (including fallback). The
   canvas compositor alone owns the image layers while a brush is active. */
.page-hero:not(.nk-brush-compositing) :is(.hero-art,.hero-rider).nk-hero-flip > .hero-flip-rev,
.page-hero:not(.nk-brush-compositing) :is(.hero-art,.hero-rider).nk-hero-flip:hover > .hero-flip-rev,
.page-hero:not(.nk-brush-compositing) :is(.hero-art,.hero-rider).nk-hero-flip:focus-visible > .hero-flip-rev {
  opacity: 0 !important;
  visibility: hidden !important;
  transition: none !important;
}
.page-hero:not(.nk-brush-compositing) :is(.hero-art,.hero-rider).nk-hero-flip > .hero-flip-base,
.page-hero:not(.nk-brush-compositing) :is(.hero-art,.hero-rider).nk-hero-flip:hover > .hero-flip-base,
.page-hero:not(.nk-brush-compositing) :is(.hero-art,.hero-rider).nk-hero-flip:focus-visible > .hero-flip-base {
  opacity: 1 !important;
  visibility: visible !important;
  transition: none !important;
}
.page-hero:not(.nk-brush-compositing) :is(.hero-art,.hero-rider).nk-hero-flip {
  cursor: default !important;
  outline: none !important;
}

/* Hint capability and visibility are separate from active canvas painting:
   ready persists at rest; the JS visibility marker is retired on first paint. */
.page-hero:has(.nk-hero-flip) .hero-flip-hint {
  left: 74% !important;
  right: auto !important;
  bottom: clamp(85px, 10vh, 120px) !important;
  transform: translateX(-50%) !important;
  max-width: 48%;
  z-index: 4;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px 8px 11px;
  border: 1px solid rgba(23, 59, 104, .16);
  border-radius: 999px;
  color: #173b68;
  background: rgba(255, 255, 255, .94);
  box-shadow: 0 8px 22px rgba(18, 45, 73, .14);
  backdrop-filter: blur(8px);
  font-family: "Nunito", var(--font-ui, var(--font-body, sans-serif));
  font-size: 14px;
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: 0;
  white-space: nowrap;
  pointer-events: none !important;
  opacity: 0 !important;
  visibility: hidden !important;
  animation: none !important;
  transition: opacity .3s ease, visibility 0s linear .3s;
}
.page-hero:has(.nk-hero-flip) .hero-flip-hint .hero-flip-brush {
  flex: 0 0 auto;
}
.page-hero:has(.nk-hero-flip) .nk-hint-icon { flex: 0 0 18px; }
@media (min-width: 1100px) and (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .page-hero.nk-brush-ready.nk-brush-hint-visible:not(.nk-brush-fallback) .hero-flip-hint {
    opacity: 1 !important;
    visibility: visible !important;
    transition: opacity .3s ease, visibility 0s;
  }
}
/* Lot 46 — targeted presentation corrections for the existing Numériklub
   home and campaign landing page. No content, imagery or behaviour changes. */
html.nk-lot46-controls-page :is(button,input,select,textarea):not(:where(form,form *,dialog,dialog *,[role="dialog"],[role="dialog"] *,[aria-modal="true"],[aria-modal="true"] *)) {
  font-family: var(--font-ui);
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-lot46-offer-copy {
  padding: 12px 18px;
}
html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-lot46-offer-copy :is(.card-body,.nk-offer-facts) {
  margin-inline: 0 !important;
}

/* Shared site header: compact, consistently sized controls on both routes. */
html:has(.page-numeriklub-hub) #site-nav .nav-inner,
html:has(.page-numeriklub-lp) #site-nav .nav-inner {
  gap: 12px;
}

html:has(.page-numeriklub-hub) #site-nav .nav-cta:not(.nav-cta-ghost),
html:has(.page-numeriklub-lp) #site-nav .nav-cta:not(.nav-cta-ghost) {
  box-sizing: border-box;
  min-height: 48px;
  height: 48px;
  padding-inline: 14px;
  border-radius: 12px;
  font-family: "Nunito", sans-serif;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.15;
  white-space: nowrap;
}

html:has(.page-numeriklub-hub) #site-nav .nav-wa,
html:has(.page-numeriklub-lp) #site-nav .nav-wa {
  box-sizing: border-box;
  display: grid;
  width: 44px;
  min-width: 44px;
  height: 44px;
  min-height: 44px;
  flex: 0 0 44px;
  place-items: center;
  padding: 0;
  border-radius: 12px;
}
html.nk-lot46-controls-page #site-nav .nav-inner .nav-wa.btn.nk-cta-ui {
  width: 44px !important;
  min-width: 44px !important;
  max-width: 44px !important;
  min-height: 44px !important;
  height: 44px !important;
  padding: 0 !important;
  gap: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-size: 0 !important;
  line-height: 0 !important;
}
/* Visually hidden, NOT display:none: existing label remains the accessible
   button name, without changing the copy or adding an aria-label. */
html.nk-lot46-controls-page #site-nav .nav-wa :is(.nk-cta-label,.nk-cta-arrow,.nk-cta-arrow-phrase) {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
}
html.nk-lot46-controls-page #site-nav .nav-wa::after {
  content: none !important;
}
html.nk-lot46-controls-page #site-nav .nav-wa svg {
  width: 22px;
  height: 22px;
  flex: 0 0 22px;
}

html:has(.page-numeriklub-hub) #site-nav .nav-wa .btn-wa-ic,
html:has(.page-numeriklub-lp) #site-nav .nav-wa .btn-wa-ic {
  display: grid;
  width: 20px;
  height: 20px;
  margin: 0;
  place-items: center;
}

html:has(.page-numeriklub-hub) #site-nav .nav-wa .btn-wa-ic svg,
html:has(.page-numeriklub-lp) #site-nav .nav-wa .btn-wa-ic svg {
  display: block;
  width: 20px;
  height: 20px;
}

html:has(.page-numeriklub-hub) #site-nav .lang-toggle,
html:has(.page-numeriklub-lp) #site-nav .lang-toggle {
  box-sizing: border-box;
  height: 44px;
  min-height: 44px;
  border-radius: 999px;
}

html:has(.page-numeriklub-hub) #site-nav .lang-toggle button,
html:has(.page-numeriklub-lp) #site-nav .lang-toggle button {
  box-sizing: border-box;
  min-width: 44px;
  height: 44px;
  padding-inline: 9px;
  font-family: "Nunito", sans-serif;
  font-size: 13px;
  font-weight: 700;
  line-height: 1;
}

/* Four existing home-format cards: each card shares the same seven content
   tracks so titles, prices, dates, detail links and conversion controls line
   up across the row without changing the copy or card sequence. */
@media (min-width: 1100px) {
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats .nk-hub-offer-grid {
    grid-template-rows: repeat(7, auto);
    row-gap: 0;
    align-items: stretch;
    column-gap: 16px;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card:not(:where(form *,dialog *,
      [role="dialog"] *,[aria-modal="true"] *,[class*="modal"] *,
      [class*="Modal"] *)) {
    box-sizing: border-box;
    display: grid !important;
    grid-column: auto;
    grid-row: span 7;
    grid-template-rows: subgrid;
    min-width: 0;
    align-self: stretch;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .prog-head {
    grid-row: 1;
    grid-column: 1;
    min-width: 0;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .nk-card-price {
    grid-row: 6;
    grid-column: 1;
    align-self: stretch;
    margin: 0 !important;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .nk-offer-fomo {
    grid-row: 2;
    grid-column: 1;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .nk-lot46-offer-copy {
    grid-row: 3;
    grid-column: 1;
    align-self: start;
    padding: 12px 18px;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-lot46-offer-copy :is(.card-body,.nk-offer-facts) {
    margin: 0 !important;
    line-height: 1.45;
  }
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-lot46-offer-copy .nk-offer-facts {
    margin-top: 12px !important;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .nk-hub-offer-dates {
    grid-row: 4;
    grid-column: 1;
    align-self: start;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .nk-offer-info {
    grid-row: 5;
    grid-column: 1;
    align-self: end;
    margin: 0 !important;
    padding: 0 18px 8px;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .mt-6 {
    grid-row: 7;
    grid-column: 1;
    align-self: stretch;
    margin: 0 !important;
    padding: 8px 12px 16px !important;
  }

  /* The dates link is the more prominent route into availability; the
     existing detail link remains a quieter, separate secondary action. */
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid .nk-hub-offer-dates .nk-hub-dates-link {
    display: inline-flex;
    min-height: 36px;
    align-items: center;
    margin-top: 6px;
    padding: 0 10px;
    border-radius: 8px;
    background: #EAF7FD;
    color: #0059CF;
    font-family: "Nunito", sans-serif;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid .nk-offer-info {
    margin-top: 8px !important;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid .nk-offer-info-link {
    display: inline-flex;
    min-height: 36px;
    align-items: center;
    padding: 0 2px;
    border: 0 !important;
    background: transparent !important;
    color: #39556F !important;
    font-family: "Nunito", sans-serif;
    font-size: 14px !important;
    font-weight: 700;
    line-height: 1.2;
    text-decoration: underline;
    text-underline-offset: 3px;
    white-space: nowrap;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .mt-6 > .btn {
    box-sizing: border-box;
    display: flex !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    min-height: 48px !important;
    height: 48px;
    justify-content: center;
    padding: 0 8px !important;
    border-radius: 12px !important;
    font-family: "Nunito", sans-serif !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.15 !important;
    text-align: center;
    white-space: nowrap !important;
  }

  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .mt-6 > .btn .nk-cta-label,
  html:has(.page-numeriklub-hub) .page-numeriklub-hub #formats
    .nk-hub-offer-grid > .nk-hub-offer-card > .mt-6 > .btn .nk-cta-arrow-phrase {
    white-space: nowrap !important;
  }
}
/* Important-layer precedence is deliberate: legacy CTA rules are unlayered
   !important with route-dependent ID specificity. Keep these fixes local. */
@layer nk-lot46-controls {
  html:has(.page-numeriklub-hub) #formats .nk-hub-dates-link {
    display: inline-flex !important;
    align-items: center !important;
    min-height: 44px !important;
    padding: 0 8px !important;
    border-radius: 8px !important;
    background: #D8F0FA !important;
    color: #0059CF !important;
    font: 800 14px/1.25 Nunito,sans-serif !important;
    text-decoration: none !important;
  }
  html:has(.page-numeriklub-hub) #formats .nk-offer-info-link {
    display: inline-flex !important;
    align-items: center !important;
    min-height: 44px !important;
    padding: 0 2px !important;
    background: transparent !important;
    border-color: transparent !important;
    color: #39556F !important;
    font: 700 14px/1.25 Nunito,sans-serif !important;
    text-decoration: underline !important;
    text-underline-offset: 3px !important;
  }
  html.nk-lot46-controls-page #site-nav .universe-trigger {
    box-sizing: border-box !important;
    height: 48px !important;
    min-height: 48px !important;
    padding-block: 2px !important;
  }
  html.nk-lot46-controls-page #site-nav .universe-trigger img {
    max-height: 40px;
    width: auto;
  }
  html.nk-lot46-controls-page #site-nav .nav-wa {
    box-sizing: border-box !important;
    width: 44px !important;
    min-width: 44px !important;
    max-width: 44px !important;
    min-height: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    gap: 0 !important;
    flex: 0 0 44px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 0 !important;
    line-height: 0 !important;
  }
  html.nk-lot46-controls-page #site-nav .lang-toggle {
    height: 44px !important;
    min-height: 44px !important;
    border-radius: 999px !important;
    overflow: hidden !important;
    display: inline-flex !important;
  }
  html.nk-lot46-controls-page #site-nav .lang-toggle button {
    box-sizing: border-box !important;
    height: 44px !important;
    min-height: 44px !important;
    min-width: 44px !important;
    padding: 0 9px !important;
    font: 700 13px/1 Nunito,sans-serif !important;
  }
  html.nk-lot46-controls-page #site-nav .lang-toggle:focus-within {
    outline: 3px solid #0059CF;
    outline-offset: 3px;
    box-shadow: 0 0 0 3px #fff;
  }
  html.nk-lot46-controls-page #site-nav .nav-cta:not(.nav-cta-ghost) {
    min-height: 48px !important;
    height: 48px !important;
    font: 700 16px/1.15 Nunito,sans-serif !important;
  }
  html.nk-lot46-controls-page #site-nav .nav-link {
    min-height: 44px;
    padding-inline: 10px;
  }
}

/* Keep directions readable after the shared text-CTA adapter clears its
   inherited background. This excludes the home and all protected forms. */
#app .page-numeriklub-lp #lieux .campus-map-directions.nk-cta-ui {
  color: #fff !important;
  background-color: #0e2438 !important;
}
@layer nk-lot46-controls {
#app .page-numeriklub-lp .nk-reference-offer-detail.nk-offer-info-link:is(:hover,:focus-visible,:active) {
  color: #0059cf !important;
}
#app .page-numeriklub-lp #lieux .campus-map-directions.nk-cta-ui:focus-visible {
  /* The map frame clips external rings; draw a contrasting ring inside. */
  outline: 3px solid #fff !important;
  outline-offset: -4px !important;
}
}

/* Opt-in presentation; important layer defeats old unlayered theme overrides. */
@layer numeriklub-lot47 {
#app .nk47-hero,
#app .nk47-hero .hero-bg {
  background-color: #0e3044 !important;
}
#app .nk47-dark .nk47-lead-panel {
  background-color: #18394c !important;
  background-image: none !important;
  border-color: #526f82 !important;
}
#app .nk47-dark .nk47-lead-panel :is(.num,p,h2) {
  color: #f3f8fb !important;
}
#app .nk47-dark .faq :is(summary,summary span,summary strong,.faq-answer,.faq-answer p) {
  color: #f3f8fb !important;
}
#app .nk47-dark .faq :is(details,.faq-item) {
  background: #18394c !important;
  border-color: #526f82 !important;
}
#app .nk47-hero {
  background-image: none !important;
}
#app .nk47-hero .hero-bg:not([style*="background-image"]) {
  background-image: none !important;
}
#app .nk47-hero :is(h1,p,.lead,.hero-sub) {
  color: #f3f8fb !important;
}
#app .nk47-hero .eyebrow {
  color: #b5e2f4 !important;
}
#app .nk47-hero :is(.btn-ghost,.btn-secondary,.btn-rdv) {
  background: #163b50 !important;
  color: #f3f8fb !important;
  border-color: #b5e2f4 !important;
}
#app .nk47-hero :is(.btn-ghost,.btn-secondary,.btn-rdv):hover {
  background: #234b63 !important;
  color: #ffffff !important;
}
#app .nk47-hero :is(.btn,.nk47-inline-link):focus-visible {
  outline: 3px solid #b5e2f4 !important;
  outline-offset: 4px !important;
}
#app .nk47-hero .nk47-icon {
  color: #b5e2f4 !important;
  background: #163b50 !important;
}
#app .nk47-head h2 {
  font-style: normal !important;
  font-weight: 900 !important;
}
#app .nk47-light {
  background-color: #ffffff !important;
  background-image: none !important;
  color: #0e2438 !important;
}


#app .nk47-soft {
  background-color: #eaf7fd !important;
  background-image: none !important;
  color: #0e2438 !important;
}

#app .nk47-dark {
  background-color: #0e3044 !important;
  background-image: none !important;
  color: #f3f8fb !important;
}

#app .nk47-light :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, blockquote, small, .lead, .sub, .prose-p, .prose-list, .prose-ul, .card-body, .muted, .k, .v, .blog-card-title),
#app .nk47-soft :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, blockquote, small, .lead, .sub, .prose-p, .prose-list, .prose-ul, .card-body, .muted, .k, .v, .blog-card-title) {
  color: #0e2438 !important;
}

#app .nk47-dark :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, blockquote, small, .lead, .sub, .prose-p, .prose-list, .prose-ul, .card-body, .muted, .k, .v, .blog-card-title) {
  color: #f3f8fb !important;
}
#app .nk47-dark .section-head .num {
  color: #b5e2f4 !important;
}
#app .nk47-dark .eyebrow {
  color: #b5e2f4 !important;
}
#app :is(.nk47-light,.nk47-soft) .nk-lp-trust-item span {
  color: #0e2438 !important;
}
#app :is(.nk47-light,.nk47-soft) .nk-lp-trust-item .nk-lp-trust-value {
  color: #0059cf !important;
}
#app .nk47-dark :where(a:not(.btn)) {
  color: #b5e2f4 !important;
}
#app .nk47-dark :where(a:not(.btn)):hover {
  color: #ffffff !important;
}
#app .nk47-light :is(.eyebrow,.num),
#app .nk47-soft :is(.eyebrow,.num) {
  color: #0059cf !important;
}
#app .nk47-dark :is(table,th,td) {
  color: #f3f8fb !important;
  background-color: #18394c !important;
  border-color: #526f82 !important;
}

#app .nk47-head .num {
  color: #0e2438 !important;
}

#app .nk47-number {
  display: inline-block !important;
  margin-inline-end: 0.28em !important;
  padding: 0.18em 0.42em !important;
  border: 1px solid #0e3044 !important;
  border-radius: 0.38em !important;
  background-color: #0e3044 !important;
  color: #ffffff !important;
  font-size: 0.9em !important;
  font-weight: 900 !important;
  line-height: 1.15 !important;
  vertical-align: 0.04em !important;
}

#app .nk47-dark .nk47-number {
  border-color: #d8eff8 !important;
  background-color: #d8eff8 !important;
  color: #0e2438 !important;
}

#app .nk47-card {
  border-color: #d3e1eb !important;
}

#app .nk47-card-light {
  background-color: #ffffff !important;
  color: #0e2438 !important;
}

#app .nk47-card-dark {
  border-color: #526f82 !important;
  background-color: #18394c !important;
  color: #f3f8fb !important;
}
#app .nk47-card-dark :is(table,th,td) {
  background-color: #18394c !important;
  color: #f3f8fb !important;
  border-color: #526f82 !important;
}
#app .nk47-card-light :is(table,th,td) {
  background-color: #ffffff !important;
  color: #0e2438 !important;
  border-color: #d3e1eb !important;
}
#app .nk47-card-light :is(strong,b,em) {
  color: #0e2438 !important;
}
#app .nk47-card-dark :is(strong,b,em) {
  color: #f3f8fb !important;
}
#app .nk47-card.nk47-card-dark .nk-lot4-final-outcome,
#app .nk47-card.nk47-card-dark .nk-lot4-final-outcome strong,
#app .nk47-card.nk47-card-light .nk-lot4-final-outcome,
#app .nk47-card.nk47-card-light .nk-lot4-final-outcome strong {
  background-color: #eaf7fd !important;
  color: #0e2438 !important;
}
#app .nk47-card .nk-lp-theme-content,
#app .nk47-card .nk-lp-theme-content :is(h2,h3,h4,h5,h6,p,li,strong,b,em,small,.nk-lp-theme-programme) {
  color: #0e2438 !important;
  background-color: #ffffff !important;
}
body[data-route^="/blog"] #app.nk-ui-v17 :is(.blog-meta,.blog-byline,time,.article-share-label,.article-nav-dir,.article-nav-title) {
  background-color: #ffffff !important;
  color: #0e2438 !important;
}
body[data-route="/blog"] #app.nk-ui-v17 :is(.blog-search,.blog-cat):not(form *) {
  background: #ffffff !important;
  color: #0e2438 !important;
  border-color: #526f82 !important;
}
body[data-route="/blog"] #app.nk-ui-v17 .blog-search::placeholder {
  color: #40536a !important;
  opacity: 1 !important;
}
body[data-route="/blog"] #app.nk-ui-v17 :is(.blog-cat.is-active,.blog-cat:hover) {
  background: #0e3044 !important;
  color: #f3f8fb !important;
}
body[data-route="/blog"] #app.nk-ui-v17 :is(.blog-search,.blog-cat):focus-visible {
  outline: 3px solid #0059cf !important;
  outline-offset: 3px !important;
}
#app :is(.nk47-light,.nk47-soft) #nk-stage-territory:not(form *) {
  background: #ffffff !important;
  color: #0e2438 !important;
  border-color: #d3e1eb !important;
}
#app :is(.nk47-light,.nk47-soft) :is(.nk-territory-button,.nk-tab) {
  background: #ffffff !important;
  color: #0e2438 !important;
  border-color: #d3e1eb !important;
}
#app :is(.nk47-light,.nk47-soft) .nk-territory-button[aria-pressed="true"],
#app :is(.nk47-light,.nk47-soft) .nk-tab[aria-selected="true"],
#app .nk47-dark .nk-territory-button {
  background: #0e3044 !important;
  color: #f3f8fb !important;
  border-color: #526f82 !important;
}
#app :is(.nk47-light,.nk47-soft,.nk47-dark) :is(.nk-territory-button,.nk-tab):focus-visible {
  outline: 3px solid #0059cf !important;
  outline-offset: 3px !important;
}

#app .nk47-card-light :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, blockquote, small, .lead, .sub, .prose-p, .card-body, .muted, .k, .v, .blog-card-title),
#app .nk47-soft .nk47-card-light :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, blockquote, small, .lead, .sub, .prose-p, .card-body, .muted, .k, .v, .blog-card-title) {
  color: #0e2438 !important;
}

#app .nk47-card-dark :is(h1, h2, h3, h4, h5, h6, p, li, dt, dd, blockquote, small, .lead, .sub, .prose-p, .card-body, .muted, .k, .v, .blog-card-title) {
  color: #f3f8fb !important;
}

#app .nk47-card-light :is(a:not(.btn), [role="link"]) {
  color: #0059cf !important;
}

#app .nk47-card-dark :is(a:not(.btn), [role="link"]) {
  color: #d8eff8 !important;
}
#app .nk47-card-dark :is(.nk-lp-theme-action,.nk-lp-theme-action span,.nk-lp-theme-action svg) {
  color: #d8eff8 !important;
}
#app .nk47-card-dark .nk-lp-theme-action:hover,
#app .nk47-card-dark .nk-lp-theme-action:hover span {
  color: #ffffff !important;
  background-color: #234b63 !important;
}
#app .nk47-card-dark .nk-lp-theme-action:focus-visible {
  outline: 3px solid #b5e2f4 !important;
  outline-offset: 3px !important;
}

#app .nk47-dark .nk47-card-light :is(a:not(.btn), [role="link"]) {
  color: #0059cf !important;
}

#app .nk47-dark .nk47-card-light :is(.nk47-icon--heading, .nk47-icon--card) {
  border-color: #c8e0ee !important;
  background-color: #eaf7fd !important;
  color: #0059cf !important;
}

#app .nk47-dark .nk47-card-light :is(.nk47-icon--list, .nk47-icon--metadata, .nk47-icon--contact) {
  color: #0059cf !important;
}

#app .nk47-icon {
  display: inline-block !important;
  flex: 0 0 auto !important;
  width: 1.2rem !important;
  height: 1.2rem !important;
  overflow: visible !important;
  color: #0059cf !important;
  vertical-align: -0.2em !important;
}

#app .nk47-icon--heading {
  width: 1.25rem !important;
  height: 1.25rem !important;
  margin-inline-end: 0.46rem !important;
  padding: 0.26rem !important;
  border: 1px solid #c8e0ee !important;
  border-radius: 0.55rem !important;
  background-color: #eaf7fd !important;
}

#app .nk47-icon--card {
  width: 1.35rem !important;
  height: 1.35rem !important;
  margin-inline-end: 0.45rem !important;
  padding: 0.34rem !important;
  border: 1px solid #c8e0ee !important;
  border-radius: 0.58rem !important;
  background-color: #eaf7fd !important;
}

#app .nk47-icon--list,
#app .nk47-icon--metadata,
#app .nk47-icon--contact {
  width: 1.05rem !important;
  height: 1.05rem !important;
  margin-inline-end: 0.42rem !important;
}

#app .nk47-icon--list {
  color: #0059cf !important;
}

#app .nk47-icon--cta {
  width: 1rem !important;
  height: 1rem !important;
  margin-inline-start: 0.38rem !important;
  color: currentColor !important;
  vertical-align: -0.15em !important;
}

#app.nk-ui-v17 .nk47-cta .nk47-native-arrow {
  display: none !important;
}

/* LP primary buttons already own their arrow through ::after. Keep that
   single arrow, not the additional icon inserted by the legacy decorator. */
#app.nk-ui-v17:has(.page-numeriklub-lp) .nk47-cta.nk-v17-has-arrow > svg.nk47-icon--cta,
body[data-route^="/lp/numeriklub"] .nk-v17-bar-reserve > svg.nk47-icon--cta {
  display: none !important;
}

#app .nk47-dark .nk47-icon--heading,
#app .nk47-dark .nk47-icon--card {
  border-color: #638095 !important;
  background-color: #18394c !important;
  color: #d8eff8 !important;
}

#app .nk47-dark .nk47-icon--list,
#app .nk47-dark .nk47-icon--metadata,
#app .nk47-dark .nk47-icon--contact {
  color: #d8eff8 !important;
}

#app .nk47-lead-panel {
  box-sizing: border-box !important;
  padding: clamp(1.15rem, 3vw, 2rem) !important;
  border: 1px solid #cfdfeb !important;
  border-inline-start: 5px solid #0059cf !important;
  border-radius: 1rem !important;
  background-color: #ffffff !important;
  color: #0e2438 !important;
  box-shadow: 0 10px 28px rgba(14, 36, 56, 0.08) !important;
}

#app .nk47-lead-panel:not(.section-head) {
  display: grid !important;
  grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr) !important;
  align-items: center !important;
  gap: clamp(1.25rem, 3vw, 2.75rem) !important;
}

#app .nk47-lead-panel > .section-head,
#app .nk47-lead-panel > .lead,
#app .nk47-lead-panel > .gp-lead-paragraph,
#app .nk47-lead-panel > .nk-esprit-lead {
  min-width: 0 !important;
  margin-block: 0 !important;
}

#app .nk47-lead-panel :is(h2, p, .lead, .sub, .gp-lead-paragraph, .nk-esprit-lead) {
  color: #0e2438 !important;
}

#app .nk47-lead-panel.section-head {
  display: block !important;
}

#app .nk47-list-item {
  list-style: none !important;
}

#app .nk47-inline-link {
  color: #0059cf !important;
  text-decoration-thickness: 0.08em !important;
  text-underline-offset: 0.18em !important;
}

#app .nk47-dark .nk47-inline-link {
  color: #d8eff8 !important;
}

#app .nk47-inline-link:hover {
  color: #00438f !important;
  text-decoration-thickness: 0.13em !important;
}

#app .nk47-dark .nk47-inline-link:hover {
  color: #fff1a6 !important;
}

#app .nk47-inline-link:focus-visible {
  border-radius: 0.15rem !important;
  outline: 3px solid #0059cf !important;
  outline-offset: 3px !important;
}

#app .nk47-dark .nk47-inline-link:focus-visible {
  outline-color: #ffe936 !important;
}

#app .nk47-contact-link {
  display: inline-flex !important;
  max-width: 100% !important;
  align-items: center !important;
  gap: 0.15rem !important;
  overflow-wrap: anywhere !important;
}

@media (max-width: 640px) {
  #app .nk47-lead-panel:not(.section-head) {
    grid-template-columns: minmax(0, 1fr) !important;
    gap: 1rem !important;
  }
}
}
/* Opaque interaction surfaces keep tag text readable in both section themes. */
@layer nk-lot48-tag-controls {
  #app.nk48-composition .blog-tag:is(:hover,:focus-visible,:active) {
    color: #fff !important;
    background: #0e2438 !important;
    border-color: #b5e2f4 !important;
  }
}
/* Lot 48 composition markers are attached only by the route-owned adapter. */
/* Reserve the final strip geometry while its text/font is being prepared.
   These route selectors intentionally exclude home aliases and reservation. */
body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/reservation"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"]) .campaign-announcement-viewport,
body[data-route^="/lp/numeriklub/"] .campaign-announcement-viewport {
  height: 40px !important;
  min-height: 40px !important;
  max-height: 40px !important;
}
body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/reservation"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"]) .campaign-announcement-track,
body[data-route^="/lp/numeriklub/"] .campaign-announcement-track {
  display: flex !important;
  flex-wrap: nowrap !important;
  align-items: center !important;
}
#app.nk48-composition .nk48-hero:not(.page-hero-home) {
  position: relative;
}

#app.nk48-composition .nk48-hero--visual.page-hero-art:not(.page-hero-photo):not(.page-hero-home) > .container {
  box-sizing: border-box;
  width: min(1200px, calc(100% - 48px));
  padding-inline-end: clamp(390px, 40vw, 560px);
}

#app.nk48-composition .nk48-hero--visual.page-hero-art:not(.page-hero-photo):not(.page-hero-home) > .hero-art {
  right: clamp(12px, 2.5vw, 36px);
  max-width: 46%;
  object-fit: contain;
}

#app.nk48-composition .nk48-hero--visual.page-hero-photo:not(.page-hero-home) > .container {
  box-sizing: border-box;
  width: min(1200px, calc(100% - 48px));
}

#app.nk48-composition .nk48-hero:not(.page-hero-home) :is(.lead,.hero-sub,.hero-title-secondary,.hero-proof) {
   max-width: 65ch;
  text-wrap: pretty;
}

#app.nk48-composition .nk48-hero--recap:not(.page-hero-home) > .container {
  position: relative;
  box-sizing: border-box;
  min-height: 24rem;
  padding-inline-end: clamp(360px, 40vw, 520px);
}

#app.nk48-composition .nk48-recap {
  box-sizing: border-box;
  position: absolute;
  inset-inline-end: 0;
  top: 50%;
  width: min(38%, 28rem);
  transform: translateY(-50%);
  min-width: 0;
  padding: clamp(1.25rem, 2.3vw, 2rem);
  border: 1px solid rgba(181, 226, 244, .52);
  border-radius: var(--radius-card, 0);
  background: #18394c;
  color: #f3f8fb !important;
  box-shadow: 0 16px 36px rgba(4, 24, 36, .18);
}

#app.nk48-composition .nk48-recap-label {
  margin: 0 0 1rem;
  color: #b5e2f4 !important;
  font-size: .76rem;
  font-weight: 800;
  letter-spacing: .12em;
  line-height: 1.35;
  text-transform: uppercase;
}

#app.nk48-composition .nk48-recap-list {
  display: grid;
  gap: .75rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

#app.nk48-composition .nk48-recap-item {
  display: grid;
  grid-template-columns: 2.5rem minmax(0, 1fr);
  align-items: start;
  column-gap: .75rem;
  row-gap: .18rem;
  min-width: 0;
}

#app.nk48-composition .nk48-icon {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  color: #0059cf;
}

#app.nk48-composition .nk48-icon svg {
  display: block;
  width: 1.1rem;
  height: 1.1rem;
}

#app.nk48-composition .nk48-icon--recap {
  grid-row: span 2;
  width: 2.35rem;
  height: 2.35rem;
  border: 1px solid rgba(181, 226, 244, .48);
  border-radius: .7rem;
  background: #0e3044;
  color: #b5e2f4;
}

#app.nk48-composition .nk48-recap-source {
  min-width: 0;
  color: #f3f8fb !important;
  font-size: .98rem;
  font-weight: 850;
  line-height: 1.3;
  text-wrap: balance;
}

#app.nk48-composition .nk48-recap-copy {
  grid-column: 2;
  color: #d5e7ef !important;
  font-size: .88rem;
  line-height: 1.45;
}

#app.nk48-composition .nk48-card-row {
  display: grid;
  grid-auto-rows: 1fr;
  align-items: stretch;
}
#app.nk48-composition .nk48-card-row > :not(.nk48-card) {
  grid-column: 1 / -1;
}

#app.nk48-composition .nk48-card-row--2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

#app.nk48-composition .nk48-card-row--3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

#app.nk48-composition .nk48-card-row--4 {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

#app.nk48-composition .nk48-card {
  box-sizing: border-box;
  display: flex;
  min-width: 0;
  height: 100%;
  flex-direction: column;
}

#app.nk48-composition .nk48-card-light {
  border-color: #d3e1eb;
  background-color: #fff !important;
  color: #0e2438 !important;
}

#app.nk48-composition .nk48-card-light :is(h2,h3,h4,p,li,small,.card-body,.muted) {
  color: #0e2438 !important;
}
#app.nk48-composition .nk48-card-light .nk-upcoming-period {
  color: #0e2438 !important;
}

#app.nk48-composition .nk48-card > :is(.hero-cta,.nk-offer-info,.nk-offer-detail,.nk-lot5-public-theme-links) {
  margin-block-start: auto;
}

#app.nk48-composition .nk48-icon--card {
  width: 2rem;
  height: 2rem;
  margin-inline-end: .55rem;
  border: 1px solid #c8e0ee;
  border-radius: .65rem;
  background: #eaf7fd;
  vertical-align: -.45em;
}

#app.nk48-composition .nk48-icon--check {
  width: 1.2rem;
  height: 1.2rem;
  margin-inline-end: .48rem;
  border-radius: 50%;
  background: #eaf7fd;
  color: #0059cf;
  vertical-align: -.22em;
}

#app.nk48-composition .nk48-check-item {
  list-style: none;
}

#app.nk48-composition .nk48-badge {
  max-width: 100%;
  align-items: center;
  border-radius: 999px;
  background: #ffe936;
  color: #0e2438;
  font-size: .78rem;
  font-weight: 800;
  line-height: 1.25;
  white-space: normal;
}

#app.nk48-composition .nk48-meta-key {
  display: inline-flex;
  align-items: center;
  gap: .42rem;
}

#app.nk48-composition .nk48-icon--meta {
  color: #0059cf;
}

#app.nk48-composition .nk48-copy-panel:not(.nk48-copy-panel--dark) {
  box-sizing: border-box;
  padding: clamp(1.1rem, 2.5vw, 2rem);
  border: 1px solid #d3e1eb;
  border-inline-start: 4px solid #0059cf;
  border-radius: var(--radius-card, 0);
  background: #fff !important;
  color: #0e2438 !important;
}

#app.nk48-composition .nk48-copy-panel:not(.nk48-copy-panel--dark) :is(h2,p,.lead,.sub,.gp-lead-paragraph,.nk-esprit-lead,.prose-p) {
  color: #0e2438 !important;
}

#app.nk48-composition .nk48-copy-panel--dark {
  box-sizing: border-box;
  padding: clamp(1.1rem, 2.5vw, 2rem);
  border: 1px solid #526f82;
  border-inline-start: 4px solid #b5e2f4;
  border-radius: var(--radius-card, 0);
  background: #18394c !important;
  color: #f3f8fb !important;
}

#app.nk48-composition .nk48-copy-panel--dark :is(h2,p,.lead,.sub,.gp-lead-paragraph,.nk-esprit-lead,.prose-p) {
  color: #f3f8fb !important;
}

#app.nk48-composition .nk48-terminal,
#app.nk48-composition .nk48-terminal-existing {
  box-sizing: border-box;
  display: flex;
  justify-content: center;
  gap: 1rem;
  width: min(calc(100% - 2rem), 1200px);
  margin: clamp(2rem, 5vw, 4rem) auto;
  padding: clamp(1.15rem, 2.5vw, 1.75rem);
  border: 1px solid #c8e0ee;
  border-radius: var(--radius-card, 0);
  background: #eaf7fd;
}

#app.nk48-composition .nk48-terminal-action {
  max-width: 100%;
}

#app.nk48-composition :is(.nk48-terminal-action,.nk48-terminal-existing a,.nk48-terminal-existing button):focus-visible {
  outline: 3px solid #0059cf !important;
  outline-offset: 4px !important;
}

@media (max-width: 1023px) {
  #app.nk48-composition .nk48-hero--visual.page-hero-art:not(.page-hero-photo):not(.page-hero-home) > .container {
    padding-inline-end: clamp(320px, 39vw, 440px);
  }

  #app.nk48-composition .nk48-hero--recap:not(.page-hero-home) > .container {
    padding-inline-end: clamp(310px, 38vw, 400px);
  }

  #app.nk48-composition .nk48-recap {
    width: min(38%, 24rem);
  }

  #app.nk48-composition .nk48-card-row--4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  #app.nk48-composition .nk48-hero--visual.page-hero-art:not(.page-hero-photo):not(.page-hero-home) > .container {
    width: min(100% - 32px, 42rem);
    padding-inline-end: 0;
  }

  #app.nk48-composition .nk48-hero--visual.page-hero-photo:not(.page-hero-home) > .container {
    width: min(100% - 32px, 42rem);
  }

  #app.nk48-composition .nk48-hero--recap:not(.page-hero-home) > .container {
    padding-inline-end: 0;
  }

  #app.nk48-composition .nk48-recap {
    box-sizing: border-box;
    min-width: 0;
    max-width: 100%;
    position: relative;
    inset-inline-end: auto;
    top: auto;
    transform: none;
    width: 100%;
    padding: 1rem;
    margin-block-start: 1.25rem;
  }

  #app.nk48-composition .nk48-recap-list {
    grid-template-columns: minmax(0, 1fr);
  }

  #app.nk48-composition :is(.nk48-card-row--2,.nk48-card-row--3,.nk48-card-row--4) {
    grid-template-columns: minmax(0, 1fr);
    grid-auto-rows: auto;
  }

  #app.nk48-composition .nk48-terminal,
  #app.nk48-composition .nk48-terminal-existing {
    width: calc(100% - 2rem);
    flex-direction: column;
    align-items: stretch;
  }

  #app.nk48-composition .nk48-terminal-action {
    width: 100%;
  }
}
/* Route-owned media; home, main LP and reservation have no nk49-page marker. */
#app.nk-ui-v17 .nk49-page .page-hero {
  box-sizing: border-box; isolation: isolate; overflow: hidden;
}
#app.nk-ui-v17 .nk49-page .page-hero.nk49-has-media > .container {
  display: block !important; box-sizing: border-box;
  width: min(1200px, calc(100% - 48px)) !important;
  padding-inline-end: clamp(350px, 43vw, 570px) !important;
}
#app.nk-ui-v17 .nk49-page .nk49-hero-visual {
  position: absolute; z-index: 1; inset-block: 7% 6%;
  inset-inline-end: max(24px, calc((100% - 1200px) / 2));
  display: grid; grid-template-rows: minmax(0, 1fr);
  width: min(40vw, 500px); min-width: 0; min-height: 0;
  place-items: center; margin: 0; pointer-events: none;
}
#app.nk-ui-v17 .nk49-page .nk49-hero-image {
  position: relative !important; inset: auto !important; display: block;
  width: 100%; height: 100%; min-height: 0 !important;
  max-width: 100% !important; max-height: 100%;
  object-fit: contain; object-position: center; content: normal !important;
  background: none !important; background-image: none !important;
  filter: none !important; -webkit-filter: none !important;
  transform: none !important; clip-path: none !important;
  mask: none !important; -webkit-mask: none !important;
  mix-blend-mode: normal !important; opacity: 1 !important;
  border-radius: var(--radius-photo, 12px);
}
#app.nk-ui-v17 .nk49-page--summer .nk49-hero-image,
#app.nk-ui-v17 .nk49-page--faq .nk49-hero-image {
  border-radius: var(--radius-lg, 16px);
}
#app.nk-ui-v17 .nk49-page .nk49-object-accent {
  position: absolute; inset-inline-end: -3%; inset-block-end: -2%;
  width: clamp(64px, 10vw, 126px); height: auto; object-fit: contain;
}
#app.nk-ui-v17 .nk49-page .nk49-hero-accent {
  position: absolute; z-index: 1;
  inset-inline-end: max(30px, calc((100% - 1170px) / 2)); inset-block-start: 50%;
  width: clamp(74px, 11vw, 130px); height: auto; transform: translateY(-50%);
  object-fit: contain; pointer-events: none;
}
#app.nk-ui-v17 .nk49-page .nk49-copy-only > .container {
  box-sizing: border-box; width: min(1120px, calc(100% - 48px));
  padding-inline-end: clamp(0px, 8vw, 96px);
}
#app.nk-ui-v17 .nk49-page .nk49-copy-only :is(h1,.lead,.hero-sub,.hero-title-secondary) {
  text-wrap: pretty;
}
#app.nk-ui-v17 .nk49-page .nk49-copy-only .hero-cta {
  display: flex; flex-wrap: wrap; gap: .75rem;
}
#app.nk-ui-v17 .nk49-page .nk49-gallery-track {
  display: grid !important;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), min(100%, 560px)));
  justify-content: center;
  align-items: stretch; gap: clamp(16px, 2.2vw, 28px);
  overflow: visible !important; padding: 0 !important; scroll-snap-type: none !important;
}
#app.nk-ui-v17 .nk49-page .nk49-photo-card {
  box-sizing: border-box; min-width: 0; overflow: hidden;
  border: 1px solid rgba(20, 47, 67, .12);
  border-radius: var(--radius-photo, 12px);
  background: #f4f6f3; box-shadow: var(--shadow-card-light, 0 10px 24px rgba(21,49,74,.08));
}
#app.nk-ui-v17 .nk49-page .nk49-photo-card img {
  display: block; width: 100%; height: auto; min-height: 0; max-height: none;
  object-fit: contain; object-position: center;
}
#app.nk-ui-v17 .nk49-page .nk49-photo-card--poster {
  display: grid; min-height: 220px; place-items: center; background: #eaf0f2;
}
#app.nk-ui-v17 .nk49-page .nk49-photo-card--poster img {
  width: 100%; height: 100%; max-height: 360px; object-fit: contain;
}
#app.nk-ui-v17 .nk49-page .nk49-theme-media-suppressed,
#app.nk-ui-v17 .nk49-page .nk49-gallery-empty { display: none !important; }
#app.nk-ui-v17 .nk49-page .nk49-source-cards {
  box-sizing: border-box; display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
  gap: clamp(12px, 1.8vw, 20px); width: 100%; padding: clamp(12px, 2vw, 24px);
}
#app.nk-ui-v17 .nk49-page .nk49-source-card {
  min-width: 0; padding: clamp(16px, 2vw, 22px);
  border: 1px solid rgba(20, 47, 67, .13);
  border-radius: var(--radius-card, var(--radius-lg, 16px)); background: #f4f6f3;
}
#app.nk-ui-v17 .nk49-page .nk49-source-card h3 { margin: 0 0 .5rem; }
#app.nk-ui-v17 .nk49-page .nk49-source-card p { margin: 0; }
#app.nk-ui-v17 .nk49-page .nk49-atmosphere {
  box-sizing: border-box; width: min(1120px, calc(100% - 48px));
  margin: clamp(18px, 3vw, 32px) auto 0; padding: 0; text-align: end;
}
#app.nk-ui-v17 .nk49-page .nk49-atmosphere img {
  display: inline-block; width: min(100%, 360px); max-height: 190px;
  border: 1px solid rgba(20, 47, 67, .12);
  border-radius: var(--radius-photo, 12px); object-fit: cover;
}
@media (min-width: 768px) {
  #app.nk-ui-v17 .nk49-page--theme-game .nk49-hero-accent {
    inset-block-start: 18px; width: 76px; transform: none;
  }
  #app.nk-ui-v17 .nk49-page .nk49-copy-only.nk48-hero--recap > .container {
    display: block !important; padding-inline-end: clamp(360px, 40vw, 520px) !important;
  }
  #app.nk-ui-v17 .nk49-page .nk49-copy-only.nk48-hero--recap :is(h1,.lead,.hero-sub,.hero-title-secondary) {
    max-width: 100%;
  }
}
@media (max-width: 767px) {
  #app.nk-ui-v17 .nk49-page .page-hero {
    display: flex; min-width: 0; flex-direction: column;
  }
  #app.nk-ui-v17 .nk49-page .page-hero.nk49-has-media > .container,
  #app.nk-ui-v17 .nk49-page .nk49-copy-only > .container {
    order: 1; width: min(calc(100% - 32px), 620px) !important;
    padding-inline: 0 !important; display: block !important;
  }
  #app.nk-ui-v17 .nk49-page .nk49-hero-visual {
    position: relative; inset: auto; order: 2; width: min(calc(100% - 32px), 480px);
    height: clamp(210px, 68vw, 300px); margin: 8px auto 24px;
  }
  #app.nk-ui-v17 .nk49-page .nk49-hero-image { max-height: 100%; }
  #app.nk-ui-v17 .nk49-page--faq .nk49-hero-visual {
    width: min(calc(100% - 48px), 440px);
  }
  #app.nk-ui-v17 .nk49-page .nk49-hero-accent {
    position: relative; inset: auto; order: 2; align-self: flex-end;
    width: 76px; margin: -12px 20px 16px; transform: none;
  }
  #app.nk-ui-v17 .nk49-page .nk49-copy-only :is(h1,.lead,.hero-sub,.hero-title-secondary) {
    max-width: 100%;
  }
  #app.nk-ui-v17 .nk49-page .nk49-gallery-track { grid-template-columns: minmax(0, 1fr); }
  #app.nk-ui-v17 .nk49-page .nk49-photo-card img { min-height: 0; max-height: 330px; }
  #app.nk-ui-v17 .nk49-page .nk49-photo-card--poster { min-height: 0; }
  #app.nk-ui-v17 .nk49-page .nk49-photo-card--poster img { max-height: 390px; }
  #app.nk-ui-v17 .nk49-page .nk49-atmosphere { width: calc(100% - 32px); }
}
@media (prefers-reduced-motion: reduce) {
  #app.nk-ui-v17 .nk49-page :is(.nk49-photo-card,.nk49-atmosphere) { scroll-behavior: auto; }
}

/* LOT50 — offer hierarchy and photo-led subpage heroes. Existing identity,
   assets, labels and prices remain untouched; protected form trees are out. */
#app .nk-lot50-layout .nk-lot50-price-card:not(:where(form *,dialog *,
  [role="dialog"] *,[aria-modal="true"] *,[class*="modal"] *,
  [class*="Modal"] *, .page-nk-reservation *)) {
  box-sizing: border-box;
  min-width: 0;
  height: 100%;
  align-self: stretch;
  display: flex;
  flex-direction: column;
  gap: 0;
  overflow-wrap: anywhere;
}

#app .nk-lot50-layout .nk-lot50-price-card > .badge {
  align-self: flex-start;
  margin: 0 0 12px;
  padding: 6px 11px;
  border: 1px solid #c8e0ee;
  border-radius: 999px;
  background: #eaf7fd;
  color: #0059cf;
  font: 800 13px/1.2 "Nunito", sans-serif;
  letter-spacing: .025em;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot50-public-badge {
  align-self: flex-start;
  width: fit-content;
  max-width: 100%;
  margin: 0 0 12px;
  padding: 6px 11px;
  border: 1px solid #c8e0ee;
  border-radius: 999px;
  background: #eaf7fd;
  color: #0059cf;
  font: 800 13px/1.2 "Nunito", sans-serif;
}

#app .nk-lot50-layout .nk-lot50-price-card > .prog-head {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0;
  min-width: 0;
  margin: 0 0 10px;
}

#app .nk-lot50-layout .nk-lot50-price-card > .prog-head .prog-head-l {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  width: 100%;
}

#app .nk-lot50-layout .nk-lot50-price-card > .prog-head h3,
#app .nk-lot50-layout .nk-lot50-price-card > h3 {
  margin: 0;
  color: #102f49;
  font: 900 clamp(21px, 2vw, 27px)/1.16 "Nunito", sans-serif;
  letter-spacing: -.025em;
  text-wrap: balance;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-card-price,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot4-price,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot5-public-offer-price,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-track-top .nk-annual-price {
  display: block;
  width: fit-content;
  max-width: 100%;
  margin: 0 0 15px;
  padding: 0;
  border: 0;
  background: transparent;
  color: #0059cf;
  font: 900 clamp(30px, 3vw, 42px)/1.02 "Nunito", sans-serif;
  letter-spacing: -.045em;
  font-variant-numeric: lining-nums tabular-nums;
  overflow-wrap: normal;
}

#app .nk-lot50-layout .nk-lot50-price-card :is(.nk-lot50-price-amount,.nk-lot50-reference-price-display) {
  color: #0059cf;
  font: 900 clamp(30px, 3vw, 42px)/1.02 "Nunito", sans-serif;
  letter-spacing: -.045em;
  font-variant-numeric: lining-nums tabular-nums;
}

#app .nk-lot50-layout .nk-lot50-price-card .nk-lot50-price-unit {
  display: inline-block;
  margin-inline-start: .08em;
  color: #39556f;
  font: 800 .45em/1.15 "Nunito", sans-serif;
  letter-spacing: -.005em;
  vertical-align: .14em;
  white-space: nowrap;
}

#app .nk-lot50-layout .nk-lot50-reference-price-display {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 2px 7px;
  margin: 10px 0 14px;
}

#app .nk-lot50-layout .nk-lot50-reference-price-display > strong {
  font: inherit;
}

#app .nk-lot50-layout .nk-lot50-reference-price-note {
  margin: 0;
  color: #536b80;
  font-size: 13px;
  line-height: 1.4;
}

#app .nk-lot50-layout .nk-lot50-reference-price-note small {
  font-size: inherit;
}

#app .nk-lot50-layout .nk-reference-offer-card {
  box-sizing: border-box;
  display: flex;
  height: 100%;
  min-width: 0;
  flex-direction: column;
}

#app .nk-lot50-layout .nk-reference-offer-card > .nk-reference-offer-footer {
  margin-top: auto;
}

#app .nk-lot50-layout .nk-reference-offer-card .nk-reference-offer-intro > h3 {
  margin-bottom: 0;
  color: #102f49;
  font: 900 clamp(21px, 2vw, 27px)/1.16 "Nunito", sans-serif;
  letter-spacing: -.025em;
}

#app .nk-lot50-layout .nk-reference-offer-actions > a {
  white-space: nowrap;
}

#app .nk-lot50-layout .nk-lot50-tariff-list {
  box-sizing: border-box;
  overflow: visible !important;
  padding: clamp(16px, 2vw, 24px) !important;
}

#app .nk-lot50-layout .nk-lot50-tariff-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr));
  align-items: stretch;
  gap: 16px;
}

#app .nk-lot50-layout .nk-lot50-tariff-card {
  min-height: 190px;
  padding: clamp(18px, 2.2vw, 26px);
  border: 1px solid rgba(20, 47, 67, .13);
  border-radius: 16px;
  background: #f4f8f8;
  box-shadow: 0 8px 22px rgba(21, 49, 74, .07);
}

#app .nk-lot50-layout .nk-lot50-tariff-public {
  width: fit-content;
  max-width: 100%;
  margin: 0 0 14px;
  padding: 7px 11px;
  border: 1px solid #c8e0ee;
  border-radius: 999px;
  background: #eaf7fd;
  color: #0059cf;
  font: 800 13px/1.25 "Nunito", sans-serif;
}

#app .nk-lot50-layout .nk-lot50-tariff-title {
  min-height: 2.32em;
  margin: 0 0 17px;
  color: #102f49;
  font: 900 clamp(20px, 1.8vw, 24px)/1.16 "Nunito", sans-serif;
  letter-spacing: -.025em;
  text-wrap: balance;
}

#app .nk-lot50-layout .nk-lot50-tariff-price {
  margin-top: auto;
  color: #0059cf;
  font: 900 clamp(29px, 3vw, 39px)/1.05 "Nunito", sans-serif;
  letter-spacing: -.04em;
  font-variant-numeric: lining-nums tabular-nums;
}

#app .nk-lot50-layout .nk-lot50-tariff-price .nk-lot50-price-amount {
  color: inherit;
  font: inherit;
}

#app .nk-lot50-layout .nk-lot50-tariff-price .nk-lot50-price-unit {
  font-size: .46em;
}

#app .nk-lot50-layout .nk-lot50-sr-label {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  clip-path: inset(50%) !important;
}

#app .nk-lot50-layout .nk-lot4-price-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
  align-items: stretch;
  gap: 10px;
}

#app .nk-lot50-layout .nk-lot4-price-list > div {
  display: flex;
  min-height: 86px;
  flex-direction: column;
  justify-content: space-between;
  gap: 8px;
  padding: 14px;
  border: 1px solid rgba(20, 47, 67, .13);
  border-radius: 12px;
  background: #f4f8f8;
}

#app .nk-lot50-layout .nk-lot4-price-list > div > span {
  color: #39556f;
  font: 800 14px/1.3 "Nunito", sans-serif;
}

#app .nk-lot50-layout .nk-lot4-price-list > div > strong {
  color: #0059cf;
  font: 900 25px/1.05 "Nunito", sans-serif;
}

#app .nk-lot50-layout .nk-lot4-price-list > div > strong .nk-lot50-price-amount,
#app .nk-lot50-layout .nk-annual-track-top .nk-annual-price .nk-lot50-price-amount {
  color: inherit;
  font: inherit;
}

#app .nk-lot50-layout .nk-lot4-price-list > div > strong .nk-lot50-price-unit,
#app .nk-lot50-layout .nk-annual-track-top .nk-annual-price .nk-lot50-price-unit {
  font-size: .45em;
}

#app .nk-lot50-layout .nk-lot50-price-card :is(.card-body,.nk-annual-track-summary,
  .nk-lot5-public-offer-card > p:not(.nk-lot5-public-offer-price)) {
  color: #39556f;
  font-family: "Nunito", sans-serif;
  line-height: 1.52;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-offer-fomo {
  margin: 0 0 12px;
  color: #39556f;
  line-height: 1.45;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot4-price-card-details,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-offer-details,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-streams,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-blocks,
#app .nk-lot50-layout .nk-lot50-price-card > dl {
  margin-top: 10px;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot4-choice,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-track-cta,
#app .nk-lot50-layout .nk-lot50-price-card > .mt-6,
#app .nk-lot50-layout .nk-lot50-price-card > a.btn {
  margin-top: auto;
  padding-top: 22px;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-offer-info {
  margin-top: auto;
  padding-top: 22px;
}

#app .nk-lot50-layout .nk-lot50-price-card:has(> .mt-6) > .nk-offer-info {
  margin-top: 12px;
  padding-top: 0;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot4-choice,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-track-cta,
#app .nk-lot50-layout .nk-lot50-price-card > .mt-6 {
  width: 100%;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot4-choice .btn,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-track-cta .btn,
#app .nk-lot50-layout .nk-lot50-price-card > .mt-6 > .btn,
#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot4-choice,
#app .nk-lot50-layout .nk-lot50-price-card > a.btn {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
  min-height: 48px;
  height: auto;
  justify-content: center;
  padding: 12px 14px;
  border-radius: 12px;
  font: 800 15px/1.2 "Nunito", sans-serif;
  text-align: center;
  white-space: nowrap;
}

#app .nk-lot50-layout .nk-lot50-price-card :is(.nk-cta-label,.nk-cta-arrow-phrase) {
  white-space: nowrap;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-track-top {
  display: flex;
  flex-wrap: wrap;
  gap: 7px 10px;
  margin: 0 0 14px;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-track-top .nk-annual-price {
  flex-basis: 100%;
  margin: 4px 0 0;
}

#app .nk-lot50-layout .nk-lot50-price-card > .nk-lot5-public-offer-price + p {
  margin: 0 0 18px;
}

#app .nk-lot50-layout #formats .nk-hub-offer-grid,
#app .nk-lot50-layout .nk-lot4-compare-grid,
#app .nk-lot50-layout .nk-lot5-public-offers,
#app .nk-lot50-layout .nk-reference-offer-grid {
  align-items: stretch;
}

#app .nk-lot50-layout #formats .nk-hub-offer-grid {
  grid-template-rows: none !important;
  align-items: stretch;
}

#app .nk-lot50-layout #formats .nk-hub-offer-grid > .nk-lot50-price-card {
  display: flex !important;
  grid-column: auto !important;
  grid-row: auto !important;
  grid-template-rows: none !important;
}

/* The allocated photo remains the actual img: one request, native responsive
   fallback, and no generated or duplicated art. */
#app .nk-lot50-layout .page-hero.nk-lot50-photo-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  min-height: clamp(430px, 43vw, 610px);
  background: #102f49;
}

#app .nk-lot50-layout .page-hero.nk-lot50-photo-hero::before {
  position: absolute;
  z-index: 1;
  inset: 0;
  content: "";
  pointer-events: none;
  background: linear-gradient(90deg,
    rgba(9, 31, 49, .97) 0%,
    rgba(9, 31, 49, .91) 36%,
    rgba(9, 31, 49, .67) 57%,
    rgba(9, 31, 49, .16) 100%);
}

#app .nk-lot50-layout .page-hero.nk-lot50-photo-hero > .container {
  position: relative;
  z-index: 2;
  width: min(1200px, calc(100% - 48px));
  min-height: inherit;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-block: clamp(52px, 7vw, 92px);
}

#app .nk-lot50-layout .page-hero.nk-lot50-photo-hero :is(h1,.lead,.hero-sub,.hero-title-secondary,.eyebrow) {
  text-shadow: 0 1px 16px rgba(4, 19, 31, .16);
}

#app .nk-lot50-layout .page-hero.nk-lot50-photo-hero .nk49-hero-visual {
  position: absolute;
  z-index: 0;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  pointer-events: none;
}

#app .nk-lot50-layout .page-hero.nk-lot50-photo-hero .nk-lot50-hero-image {
  position: absolute !important;
  inset: 0 !important;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none !important;
  max-height: none !important;
  object-fit: cover;
  border-radius: 0;
  filter: none !important;
  transform: none !important;
  object-position: var(--nk-lot50-object-position, 50% 50%);
}

@media (max-width: 767px) {
  #app .nk-lot50-layout .nk-lot50-tariff-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  #app .nk-lot50-layout .nk-lot50-tariff-card {
    min-height: 0;
  }

  #app .nk-lot50-layout .nk-lot50-tariff-title {
    min-height: 0;
  }

  #app .nk-lot50-layout .nk-reference-offer-card {
    height: auto;
    min-height: 100%;
  }

  #app .nk-lot50-layout .nk-lot50-price-card:not(:where(form *,dialog *,
    [role="dialog"] *,[aria-modal="true"] *,[class*="modal"] *,
    [class*="Modal"] *, .page-nk-reservation *)) {
    height: auto;
    min-height: 100%;
  }

  #app .nk-lot50-layout .nk-lot50-price-card > .nk-lot4-choice,
  #app .nk-lot50-layout .nk-lot50-price-card > .nk-annual-track-cta,
  #app .nk-lot50-layout .nk-lot50-price-card > .mt-6,
  #app .nk-lot50-layout .nk-lot50-price-card > .nk-offer-info,
  #app .nk-lot50-layout .nk-lot50-price-card > a.btn {
    margin-top: 18px;
    padding-top: 0;
  }

  #app .nk-lot50-layout .page-hero.nk-lot50-photo-hero {
    min-height: 550px;
  }

  #app .nk-lot50-layout .page-hero.nk-lot50-photo-hero::before {
    background: linear-gradient(180deg,
      rgba(9, 31, 49, .30) 0%,
      rgba(9, 31, 49, .55) 23%,
      rgba(9, 31, 49, .94) 47%,
      rgba(9, 31, 49, .98) 100%);
  }

  /* Lot56 internal photos vary in brightness. Keep white hero copy readable
     from its mobile start position while retaining the Lot50 photo-hero fade. */
  #app .nk-lot50-layout .page-hero.nk-lot50-photo-hero.nk-lot50-hero-lot56::before {
    background: linear-gradient(180deg,
      rgba(9, 31, 49, .90) 0%,
      rgba(9, 31, 49, .94) 42%,
      rgba(9, 31, 49, .98) 100%);
  }

  #app .nk-lot50-layout .page-hero.nk-lot50-photo-hero > .container {
    width: min(100% - 32px, 620px);
    min-height: inherit;
    justify-content: flex-end;
    padding-block: 200px 42px;
  }

  #app .nk-lot50-layout .page-hero.nk-lot50-photo-hero .nk-lot50-hero-image {
    object-position: var(--nk-lot50-object-position-mobile, 50% 40%) !important;
  }

  #app .nk-lot50-layout .page-hero.nk-lot50-hero-annual .nk-lot50-hero-image,
  #app .nk-lot50-layout .page-hero.nk-lot50-hero-calendar .nk-lot50-hero-image {
    object-position: 27% 36% !important;
  }

  #app .nk-lot50-layout .page-hero.nk-lot50-hero-custom .nk-lot50-hero-image,
  #app .nk-lot50-layout .page-hero.nk-lot50-hero-parents .nk-lot50-hero-image {
    object-position: 61% 37% !important;
  }

  #app .nk-lot50-layout .nk-lot50-price-card :is(.nk-cta-label,.nk-cta-arrow-phrase) {
    font-size: inherit;
  }
}

@media (prefers-reduced-motion: reduce) {
  #app .nk-lot50-layout { scroll-behavior: auto; }
}

/* Mandatory pictograms and one-line labels; reservation/forms never match. */
@layer nk50-controls {
  #app .nk-lot50-photo-hero > .container {
    display:flex!important;padding-inline-end:0!important;
  }
  #app .nk-lot50-photo-hero .nk49-hero-visual {
    position:absolute!important;inset:0!important;inline-size:100%!important;
    block-size:100%!important;z-index:0!important;display:block!important;
  }
  #app .nk-lot50-photo-hero .nk49-hero-image {
    position:absolute!important;inset:0!important;inline-size:100%!important;
    block-size:100%!important;max-inline-size:none!important;max-block-size:none!important;
    object-fit:cover!important;object-position:var(--nk-lot50-object-position,50% 35%)!important;
    border-radius:0!important;
  }
  #app .nk-lot50-photo-hero :is(h1,.hero-sub,.hero-title-secondary,.lead) {max-inline-size:660px!important;}
  #app .nk-lot50-photo-hero :is(h1,.hero-sub,.hero-title-secondary,.lead,.grad-text) {
    color:#fff!important;-webkit-text-fill-color:#fff!important;
  }
  #app .nk-lot50-photo-hero :is(.eyebrow,.hero-eyebrow) {color:#ffe936!important;}
  #app .nk50-semantic-icon {
    display:inline-block!important;inline-size:19px!important;block-size:19px!important;
    min-inline-size:19px!important;flex:0 0 19px!important;vertical-align:-4px!important;
    margin-inline-end:8px!important;color:#0059cf!important;background:#eaf7fd!important;
    border-radius:4px!important;stroke-width:1.8!important;opacity:1!important;visibility:visible!important;
  }
  #app [data-nk50-icon-owner="check"] {list-style:none;}
  #app [data-nk50-icon-owner] > .nk50-semantic-icon {pointer-events:none;}
  #app [data-nk50-icon-owner="check"]:has(>a[data-nk50-cta]) {
    display:grid!important;grid-template-columns:19px minmax(0,1fr);column-gap:8px;align-items:start;
  }
  #app [data-nk50-icon-owner="check"]:has(>a[data-nk50-cta]) > svg {margin-inline-end:0!important;}
  #app .page-numeriklub-hub .campus-map-directions > .nk-cta-label {
    position:absolute!important;inline-size:1px!important;block-size:1px!important;
    overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;
  }
  #app .nk-lot50-layout .nk49-gallery-track {
    grid-auto-flow:row!important;grid-auto-columns:auto!important;inline-size:100%!important;
  }
  #app .nk-lot50-layout .nk49-gallery-track::before,
  #app .nk-lot50-layout .nk49-gallery-track::after {display:none!important;}
  #app .nk-lot50-layout .nk-lot50-price-card :is(.nk-card-price,.nk-lot4-price,.nk-lot5-public-offer-price,.nk-annual-price,.nk-lot50-reference-price-display) {
    font-size:clamp(30px,3vw,42px)!important;
  }
  #app .nk-lot50-layout .nk-lot50-price-unit {font-size:.45em!important;}
  #app .nk-lot50-layout #formats .nk-hub-offer-grid {grid-template-rows:none!important;}
  #app .nk-lot50-layout #formats .nk-lot50-price-card {
    display:flex!important;flex-direction:column!important;grid-row:auto!important;
  }
  #app .nk-lot50-layout #formats .nk-lot50-price-card > .nk-offer-info {margin-top:12px!important;}
  #app .nk-lot50-layout #formats .nk-lot50-price-card > .mt-6 {margin-top:auto!important;}
  #app .nk-lot50-layout #formats .nk-lot50-price-card > .nk-card-price {
    display:block!important;inline-size:100%!important;box-sizing:border-box!important;
    font-size:clamp(30px,2.4vw,34px)!important;
  }
  #app .nk-lot50-layout #formats .nk-lot50-price-card > .nk-card-price::before,
  #app .nk-lot50-layout #formats .nk-lot50-price-card > .nk-card-price::after {
    content:none!important;
  }
  #app .nk-lot50-layout #formats .nk-card-price .nk-lot50-price-amount {white-space:nowrap!important;}
  #app .nk-lot50-layout #formats .nk-card-price .nk-lot50-price-unit {display:block!important;}
  body:is([data-route^="/numeriklub"],[data-route^="/lp/numeriklub"],[data-route^="/blog"]):not([data-route$="/reservation"]) .campaign-announcement-whatsapp .btn-wa-label {
    position:absolute!important;inline-size:1px!important;block-size:1px!important;
    overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;
  }
  body:is([data-route^="/numeriklub"],[data-route^="/lp/numeriklub"],[data-route^="/blog"]):not([data-route$="/reservation"]) #site-footer .footer-wa :is(.btn,.btn-wa-label,.nk-cta-label) {
    white-space:nowrap!important;
  }
  body:is([data-route^="/numeriklub"],[data-route^="/lp/numeriklub"],[data-route^="/blog"]):not([data-route$="/reservation"]) #site-footer .footer-wa .btn {
    padding-inline:12px!important;gap:8px!important;font-size:14px!important;
  }
  #app [data-nk50-cta]:not(:where(form *,dialog *,[role="dialog"] *)),
  #app [data-nk50-cta] :is(.nk-cta-label,.btn-wa-label,.nk-cta-arrow-phrase,.nk-cta-arrow-label,.nk-v17-secondary-arrow,.nk47-native-arrow) {
    white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important;
  }
  #app [data-nk50-cta] {max-inline-size:100%;box-sizing:border-box;}
  #app [data-nk50-cta-stack] {flex-wrap:wrap!important;}
  #app a.u-cta[data-nk50-cta] {inline-size:max-content!important;flex:0 0 auto!important;}
  @media(max-width:767px) {
    #app .nk-lot50-layout .cta-final-section > .container {
      inline-size:100%!important;max-inline-size:100%!important;min-inline-size:0!important;
      display:block!important;padding-inline:16px!important;box-sizing:border-box!important;
    }
    #app .nk-lot50-layout .cta-final {
      inline-size:100%!important;max-inline-size:100%!important;min-inline-size:0!important;
      padding-inline:24px!important;box-sizing:border-box!important;
    }
    #app [data-nk50-cta-full] {inline-size:100%!important;min-inline-size:0!important;justify-content:center!important;}
    #app .nk-lot50-photo-hero .nk49-hero-visual {height:260px!important;}
    /* Reframe the existing portrait on the robot, without altering the file
       or bringing its baked-in subtitle into this photographic hero. */
    #app .nk-lot50-layout .nk-lot50-hero-theme-robot .nk49-hero-image {
      inline-size:110%!important;inset-inline-start:-5%!important;
      object-position:var(--nk-lot50-object-position-mobile)!important;
    }
    #app [data-nk50-icon-owner="check"] > a[data-nk50-cta]:not(.btn) {font-size:14px!important;inline-size:100%!important;min-inline-size:0!important;}
    #app a[data-nk50-cta]:not(.btn,.nav-cta,.campus-map-directions) {font-size:14px!important;}
    #app .nk-lot50-layout .nk49-gallery-track {grid-template-columns:minmax(0,1fr)!important;}
    #app :is(a,button).btn[data-nk50-cta]:not(:where(form *,dialog *,[role="dialog"] *)) {
      inline-size:100%!important;min-inline-size:0!important;padding-inline:10px!important;gap:6px!important;
    }
    #app :is(a,button).btn[data-nk50-cta] :is(.nk-cta-label,.nk-cta-arrow-phrase,.nk-cta-arrow-label) {font-size:13px!important;}
    #app a.btn[data-nk50-cta][href="#rappel"],
    #app a.btn[data-nk50-cta][href="#rappel"] :is(.nk-cta-label,.nk-cta-arrow-phrase) {
      font-size:11.5px!important;padding-inline:3px!important;gap:3px!important;
    }
  }
  @media(min-width:768px) and (max-width:1100px) {
    #app .nk-lot50-layout .grid:has(>.campus) {grid-template-columns:repeat(2,minmax(0,1fr))!important;}
    #app .page .blog-card {grid-template-columns:minmax(0,1fr)!important;}
  }
}

/* LOT50e page-native presentation. The class is attached only to approved
   secondary NK/LP page roots by nk-lot50e-presentation.js. */
  #app .nk50e-page {
    --nk50e-ink: var(--nk-encre, #0e2438);
    --nk50e-muted: var(--nk-texte-2, #39556f);
    --nk50e-blue: var(--nk-ecran, #0059cf);
    --nk50e-sky: var(--nk-ciel, #eaf7fd);
    --nk50e-line: #c9dce8;
    --nk50e-yellow: var(--nk-soleil, #ffe936);
    color: var(--nk50e-ink);
    font-family: "Nunito", sans-serif;
  }

  #app .nk50e-page :is(.nk-lot5-public-points,.nk50e-theme-grid) {
    display: grid !important;
    align-items: stretch;
    gap: clamp(14px, 2vw, 22px);
  }

  #app .nk50e-page .nk-lot5-public-points {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    grid-auto-rows:1fr;
  }

  #app .nk50e-page .nk50e-point-card {
    box-sizing: border-box;
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    align-content: start;
    align-items: center;
    gap: 14px;
    min-width: 0;
    min-height: 150px;
    padding: clamp(18px, 2.3vw, 26px);
    border: 1px solid var(--nk50e-line);
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 8px 22px rgba(21, 49, 74, .07);
  }

  #app .nk50e-page .nk50e-point-card > span[aria-hidden="true"] {
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
    color: var(--nk50e-blue);
    font-size: 13px;
    font-weight: 900;
    letter-spacing: .08em;
  }

  #app .nk50e-page .nk50e-point-icon {
    grid-column: 1;
    grid-row: 1;
    width: 42px;
    height: 42px;
    padding: 9px;
    border: 1px solid #c8e0ee;
    border-radius: 12px;
    background: var(--nk50e-sky);
    color: var(--nk50e-blue);
  }

  #app .nk50e-page .nk50e-point-card p {
    grid-column: 1 / -1;
    margin: 5px 0 0;
    color: var(--nk50e-ink);
    font-size: clamp(16px, 1.5vw, 18px);
    font-weight: 750;
    line-height: 1.5;
  }

  #app .nk50e-page .nk50e-steps {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0;
    margin: 0;
    padding: 0;
    list-style: none;
    counter-reset: none;
  }

  #app .nk50e-page .nk50e-step {
    position: relative;
    box-sizing: border-box;
    display: grid;
    grid-template-rows: 48px auto 1fr;
    justify-items: start;
    align-content: start;
    gap: 14px;
    min-width: 0;
    min-height: 196px;
    padding: 22px clamp(14px, 2vw, 24px);
    border: 1px solid var(--nk50e-line);
    border-right: 0;
    background: #fff;
  }

  #app .nk50e-page .nk50e-step:first-child {
    border-radius: 14px 0 0 14px;
  }
  #app .nk50e-page .nk50e-step:last-child {
    border-right: 1px solid var(--nk50e-line);
    border-radius: 0 14px 14px 0;
  }

  #app .nk50e-page .nk50e-step-mark {
    display: grid;
    width: 46px;
    height: 46px;
    place-items: center;
    border: 1px solid #c8e0ee;
    border-radius: 13px;
    background: var(--nk50e-sky);
    color: var(--nk50e-blue);
  }
  #app .nk50e-page .nk50e-step-mark .nk50e-icon { width: 23px; height: 23px; }
  #app .nk50e-page .nk50e-step-number {
    position: absolute;
    top: 25px;
    right: clamp(14px, 2vw, 24px);
    color: var(--nk50e-blue);
    font-size: 13px;
    font-weight: 900;
    letter-spacing: .08em;
  }
  #app .nk50e-page .nk50e-step-copy {
    color: var(--nk50e-ink);
    font-size: 15px;
    font-weight: 700;
    line-height: 1.55;
  }

  #app .nk50e-page .nk50e-theme-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  }
  #app .nk50e-page .nk50e-theme-card {
    box-sizing: border-box;
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr) 16px;
    align-items: center;
    gap: 12px;
    min-width: 0;
    min-height: 84px;
    padding: 16px;
    border: 1px solid var(--nk50e-line);
    border-radius: 13px;
    background: #fff;
    color: var(--nk50e-ink) !important;
    font-weight: 800;
    line-height: 1.35;
    text-decoration: none;
    box-shadow: 0 5px 16px rgba(21, 49, 74, .05);
    transition: transform 160ms ease, box-shadow 160ms ease;
  }
  #app .nk50e-page .nk50e-theme-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(21, 49, 74, .1);
  }
  #app .nk50e-page .nk50e-theme-icon {
    width: 42px;
    height: 42px;
    padding: 9px;
    border: 1px solid #c8e0ee;
    border-radius: 12px;
    background: var(--nk50e-sky);
    color: var(--nk50e-blue);
  }
  #app .nk50e-page .nk50e-theme-card > span[aria-hidden="true"] {
    justify-self: end;
    color: var(--nk50e-blue);
    font-size: 18px;
  }

  #app .nk50e-page .nk50e-price-card {
    box-sizing: border-box;
    display: flex;
    min-width: 0;
    height: 100%;
    flex-direction: column;
    padding: clamp(20px, 2.4vw, 30px);
    border: 1px solid var(--nk50e-line) !important;
    border-radius: 15px !important;
    background: #fff !important;
    box-shadow: 0 8px 24px rgba(21, 49, 74, .08);
  }
  #app .nk50e-page .nk50e-price-card :is(dl,dt,dd) {
    box-sizing:border-box;min-inline-size:0!important;max-inline-size:100%!important;
    inline-size:100%!important;margin-inline:0!important;
    white-space:normal!important;overflow-wrap:break-word;
  }
  #app .nk50e-page .nk50e-price-card > h3 {
    width: fit-content;
    max-width: 100%;
    margin: 0 0 12px;
    padding: 6px 11px;
    border: 1px solid #d9be00;
    border-radius: 8px;
    background: var(--nk50e-yellow);
    color: var(--nk50e-ink) !important;
    font-size: 12px;
    font-weight: 900;
    line-height: 1.35;
  }
  #app .nk50e-page .nk50e-price-display {
    display: block;
    margin: 4px 0 12px;
    color: var(--nk50e-ink) !important;
    font-size: clamp(25px, 3vw, 37px) !important;
    font-weight: 950 !important;
    line-height: 1.13;
    font-variant-numeric: tabular-nums;
  }
  #app .nk50e-page .nk-lot5-public-offer-card .nk50e-price-display {
    display: grid;
    gap: 8px;
  }
  #app .nk50e-page .nk50e-price-variant {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 6px 14px;
    padding: 10px 0;
    border-bottom: 1px solid #e3edf2;
    font-size: 14px;
    font-weight: 750;
    line-height: 1.35;
  }
  #app .nk50e-page .nk50e-price-variant:last-of-type { border-bottom: 0; }
  #app .nk50e-page .nk50e-price-sum {
    flex: 0 0 auto;
    color: var(--nk50e-blue);
    font-size: 23px;
    font-weight: 950;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }
  #app .nk50e-page .nk50e-price-separator { display: none; }
  #app .nk50e-page .nk50e-price-display .nk-lot50-price-amount {
    color: var(--nk50e-blue);
    font-weight: 950;
    white-space: nowrap;
  }
  #app .nk50e-page .nk50e-price-display .nk-lot50-price-unit {
    display: inline-block;
    margin-inline-start: .16em;
    color: var(--nk50e-muted);
    font-size: .48em;
    font-weight: 800;
    white-space: nowrap;
  }
  #app .nk50e-page .nk50e-price-card > p:not(.nk50e-price-display) {
    color: var(--nk50e-muted);
    font-size: 14px;
    line-height: 1.5;
  }
  #app .nk50e-page .nk50e-practical {
    display: flex;
    align-items: flex-start;
    gap: 8px;
  }
  #app .nk50e-page .nk50e-practical-icon {
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
    margin-top: 1px;
    color: var(--nk50e-blue);
  }
  #app .nk50e-page .nk50e-practical-icons {
    display: inline-flex;
    flex: 0 0 auto;
    gap: 5px;
  }
  #app .nk50e-page .nk50e-price-card > a.btn {
    align-self: flex-start;
    width: auto !important;
    max-width: 100%;
    margin-top: auto;
    padding: 11px 17px;
    border: 1px solid #2c5c88;
    border-radius: 12px !important;
    background: #fff;
    color: var(--nk50e-ink);
    font-weight: 850;
    text-decoration: none;
  }

  /* Gallery story: real allocated photo(s) beside the existing heading/copy. */
  #app .nk50e-page .nk50e-gallery-section > .container {
    display: grid !important;
    grid-template-columns: minmax(0, 1.05fr) minmax(260px, .95fr);
    align-items: center;
    gap: clamp(24px, 5vw, 68px);
  }
  #app .nk50e-page .nk50e-gallery-section .section-head {
    grid-column: 2;
    grid-row: 1;
    margin: 0;
  }
  #app .nk50e-page .nk50e-gallery {
    grid-column: 1;
    grid-row: 1;
    min-width: 0;
  }
  #app .nk50e-page .nk50e-gallery-track {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 12px !important;
    width: 100% !important;
    overflow: visible !important;
  }
  #app .nk50e-page .nk50e-gallery-track > .nk-lot4-photo {
    min-width: 0 !important;
    margin: 0 !important;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border: 1px solid var(--nk50e-line);
    border-radius: 14px;
    background: var(--nk50e-sky);
  }
  #app .nk50e-page .nk50e-gallery-track > .nk-lot4-photo:first-child {
    grid-row: span 2;
    aspect-ratio: auto;
    min-height: 280px;
  }
  #app .nk50e-page .nk50e-gallery-track > .nk-lot4-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  /* The native terminal is the one full-bleed closing strip; no framed card
     nested inside it. Existing CTA nodes and handlers stay untouched. */
  #app .nk50e-page .nk50e-final-cta {
    width: 100%;
    box-sizing: border-box;
    padding: clamp(34px, 6vw, 72px) 24px;
    border: 0 !important;
    border-radius: 0 !important;
    background: var(--nk50e-ink) !important;
  }
  #app .nk50e-page .nk50e-final-cta > .container {
    width: min(100%, 1180px);
    margin-inline: auto;
  }
  #app .nk50e-page .nk50e-final-cta-inner {
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  @media (max-width: 900px) {
    #app .nk50e-page .nk50e-theme-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
    #app .nk50e-page .nk50e-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    #app .nk50e-page .nk50e-step,
    #app .nk50e-page .nk50e-step:first-child,
    #app .nk50e-page .nk50e-step:last-child {
      border: 1px solid var(--nk50e-line);
      border-radius: 12px;
    }
  }
  @media (max-width: 767px) {
    #app .nk50e-page .nk-lot5-public-points,
    #app .nk50e-page .nk50e-theme-grid {
      grid-template-columns: minmax(0, 1fr) !important;
    }
    #app .nk50e-page .nk50e-point-card { min-height: 0; }
    #app .nk50e-page .nk50e-steps { grid-template-columns: minmax(0, 1fr); }
    #app .nk50e-page .nk50e-step {
      grid-template-columns: 46px minmax(0, 1fr) auto;
      grid-template-rows: auto;
      align-items: center;
      min-height: 0;
      gap: 12px;
      padding: 16px;
    }
    #app .nk50e-page .nk50e-step-number { position: static; }
    #app .nk50e-page .nk50e-step-copy { grid-column: 2; }
    #app .nk50e-page .nk50e-gallery-section > .container {
      grid-template-columns: minmax(0, 1fr);
      gap: 22px;
    }
    #app .nk50e-page .nk50e-gallery-section .section-head,
    #app .nk50e-page .nk50e-gallery {
      grid-column: 1;
      grid-row: auto;
    }
    #app .nk50e-page .nk50e-gallery-track > .nk-lot4-photo:first-child { min-height: 220px; }
  }
/* Existing one-photo galleries occupy their column, not half a two-photo grid. */
#app .nk50e-page .nk50e-gallery-track:has(>.nk-lot4-photo:only-child) {grid-template-columns:minmax(0,1fr)!important}
#app .nk50e-page .nk50e-point-card :is(.nk47-icon,.nk48-icon,.nk50-semantic-icon) {display:none}
#app .nk50e-page .nk50e-price-display > .nk50-semantic-icon {display:none}
#app .nk50e-page .nk50e-theme-card > .nk50-semantic-icon {display:none}
#app .nk50e-page .nk48-recap-item {grid-template-columns:40px minmax(0,1fr)}
#app .nk50e-page .nk48-recap-source {grid-column:2;grid-row:1;min-width:0}
#app .nk50e-page .nk48-recap-copy {grid-column:2;grid-row:2;min-width:0}
#app .nk50e-page .nk48-icon--recap {grid-column:1;grid-row:1 / span 2}
#app .nk50e-page .nk50e-terminal-number {margin:0 0 16px;font-style:normal}
#app .nk50e-page .nk50e-final-cta :is(.cta-card,.nk-lot5-public-cta,.cta-final-inner) {border:0!important;background:transparent!important;box-shadow:none!important;padding:0!important}
#app.nk-ui-v17 .nk50e-page .nk50e-price-display {letter-spacing:normal!important;font-size:34px!important;line-height:1.25!important}
#app.nk-ui-v17 .nk50e-page .nk50e-price-display svg {display:none!important}
#app.nk-ui-v17 .nk50e-page .nk50e-price-display :is(.nk50e-price-name,.nk50e-price-variant) {letter-spacing:normal!important;font-size:15px!important}
#app.nk-ui-v17 .nk50e-page .nk50e-money {font-size:34px;font-weight:900;white-space:nowrap}
#app.nk-ui-v17 .nk50e-page .nk50e-unit {font-size:18px;font-weight:800;white-space:nowrap}
#app.nk-ui-v17 .nk50e-page .nk50e-price-context {display:block;margin-top:10px;font-size:14px;font-weight:700;color:var(--nk50e-muted);letter-spacing:normal}
#app.nk-ui-v17 .nk50e-page .nk50e-price-variant {display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:baseline;gap:8px}
#app.nk-ui-v17 .nk50e-page .nk50e-price-variant::before {content:"✓";font-size:15px;color:var(--nk50e-blue);grid-column:1}
#app.nk-ui-v17 .nk50e-page .nk50e-price-variant:first-child .nk50e-price-sum {font-size:32px}
#app.nk-ui-v17 .nk50e-page .nk50e-price-card > h3 {display:block;width:auto;padding:0;border:0;background:transparent;font-size:21px;line-height:1.35}
#app.nk-ui-v17 .nk50e-page .nk50e-format-badge {align-self:flex-start;display:inline-flex;padding:6px 10px;margin-bottom:14px;background:var(--nk50e-yellow);border-radius:8px;font-size:12px;font-weight:900}
#app.nk-ui-v17 .nk50e-page .nk50e-gallery-track:has(>figure:only-child) {grid-template-columns:minmax(0,1fr)!important}
#app.nk-ui-v17 .nk50e-page .nk50e-gallery-track > figure {width:100%!important;max-width:none!important;flex:none!important;height:340px!important;min-height:0!important;aspect-ratio:auto!important;margin:0;overflow:hidden;border-radius:12px}
#app.nk-ui-v17 .nk50e-page .nk50e-gallery-track > figure img {display:block;width:100%!important;height:100%!important;max-width:none!important;object-fit:cover;object-position:50% 35%}
#app.nk-ui-v17 .nk50e-page > .nk50e-final-cta[class] {background:var(--nk50e-ink)!important;--text:#fff;--text-2:#dbe7ee}
#app.nk-ui-v17 .nk50e-page .nk50e-final-cta .nk50e-final-cta-inner {padding:0!important;max-width:none!important;background:none!important;box-shadow:none!important;border:0!important}
#app.nk-ui-v17 .nk50e-page .nk50e-final-cta-inner::before,
#app.nk-ui-v17 .nk50e-page .nk50e-final-cta-inner::after {display:none!important}
#app.nk-ui-v17 .nk50e-page .nk50e-final-cta :is(h2,p) {color:#fff!important}
#app.nk-ui-v17 .nk50e-page .nk50e-terminal-number {font-style:normal;font-size:14px;font-weight:900}
#app.nk-ui-v17 .nk50e-page .nk50e-terminal-number .nk-section-number {display:inline-block;background:#dbeeff;color:var(--nk50e-ink);padding:4px 8px;border-radius:4px}
@media(max-width:767px){
 #app.nk-ui-v17 .nk50e-page .nk50e-gallery-track > figure {height:300px!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-price-variant {grid-template-columns:16px minmax(0,1fr);align-items:center}
 #app.nk-ui-v17 .nk50e-page .nk50e-price-variant .nk50e-price-sum {grid-column:2;font-size:27px}
 #app.nk-ui-v17 .nk50e-page .nk50e-money {font-size:30px}
}
#app.nk-ui-v17 .nk50e-page .nk50e-point-title {margin:14px 0 8px;font-size:19px;line-height:1.25;color:var(--nk50e-ink)}
#app.nk-ui-v17 .nk50e-page .nk50e-point-card > p {margin:0;font-size:15px;font-weight:600;color:var(--nk50e-muted)}
#app.nk-ui-v17 .nk50e-page .nk50e-theme-card {white-space:normal!important;gap:12px!important;line-height:1.4!important}
#app.nk-ui-v17 .nk50e-page .nk50e-price-card {--text:var(--nk50e-ink);--text-2:var(--nk50e-muted);--text-3:#526b80;--line:#c9dce8;color:var(--nk50e-ink)!important}
#app.nk-ui-v17 .nk50e-page .nk50e-price-sum .nk50e-money {font-size:inherit}
#app.nk-ui-v17 .nk50e-page .nk50e-price-sum .nk50e-unit {font-size:15px}
/* Layered !important declarations outrank unlayered !important regardless of
   specificity. Use the existing first layer, scoped exclusively to 50e pages. */
@layer nk-lot46-controls {
 #app.nk-ui-v17 .nk50e-page :is(a,button):not(form *,dialog *,[role="dialog"] *):has(.nk47-icon--cta) .nk47-native-arrow {display:none!important}
 #app.nk-ui-v17 .nk50e-page .nk-lot5-public-offer-card .nk50e-price-display {display:block!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-price-display > :is(.nk50e-money,.nk50e-unit) {display:inline!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-price-display > .nk50e-price-context {display:block!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-price-display > .nk50e-price-variant {display:grid!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-price-display svg {display:none!important}
 #app.nk-ui-v17 .nk50e-page > .nk50e-final-cta[class] {background:#0e2438!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-final-cta :is(h2,p) {color:#fff!important;-webkit-text-fill-color:#fff!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-final-cta .nk50e-final-cta-inner {background:none!important;border:0!important;box-shadow:none!important;padding:0!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-final-cta .btn.nk-v17-secondary {color:#fff!important;border-color:rgba(255,255,255,.65)!important;background:transparent!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-terminal-number .nk-section-number {color:#0e2438!important;-webkit-text-fill-color:#0e2438!important}
}
#app.nk-ui-v17 .nk50e-page .nk-lot5-public-offers {gap:18px!important}
#app.nk-ui-v17 .nk50e-page .nk50e-theme-card {position:relative;flex-direction:column!important;align-items:flex-start!important;min-height:128px;padding:20px!important;white-space:nowrap!important}
#app.nk-ui-v17 .nk50e-page .nk50e-theme-card :is(.nk47-native-arrow,.nk-v17-arrow,.nk-cta-arrow) {position:absolute;right:20px;bottom:20px}
#app.nk-ui-v17 .nk50e-page .nk50e-point-title {grid-column:1 / -1!important;min-width:0}
@layer nk-lot46-controls {
 #app.nk-ui-v17 .nk50e-page .nk50e-theme-card {display:grid!important;grid-template-columns:44px minmax(0,1fr) 16px!important;align-content:start!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-theme-icon {grid-column:1;grid-row:1}
 #app.nk-ui-v17 .nk50e-page .nk50e-theme-card :is(.nk50e-theme-label,.nk-cta-label) {grid-column:1 / -1;grid-row:2;font-size:14px!important}
 #app.nk-ui-v17 .nk50e-page .nk50e-theme-card :is(.nk47-native-arrow,.nk-v17-arrow,.nk-cta-arrow,span[aria-hidden="true"]) {position:static!important;grid-column:3;grid-row:1;justify-self:end}
 #app.nk-ui-v17 .nk50e-page .nk50e-theme-grid > .nk50e-theme-card {width:100%!important;inline-size:100%!important;box-sizing:border-box;justify-self:stretch}
 #app.nk-ui-v17 .nk50e-page .nk50e-theme-card,
 #app.nk-ui-v17 .nk50e-page .nk50e-theme-card .nk-cta-label {font-size:14px!important}
 #app.nk-ui-v17 .nk50e-page .prog-head-l:not(form *,dialog *,[role="dialog"] *) {flex-direction:column!important;align-items:flex-start!important}
 #app.nk-ui-v17 .nk50e-page .prog-head-l:not(form *,dialog *,[role="dialog"] *) > h3 {width:100%!important;min-inline-size:90px!important}
}
#app.nk-ui-v17 .nk50e-page .nk50e-price-card .prog-head-l {flex-direction:column;align-items:flex-start}
#app.nk-ui-v17 .nk50e-page .nk50e-price-card .prog-head-l h3 {min-width:90px;width:100%}
@media(max-width:1024px) {
 #app.nk-ui-v17 .nk50e-page :is(.nk-lot5-public-offers,.nk50e-price-grid,.prog-grid):not(form *,dialog *,[role="dialog"] *) {grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:767px) {
 #app.nk-ui-v17 .nk50e-page :is(.nk-lot5-public-offers,.nk50e-price-grid,.prog-grid):not(form *,dialog *,[role="dialog"] *) {grid-template-columns:minmax(0,1fr)!important}
}

/* LOT50f: compact editorial treatment for secondary Numériklub pages only.
   Runtime scope is attached by applyNkLot50fMedia. */
#app .nk50f-page {
  --nk50f-ink: var(--nk-encre, #102b42);
  --nk50f-muted: var(--nk-texte-2, #49657b);
  --nk50f-blue: var(--nk-ecran, #075fc7);
  --nk50f-sky: #edf7fc;
  --nk50f-line: #cbdde8;
  --nk50f-orange: var(--nk-orange, #f47721);
  color: var(--nk50f-ink);
  font-family: "Nunito", sans-serif;
}

#app .nk50f-page .nk50f-content.section {
  padding-block: clamp(34px, 5vw, 66px);
}
#app .nk50f-page .nk50f-content:is(.nk-v17-dark,.nk47-dark) {
  --nk50f-ink:#f7fbff;
  --nk50f-muted:#dbe7ee;
  --nk50f-blue:#8ed5f4;
}
#app .nk50f-page .nk50f-content:is(.nk47-light,.nk47-soft) {
  --nk50f-ink:#102b42;
  --nk50f-muted:#49657b;
  --nk50f-blue:#075fc7;
}

#app .nk50f-page .nk50f-content.section > .container > .section-head {
  max-width: 760px;
  margin: 0 auto clamp(22px, 3vw, 34px);
  text-align: center;
}

#app .nk50f-page .nk50f-content.section > .container > .section-head h2 {
  max-width: 22ch;
  margin: 0 auto;
  color: var(--nk50f-ink);
  font-size: clamp(25px, 3.2vw, 38px);
  font-weight: 900;
  letter-spacing: -.025em;
  line-height: 1.14;
}

#app .nk50f-page .nk50f-content h2 > svg {
  display: none !important;
}

#app .nk50f-page .nk50f-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px 22px;
  margin: 0;
}

#app .nk50f-page .nk50f-facts article {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  min-width: 0;
  padding: 16px 0;
  border-top: 1px solid var(--nk50f-line);
}

#app .nk50f-page .nk50f-facts article > svg,
#app .nk50f-page .nk50f-checklist li > svg,
#app .nk50f-page .nk50f-timeline li > svg {
  width: 23px;
  height: 23px;
  flex: 0 0 auto;
  color: var(--nk50f-blue);
  stroke: currentColor;
}

#app .nk50f-page .nk50f-facts article > p {
  margin: 0;
  color: var(--nk50f-muted);
  font-size: 15px;
  line-height: 1.55;
}

#app .nk50f-page .nk50f-facts article > p strong {
  display: block;
  margin-bottom: 3px;
  color: var(--nk50f-ink);
  font-size: 15px;
  font-weight: 900;
}

#app .nk50f-page .nk50f-checklist {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 28px;
  margin: 0;
  padding: 0;
  list-style: none;
}

#app .nk50f-page .nk50f-checklist li {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: start;
  gap: 11px;
  color: var(--nk50f-ink);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.55;
}
#app .nk50f-page .nk50f-checklist li > span {min-width:0}
#app .nk50f-page .nk50f-checklist li strong {display:block;margin-bottom:5px}

#app .nk50f-page .nk50f-timeline {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 28px;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: nk50f-step;
}

#app .nk50f-page .nk50f-timeline li {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-content: start;
  column-gap: 13px;
  row-gap: 4px;
  min-width: 0;
  padding: 18px 0;
  border-top: 1px solid var(--nk50f-line);
  counter-increment: nk50f-step;
}

#app .nk50f-page .nk50f-timeline li > svg {
  grid-column: 1;
  grid-row: 1 / span 2;
  width: 30px;
  height: 30px;
  padding: 5px;
  border-radius: 9px;
  background: var(--nk50f-sky);
}

#app .nk50f-page .nk50f-timeline li > h3 {
  grid-column: 2;
  margin: 0;
  color: var(--nk50f-ink);
  font-size: 17px;
  font-weight: 900;
  line-height: 1.3;
}

#app .nk50f-page .nk50f-timeline li > p {
  grid-column: 2;
  margin: 0;
  color: var(--nk50f-muted);
  font-size: 14px;
  line-height: 1.55;
}

#app .nk50f-page .nk50f-team {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 26px;
}

#app .nk50f-page .nk50f-team article {
  min-width: 0;
  padding: 17px 18px 17px 0;
  border-top: 2px solid var(--nk50f-orange);
}

#app .nk50f-page .nk50f-team article > h3 {
  margin: 0 0 6px;
  color: var(--nk50f-ink);
  font-size: 17px;
  font-weight: 900;
  line-height: 1.3;
}

#app .nk50f-page .nk50f-team article > p {
  margin: 0;
  color: var(--nk50f-muted);
  font-size: 14px;
  line-height: 1.55;
}

#app .nk50f-page .nk50f-faq {
  max-width: 880px;
  margin-inline: auto;
  border-top: 1px solid var(--nk50f-line);
}

#app .nk50f-page .nk50f-faq details {
  padding: 16px 2px;
  border-bottom: 1px solid var(--nk50f-line);
}

#app .nk50f-page .nk50f-faq summary {
  position: relative;
  padding-right: 28px;
  color: var(--nk50f-ink);
  font-size: 16px;
  font-weight: 850;
  line-height: 1.45;
  cursor: pointer;
}

#app .nk50f-page .nk50f-faq summary::marker {
  color: var(--nk50f-orange);
}

#app .nk50f-page .nk50f-faq details > p {
  max-width: 72ch;
  margin: 10px 0 0;
  color: var(--nk50f-muted);
  font-size: 14px;
  line-height: 1.65;
}

#app .nk50f-page .nk50f-siblings {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

#app .nk50f-page .nk50f-siblings > a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-content: center;
  gap: 5px 12px;
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--nk50f-line);
  background: rgba(128,188,223,.07);
  color: var(--nk50f-ink);
  text-decoration: none;
}

#app .nk50f-page .nk50f-siblings > a::after {
  content: "↗";
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  color: inherit;
  font-size: 18px;
}

#app .nk50f-page .nk50f-siblings > a > strong {
  font-size: 15px;
  font-weight: 900;
  line-height: 1.35;
}

#app .nk50f-page .nk50f-siblings > a > span {
  color: inherit;
  opacity: .86;
  font-size: 13px;
  line-height: 1.45;
}

#app .nk50f-page .nk50f-source {
  margin-top: 20px;
  color: var(--nk50f-muted);
  font-size: 12px;
  line-height: 1.5;
}

#app .nk50f-page .nk50f-source a {
  color: var(--nk50f-blue);
  font-weight: 800;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

/* Content photos sit in one half of the section and share the row with its
   existing section head. The 46-controls layer wins over older layered and
   unlayered !important image-height rules from LOT50e and the UI theme. */
@layer nk-lot46-controls {
  #app .nk50f-page .nk-lot4-territory > h3 {color:#102b42!important}
  #app .nk50f-page .nk50f-media-track > * {
    grid-column:auto!important;grid-row:auto!important;
    width:100%!important;height:auto!important;min-height:0!important;
    aspect-ratio:4/3!important;max-height:480px!important;
  }
  #app .nk50f-page .nk50f-content :is(.nk47-icon,.nk48-icon,.nk50-semantic-icon) {display:none!important}
  #app .nk50f-page .nk50f-checklist li > span {grid-column:2!important;width:auto!important;max-width:none!important}
  #app .nk50f-page .nk50f-checklist li > svg:not(.nk50-semantic-icon,.nk47-icon,.nk48-icon) {grid-column:1!important;grid-row:1!important}
  #app .nk50f-page .nk50f-media-track:has(>figure:only-child) {grid-template-columns:minmax(0,1fr)!important}
  #app .nk50f-page .nk50f-media-section > .container {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) !important;
    align-items: center !important;
    gap: clamp(22px, 4vw, 56px) !important;
  }

  #app .nk50f-page .nk50f-media-section .section-head {
    grid-column: 2 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    margin: 0 !important;
  }

  #app .nk50f-page .nk50f-media-gallery {
    grid-column: 1 !important;
    grid-row: 1 !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    margin: 0 !important;
  }

  #app .nk50f-page .nk50f-media-track {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    align-items: stretch !important;
    gap: 12px !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    overflow: visible !important;
  }

  #app .nk50f-page .nk50f-media-track > :is(figure, .nk-lot4-photo, .nk-media-photo) {
    box-sizing: border-box !important;
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: 480px !important;
    aspect-ratio: 4 / 3 !important;
    margin: 0 !important;
    overflow: hidden !important;
    border: 1px solid var(--nk50f-line) !important;
    border-radius: 12px !important;
    background: var(--nk50f-sky) !important;
  }

  #app .nk50f-page .nk50f-media-track > :is(.nk49-photo-card--poster, [data-media-kind="poster"]) {
    aspect-ratio: 4 / 3 !important;
  }

  #app .nk50f-page .nk50f-media-track > :is(figure, .nk-lot4-photo, .nk-media-photo) img {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    max-height: 480px !important;
    aspect-ratio: inherit !important;
    object-fit: cover !important;
    object-position: var(--nk50f-object-position, 50% 35%) !important;
  }

  #app .nk50f-page .nk50f-media-track > :is(.nk49-photo-card--poster, [data-media-kind="poster"]) img {
    object-fit: contain !important;
  }

  #app .nk50f-page .nk50f-media-track > :is(.portrait, .logo, .pictogram, [data-media-type="portrait"], [data-media-type="logo"], [data-media-type="pictogram"]) {
    aspect-ratio: auto !important;
    max-height: none !important;
    overflow: visible !important;
    border: 0 !important;
    background: transparent !important;
  }

  #app .nk50f-page .nk50f-media-track :is(img, picture, svg).nk50f-exempt-media {
    width: auto !important;
    height: auto !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    object-fit: contain !important;
  }

  #app .nk50f-page .nk50f-media-track > :first-child {
    grid-row: auto !important;
    min-height: 0 !important;
  }
}

@media (max-width: 900px) {
  #app .nk50f-page .nk50f-facts,
  #app .nk50f-page .nk50f-team {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  #app .nk50f-page .nk50f-content.section {
    padding-block: 30px;
  }

  #app .nk50f-page .nk50f-content.section > .container > .section-head {
    margin-bottom: 20px;
    text-align: left;
  }

  #app .nk50f-page .nk50f-content.section > .container > .section-head h2 {
    margin-inline: 0;
    font-size: clamp(23px, 7vw, 30px);
  }

  #app .nk50f-page :is(.nk50f-facts, .nk50f-checklist, .nk50f-timeline, .nk50f-team, .nk50f-siblings) {
    grid-template-columns: minmax(0, 1fr);
  }

  #app .nk50f-page .nk50f-facts {
    gap: 0;
  }

  #app .nk50f-page .nk50f-checklist {
    gap: 13px;
  }

  #app .nk50f-page .nk50f-team {
    gap: 0;
  }

  @layer nk-lot46-controls {
    #app .nk50f-page .nk50f-media-track > * {max-height:260px!important}
    #app .nk50f-page .nk50f-media-section > .container {
      grid-template-columns: minmax(0, 1fr) !important;
      gap: 18px !important;
    }

    #app .nk50f-page .nk50f-media-section .section-head,
    #app .nk50f-page .nk50f-media-gallery {
      grid-column: 1 !important;
      grid-row: auto !important;
    }

    #app .nk50f-page .nk50f-media-gallery {
      order: 2 !important;
    }

    #app .nk50f-page .nk50f-media-track > :is(figure, .nk-lot4-photo, .nk-media-photo) {
      max-height: 260px !important;
    }

    #app .nk50f-page .nk50f-media-track > :is(figure, .nk-lot4-photo, .nk-media-photo) img {
      max-height: 260px !important;
    }
  }
}

/* LOT51 — thematic workshop sequence. Strictly scoped to transformed thematic pages. */
#app .nk51-page {
  --nk51-ink: #18384B;
  --nk51-muted: #4F6572;
  --nk51-teal: var(--nk-ecran, #287F82);
  --nk51-line: rgba(24,56,75,.15);
  --nk51-soft: #EAF5F3;
  --nk51-paper: #F6F8F4;
  --nk51-takeaway-surface: #18384B;
  --nk51-takeaway-card-surface: #F6F8F4;
  --nk51-takeaway-copy: #18384B;
  --nk51-facts-surface: #18384B;
  --nk51-facts-copy: #F6F8F4;
  --nk51-facts-label: #D7E4E7;
  font-family: "Nunito", sans-serif;
  min-width: 0;
  overflow-wrap: anywhere;
}

#app .nk51-page .nk51-intro { max-width: 62ch; }
#app .nk51-page .nk51-section.section {
  color:var(--nk51-ink);
  box-sizing: border-box;
  padding-block: clamp(38px, 5.3vw, 76px);
}
#app .nk51-page .nk51-section > .container { min-width: 0; }
#app .nk51-page .nk51-section > .container > .section-head {
  max-width: 760px;
  margin: 0 0 clamp(24px, 3vw, 38px);
  text-align: left;
}
#app .nk51-page .nk51-section .section-head h2 {
  max-width: 24ch;
  margin: 0;
  color: var(--nk51-ink);
  font-family: "Nunito", sans-serif;
  font-size: clamp(26px, 3vw, 40px);
  font-weight: 900;
  letter-spacing: -.035em;
  line-height: 1.12;
  text-wrap: balance;
}
#app .nk51-page .nk51-section .section-head .num {
  display: block;
  margin-bottom: 9px;
  color: var(--nk51-teal);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .12em;
}

/* Calm-to-rich rhythm: project / pale skill checklist / three keepsakes /
   deep-teal audience band / softly framed FAQ, before native CTA. */
#app .nk51-page .nk51-project { background: var(--nk51-paper); }
#app .nk51-page .nk51-steps {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: nk51-step;
}
#app .nk51-page .nk51-steps > li {
  position: relative;
  min-width: 0;
  padding: 0 clamp(14px, 1.8vw, 26px) 4px;
  border-left: 1px solid var(--nk51-line);
  counter-increment: nk51-step;
}
#app .nk51-page .nk51-steps > li:first-child { padding-left: 0; border-left: 0; }
#app .nk51-page .nk51-step-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 20px;
}
#app .nk51-page .nk51-number {
  display: inline-grid;
  width: 30px;
  height: 30px;
  place-items: center;
  border-radius: 50%;
  background: #DDEFEA;
  color: var(--nk51-teal);
  font-size: 13px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  letter-spacing: .06em;
}
#app .nk51-page .nk51-icon {
  display: inline-grid;
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  place-items: center;
  border-radius: 13px;
  background: #DDEFEA;
  color: var(--nk51-teal);
}
#app .nk51-page .nk51-icon svg { display: block; width: 22px; height: 22px; stroke: currentColor; }
#app .nk51-page .nk51-steps h3,
#app .nk51-page .nk51-takeaways h3 {
  margin: 0 0 8px;
  color: var(--nk51-ink);
  font-size: 18px;
  font-weight: 900;
  line-height: 1.25;
  text-wrap: balance;
}
#app .nk51-page .nk51-steps p {
  margin: 0;
  color: var(--nk51-muted);
  font-size: 14px;
  line-height: 1.6;
}

#app .nk51-page .nk51-skills { background: var(--nk51-soft); }
#app .nk51-page .nk51-checklist {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 34px;
  margin: 0;
  padding: 0;
  list-style: none;
}
#app .nk51-page .nk51-checklist li {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  min-width: 0;
  color: var(--nk51-ink);
  font-size: 16px;
  font-weight: 750;
  line-height: 1.5;
}
#app .nk51-page .nk51-checklist li > svg {
  display: block;
  width: 22px;
  height: 22px;
  margin-top: 1px;
  color: var(--nk51-teal);
  stroke: currentColor;
}

#app .nk51-page .nk51-section.nk51-takeaways { background: var(--nk51-takeaway-surface); }
#app .nk51-page .nk51-section.nk51-takeaways .section-head h2 {
  color: var(--nk51-facts-copy);
  -webkit-text-fill-color: var(--nk51-facts-copy);
}
#app .nk51-page .nk51-section.nk51-takeaways .section-head .num {
  color: #A9E2DB;
  -webkit-text-fill-color: #A9E2DB;
}
#app .nk51-page .nk51-cards { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap:16px; }
#app .nk51-page .nk51-cards > article {
  display: flex;
  min-width: 0;
  min-height: 152px;
  flex-direction: column;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 20px;
  border: 1px solid var(--nk51-line);
  border-radius: 14px;
  background: var(--nk51-takeaway-card-surface);
  box-shadow: var(--nk-elev-1, 0 4px 14px rgba(24,56,75,.08));
}
#app .nk51-page .nk51-cards > article,
#app .nk51-page .nk51-cards > article :not(svg) {
  color: var(--nk51-takeaway-copy) !important;
  -webkit-text-fill-color: var(--nk51-takeaway-copy) !important;
}
#app .nk51-page .nk51-cards > article .nk51-icon,
#app .nk51-page .nk51-cards > article .nk51-icon * {
  color: var(--nk51-teal) !important;
  -webkit-text-fill-color: var(--nk51-teal) !important;
}
#app .nk51-page .nk51-cards > article:nth-child(2) .nk51-icon { background: #F8EBC7; color: #765B13; }
#app .nk51-page .nk51-cards > article:nth-child(3) .nk51-icon { background: #E5E9F2; color: #485D7A; }
#app .nk51-page .nk51-cards > article:nth-child(2) .nk51-icon,
#app .nk51-page .nk51-cards > article:nth-child(2) .nk51-icon *,
#app .nk51-page .nk51-cards > article:nth-child(3) .nk51-icon,
#app .nk51-page .nk51-cards > article:nth-child(3) .nk51-icon * {
  color: inherit !important;
  -webkit-text-fill-color: currentColor !important;
}
#app .nk51-page .nk51-cards > article:nth-child(2) .nk51-icon { color: #765B13 !important; }
#app .nk51-page .nk51-cards > article:nth-child(3) .nk51-icon { color: #485D7A !important; }
#app .nk51-page .nk51-cards > article h3 { margin: 0; font-size: 17px; }

#app .nk51-page :is(.nk51-audience,.nk51-faq) { background:var(--nk51-paper); }
#app .nk51-page .nk51-facts {
  display: grid;
  grid-template-columns: repeat(auto-fit,minmax(min(100%,240px),1fr));
  gap: 0;
  margin: 0;
  padding: 22px 26px;
  border-radius: 16px;
  background: var(--nk51-facts-surface);
  color: var(--nk51-facts-copy);
}
#app .nk51-page .nk51-facts,
#app .nk51-page .nk51-facts *:not(svg) {
  color: var(--nk51-facts-copy) !important;
  -webkit-text-fill-color: var(--nk51-facts-copy) !important;
}
#app .nk51-page .nk51-facts svg,
#app .nk51-page .nk51-facts svg * { color: #72D6CE !important; }
#app .nk51-page .nk51-facts > div {
  display: grid;
  grid-template-columns: 34px minmax(0,1fr);
  align-items: center;
  gap: 13px;
  min-width: 0;
  padding: 9px clamp(12px,2vw,25px);
  border-left: 1px solid rgba(255,255,255,.2);
}
#app .nk51-page .nk51-facts > div:first-child { padding-left: 0; border-left: 0; }
#app .nk51-page .nk51-facts svg { width: 26px; height: 26px; color: #72D6CE; stroke: currentColor; }
#app .nk51-page .nk51-facts dt { margin: 0 0 3px; color: var(--nk51-facts-label) !important; -webkit-text-fill-color: var(--nk51-facts-label) !important; font-size: 12px; font-weight: 750; line-height: 1.3; }
#app .nk51-page .nk51-facts dd { margin: 0; color: var(--nk51-facts-copy) !important; -webkit-text-fill-color: var(--nk51-facts-copy) !important; font-size: 16px; font-weight: 900; line-height: 1.35; }

#app .nk51-page .nk51-questions { max-width: 900px; border-top: 1px solid var(--nk51-line); }
#app .nk51-page .nk51-questions details { padding: 19px 0; border-bottom: 1px solid var(--nk51-line); }
#app .nk51-page .nk51-questions summary {
  position: relative;
  padding: 0 38px 0 0;
  color: var(--nk51-ink);
  font-size: 17px;
  font-weight: 900;
  line-height: 1.45;
  cursor: pointer;
  list-style: none;
}
#app .nk51-page .nk51-questions summary::-webkit-details-marker { display: none; }
#app .nk51-page .nk51-questions summary::after {
  content: "+";
  position: absolute;
  top: 50%;
  right: 2px;
  display: grid;
  width: 28px;
  height: 28px;
  place-items: center;
  border-radius: 50%;
  background: var(--nk51-soft);
  color: var(--nk51-teal);
  font-size: 20px;
  font-weight: 700;
  line-height: 1;
  transform: translateY(-50%);
}
#app .nk51-page .nk51-questions details[open] summary::after { content: "−"; }
#app .nk51-page .nk51-questions details > p { max-width: 72ch; margin: 11px 0 0; color: var(--nk51-muted); font-size: 15px; line-height: 1.65; }

@media (max-width: 900px) {
  #app .nk51-page .nk51-steps { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 22px 0; }
  #app .nk51-page .nk51-steps > li:nth-child(3) { padding-left: 0; border-left: 0; }
}
@media (max-width: 767px) {
  #app .nk51-page .nk51-section.section { padding-block: 32px; }
  #app .nk51-page .nk51-section > .container > .section-head { margin-bottom: 21px; }
  #app .nk51-page .nk51-section .section-head h2 { font-size: clamp(24px, 7vw, 31px); }
  #app .nk51-page .nk51-steps { grid-template-columns: minmax(0,1fr); gap: 0; }
  #app .nk51-page .nk51-steps > li,
  #app .nk51-page .nk51-steps > li:nth-child(3) {
    display: grid;
    grid-template-columns: 44px minmax(0,1fr);
    grid-template-rows: auto auto auto;
    column-gap: 13px;
    padding: 17px 0;
    border-left: 0;
    border-top: 1px solid var(--nk51-line);
  }
  #app .nk51-page .nk51-steps > li:first-child { padding-top: 0; border-top: 0; }
  #app .nk51-page .nk51-step-top { display: contents; }
  #app .nk51-page .nk51-number { grid-column: 1; grid-row: 1; align-self: center; }
  #app .nk51-page .nk51-step-top .nk51-icon { grid-column: 1; grid-row: 2 / span 2; align-self: start; margin-top: 8px; }
  #app .nk51-page .nk51-steps h3 { grid-column: 2; grid-row: 1; align-self: center; margin: 0 0 4px; font-size: 17px; }
  #app .nk51-page .nk51-steps p { grid-column: 2; grid-row: 2; }
  #app .nk51-page .nk51-checklist,
   #app .nk51-page .nk51-cards,
   #app .nk51-page .nk51-facts { grid-template-columns: minmax(0,1fr); }
  #app .nk51-page .nk51-checklist { gap: 13px; }
  #app .nk51-page .nk51-checklist li { font-size: 15px; }
#app .nk51-page .nk51-cards > article { min-height: 0; gap: 14px; padding: 17px; }
#app .nk51-page .nk51-facts { padding: 13px 17px; }
#app .nk51-page .nk51-facts > div,
#app .nk51-page .nk51-facts > div:first-child { padding: 12px 0; border-left: 0; border-top: 1px solid rgba(255,255,255,.2); }
#app .nk51-page .nk51-facts > div:first-child { border-top: 0; }
#app .nk51-page .nk51-questions summary { font-size: 16px; }
}
@media (max-width: 360px) {
  #app .nk51-page .nk51-section > .container { padding-inline: 16px; }
  #app .nk51-page .nk51-steps > li,
  #app .nk51-page .nk51-steps > li:nth-child(3) { grid-template-columns: 38px minmax(0,1fr); column-gap: 10px; }
  #app .nk51-page .nk51-step-top .nk51-icon { width: 36px; height: 36px; flex-basis: 36px; }
}

/* Lot58 · editorial workshop field notes, scoped to the five theme pages. */
#app .nk58-page {
  --nk58-ink:#132F40;
  --nk58-muted:#496573;
  --nk58-paper:#F3F6F0;
  --nk58-soft:#DCEEEA;
  --nk58-deep:#12374A;
  --nk58-teal:#176B70;
  --nk58-line:rgba(19,47,64,.18);
  color:var(--nk58-ink);
}
#app .nk58-page .nk58-section {
  position:relative;
  padding-block:clamp(52px,6vw,88px);
  color:var(--nk58-ink);
  background:var(--nk58-paper);
}
#app .nk58-page .nk58-section > .container {
  width:min(1180px,calc(100% - 48px));
  min-width:0;
}
#app .nk58-page .nk58-section .section-head { margin-block-end:clamp(24px,3vw,38px); }
#app .nk58-page .nk58-section .section-head .num,
#app .nk58-page .nk50f-content .nk58-editorial-number {
  display:inline-flex;
  align-items:center;
  width:max-content;
  min-height:27px;
  margin:0 0 12px;
  padding:4px 9px;
  border:1px solid #315568;
  border-radius:4px;
  background:#183B4F;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  font-size:11px;
  font-weight:900;
  line-height:1.2;
  letter-spacing:.12em;
}
#app .nk58-page .nk58-section .section-head h2,
#app .nk58-page .nk50f-content .section-head h2 {
  max-width:17ch;
  margin:0;
  color:var(--nk58-ink)!important;
  -webkit-text-fill-color:var(--nk58-ink)!important;
  font-size:clamp(28px,3.6vw,48px);
  line-height:1.06;
  letter-spacing:-.035em;
  text-wrap:balance;
}
#app .nk58-page .nk58-section .section-head > p {
  max-width:66ch;
  margin:12px 0 0;
  color:var(--nk58-muted)!important;
  -webkit-text-fill-color:var(--nk58-muted)!important;
  font-size:15px;
  line-height:1.6;
}
#app .nk58-page .nk58-project { background:#F4F6F0; }
#app .nk58-page .nk58-project-list {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:14px;
  margin:0;
  padding:0;
  list-style:none;
}
#app .nk58-page .nk58-project-step,
#app .nk58-page .nk58-day,
#app .nk58-page .nk58-takeaway {
  min-width:0;
  border:1px solid var(--nk58-line);
  border-radius:12px;
  background:#fff;
}
#app .nk58-page .nk58-project-step { padding:18px; }
#app .nk58-page .nk58-step-head,
#app .nk58-page .nk58-day-head {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
#app .nk58-page .nk58-step-number {
  display:grid;
  width:31px;
  height:31px;
  flex:0 0 31px;
  place-items:center;
  border-radius:7px;
  background:#183B4F;
  color:#fff;
  font-size:12px;
  font-weight:900;
  font-variant-numeric:tabular-nums;
}
#app .nk58-page .nk58-icon-badge {
  display:grid;
  width:42px;
  height:42px;
  flex:0 0 42px;
  place-items:center;
  border:1px solid #8AB9B6;
  border-radius:50%;
  background:#E2F0EC;
  color:#14575D;
}
#app .nk58-page .nk58-icon-badge svg {
  display:block;
  width:21px;
  height:21px;
  stroke:currentColor;
  stroke-width:1.7;
}
#app .nk58-page .nk58-project-step h3,
#app .nk58-page .nk58-day h3,
#app .nk58-page .nk58-takeaway h3,
#app .nk58-page .nk58-tool-group h3 {
  margin:14px 0 6px;
  color:var(--nk58-ink);
  font-size:17px;
  line-height:1.25;
  font-weight:850;
}
#app .nk58-page .nk58-project-step > p,
#app .nk58-page .nk58-day-copy {
  margin:0;
  color:var(--nk58-muted);
  font-size:14px;
  line-height:1.55;
}

/* Inline conceptual SVG studies are illustrative, never documentary evidence. */
#app .nk58-page .nk58-illustration {
  position:relative;
  display:block;
  width:min(100%,200px);
  aspect-ratio:3/2;
  height:auto;
  margin:14px 0 2px;
  overflow:hidden;
  border-radius:8px;
  background:transparent;
}
#app .nk58-page .nk58-illustration > img { display:block;width:100%;height:100%;object-fit:contain; }

#app .nk58-page .nk58-week { padding:clamp(20px,3vw,34px);border:1px solid rgba(255,255,255,.16);border-radius:16px;background:#15394C; }
#app .nk58-page .nk58-week-facts { display:flex;flex-wrap:wrap;gap:10px; }
#app .nk58-page .nk58-week-fact {
  display:flex;align-items:center;gap:10px;min-height:46px;padding:6px 13px 6px 7px;
  border:1px solid rgba(255,255,255,.25);border-radius:999px;background:#214B5E;color:#fff;
  font-size:14px;font-weight:750;
}
#app .nk58-page .nk58-week-fact .nk58-icon-badge { width:32px;height:32px;flex-basis:32px;background:#DDF0E9; }
#app .nk58-page .nk58-week-fact .nk58-icon-badge svg { width:17px;height:17px; }
#app .nk58-page .nk58-week-note { max-width:72ch;margin:17px 0 22px;color:#D5E4E6;font-size:14px;line-height:1.5; }
#app .nk58-page .nk58-days { display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none; }
#app .nk58-page .nk58-day { padding:14px;background:#F5F7F0;border-color:rgba(255,255,255,.24); }
#app .nk58-page .nk58-day-head { justify-content:flex-start; }
#app .nk58-page .nk58-day .nk58-icon-badge { width:36px;height:36px;flex-basis:36px; }
#app .nk58-page .nk58-day .nk58-illustration { width:min(100%,150px);margin-block:12px 0; }
#app .nk58-page .nk58-day-name { margin:12px 0 0;color:#176B70;font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase; }
#app .nk58-page .nk58-day h3 { margin-top:5px;font-size:15px; }
#app .nk58-page .nk58-day-copy { font-size:13px; }

#app .nk58-page .nk58-tools { background:#E0EFEB; }
#app .nk58-page .nk58-tool-group { position:relative;padding:clamp(20px,3vw,34px);border:1px solid rgba(19,47,64,.16);border-radius:14px;background:#F9FAF6; }
#app .nk58-page .nk58-tool-group > .nk58-icon-badge { position:absolute;top:22px;right:24px; }
#app .nk58-page .nk58-tool-intro { max-width:calc(100% - 62px);margin:0 0 18px;color:var(--nk58-ink);font-size:17px;line-height:1.4;font-weight:800; }
#app .nk58-page .nk58-tool-pills { display:flex;flex-wrap:wrap;gap:9px;margin:0;padding:0;list-style:none; }
#app .nk58-page .nk58-tool-pill { display:inline-flex;align-items:center;gap:8px;padding:7px 13px 7px 7px;border:1px solid #52777C;border-radius:999px;background:#fff;color:#183F4C;font-size:14px;font-weight:750; }
#app .nk58-page .nk58-tool-pill .nk58-icon-badge { width:25px;height:25px;flex-basis:25px; }
#app .nk58-page .nk58-tool-pill .nk58-icon-badge svg { width:14px;height:14px; }
#app .nk58-page .nk58-track-note { margin:20px 0 0;color:var(--nk58-muted);font-size:14px;line-height:1.5; }

#app .nk58-page .nk58-gallery-section { background:#F3F6F0; }
#app .nk58-page .nk58-gallery-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;overflow:visible;padding:0; }
#app .nk58-page .nk58-photo { min-width:0;margin:0;overflow:hidden;border:1px solid var(--nk58-line);border-radius:12px;background:#fff; }
#app .nk58-page .nk58-photo img { display:block;width:100%;aspect-ratio:3/2;object-fit:cover; }
#app .nk58-page .nk58-photo figcaption { min-height:49px;padding:12px 14px;color:var(--nk58-muted);font-size:13px;line-height:1.45; }
#app .nk58-page .nk58-skills { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none; }
#app .nk58-page .nk58-skill { display:flex;align-items:center;gap:12px;min-height:64px;padding:12px;border:1px solid var(--nk58-line);border-radius:10px;background:#fff;color:var(--nk58-ink);font-size:15px;font-weight:700; }
#app .nk58-page .nk58-skill .nk58-icon-badge { width:34px;height:34px;flex-basis:34px; }
#app .nk58-page .nk58-skill .nk58-icon-badge svg { width:17px;height:17px; }
#app .nk58-page .nk58-audience { background:#E0EFEB; }
#app .nk58-page .nk58-facts { display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:0;padding:0; }
#app .nk58-page .nk58-facts > div { display:flex;align-items:center;gap:13px;min-width:0;padding:16px;border:1px solid var(--nk58-line);border-radius:10px;background:#F9FAF6; }
#app .nk58-page .nk58-facts > div > svg { width:24px;height:24px;flex:0 0 24px;color:#176B70;stroke:currentColor;stroke-width:1.8; }
#app .nk58-page .nk58-facts dt { color:var(--nk58-muted);font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase; }
#app .nk58-page .nk58-facts dd { margin:3px 0 0;color:var(--nk58-ink);font-size:16px;font-weight:800;line-height:1.35; }

#app .nk58-page .nk58-takeaways { background:#E2EFEB; }
#app .nk58-page .nk58-takeaways ul.nk58-takeaways { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0;padding:0;list-style:none; }
#app .nk58-page .nk58-takeaway { display:grid;grid-template-columns:54px minmax(0,1fr);grid-template-rows:auto 1fr;align-items:start;gap:0 14px;padding:18px; }
#app .nk58-page .nk58-takeaway:first-child { grid-row:span 2;align-content:start; }
#app .nk58-page .nk58-takeaway .nk58-icon-badge { grid-column:1;grid-row:1; }
#app .nk58-page .nk58-takeaway .nk58-illustration { grid-column:2;grid-row:1; }
#app .nk58-page .nk58-takeaway h3 { grid-column:1/-1;margin-top:14px;font-size:16px; }
#app .nk58-page .nk58-faq-section { background:#EAF7FD; }
#app .nk58-page .nk58-faq-layout {
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:clamp(20px,3vw,28px);
  align-items:start;
}
#app .nk58-page .nk58-faq-layout > .nk51-questions,
#app .nk58-page .nk58-faq-layout > .nk-hub-faq-group { min-width:0; }
#app .nk58-page .nk58-faq-layout .nk51-questions { max-width:none;border:0; }
#app .nk58-page .nk58-faq-layout > .nk-hub-faq-group { grid-column:1; }
#app .nk58-page .nk58-faq-layout .nk-hub-faq-group > h3.nk60-faq-category { display:inline-flex!important; }
#app .nk58-page .nk58-faq-layout .faq { display:flex;flex-direction:column;gap:12px; }
#app .nk58-page .nk58-faq-layout .faq details.card {
  margin:0;
  padding:0;
  overflow:hidden;
  border-radius:16px;
  background:#fff;
  box-shadow:0 1px 2px rgba(21,49,74,.06),0 8px 22px rgba(21,49,74,.07);
}
#app .nk58-page .nk58-faq-layout .faq details > summary {
  display:grid;
  grid-template-columns:32px minmax(0,1fr) 30px;
  align-items:center;
  gap:12px;
  padding:16px 18px;
  color:var(--nk58-ink);
  font-size:16px;
  font-weight:850;
  line-height:1.45;
  text-align:left;
}
#app .nk58-page .nk58-faq-layout .faq details > summary .nk-home-faq-title {
  min-width:0;
  color:var(--nk58-ink);
  text-align:left;
  overflow-wrap:anywhere;
}
#app .nk58-page .nk58-faq-layout .faq details > summary .faq-chevron {
  display:grid;
  width:30px;
  height:30px;
  place-items:center;
  margin-inline-start:auto;
  border-radius:9px;
  background:#EAF7FD;
  color:#0E3044;
  font:700 20px/1 "Nunito",sans-serif;
}
#app .nk58-page .nk58-faq-layout .faq details > p {
  margin:0;
  padding:0 18px 16px 62px;
  color:var(--nk58-muted);
  font-size:15px;
  line-height:1.65;
}
#app .nk58-page .nk58-final-cta { background:#15394C;color:#fff; }
#app .nk58-page .nk58-final-cta .section-head h2,
#app .nk58-page .nk58-final-cta .section-head .sub { color:#fff!important;-webkit-text-fill-color:#fff!important; }
#app .nk58-page .nk58-final-cta .section-head .num { background:#E1F0E9;color:#15394C!important;-webkit-text-fill-color:#15394C!important;border-color:#fff; }
#app .nk58-page .nk58-final-cta .hero-cta { display:flex;gap:0; }

/* Same fade language as Lot55: compact copy stays readable over real photos. */
#app .nk58-page .page-hero.nk58-theme-hero {
  position:relative;
  isolation:isolate;
  overflow:hidden;
  min-height:clamp(430px,43vw,610px);
  background:#102F49;
}
#app .nk58-page .page-hero.nk58-theme-hero::before {
  position:absolute;
  z-index:1;
  inset:0;
  content:"";
  pointer-events:none;
  background:linear-gradient(90deg,rgba(9,31,49,.97) 0%,rgba(9,31,49,.95) 52%,rgba(9,31,49,.91) 76%,rgba(9,31,49,.16) 100%);
}
#app .nk58-page .page-hero.nk58-theme-hero > .container {
  position:relative;
  z-index:2;
  display:flex;
  width:min(1200px,calc(100% - 48px));
  min-height:inherit;
  flex-direction:column;
  justify-content:center;
  padding-block:clamp(52px,7vw,92px);
}
#app .nk58-page .page-hero.nk58-theme-hero figure {
  position:absolute;
  z-index:0;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  margin:0;
  pointer-events:none;
}
#app .nk58-page .page-hero.nk58-theme-hero img.hero-art {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  max-width:none;
  max-height:none;
  border-radius:0;
  object-fit:cover;
  object-position:var(--nk-lot50-object-position,50% 50%);
  -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 67%,transparent 100%);
  mask-image:linear-gradient(90deg,#000 0%,#000 67%,transparent 100%);
}
#app .nk58-page .page-hero.nk58-theme-hero .nk49-hero-visual img {
  object-position:var(--nk58-photo-position,50% 50%);
}
#app .nk58-page .page-hero.nk58-theme-hero :is(h1,.hero-title,.hero-sub,.hero-title-secondary) { max-width:15ch;text-wrap:balance; }
#app .nk58-page .page-hero.nk58-theme-hero .eyebrow { max-width:38ch;margin-block-end:32px; }
#app .nk58-page .page-hero.nk58-theme-hero .lead { max-width:62ch;margin-block-start:16px;line-height:1.55; }
#app .nk58-page .page-hero.nk58-theme-hero h1 strong,
#app .nk58-page .page-hero.nk58-theme-hero .hero-title strong {
  color:#E4C67B!important;
  -webkit-text-fill-color:#E4C67B!important;
  text-shadow:0 2px 18px rgba(7,29,39,.45);
}
#app .nk58-page .page-hero.nk58-theme-hero.nk-lot50-hero-creator img.hero-art {
  object-position:100% 0%!important;
  transform:scale(1.5)!important;
  transform-origin:right top!important;
}
#app .nk58-page .nk50f-content { background:#E5F0EC; }
#app .nk58-page .nk50f-content:nth-of-type(even) { background:#15394C;color:#F4F6F0; }
#app .nk58-page .nk50f-content:nth-of-type(even) .section-head h2,
#app .nk58-page .nk50f-content:nth-of-type(even) p,
#app .nk58-page .nk50f-content:nth-of-type(even) strong { color:#F4F6F0!important;-webkit-text-fill-color:#F4F6F0!important; }
#app .nk58-page .nk50f-content .section-head { margin-block-end:24px; }
#app .nk58-page .nk50f-siblings { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px; }
#app .nk58-page .nk50f-siblings > a { border-radius:10px; }
#app .nk58-page > section.nk58-dark-band { background:#15394C; }
#app .nk58-page > section.nk58-dark-band .section-head h2,
#app .nk58-page > section.nk58-dark-band .section-head > p { color:#F4F6F0!important;-webkit-text-fill-color:#F4F6F0!important; }
#app .nk58-page > section.nk58-dark-band .section-head .num { background:#E1F0E9;color:#15394C!important;-webkit-text-fill-color:#15394C!important;border-color:#fff; }
#app .nk58-page > section.nk58-dark-band .nk58-week { background:#F4F6F0;color:var(--nk58-ink); }
#app .nk58-page > section.nk58-dark-band .nk58-week-note { color:var(--nk58-muted); }
#app .nk58-page > section.nk58-dark-band .nk58-week-fact { background:#E2F0EC;color:var(--nk58-ink);border-color:#8AB9B6; }
#app .nk58-page > section.nk58-dark-band .nk58-week-fact .nk58-icon-badge { background:#15394C;color:#fff; }
#app .nk58-page > section.nk58-dark-band .nk58-tool-group,
#app .nk58-page > section.nk58-dark-band .nk58-takeaway,
#app .nk58-page > section.nk58-dark-band .nk58-skill { background:#F4F6F0; }
#app .nk58-page > section.nk58-dark-band .nk58-faq-layout summary { color:#F4F6F0; }
#app .nk58-page > section.nk58-dark-band .nk58-faq-layout details > p { color:#DBEAE7; }
#app .nk58-page > section.nk58-dark-band .nk58-faq-layout details { border-color:rgba(255,255,255,.28); }
#app .nk58-page > section.nk58-dark-band .nk50f-source,
#app .nk58-page > section.nk58-dark-band .nk50f-source a { color:#DBEAE7!important;-webkit-text-fill-color:#DBEAE7!important; }
#app .nk58-page > section.nk58-tone-dark { background-color:#15394C!important;background-image:none!important;color:#F4F6F0!important; }
#app .nk58-page > section.nk58-tone-light { background-color:#F3F6F0!important;background-image:none!important;color:#132F40!important; }
#app .nk58-page > section.nk58-tone-dark :is(.section-head h2,.section-head > p) { color:#F4F6F0!important;-webkit-text-fill-color:#F4F6F0!important; }
#app .nk58-page > section.nk58-tone-light :is(.section-head h2,.section-head > p) { color:#132F40!important;-webkit-text-fill-color:#132F40!important; }
#app .nk58-page .nk58-section .section-head .num,
#app .nk58-page .nk50f-content .section-head .num {
  border:1px solid #315568!important;
  background-color:#183B4F!important;
  background-image:none!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  text-shadow:none!important;
  opacity:1!important;
}
#app .nk58-page .nk58-section .section-head .num > .nk47-number,
#app .nk58-page .nk58-section .section-head .num > .nk58-number-token,
#app .nk58-page .nk50f-content .section-head .num > .nk47-number,
#app .nk58-page .nk50f-content .section-head .num > .nk58-number-token {
  border:0!important;
  background-color:transparent!important;
  background-image:none!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  text-shadow:none!important;
}
#app .nk58-page .nk58-step-number {
  border:1px solid #315568!important;
  background-color:#183B4F!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
  opacity:1!important;
}
@media(max-width:900px){
  #app .nk58-page .nk58-project-list { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #app .nk58-page .nk58-days { grid-template-columns:repeat(2,minmax(0,1fr)); }
  #app .nk58-page .nk58-day:last-child { grid-column:1/-1; }
}
@media(max-width:767px){
  #app .nk58-page .nk58-section { padding-block:38px; }
  #app .nk58-page .nk58-section > .container,
  #app .nk58-page .nk50f-content > .container { width:calc(100% - 36px); }
  #app .nk58-page .nk58-project-list,
  #app .nk58-page .nk58-days,
  #app .nk58-page .nk58-gallery-grid,
  #app .nk58-page .nk58-skills,
  #app .nk58-page .nk50f-siblings { grid-template-columns:minmax(0,1fr); }
  #app .nk58-page .nk58-day:last-child { grid-column:auto; }
  #app .nk58-page .nk58-takeaways ul.nk58-takeaways { grid-template-columns:minmax(0,1fr); }
  #app .nk58-page .nk58-takeaway:first-child { grid-row:auto; }
  #app .nk58-page .nk58-week { padding:16px; }
  #app .nk58-page .nk58-week-facts { align-items:flex-start;flex-direction:column; }
  #app .nk58-page .nk58-faq-layout { grid-template-columns:minmax(0,1fr);gap:20px; }
  #app .nk58-page .nk58-facts { grid-template-columns:minmax(0,1fr); }
  #app .nk58-page .nk58-faq-layout > .nk-hub-faq-group { grid-column:1; }
  #app .nk58-page .page-hero.nk58-theme-hero { min-height:550px; }
  #app .nk58-page .page-hero.nk58-theme-hero::before {
    background:linear-gradient(180deg,rgba(9,31,49,.90) 0%,rgba(9,31,49,.94) 42%,rgba(9,31,49,.98) 100%);
  }
  #app .nk58-page .page-hero.nk58-theme-hero > .container {
    width:min(100% - 32px,620px);
    min-height:inherit;
    justify-content:flex-start;
    padding-block:24px 42px;
  }
  #app .nk58-page .page-hero.nk58-theme-hero img.hero-art {
    object-position:var(--nk-lot50-object-position-mobile,50% 42%);
    -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 55%,transparent 100%);
    mask-image:linear-gradient(180deg,#000 0%,#000 55%,transparent 100%);
  }
  #app .nk58-page .page-hero.nk58-theme-hero .eyebrow { margin-block-end:24px; }
  #app .nk58-page .page-hero.nk58-theme-hero .lead { max-width:62ch; }
  #app .nk58-page .page-hero.nk58-theme-hero.nk-lot50-hero-creator img.hero-art {
    object-position:100% 0%!important;
    transform:scale(1.5)!important;
    transform-origin:right top!important;
  }
}
@media(max-width:360px){
  #app .nk58-page .nk58-section > .container,
  #app .nk58-page .nk50f-content > .container { width:calc(100% - 32px); }
  #app .nk58-page .nk58-project-step { padding:15px; }
}

/* Detail-page-only polish. The route guard excludes /numeriklub, campaign LPs,
   reservations, and all form/CRM surfaces. */
@layer nk-lot46-controls {
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page .nk51-section .section-head .num {
    display: block !important;
    margin-bottom: 9px !important;
    color: #176d8c !important;
    -webkit-text-fill-color: #176d8c !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    letter-spacing: .12em !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page .nk51-takeaways .section-head .num {
    color: #0b2838 !important;
    -webkit-text-fill-color: #0b2838 !important;
    background:#c7eeea!important;
    inline-size:max-content!important;
    padding:4px 7px!important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page .nk51-takeaways .section-head .num > span {
    color:#0b2838!important;-webkit-text-fill-color:#0b2838!important;
    background:#c7eeea!important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page :is(.section-head h2 > svg,.nk51-questions summary > svg,.nk51-takeaways h3 > :is(svg,.nk47-icon,.nk48-icon)) {
    display: none !important;
  }

  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page .nk51-takeaways .nk51-icon {
    border-radius: 50% !important;
  }

  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page > :is(.cta-final-section,.nk-theme-section:has(.hero-cta)) > .container {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page > :is(.cta-final-section,.nk-theme-section:has(.hero-cta)) :is(.section-head,h2,.cta-final h2) {
    width: 100% !important;
    max-width: 100% !important;
    margin-inline: 0 !important;
    text-align: left !important;
  }

  /* Keep the annual-track action row centered with equal card insets. */
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk-lot50-layout .nk-annual-track > .nk-annual-track-cta {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    padding: 18px 0 0 !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk-lot50-layout .nk-annual-track > .nk-annual-track-cta > :is(a,button) {
    width: min(100%, 280px) !important;
    min-width: 0 !important;
    margin-inline: auto !important;
    justify-content: center !important;
    text-align: center !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk-lot4-compare-card > .nk-lot4-choice {
    grid-column: 1 / -1 !important;
    display: flex !important;
    align-self: stretch !important;
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    margin: auto 0 0 !important;
    justify-content: center !important;
    text-align: center !important;
    transform: none !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk-lot4-compare-card dl dt > [data-nk-internal-field-icon] {
    width: 17px !important;
    height: 17px !important;
    margin-inline-end: 7px !important;
    vertical-align: -3px !important;
    color: #176d8c !important;
  }

  /* The textual price remains authoritative; discard only the extra currency
     pictogram injected beside short-holiday prices. */
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app :is(.nk-lot4-price,.nk-lot5-public-offer-price,.nk-lot4-price-list > div > strong) > svg[data-nk50-icon="euro"],
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app :is(.nk-lot4-price,.nk-lot5-public-offer-price,.nk-lot4-price-list > div > strong) > svg.nk50-semantic-icon {
    display: none !important;
  }

  /* Unselected calendars keep the select and its status semantics, but do not
     spend a screenful on an empty month grid or repeat the same prompt. */
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-list {
    grid-auto-rows:auto!important;grid-template-rows:none!important;
    align-items:start!important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-prompt {
    display:none!important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-yc-territory-prompt {
    display: none !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-yc:not(:has(.nk-yc-stage,.nk-yc-session)) .nk-yc-months {
    display: none !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-yc:not(:has(.nk-yc-stage,.nk-yc-session)) {
    padding-block: 0 !important;
    margin-block: 8px !important;
  }

  /* Match the summer offer header rhythm to annual rows and remove stray
     generic icons from the period label without touching its date controls. */
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-row-summer .nk-upcoming-copy {
    align-items: flex-start !important;
    text-align: left !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-row-summer .nk-upcoming-period {
    align-self: flex-start !important;
    margin: 0 !important;
    text-align: left !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-row-summer .nk-upcoming-period > svg {
    display: inline-block !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-row-summer .nk-upcoming-date-placeholder {
    display: none !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-row-summer .nk-upcoming-copy {
    position:static!important;transform:none!important;display:flex!important;
    flex-direction:column!important;gap:12px!important;
    width:100%!important;min-width:0!important;align-self:stretch!important;
    margin:0!important;padding:0!important;box-sizing:border-box!important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-row-summer .nk-upcoming-period {
    display:block!important;position:static!important;transform:none!important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app #calendrier-sec .nk-upcoming-row-summer :is(.nk-upcoming-help,.nk-upcoming-question,.nk-question-badge) {
    display: none !important;
  }
  body[data-route="/numeriklub/grandes-vacances"] #app :is(.nk-floating-question,.nk-floating-question-badge,.floating-question-badge,.question-float-badge) {
    display: none !important;
  }

  /* Gallery thumbnails share a single landscape crop on internal detail pages. */
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app :is(.nk49-gallery-track,.nk-media-track,.nk-lot4-media-track,.nk50e-gallery-track) > :is(figure,.nk-lot4-photo,.nk-media-photo,.nk49-photo-card) {
    aspect-ratio: 4 / 3 !important;
    overflow: hidden !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app :is(.nk49-gallery-track,.nk-media-track,.nk-lot4-media-track,.nk50e-gallery-track) > :is(figure,.nk-lot4-photo,.nk-media-photo,.nk49-photo-card) img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
  }
}

@media (max-width: 767px) {
  @layer nk-lot46-controls {
    body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk51-page > .cta-final-section :is(.section-head,h2,.cta-final h2) {
      text-align: left !important;
    }
    body[data-route^="/numeriklub/"]:not([data-route$="/reservation"]) #app .nk-lot50-layout .nk-annual-track > .nk-annual-track-cta > :is(a,button) {
      width: 100% !important;
      max-width: none !important;
    }
  }
}

/* Lot 55 — late, detail-page-only editorial cleanup and FAQ/annual details. */
@layer nk-lot46-controls {
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-hub-faq-group > .faq {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) !important;
    align-items: start !important;
    gap: 12px !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-hub-faq-group > .faq > details {
    width: 100% !important;
    min-height: 0 !important;
    height: auto !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .page-hero {
    padding-block-start: clamp(24px, 2.2vw, 32px) !important;
    align-items: flex-start !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .page-hero > .container {
    padding-block-start: 0 !important;
    justify-content: flex-start !important;
    align-content: start !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot50-layout .page-hero.nk-lot50-hero-annual {
    align-items: flex-start !important;
    padding-block-start: clamp(24px, 2.2vw, 32px) !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot50-layout .page-hero.nk-lot50-hero-annual > .container {
    justify-content: flex-start !important;
    padding-block: 0 32px !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .page-hero > .container > .eyebrow {
    margin-block-start: 0 !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tabs [data-nk-lot4-tab] {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 9px !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tabs .nk55-tab-icon,
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tabs .nk55-field-icon,
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tabs .nk55-outcome-icon {
    width: 18px !important;
    height: 18px !important;
    flex: 0 0 18px !important;
    color: #0059cf !important;
    vertical-align: -3px !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tabs .nk55-tab-icon {
    width: 20px !important;
    height: 20px !important;
    flex-basis: 20px !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tab-panels > [data-nk-lot4-panel][hidden] {
    display: none !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk55-panel-art {
    width: min(100%, 360px);
    margin: 18px 0 24px;
    overflow: hidden;
    border: 1px solid #c9e8f5;
    border-radius: 16px;
    background: #eaf7fd;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk55-panel-art img {
    display: block;
    width: 100%;
    height: auto;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk55-bilingual-badge {
    width: fit-content;
    margin: 0 0 22px;
    padding: 7px;
    border: 1px solid #c9e8f5;
    border-radius: 12px;
    background: #eaf7fd;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk55-bilingual-badge img {
    display: block;
    width: min(100%, 150px);
    height: auto;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tab-panels ol li h4 {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tab-panels ol li h4::before {
    flex: 0 0 auto;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-stage-outcome > strong,
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-final-outcome > strong {
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-hub-faq-group {
    margin-block: 0 22px;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-hub-faq-group > h3 {
    display: inline-flex !important;
    min-height: 36px !important;
    align-items: center !important;
    margin: 22px 0 12px !important;
    padding: 0 14px !important;
    border: 0 !important;
    border-radius: 999px !important;
    background: #0e2438 !important;
    color: #fff !important;
    -webkit-text-fill-color: #fff !important;
    font-size: 14px !important;
    font-weight: 800 !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app :is(.faq,.nk51-questions,.nk50f-faq) details[data-nk55-faq-category] > summary {
    display: grid !important;
    grid-template-columns: 32px minmax(0,1fr) 30px !important;
    align-items: center !important;
    gap: 12px !important;
    text-align: left !important;
    list-style: none !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app :is(.faq,.nk51-questions,.nk50f-faq) details[data-nk55-faq-category] > summary::-webkit-details-marker {
    display: none !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .faq .nk-home-faq-title {
    display: block !important;
    min-width: 0 !important;
    max-width: none !important;
    overflow: visible !important;
    text-align: left !important;
    white-space: normal !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .faq .nk-home-faq-icon {
    display: block !important;
    width: 32px !important;
    height: 32px !important;
    box-sizing: border-box !important;
    flex: 0 0 32px !important;
    padding: 7px;
    border: 1px solid #c9e8f5;
    border-radius: 10px;
    background: #eaf7fd;
    color: #0059cf;
    stroke: currentColor;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .faq .faq-chevron {
    display: grid !important;
    width: 30px !important;
    height: 30px !important;
    flex: 0 0 30px !important;
    place-items: center !important;
    margin-inline-start: auto !important;
    border-radius: 9px;
    background: #eaf7fd;
    color: #0e3044;
    font: 700 20px/1 "Nunito", sans-serif !important;
  }
}

@media (max-width: 767px) {
  @layer nk-lot46-controls {
    body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .page-hero {
      padding-block-start: 24px !important;
    }
    body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot50-layout .page-hero.nk-lot50-hero-annual {
      padding-block-start: 24px !important;
    }
    body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot50-layout .page-hero.nk-lot50-hero-annual > .container {
      padding-block: 0 24px !important;
    }
    body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .nk-lot4-tab-panels ol {
      grid-template-columns: minmax(0,1fr) !important;
    }
    body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"],[data-route*="/reservation/"],[data-route$="/tunnel"],[data-route*="/tunnel/"]) #app .faq details[data-nk55-faq-category] > summary {
      gap: 9px !important;
    }
  }
}

/* Lot 53 — strictly internal detail pages. Keep home aliases, the campaign
   landing page, reservations and modal/form surfaces outside this repair. */
@layer nk-lot46-controls {
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"]) #app :is(a,button):not(:where(form *,dialog *,[role="dialog"] *)):has(> svg.nk47-icon--cta)::after {
    content: none !important;
    display: none !important;
  }

  /* Number pills own an opaque, high-contrast pair on either section theme. */
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"]) #app :is(.nk47-number,.nk48-number):not(:where(form *,dialog *,[role="dialog"] *)),
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"]) #app :is(.nk47-number,.nk48-number) span:not(:where(form *,dialog *,[role="dialog"] *)),
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"]) #app .section-head .num:not(:has(.nk47-number,.nk48-number)):not(:where(form *,dialog *,[role="dialog"] *)),
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"]) #app .section-head .num:not(:has(.nk47-number,.nk48-number)) > span:not(:where(form *,dialog *,[role="dialog"] *)) {
    color: #fff !important;
    -webkit-text-fill-color: currentColor !important;
    background-color: #0e3044 !important;
    background-image: none !important;
    border-color: #0e3044 !important;
    text-shadow: none !important;
    opacity: 1 !important;
  }

  /* Annual-track comparison: readable copy and equal-height, bottom-aligned
     actions across the three cards. */
  body[data-route="/numeriklub/parcours-annuel"] #app .nk-lot4-compare-card {
    display: flex !important;
    flex-direction: column !important;
    align-self: stretch !important;
    height: 100% !important;
    box-sizing: border-box !important;
  }
  body[data-route="/numeriklub/parcours-annuel"] #app .nk-lot4-compare-card dl {
    gap: 16px !important;
    margin-bottom: 16px !important;
  }
  body[data-route="/numeriklub/parcours-annuel"] #app .nk-lot4-compare-card > .nk-lot4-choice {
    align-self: stretch !important;
    width: 100% !important;
    min-height: 48px !important;
    margin: auto 0 0 !important;
    margin-top: auto !important;
  }

  /* The supplied 16:9 FAQ artwork contains the whole 3D question mark.
     The transparent square derivative frames the symbol itself, not the
     source's empty left half or clipped speech bubble. */
  body[data-route="/numeriklub/faq"] #app.nk-ui-v17 .nk49-page--faq:not(:has(.nk-lot50-photo-hero)) .nk49-hero-visual {
    inset-block: 50% auto !important;
    transform: translateY(-50%) !important;
    width: min(40vw, 500px) !important;
    height: auto !important;
    aspect-ratio: 1 / 1 !important;
    overflow: visible !important;
    place-items: center !important;
  }
  body[data-route="/numeriklub/faq"] #app.nk-ui-v17 .nk49-page--faq:not(:has(.nk-lot50-photo-hero)) .nk49-hero-image {
    width: 100% !important;
    height: 100% !important;
    max-width: 100% !important;
    max-height: 100% !important;
    object-fit: contain !important;
    object-position: center !important;
  }

  /* An empty/lazy gallery frame should sit quietly with its dark section,
     including .nk-lot4-photo cards nested below a track wrapper. */
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"]) #app :is(.nk49-gallery-track,.nk-media-track,.nk-lot4-media-track,.nk50e-gallery-track) :is(figure,.nk-lot4-photo,.nk-media-photo,.nk49-photo-card) {
    /* Before section classification completes, expose its own surface rather
       than the legacy forced pale rectangle. Light sections stay light. */
    background-color: transparent !important;
  }
  body[data-route^="/numeriklub/"]:not([data-route="/numeriklub/"],[data-route="/numeriklub/particuliers"],[data-route="/numeriklub/galerie"],[data-route$="/reservation"]) #app :is(.nk47-dark,.nk-v17-dark,.nk51-takeaways) :is(.nk49-gallery-track,.nk-media-track,.nk-lot4-media-track,.nk50e-gallery-track) :is(figure,.nk-lot4-photo,.nk-media-photo,.nk49-photo-card) {
    background-color: #102b3a !important;
  }
}

@media (max-width: 767px) {
  @layer nk-lot46-controls {
    body[data-route="/numeriklub/faq"] #app.nk-ui-v17 .nk49-page--faq:not(:has(.nk-lot50-photo-hero)) .nk49-hero-visual {
      position: relative !important;
      inset: auto !important;
      transform: none !important;
      width: min(calc(100% - 48px), 440px) !important;
      height: auto !important;
      aspect-ratio: 1 / 1 !important;
      margin: 8px auto 24px !important;
    }
  }
}
