.elementor-kit-7{--e-global-color-primary:#0A0A0A;--e-global-color-secondary:#FFFFFF;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-color-d87cd83:#00339f;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1320px;}.e-con{--container-max-width:1320px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){--kit-widget-spacing:0px;}.elementor-element{--widgets-spacing:0px 0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:85%;}.e-con{--container-max-width:85%;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:90%;}.e-con{--container-max-width:90%;}}
/* Start custom CSS *//* ============================================================
   NEOVA — MOBILE (≤767px) — reproduction des maquettes Figma mobile
   (la version mobile couvre en fait ≤1200px : portrait ≤767, tablette portrait 768–991, tablette paysage 992–1200)
   Système : gouttière 10 · sections arrondies 20 · Space Grotesk / Inter
   Classes préfixées nm-  (widgets natifs Elementor)
   ============================================================ */
@media (max-width: 99999px) {
  :root { --nm-blue:#00339f; --nm-black:#0a0a0a; --nm-grey:#666666; --nm-light:#f5f5f5; --nm-line:#e5e5e5; --nm-cyan:#00a1e1; --nm-muted:#999999;
          --nm-sg:'SpaceGrotesk','Space Grotesk',sans-serif; --nm-inter:'Inter',sans-serif; }
  /* clip (pas hidden) : hidden transforme body en conteneur de scroll et casse position:sticky du sticky stack ; !important pour passer devant le CSS de page hérité de la desktop */
  html, body { overflow-x:clip !important; overflow-y:visible !important; }

  /* ---- Racine ---- */
  .nm-root.e-con { display:flex !important; flex-direction:column !important; gap:10px !important; padding:10px !important; background:var(--nm-light) !important; width:100% !important; max-width:100% !important; }
  .nm-root .e-con { --padding-block-start:0; --padding-block-end:0; --padding-inline-start:0; --padding-inline-end:0; }
  .nm-root .e-con.e-con-full, .nm-root .e-con > .e-con-inner { width:100% !important; max-width:100% !important; }
  .nm-root .elementor-widget { margin:0 !important; width:100% !important; }
  .nm-root .elementor-widget-container { margin:0 !important; }
  .nm-sec.e-con { border-radius:20px !important; background:#fff; padding:40px 20px !important; gap:28px !important; width:100% !important; }
  .nm-header.e-con { gap:16px !important; }
  .nm-cards.e-con, .nm-stack.e-con { gap:10px !important; }

  /* ---- Typo ---- */
  .nm-h1 .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:40px !important; line-height:44px !important; letter-spacing:-0.03em !important; color:#fff !important; margin:0 !important; }
  .nm-h2 .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:28px !important; line-height:34px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-h2--medium .elementor-heading-title { font-weight:500 !important; }
  .nm-h2 .elementor-heading-title, .nm-cta-title .elementor-heading-title { text-wrap:balance; hyphens:none !important; } /* coupes équilibrées (n'affecte pas les <br> volontaires), jamais de césure ; pas sur le H1 (coupures Figma voulues) */
  .nm-h1 .elementor-heading-title, .nm-h3 .elementor-heading-title, .nm-card-title .elementor-heading-title { hyphens:none !important; }
  .nm-root .nm-fin-card .nm-card-title .elementor-heading-title br { display:none; } /* jamais de saut de ligne manuel dans un titre de carte (« Aides / et dispositifs ») */
  .nm-h2--center .elementor-heading-title { text-align:center !important; }
  .nm-h2--white .elementor-heading-title, .nm-contact .nm-h2 .elementor-heading-title { color:#fff !important; }
  /* SYSTÈME TYPO 17/09 (audit senior) : deux rangs de titres moyens (22/26 et 20/24), interlettrage −3 % sur tout titre ≥ 20 px, échelle tablette monotone, gris #888 pour les textes atténués ≥ 24 px */
  .nm-h3 .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:22px !important; line-height:26px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-h3--white .elementor-heading-title { color:#fff !important; }
  .nm-h3--bold .elementor-heading-title { font-weight:700 !important; font-size:18px !important; line-height:22px !important; letter-spacing:0 !important; }
  /* interlignage du texte courant réduit (décision Frédéric 17/09) : 16/22, 15/20 — les titres ne changent pas */
  .nm-text, .nm-text p, .nm-card-text, .nm-card-text p { font-family:var(--nm-inter) !important; font-size:16px !important; line-height:22px !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-card-text--15 p { font-size:15px !important; line-height:20px !important; }
  .nm-text--white p { color:#fff !important; }
  .nm-hero-intro p { font-family:var(--nm-sg) !important; font-size:16px !important; line-height:22px !important; color:#fff !important; margin:0 !important; }
  .nm-card-title .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:22px !important; line-height:26px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-card-title--20 .elementor-heading-title { font-size:20px !important; line-height:24px !important; }
  .nm-num .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:64px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-line) !important; margin:0 !important; }
  .nm-eyebrow { display:flex; flex-direction:column; gap:14px; width:100%; }
  .nm-eyebrow span { font-family:var(--nm-sg) !important; font-size:12px !important; line-height:1 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:var(--nm-black) !important; }
  .nm-eyebrow::after { content:''; display:block; height:1px; background:var(--nm-line); width:100%; }
  .nm-eyebrow--noline::after { display:none; }
  .nm-eyebrow--center { align-items:center; }
  .nm-eyebrow--center span { text-align:center !important; color:var(--nm-grey) !important; }
  .nm-eyebrow--light span { color:#fff !important; } .nm-eyebrow--light::after { background:#fff; }

  /* ---- Boutons ---- */
  .nm-btn .elementor-button-wrapper { display:block !important; }
  .nm-btn .elementor-button { display:flex !important; align-items:center !important; width:100% !important; min-height:48px !important; padding:4px 44px 4px 4px !important; border-radius:40px !important; background:#fff !important; color:var(--nm-black) !important; border:0 !important; box-shadow:none !important; text-transform:none !important; letter-spacing:0 !important; }
  .nm-btn .elementor-button-content-wrapper { display:flex !important; align-items:center !important; gap:12px !important; width:100% !important; }
  .nm-btn .elementor-button-icon { width:40px !important; height:40px !important; flex:0 0 40px !important; border-radius:20px !important; background:var(--nm-black) !important; color:#fff !important; display:flex !important; align-items:center !important; justify-content:center !important; margin:0 !important; }
  .nm-btn .elementor-button-icon i, .nm-btn .elementor-button-icon svg { font-size:14px !important; width:14px !important; height:14px !important; fill:currentColor; color:inherit !important; }
  .nm-btn .elementor-button-text { flex:1 !important; text-align:center !important; font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:14px !important; line-height:1 !important; color:inherit !important; }
  .nm-btn--blue .elementor-button { background:var(--nm-blue) !important; color:#fff !important; }
  .nm-btn--blue .elementor-button-icon { background:#fff !important; color:var(--nm-blue) !important; }
  .nm-btn--light .elementor-button { background:var(--nm-light) !important; }
  .nm-btn--light .elementor-button-icon { background:var(--nm-blue) !important; color:#fff !important; }
  .nm-btn--hug .elementor-button-wrapper { display:inline-block !important; }
  .nm-btn--hug .elementor-button { width:auto !important; padding-right:20px; }
  .nm-btn--hug .elementor-button-text { text-align:left !important; }
  .nm-pricing .nm-btn--white .elementor-button-icon { background:var(--nm-blue) !important; }
  .nm-hero-btns.e-con { gap:8px !important; }

  /* ---- Hero ---- */
  .nm-hero.e-con { min-height:700px !important; padding:16px 20px 24px !important; gap:20px !important; justify-content:flex-end !important; }
  .nm-hero-text.e-con { gap:16px !important; }

  /* ---- Partenaires ---- */
  .nm-partners.e-con { padding:24px 20px !important; gap:16px !important; border:1px solid #d3d3d3 !important; align-items:center !important; }
  .nm-logos-row.e-con { flex-direction:row !important; justify-content:center !important; align-items:center !important; gap:24px !important; width:auto !important; }
  .nm-logos-row .elementor-widget { width:auto !important; }
  .nm-logo img { width:auto !important; display:block !important; }
  .nm-logo--prefet img { height:44px !important; } .nm-logo--enpc img { height:30px !important; } .nm-logo--cpf img { height:36px !important; } .nm-logo--klaxo img { height:26px !important; } .nm-logo--qualiopi img { height:48px !important; }

  /* ---- Engagements ---- */
  .nm-eng.e-con { background:var(--nm-light) !important; border:1px solid var(--nm-line) !important; padding:40px 20px 20px !important; }
  .nm-eng .nm-header.e-con { align-items:center !important; }
  .nm-card.e-con { border-radius:20px !important; background:#fff !important; padding:24px 24px 28px !important; gap:24px !important; }
  .nm-eng-card .nm-card-title { margin-bottom:-12px; }
  .nm-card--blue.e-con { background:var(--nm-blue) !important; }
  .nm-card--blue .nm-num .elementor-heading-title { color:var(--nm-cyan) !important; }
  .nm-card--blue .nm-card-title .elementor-heading-title, .nm-card--blue .nm-card-text p { color:#fff !important; }
  .nm-photo img { width:100% !important; object-fit:cover !important; border-radius:20px !important; display:block !important; }
  .nm-photo--300 img { height:300px !important; } .nm-photo--240 img { height:240px !important; } .nm-photo--220 img { height:220px !important; } .nm-photo--200 img { height:200px !important; }
  .nm-photo--r16 img { border-radius:16px !important; }

  /* Sticky stack (règle NEOVA : séries ≥3 cartes numérotées) */
  .nm-stack.e-con { overflow:visible !important; }
  .nm-stack > .e-con { position:-webkit-sticky !important; position:sticky !important; box-shadow:0 -8px 24px rgba(10,10,10,.08) !important; }
  .nm-stack > .e-con:nth-child(1) { top:12px !important; z-index:1 !important; }
  .nm-stack > .e-con:nth-child(2) { top:22px !important; z-index:2 !important; }
  .nm-stack > .e-con:nth-child(3) { top:32px !important; z-index:3 !important; }
  .nm-stack > .e-con:nth-child(4) { top:42px !important; z-index:4 !important; }
  .nm-stack > .e-con:nth-child(5) { top:52px !important; z-index:5 !important; }
  .nm-stack > .e-con:nth-child(6) { top:62px !important; z-index:6 !important; }
  /* Dernière carte libre (règle globale : elle défile normalement et recouvre la précédente). Explicite pour toutes les séries (3, 4 ou 6 cartes) ;
     sans effet mesurable sur la position (le bas de la dernière carte = bas du nm-stack, sticky ne s'engageait donc jamais), mais l'intention est
     lisible. z-index conservé : dans un conteneur flex il s'applique même en position:static (la dernière carte reste peinte au-dessus) ;
     ombre conservée pour garder le même indice de profondeur quand elle recouvre l'avant-dernière. */
  .nm-stack > .e-con:last-child { position:static !important; }
  @media (prefers-reduced-motion: reduce) { .nm-stack > .e-con { position:static !important; box-shadow:none !important; } }

  /* ---- Prix ---- */
  .nm-price-outer.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:10px !important; }
  .nm-price-inner.e-con { background:var(--nm-line) !important; border-radius:16px !important; padding:28px 24px 24px !important; gap:20px !important; align-items:flex-start !important; }
  .nm-price-inner--blue.e-con { background:var(--nm-blue) !important; }
  .nm-price-title .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:20px !important; line-height:24px !important; letter-spacing:0 !important; color:var(--nm-black) !important; margin:0 !important; } /* interlettrage normal (le thème resserre les titres ; demande Frédéric 17/09) */
  .nm-price .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:48px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-price-inner--blue .nm-price-title .elementor-heading-title, .nm-price-inner--blue .nm-price .elementor-heading-title, .nm-price-inner--blue .nm-card-text p { color:#fff !important; }
  .nm-price-inner .nm-btn { width:auto !important; }
  /* nm-pricing-copy (titre + phrase d'accompagnement) : transparent en portrait, la phrase n'existe qu'en paysage */
  .nm-pricing-copy.e-con { display:contents !important; }
  .nm-pricing-sub { display:none !important; }

  /* ---- Financement ---- */
  .nm-fin-card.e-con { flex-direction:row !important; align-items:flex-start !important; gap:16px !important; padding:20px !important; background:var(--nm-light) !important; }
  .nm-fin-card .nm-fin-text.e-con { flex:1 !important; gap:8px !important; width:auto !important; }
  .nm-fin-card > .elementor-widget-html { width:auto !important; flex:0 0 56px !important; }
  .nm-fin-icon { width:56px; height:56px; border-radius:16px; background:#fff; display:flex; align-items:center; justify-content:center; color:var(--nm-blue) !important; font-size:22px !important; }
  .nm-fin-icon .nm-fin-svg { display:block; width:24px; height:24px; } /* icônes NEOVA (Figma 2736:349 : livre CPF, euro Permis à 1 €, coche Aides), Frédéric 23/09 */

  /* ---- Conseils ---- */
  .nm-article.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:10px !important; gap:0 !important; }
  .nm-article-text.e-con { padding:24px 14px 14px !important; gap:16px !important; }
  .nm-tags { display:flex; gap:16px; font-family:var(--nm-sg) !important; font-size:12px !important; letter-spacing:.04em !important; color:var(--nm-black) !important; }
  .nm-tags .nm-tag--muted { color:var(--nm-muted) !important; }
  .nm-article-title .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:22px !important; line-height:28px !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-author { display:flex; align-items:center; gap:12px; }
  .nm-author img { width:44px; height:44px; border-radius:50%; object-fit:cover !important; }
  .nm-author-text { flex:1; display:flex; flex-direction:column; gap:4px; }
  .nm-author-text strong { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:16px !important; color:var(--nm-black) !important; }
  .nm-author-text span { font-family:var(--nm-sg) !important; font-size:13px !important; color:var(--nm-grey) !important; }
  .nm-like { width:44px; height:44px; border-radius:22px; background:#fff; border:1px solid var(--nm-line); display:flex; align-items:center; justify-content:center; color:var(--nm-black) !important; font-size:16px !important; }
  .nm-more.e-con { flex-direction:row !important; gap:10px !important; }
  .nm-more.e-con { display:none !important; } /* les deux photos sous le carrousel ne servent à rien (Frédéric) — retirées en mobile et en tablette */
  /* carrousel natif des articles (shortcode [neova_conseils], thème enfant) : défilement horizontal + snap, carte suivante visible à droite (« peek ») */
  .nm-slider { display:flex; gap:10px; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; margin:0 -20px; padding:0 20px; scroll-padding-left:20px; }
  .nm-slider::-webkit-scrollbar { display:none; }
  .nm-slide { flex:0 0 88%; scroll-snap-align:start; background:var(--nm-light); border-radius:20px; padding:10px; display:flex; flex-direction:column; }
  .nm-slide-media { display:block; }
  .nm-slide-img { width:100% !important; height:220px !important; object-fit:cover !important; border-radius:16px !important; display:block; }
  .nm-slide-img--empty { background:var(--nm-line); }
  .nm-slide-body { padding:20px 14px 14px; display:flex; flex-direction:column; gap:14px; }
  /* le h3 lui-même porte corps + interlignage (sinon la ligne de base du h3 du thème impose un interlignage énorme au lien inline) */
  .nm-slide-title, .nm-slide-title a { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:20px !important; line-height:24px !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; text-decoration:none; margin:0 !important; padding:0 !important; }
  .nm-slide .nm-tags { line-height:1 !important; }
  .nm-slide-excerpt { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
  .nm-slide .nm-author img { width:44px !important; height:44px !important; border-radius:50% !important; object-fit:cover !important; }
  .nm-slide .nm-author-text strong { display:block; }
  /* « Guides pratiques, conseils d’experts <br>et actualités du permis. » : le <br> ne sert qu'en paysage */
  .nm-root .nm-conseils .nm-h2 .elementor-heading-title br { display:none; }
  .nm-more .elementor-widget { width:50% !important; flex:1 !important; }

  /* ---- Contact ---- */
  .nm-contact.e-con { background:var(--nm-blue) !important; }
  .nm-contact-card.e-con { background:#fff !important; border-radius:20px !important; padding:14px !important; gap:14px !important; }
  .nm-person.e-con { flex-direction:row !important; align-items:center !important; gap:14px !important; }
  .nm-person > .elementor-widget-image { width:64px !important; flex:0 0 64px !important; }
  .nm-avatar img { width:64px; height:64px; border-radius:14px; object-fit:cover !important; display:block; }
  .nm-contact-nametext.e-con { flex:1 !important; width:auto !important; }
  .nm-contact-name p { margin:0 !important; }
  .nm-job { font-family:var(--nm-inter) !important; font-size:13px !important; color:var(--nm-muted) !important; }
  .nm-name { font-family:var(--nm-sg) !important; font-weight:700 !important; font-size:18px !important; color:var(--nm-black) !important; margin-top:4px; }
  .nm-form-card.e-con { background:#fff !important; border-radius:20px !important; padding:28px 20px 24px !important; gap:20px !important; }
  .nm-form-title .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:700 !important; font-size:18px !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-form .neova-form { display:flex; flex-direction:column; gap:0; }
  .nm-form .pxl-item--form { position:relative; width:100%; border-bottom:1px solid var(--nm-line); padding:14px 0; }
  .nm-form .pxl-item--form input, .nm-form .pxl-item--form select, .nm-form .pxl-item--form textarea { width:100%; border:0; background:transparent; padding:0 28px 0 0; font-family:var(--nm-sg) !important; font-size:14px !important; color:var(--nm-black) !important; height:auto; box-shadow:none; text-transform:none !important; }
  .nm-form .pxl-item--form textarea { resize:vertical; }
  .nm-form .pxl-item--form ::placeholder { color:#5d5d5d !important; opacity:1; }
  .nm-form .pxl-item--form i { position:absolute; right:0; top:50%; transform:translateY(-50%); color:#5d5d5d !important; font-size:13px !important; }
  .nm-form .pxl-item--select select { appearance:none; -webkit-appearance:none; }
  .nm-form .pxl-item--consent { display:none; }
  .nm-form .pxl-item--submit { margin-top:20px; }
  .nm-form .pxl-item--submit .btn { display:flex; align-items:center; gap:12px; width:100%; min-height:48px; padding:4px 44px 4px 4px; border-radius:40px; background:var(--nm-light); color:var(--nm-black) !important; border:0; font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:14px !important; text-transform:none !important; }
  .nm-form .pxl-item--submit .btn .pxl--btn-icon { width:40px; height:40px; border-radius:20px; background:var(--nm-blue); display:flex; align-items:center; justify-content:center; flex:0 0 40px; }
  .nm-form .pxl-item--submit .btn { justify-content:flex-start !important; }
  .nm-form .pxl-item--submit .btn .pxl--btn-text { flex:1; text-align:center !important; padding:0 !important; }
  .nm-form .wpcf7-spinner { display:none; }
  .nm-form .wpcf7-not-valid-tip { font-size:12px !important; color:#e1000f !important; margin-top:6px; }
  .nm-disclaimer p { font-family:var(--nm-inter) !important; font-size:13px !important; line-height:18px !important; color:#fff !important; margin:0 !important; }
  .nm-info.e-con { gap:12px !important; }
  /* nm-contact-left (carte Destan + infos) : transparent en portrait — ses enfants redeviennent des items de .nm-contact, les infos passent en dernier (ordre Figma : carte, formulaire, disclaimer, infos) */
  .nm-contact-left.e-con { display:contents !important; }
  .nm-contact .nm-info.e-con { order:10; }
  .nm-info .nm-text p { font-size:15px !important; line-height:22px !important; }

  /* ================= PAGE FORMATIONS (maquette Figma 2378:191) ================= */
  /* nm-h1--38 : abandonné le 17/09 (H1 unifié 40/44 sur toutes les pages, Frédéric) */
  /* nm-h3--24 : abandonné le 17/09 (titre de la carte code = nm-card-title 22/26 comme les autres cartes) */
  /* boutons HTML (hors widget Elementor) : même dessin que .nm-btn */
  .nm-hbtn { display:flex; align-items:center; gap:12px; width:100%; min-height:48px; padding:4px 44px 4px 4px; border-radius:40px; background:#fff; color:var(--nm-black) !important; text-decoration:none !important; box-sizing:border-box; }
  .nm-hbtn-icon { width:40px; height:40px; flex:0 0 40px; border-radius:20px; background:var(--nm-black); color:#fff; display:flex; align-items:center; justify-content:center; font-size:14px; }
  .nm-hbtn-text { flex:1; text-align:center; font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:14px !important; line-height:1 !important; }
  .nm-hbtn--blue { background:var(--nm-blue); color:#fff !important; }
  .nm-hbtn--blue .nm-hbtn-icon { background:#fff; color:var(--nm-blue); }
  /* --- 7 étapes : accordéon (une seule ouverte, 02 ouverte au départ) --- */
  .nm-steps-sec.e-con { gap:28px !important; }
  .nm-steps { display:flex; flex-direction:column; }
  .nm-steps-stage { display:none; } /* portrait : la carte reste dans l'accordéon */
  /* rythme Figma : 18 / libellé 36 / 16 / [carte / 16] / ligne 1 / 18 → étape fermée 89px, ouverte 489px */
  .nm-step { padding:18px 0 !important; border:0 !important; }
  .nm-step::after { content:''; display:block; height:1px; background:var(--nm-line); margin-top:16px; }
  /* libellés centrés (choix Frédéric 17/09, différent de la maquette qui les aligne à gauche) */
  .nm-step-label { display:flex !important; align-items:center; justify-content:center !important; gap:14px; width:100% !important; height:36px; min-height:0 !important; padding:0 !important; margin:0 !important; background:none !important; border:0 !important; border-radius:0 !important; text-align:center !important; cursor:pointer; box-shadow:none !important; line-height:1 !important; font-weight:400 !important; text-transform:none !important; letter-spacing:0 !important; }
  .nm-step-idx { display:none !important; } /* numéros retirés (Frédéric 17/09) */
  .nm-step-label:focus { outline:none !important; } /* pas de cadre orange du thème au tap ; au clavier, un liseré bleu discret */
  .nm-step-label:focus-visible { outline:2px solid var(--nm-blue) !important; outline-offset:6px; border-radius:4px; }
  .nm-step-idx { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; color:#cfcfcf; width:16px; flex:0 0 16px; transition:color .25s ease; }
  .nm-step-name { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:36px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:#888888; /* #cfcfcf = 1,6:1, hors WCAG pour une commande ; #888 = 3,5:1 */ transition:color .25s ease; }
  .nm-step.is-open .nm-step-idx { color:var(--nm-blue); }
  .nm-step.is-open .nm-step-name { color:var(--nm-black); }
  .nm-step-panel { display:grid; grid-template-rows:0fr; transition:grid-template-rows .3s ease-out; }
  .nm-step-panel-in { min-height:0; overflow:hidden; }
  .nm-step.is-open .nm-step-panel { grid-template-rows:1fr; }
  .nm-step-card { background:var(--nm-light); border-radius:20px; padding:10px; margin:16px 0 0; display:flex; flex-direction:column; gap:16px; opacity:0; transform:translateY(-6px); transition:opacity .3s ease-out, transform .3s ease-out; }
  .nm-step.is-open .nm-step-card { opacity:1; transform:none; }
  .nm-step-img { width:100% !important; height:200px !important; max-width:none !important; object-fit:cover !important; border-radius:14px !important; display:block; margin:0 !important; }
  .nm-step-text { padding:4px 10px; display:flex; flex-direction:column; gap:8px; }
  .nm-step-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:20px !important; line-height:24px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-step-desc { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; }
  @media (prefers-reduced-motion: reduce) { .nm-step-panel, .nm-step-card, .nm-step-idx, .nm-step-name { transition:none !important; } }
  /* --- comparatif : section transparente sur le fond gris, 3 cartes blanches empilées (jamais de carrousel) --- */
  .nm-cmp.e-con { background:transparent !important; padding:30px 10px !important; gap:28px !important; }
  .nm-cmp-head.e-con { padding:0 10px !important; gap:20px !important; }
  .nm-cmp-copy.e-con { gap:20px !important; }
  .nm-cmp-card.e-con { background:#fff !important; border:1px solid var(--nm-line) !important; border-radius:20px !important; padding:10px !important; gap:0 !important; }
  .nm-price-inner--light.e-con { background:var(--nm-light) !important; }
  .nm-price-inner--light.nm-price-inner--blue.e-con { background:var(--nm-blue) !important; }
  .nm-cmp .nm-btn--white .elementor-button-icon { background:var(--nm-blue) !important; }
  .nm-features { list-style:none; margin:0 !important; padding:20px 14px 14px !important; display:flex; flex-direction:column; gap:8px; }
  .nm-features li { display:flex; align-items:flex-start; gap:10px; margin:0; font-family:var(--nm-inter) !important; font-size:14px !important; line-height:18px !important; color:var(--nm-grey) !important; }
  .nm-features li i { flex:0 0 14px; font-size:14px; line-height:18px; color:var(--nm-black); }
  .nm-extras { list-style:none; margin:0 !important; padding:0 10px !important; display:flex; flex-direction:column; gap:10px; }
  .nm-extras li { display:flex; align-items:center; gap:10px; margin:0; font-family:var(--nm-inter) !important; font-size:15px !important; line-height:1 !important; color:var(--nm-black) !important; }
  .nm-extras li::before { content:''; width:8px; height:8px; border-radius:50%; background:var(--nm-line); flex:0 0 8px; }
  /* --- détails : cartes grises (bleue au milieu), bouton sans fond --- */
  .nm-det-card.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:28px 24px 24px !important; gap:16px !important; align-items:flex-start !important; }
  .nm-det-card--blue.e-con { background:var(--nm-blue) !important; }
  .nm-lead p { font-family:var(--nm-inter) !important; font-weight:600 !important; font-size:16px !important; line-height:22px !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-det-card--blue .nm-price-title .elementor-heading-title, .nm-det-card--blue .nm-price .elementor-heading-title, .nm-det-card--blue .nm-lead p, .nm-det-card--blue .nm-card-text p { color:#fff !important; }
  .nm-btn--ghost .elementor-button { background:transparent !important; padding:0 20px 0 0 !important; }
  .nm-btn--ghost .elementor-button-icon { background:var(--nm-blue) !important; color:#fff !important; }
  .nm-det-card--blue .nm-btn--ghost .elementor-button { color:#fff !important; }
  .nm-det-card--blue .nm-btn--ghost .elementor-button-icon { background:#fff !important; color:var(--nm-blue) !important; } /* carte bleue : pastille blanche, + bleu (Frédéric 17/09) */
  .nm-det-card .nm-btn { margin-top:0 !important; width:auto !important; }
  /* --- code à l'unité : carte grise photo + texte + bouton --- */
  .nm-code-card.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:10px !important; gap:16px !important; }
  .nm-photo--r14 img { border-radius:14px !important; }
  .nm-code-text.e-con { padding:8px 14px 6px !important; gap:12px !important; }
  .nm-btn--iconblue .elementor-button-icon { background:var(--nm-blue) !important; color:#fff !important; }
  /* --- CTA : tagline centrée + bouton noir avec avatar --- */
  .nm-cta.e-con { background:transparent !important; padding:48px 20px !important; gap:24px !important; align-items:center !important; }
  .nm-cta-tagline.e-con { gap:4px !important; }
  .nm-cta-title .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:28px !important; line-height:34px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; text-align:center !important; margin:0 !important; }
  .nm-cta-title--muted .elementor-heading-title { color:#888888 !important; } /* #999 sur #f5f5f5 = 2,6:1 ; #888 = 3,3:1 (texte large) */
  .nm-cta-btn-w, .nm-cta-btn-w .elementor-widget-container { display:flex; justify-content:center; }
  .nm-cta-btn { display:inline-flex; align-items:center; gap:14px; min-height:56px; padding:6px 28px 6px 6px; border-radius:40px; background:var(--nm-black); text-decoration:none !important; }
  .nm-cta-avatar { width:44px !important; height:44px !important; border-radius:50% !important; object-fit:cover !important; display:block; }
  .nm-cta-btn-text { display:flex; flex-direction:column; gap:3px; }
  .nm-cta-btn-text strong { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:18px !important; line-height:1 !important; color:#fff !important; }
  .nm-cta-btn-text small { font-family:var(--nm-sg) !important; font-size:12px !important; line-height:1 !important; color:var(--nm-muted) !important; }
}

/* ---- Header mobile (template « Header Mobile - NEOVA ») : transparent sur le hero ---- */
/* Décision Frédéric (16/09, soir) : plus de bande blanche qui masque le contenu. En haut de page : logo blanc à gauche,
   bouton menu (rond noir) à droite, posés sur la photo du hero (le hero reçoit un léger voile sombre en haut pour le contraste).
   Au scroll : le header part avec le hero ; en remontant, seul le bouton menu revient, fixé au même endroit (rond noir + liseré blanc).
   États posés par le script du template #10947 : nm-head--away (descente), nm-head--float (remontée). Ancienne pilule : neova-header-pill-backup.css */
@media (max-width: 99999px) {
  .nm-sitehead.e-con { position:absolute !important; top:26px !important; left:26px !important; right:26px !important; width:auto !important; max-width:none !important; margin:0 !important; padding:0 !important; min-height:0 !important; background:transparent !important; box-shadow:none !important; border-radius:0 !important; gap:8px !important; flex-wrap:nowrap !important; align-items:center !important; justify-content:space-between !important; z-index:50 !important; transition:opacity .25s ease, visibility .25s ease; }
  .nm-sitehead .elementor-widget { margin:0 !important; }
  .nm-sitehead-logo.elementor-widget { width:auto !important; flex:0 0 auto !important; }
  .nm-sitehead-logo img { height:26px !important; width:auto !important; max-width:none !important; } /* logo blanc à angle cyan (fichier Neova-Logo-White.svg, 20/09) — plus de filtre */
  .nm-sitehead-actions.e-con { width:auto !important; flex:0 0 auto !important; gap:8px !important; align-items:center !important; }
  .nm-sitehead-cta .btn { display:inline-flex !important; align-items:center !important; height:40px !important; min-height:0 !important; padding:0 16px !important; border-radius:40px !important; background:#00339f !important; color:#fff !important; font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:14px !important; text-transform:none !important; letter-spacing:0 !important; border:0 !important; }
  .nm-sitehead-cta .btn .pxl--btn-icon { display:none !important; }
  .nm-sitehead-cta .btn .pxl--btn-text { padding:0 !important; }
  .nm-sitehead-burger .pxl-anchor-button, .nm-sitehead-burger .pxl-anchor, .nm-sitehead-burger .pxl-menu-toggle { width:48px !important; height:48px !important; min-width:0; border-radius:24px !important; background:#0a0a0a !important; color:#fff !important; display:flex !important; align-items:center !important; justify-content:center !important; margin:0 !important; padding:0 !important; }
  .nm-sitehead-burger .pxl-anchor-divider { position:relative !important; width:21px !important; height:21px !important; margin:0 !important; transform:scale(1.15) !important; transform-origin:center; } /* bouton 48px, points agrandis d'autant */
  .nm-sitehead-burger .pxl-icon-line { background:#fff !important; }
  .nm-sitehead-script.e-con { display:none !important; }
  .nm-sitehead-cta.elementor-widget { display:none !important; } /* le hero a déjà son CTA « S'inscrire » (doublon relevé par Frédéric) */
  /* descente : le header s'efface */
  .nm-sitehead.e-con.nm-head--away { opacity:0; visibility:hidden; }
  /* remontée : seul le bouton menu revient, fixé à la place qu'il occupe dans le hero (pas de saut), glissé depuis le haut */
  .nm-sitehead.e-con.nm-head--float { position:fixed !important; left:auto !important; animation:nmHeadIn .45s cubic-bezier(.24,.74,.58,1) both; }
  .nm-sitehead.e-con.nm-head--float .nm-sitehead-logo, .nm-sitehead.e-con.nm-head--float .nm-sitehead-cta { display:none !important; }
  @keyframes nmHeadIn { from { transform:translateY(-150%); opacity:0; } to { transform:none; opacity:1; } }
  @media (prefers-reduced-motion: reduce) { .nm-sitehead.e-con.nm-head--float { animation:none; } }
  /* le hero mobile passe sous le header ; voile sombre en haut pour la lisibilité du logo blanc */
  .nm-hero.e-con { position:relative !important; }
  /* ::after (le ::before est l'overlay dégradé d'Elementor en bas du hero) ; dégradé à plusieurs paliers = fondu sans démarcation */
  .nm-root .nm-hero.e-con::after { content:''; position:absolute; left:0; right:0; top:0; height:220px; background:linear-gradient(180deg, rgba(10,10,10,.55) 0%, rgba(10,10,10,.38) 25%, rgba(10,10,10,.2) 50%, rgba(10,10,10,.08) 75%, rgba(10,10,10,0) 100%); pointer-events:none; z-index:0; }
}

/* ---- Partenaires : marquee (décision Frédéric 16/09) ---- */
@media (max-width: 99999px) {
  .nm-partners--marquee.e-con { padding:24px 0 26px !important; gap:18px !important; overflow:hidden !important; }
  .nm-partners--marquee .nm-eyebrow { padding:0 20px; }
  .nm-marquee .pxl-item--container, .nm-marquee .pxl-item--inner { height:auto !important; min-height:0 !important; }
  .nm-marquee .pxl-item--list { height:auto !important; align-items:center !important; animation-duration:30s !important; }
  .nm-marquee .pxl-item--single { width:auto !important; height:auto !important; min-width:0 !important; padding:0 22px !important; }
  .nm-marquee .pxl-item--icon { width:auto !important; height:auto !important; display:block; }
  .nm-marquee .pxl-item--icon svg { height:36px !important; width:auto !important; display:block; }
  .nm-marquee .pxl-item--single:nth-child(5n+1) svg { height:48px !important; }
  .nm-marquee .pxl-item--single:nth-child(5n+4) svg { height:30px !important; }
  .nm-marquee .pxl-item--single:nth-child(5n+5) svg { height:44px !important; }
  /* pause au toucher / survol */
  .nm-marquee .pxl-item--inner:hover .pxl-item--list, .nm-marquee .pxl-item--inner:active .pxl-item--list, .nm-marquee:focus-within .pxl-item--list { animation-play-state:paused !important; }
  /* dégradés de fondu sur les bords */
  .nm-partners--marquee .elementor-widget-pxl_marquee { position:relative; }
  .nm-partners--marquee .elementor-widget-pxl_marquee::before, .nm-partners--marquee .elementor-widget-pxl_marquee::after { content:''; position:absolute; top:0; bottom:0; width:40px; z-index:2; pointer-events:none; }
  .nm-partners--marquee .elementor-widget-pxl_marquee::before { left:0; background:linear-gradient(90deg,#fff,rgba(255,255,255,0)); }
  .nm-partners--marquee .elementor-widget-pxl_marquee::after { right:0; background:linear-gradient(270deg,#fff,rgba(255,255,255,0)); }
  @media (prefers-reduced-motion: reduce) {
    .nm-marquee .pxl-item--list { animation:none !important; transform:none !important; flex-wrap:wrap !important; justify-content:center; gap:16px 0; }
    .nm-marquee .pxl-item--list.duplicate { display:none !important; }
    .nm-partners--marquee .elementor-widget-pxl_marquee::before, .nm-partners--marquee .elementor-widget-pxl_marquee::after { display:none; }
  }
}

/* ---- Formulaire : champs texte sans retrait ni hauteur imposée par le thème ---- */
@media (max-width: 99999px) {
  .nm-form .pxl-item--form input[type="text"], .nm-form .pxl-item--form input[type="email"], .nm-form .pxl-item--form input[type="tel"], .nm-form .pxl-item--form textarea { padding:0 28px 0 0 !important; height:auto !important; min-height:0 !important; line-height:1.4 !important; text-indent:0 !important; }
  /* message : 3 lignes visibles (CF7 génère rows=10 → ~200px), agrandissable par l'utilisateur */
  .nm-form .pxl-item--form textarea { height:64px !important; min-height:64px !important; resize:vertical; }
  .nm-form .pxl-item--form p, .nm-form .pxl-item--form .wpcf7-form-control-wrap { margin:0 !important; display:block; }
}

/* ---- Formulaire : comme la maquette, pas d'icônes de champ (seul le chevron du select reste) ---- */
@media (max-width: 99999px) {
  .nm-form .pxl-item--form:not(.pxl-item--select) > i, .nm-form .pxl-item--form:not(.pxl-item--select) p > i { display:none !important; }
  .nm-form .pxl-item--select > i { display:block !important; }
  /* select formation : style identique aux autres champs (natif + custom .pxl-select du thème) — déplacé ici depuis le CSS de page pour couvrir aussi le paysage */
  .nm-form .pxl-item--select select, .nm-form .pxl-item--select .wpcf7-select { background:transparent !important; text-transform:none !important; border-radius:0 !important; padding:0 28px 0 0 !important; height:auto !important; line-height:1.4 !important; font-size:14px !important; color:#5d5d5d !important; border:0 !important; }
  .nm-form .pxl-item--select .wpcf7-form-control-wrap { display:block; }
  .nm-form .pxl-item--select select::-ms-expand { display:none; }
  .nm-form .pxl-item--select .pxl-select { position:static; }
  .nm-form .pxl-item--select .pxl-select-higthlight { background:transparent !important; border:0 !important; border-radius:0 !important; padding:0 28px 0 0 !important; height:auto !important; line-height:1.4 !important; font-family:var(--nm-sg) !important; font-size:14px !important; text-transform:none !important; letter-spacing:0 !important; color:#5d5d5d !important; }
  .nm-form .pxl-item--select .pxl-select-higthlight::after, .nm-form .pxl-item--select .pxl-select-higthlight::before { display:none !important; }
  .nm-form .pxl-item--select .pxl-select-options { border-radius:12px; }
  .nm-form .pxl-item--select .pxl-select-options li { font-family:var(--nm-sg); font-size:14px; text-transform:none; }
}

/* ---- Correctifs portrait ---- */
@media (max-width: 99999px) {
  /* 1. auteur : interlignage resserré */
  .nm-author-text { gap:1px !important; }
  .nm-author-text strong { line-height:1.15 !important; }
  .nm-author-text span { line-height:1.15 !important; }
  /* 6. marquee : les logos restent dans la carte blanche */
  .nm-partners--marquee .elementor-widget-pxl_marquee, .nm-partners--marquee .pxl-marquee, .nm-partners--marquee .pxl-item--container { overflow:hidden !important; border-radius:0; }
  .nm-partners--marquee.e-con { overflow:hidden !important; }
  /* le défilement reste dans la marge intérieure de 20px (les fondus blancs coupent au bord de la marge, pas au bord de la carte) */
  .nm-root .nm-partners--marquee .elementor-widget-pxl_marquee { width:calc(100% - 40px) !important; max-width:calc(100% - 40px) !important; margin:0 20px !important; }
  /* 2. footer mobile (maquette Figma) ; footer du thème masqué quand la version mobile est présente */
  body:has(.nm-root) footer, body:has(.nm-root) .pxl-footer-elementor, body:has(.nm-root) #pxl-footer-elementor { display:none !important; }
  .nm-footer.e-con { background:#1e1e1e !important; padding:40px 20px 44px !important; gap:32px !important; } /* 44px en bas : les mentions restent au-dessus du bouton « remonter » du thème */
  .nm-flogo, .nm-flogo .elementor-widget-container { text-align:left !important; } /* le widget image d'Elementor centre par défaut ; Figma : logo à gauche, description dans sa continuité */
  .nm-flogo img { width:150px !important; height:auto !important; }
  .nm-fdesc p { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:#999 !important; margin:0 !important; }
  /* interlignages resserrés (demande Frédéric) : 10px entre liens, 10px sous les titres, 22px entre les deux rangées */
  .nm-flinks { display:grid; grid-template-columns:190px 1fr; gap:22px 20px; }
  .nm-fcol strong { display:block; font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:15px !important; color:#fff !important; margin-bottom:10px !important; }
  .nm-fcol ul { list-style:none; margin:0 !important; padding:0 !important; display:flex; flex-direction:column; gap:10px; }
  .nm-fcol li { margin:0 !important; padding:0 !important; }
  .nm-fcol a { font-family:var(--nm-sg) !important; font-size:15px !important; line-height:1.2 !important; color:#999 !important; text-decoration:none; }
  /* bloc contact : tout en 15/20, interlignage serré (demande Frédéric), e-mail à la taille du reste */
  .nm-fcontact { display:flex; flex-direction:column; gap:2px; }
  .nm-flabel { font-family:var(--nm-sg) !important; font-size:15px !important; line-height:20px !important; color:#999 !important; }
  .nm-femail { font-family:var(--nm-sg) !important; font-size:15px !important; line-height:20px !important; color:#fff !important; text-decoration:none; }
  .nm-fcontact address { font-style:normal; font-family:var(--nm-sg) !important; font-size:15px !important; line-height:20px !important; color:#fff !important; margin:0 !important; }
  .nm-fcontact address span { display:block; } /* portrait : rue / ville sur 2 lignes ; paysage : sur une ligne avec virgule */
  .nm-fline { height:1px; background:#3a3a3a; margin-bottom:24px; }
  .nm-fsocial { display:flex; gap:12px; margin-bottom:24px; }
  .nm-fsocial a { width:40px; height:40px; border-radius:20px; border:1px solid #3a3a3a; display:flex; align-items:center; justify-content:center; color:#fff !important; font-size:16px; text-decoration:none; }
  .nm-flegal { font-family:var(--nm-inter) !important; font-size:13px !important; line-height:20px !important; color:#999 !important; /* #666 sur #1e1e1e = 3,4:1 en 13 px ; #999 ≥ 6:1 */ margin:0 !important; }
  .nm-flegal a { color:inherit !important; text-decoration:none !important; } /* mentions légales = liens discrets (17/09) */
  .nm-flegal a:hover { color:#fff !important; }
  .nm-flegal span { display:block; text-wrap:balance; } /* portrait : une mention par ligne (coupée en 2 lignes équilibrées si trop longue, pas de mot orphelin) ; paysage : en ligne avec séparateurs */
  /* 3. header : en portrait, pas de S'inscrire dans le header (le hero l'a déjà) */
  /* 4. flou progressif du thème en bas d'écran (.pxl-hidden--blur, 20vh) : masqué sur les pages mobiles, il rendait illisibles les dernières lignes (mentions, adresse) */
  body:has(.nm-root) .pxl-hidden--blur { display:none !important; }
  /* titre « Choisissez votre parcours. » : le <br> entre les deux phrases ne sert qu'en paysage */
  .nm-root .nm-pricing .nm-h2 .elementor-heading-title br { display:none; }
  /* « Forfait<br>accéléré » (retour à la ligne ajouté par Frédéric dans l'éditeur, utile en paysage pour aligner les 3 prix) : une ligne en portrait comme Figma */
  .nm-root .nm-price-title .elementor-heading-title br { display:none; }
}

/* ---- MOBILE PAYSAGE (768–991) : même DOM, mise en page élargie ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  /* Sélecteurs préfixés .nm-root pour passer devant les règles de base (.nm-root .e-con…) */
  .nm-root.e-con { padding:16px !important; gap:16px !important; }
  .nm-root .nm-sec.e-con { padding:40px 32px !important; }
  /* échelle tablette portrait (système 17/09) : aucune valeur ne redescend par rapport au mobile, H1/H2 ≈ 1,4 */
  .nm-root .nm-h1 .elementor-heading-title { font-size:48px !important; line-height:52px !important; }
  .nm-root .nm-h2 .elementor-heading-title { font-size:34px !important; line-height:40px !important; }
  .nm-root .nm-h3 .elementor-heading-title { font-size:22px !important; line-height:26px !important; }
  .nm-root .nm-eyebrow span { font-size:13px !important; }
  .nm-root .nm-hero-intro p { font-size:17px !important; line-height:24px !important; }
  /* hero : hauteur = écran paysage (400–560px), texte en bas à gauche sur 66 %, boutons côte à côte */
  .nm-root .nm-hero.e-con { min-height:clamp(400px, calc(100svh - 32px), 560px) !important; padding:24px 32px 32px !important; }
  .nm-root .nm-hero-text.e-con { max-width:66% !important; gap:12px !important; }
  .nm-root .nm-hero-btns.e-con { flex-direction:row !important; gap:10px !important; }
  .nm-root .nm-hero-btns .elementor-widget { width:auto !important; flex:0 0 auto; }
  .nm-root .nm-hero-btns .nm-btn .elementor-button { width:auto; padding-right:24px !important; }
  .nm-root .nm-hero-btns .nm-btn .elementor-button-text { text-align:left !important; }
  /* paysage : header 16px sous le bord du hero, 4px plus large que la colonne de texte (48px) — même logique qu'en portrait */
  .nm-sitehead.e-con { top:32px !important; left:44px !important; right:44px !important; }
  .nm-sitehead.e-con.nm-head--float { left:auto !important; }
  /* séries de cartes : 3 colonnes, pas de sticky stack */
  .nm-root .nm-cards.e-con, .nm-root .nm-stack.e-con { flex-direction:row !important; align-items:stretch !important; gap:12px !important; }
  .nm-root .nm-cards.e-con > .e-con, .nm-root .nm-stack.e-con > .e-con { flex:1 1 0 !important; width:auto !important; min-width:0; }
  .nm-root .nm-stack > .e-con { position:static !important; box-shadow:none !important; }
  .nm-root .nm-card.e-con { padding:22px 20px 24px !important; gap:18px !important; }
  .nm-root .nm-num .elementor-heading-title { font-size:72px !important; }
  .nm-root .nm-card-title .elementor-heading-title { font-size:22px !important; line-height:26px !important; }
  .nm-root .nm-card-text p { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-card-text--15 p { font-size:15px !important; line-height:20px !important; }
  .nm-root .nm-eng .nm-header.e-con { max-width:640px !important; margin:0 auto !important; }
  .nm-root .nm-photo--300 img { height:340px !important; }
  /* prix : image + titre côte à côte, 3 cartes de même hauteur, bouton en bas */
  .nm-root .nm-pricing .nm-header.e-con { flex-direction:row !important; align-items:center !important; gap:24px !important; }
  /* image 32 % ; le H2 garde la taille commune des H2 (32/38) — la taille fluide 26→32 a été retirée le 17/09 (titres unifiés) */
  .nm-root .nm-pricing .nm-header > .elementor-widget-image { width:32% !important; flex:0 0 32%; }
  .nm-root .nm-pricing .nm-header > .nm-pricing-copy.e-con { display:flex !important; flex-direction:column !important; gap:14px !important; flex:1; width:auto !important; }
  .nm-root .nm-pricing-sub { display:block !important; }
  .nm-root .nm-pricing-sub p { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-pricing .nm-h2 .elementor-heading-title br { display:inline; }
  .nm-root .nm-price-outer.e-con { display:flex; }
  .nm-root .nm-price-inner.e-con { flex:1; padding:24px 20px 20px !important; gap:14px !important; justify-content:space-between !important; }
  .nm-root .nm-price-title .elementor-heading-title { font-size:20px !important; line-height:24px !important; }
  .nm-root .nm-price .elementor-heading-title { font-size:52px !important; }
  .nm-root .nm-price-inner .nm-btn { margin-top:6px !important; }
  .nm-root .nm-price-inner .nm-btn .elementor-button { padding-right:16px !important; }
  /* CTA de section : largeur du contenu, alignés à gauche */
  .nm-root .nm-pricing > .nm-btn--light, .nm-root .nm-methode > .nm-btn--light, .nm-root .nm-fin > .nm-btn--light { width:auto !important; align-self:center; justify-self:center; }
  /* engagements : « Zéro promesse en l’air. Zéro frais caché. » sur une ligne */
  .nm-root .nm-eng .nm-h2 .elementor-heading-title br:nth-of-type(2) { display:none; }
  .nm-root .nm-pricing > .nm-btn--light .elementor-button, .nm-root .nm-methode > .nm-btn--light .elementor-button, .nm-root .nm-fin > .nm-btn--light .elementor-button { width:auto; padding-right:24px !important; }
  /* méthode : image à gauche, texte à droite */
  .nm-root .nm-methode.e-con { display:grid !important; grid-template-columns:1fr 1fr; gap:24px 32px !important; align-items:center; }
  .nm-root .nm-methode > .nm-eyebrow, .nm-root .nm-methode > .elementor-widget-html { grid-column:1 / -1; }
  .nm-root .nm-methode > .elementor-widget-image { grid-row:2; }
  .nm-root .nm-methode > .nm-header { grid-row:2; }
  .nm-root .nm-methode > .nm-btn { grid-column:1 / -1; }
  .nm-root .nm-photo--240 img { height:300px !important; }
  /* financement : 3 cartes verticales */
  .nm-root .nm-fin-card.e-con { flex-direction:column !important; gap:14px !important; padding:22px 20px !important; }
  /* conseils : article en horizontal ; article + visuels élargis de 12px de chaque côté (alignés entre eux) */
  .nm-root .nm-article.e-con { flex-direction:row !important; gap:0 !important; align-items:stretch !important; }
  .nm-root .nm-article > .elementor-widget-image { width:44% !important; flex:0 0 44%; }
  .nm-root .nm-article .nm-photo--220 img { height:100% !important; min-height:300px; }
  .nm-root .nm-article-text.e-con { flex:1; width:auto !important; padding:24px 24px 20px 24px !important; }
  .nm-root .nm-article.e-con.e-con-full, .nm-root .nm-more.e-con.e-con-full { margin:0 -12px !important; width:calc(100% + 24px) !important; max-width:none !important; }
  .nm-root .nm-more.e-con { gap:12px !important; }
  .nm-root .nm-slider { gap:12px; margin:0 -32px; padding:0 32px; scroll-padding-left:32px; }
  .nm-root .nm-slide { flex-basis:46%; }
  .nm-root .nm-slide-img { height:200px !important; }
  .nm-root .nm-conseils .nm-h2 .elementor-heading-title br { display:inline; }
  .nm-root .nm-more .nm-photo img { height:240px !important; }
  /* contact : fiche + infos à gauche (l'une sous l'autre), formulaire à droite */
  .nm-root .nm-contact.e-con { display:grid !important; grid-template-columns:1fr 1.1fr; grid-template-rows:auto auto 1fr auto; gap:24px 28px !important; align-items:start; }
  .nm-root .nm-contact > .elementor-widget-html, .nm-root .nm-contact > .nm-h2 { grid-column:1 / -1; }
  /* colonne gauche (carte + infos) épinglée en BAS de l'écran pendant que le formulaire défile, et qui termine
     alignée sur le bas du disclaimer (Frédéric : « doit arriver en bas comme les lignes de droite »).
     Chrome borne le sticky d'un item de grille à la boîte de contenu de la grille → le disclaimer est en colonne 2
     (dernière ligne) et la colonne 1 s'étend sur les lignes 3-4 avec align-self:end */
  .nm-root .nm-contact > .nm-contact-left { grid-column:1; grid-row:3 / span 2; display:flex !important; flex-direction:column !important; gap:24px !important; position:sticky; top:calc(100svh - 16px - var(--nm-left-h, 360px)); align-self:start; }
  /* (sticky top calculé : la colonne part de sa place sous le titre, se cale bas de colonne à 16px du bas d'écran, et finit alignée sur le disclaimer ;
      --nm-left-h est mesuré par le script du header #10947 — avec « bottom:16px » Chrome la remontait par-dessus le titre sur les écrans bas) */
  .nm-root .nm-contact > .nm-form-card { grid-column:2; grid-row:3; }
  .nm-root .nm-contact > .nm-disclaimer { grid-column:2; grid-row:4; }
  /* « Inscrivez-vous, roulez dans un mois. » sur une ligne */
  .nm-root .nm-contact .nm-h2 .elementor-heading-title br:nth-of-type(2) { display:none; }
  /* footer : 4 colonnes, réseaux à gauche / mentions à droite */
  /* footer en grille : logo à gauche + description (2 lignes) à côté sur la 1re ligne, le reste sur toute la largeur */
  .nm-root .nm-footer.e-con { display:grid !important; grid-template-columns:auto 1fr; gap:28px 32px !important; align-items:start; padding:44px 32px 24px !important; }
  .nm-root .nm-footer > .nm-flogo { grid-column:1; grid-row:1; width:auto !important; align-self:center; }
  .nm-root .nm-footer > .nm-fdesc { grid-column:2; grid-row:1; align-self:center; }
  .nm-root .nm-footer > .nm-flinks-w, .nm-root .nm-footer > .nm-fcontact-w, .nm-root .nm-footer > .nm-fbottom { grid-column:1 / -1; }
  .nm-root .nm-flinks { grid-template-columns:repeat(4, 1fr); gap:24px; }
  .nm-root .nm-fcol strong { margin-bottom:10px !important; }
  .nm-root .nm-fcol ul { gap:10px; }
  /* contact sur une ligne, même corps de texte (15/24) : label + e-mail à gauche, adresse (rue, ville) à droite */
  .nm-root .nm-fcontact { flex-direction:row; flex-wrap:nowrap; align-items:baseline; gap:8px 12px; }
  .nm-root .nm-flabel, .nm-root .nm-femail, .nm-root .nm-fcontact address { font-size:15px !important; line-height:24px !important; }
  .nm-root .nm-fcontact address { width:auto; margin-left:auto !important; text-align:right !important; white-space:nowrap; }
  .nm-root .nm-fcontact address span { display:inline; }
  .nm-root .nm-fcontact address span + span::before { content:', '; }
  /* bas de page sur une ligne : réseaux à gauche, mentions à droite (le widget HTML n'a pas de .elementor-widget-container en DOM optimisé → on cible les deux) */
  .nm-root .nm-fbottom, .nm-root .nm-fbottom > .elementor-widget-container { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:0 24px; }
  .nm-root .nm-fbottom > .elementor-widget-container { width:100%; }
  .nm-root .nm-fline { width:100%; margin-bottom:20px; }
  .nm-root .nm-fsocial { margin-bottom:0; }
  .nm-root .nm-flegal { flex:1 1 0; min-width:0; text-align:right !important; text-wrap:balance; padding-right:32px; font-size:12px !important; line-height:18px !important; } /* 12px + 32px de retrait : 2 lignes de 768 à 991 et le texte s'arrête avant le bouton « remonter » du thème (46px, à 25px du bord) */
  .nm-root .nm-flegal span { display:inline; white-space:nowrap; } /* une mention n'est jamais coupée : le retour à la ligne se fait entre deux mentions */
  .nm-root .nm-flegal span + span::before { content:' · '; white-space:normal; }

  /* ---- Formations (paysage) ---- */
  /* 7 étapes : mise en page de la desktop (demande Frédéric 17/09) — surtitre pleine largeur, titre et liste à droite,
     carte de l'étape ouverte à gauche (déplacée dans .nm-steps-stage par le script du widget), épinglée au scroll */
  .nm-root .nm-steps-sec.e-con { display:grid !important; grid-template-columns:minmax(0, 36%) 1fr; grid-template-rows:auto auto auto; gap:24px 40px !important; align-items:start; }
  .nm-root .nm-steps-sec > .elementor-widget-html:first-child { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-steps-sec > .nm-h2 { grid-column:2; grid-row:2; }
  .nm-root .nm-steps-w, .nm-root .nm-steps-w > .elementor-widget-container { display:contents !important; }
  .nm-root .nm-steps-stage { display:block; grid-column:1; grid-row:3; position:sticky; top:24px; align-self:start; }
  .nm-root .nm-steps { grid-column:2; grid-row:3; }
  .nm-root .nm-steps-stage .nm-step-card { margin:0; opacity:1; transform:none; animation:nmCardIn .3s ease-out; }
  @keyframes nmCardIn { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
  @media (prefers-reduced-motion: reduce) { .nm-root .nm-steps-stage .nm-step-card { animation:none; } }
  .nm-root .nm-step-img { height:auto !important; aspect-ratio:310 / 200; }
  .nm-root .nm-step-name { font-size:40px !important; }
  .nm-root .nm-step-label { justify-content:flex-start !important; text-align:left !important; }
  .nm-root .nm-step { padding:20px 0 !important; }
  /* en tablette la liste ne bouge pas : les panneaux de l'accordéon sont neutralisés (seule la carte de gauche change) */
  .nm-root .nm-step-panel { display:none !important; }
  .nm-root .nm-step::after { margin-top:20px; }
  /* comparatif : photo + titre côte à côte, 3 cartes de même hauteur */
  .nm-root .nm-cmp.e-con { padding:40px 20px !important; }
  .nm-root .nm-cmp-head.e-con { display:grid !important; grid-template-columns:36% 1fr; gap:20px 24px !important; align-items:center; padding:0 12px !important; }
  .nm-root .nm-cmp-head > .elementor-widget-html { grid-column:1 / -1; }
  .nm-root .nm-cmp-head > .nm-cmp-copy { gap:14px !important; }
  /* 3 cartes : grille + subgrid pour que les cœurs (gris / bleu) aient tous la même hauteur et le même bas (demande Frédéric 17/09) */
  .nm-root .nm-cmp-cards.e-con { display:grid !important; grid-template-columns:repeat(3, minmax(0, 1fr)); grid-template-rows:auto auto; gap:12px !important; }
  .nm-root .nm-cmp-card.e-con { display:grid !important; grid-template-rows:subgrid; grid-row:span 2; width:auto !important; }
  .nm-root .nm-cmp-card > .nm-price-inner { justify-content:flex-start !important; }
  .nm-root .nm-cmp-card > .elementor-widget-html { align-self:start; }
  .nm-root .nm-features li { font-size:14px !important; line-height:18px !important; }
  .nm-root .nm-extras { flex-direction:row; flex-wrap:wrap; gap:10px 28px; padding:0 12px !important; }
  /* détails : 3 cartes */
  .nm-root .nm-det-card.e-con { padding:24px 20px 20px !important; gap:12px !important; }
  .nm-root .nm-det-card .nm-price .elementor-heading-title { font-size:52px !important; }
  .nm-root .nm-det-card .nm-lead p { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-det-card .nm-card-text p { font-size:15px !important; line-height:20px !important; }
  .nm-root .nm-det-card .nm-btn { margin-top:auto !important; }
  /* code : carte horizontale, photo à gauche */
  .nm-root .nm-code-card.e-con { display:grid !important; grid-template-columns:44% 1fr; grid-template-rows:auto auto; gap:12px 20px !important; align-items:start; }
  .nm-root .nm-code-card > .elementor-widget-image { grid-row:1 / span 2; height:100%; }
  .nm-root .nm-code-card .nm-photo img { height:100% !important; min-height:240px; }
  .nm-root .nm-code-card > .nm-code-text { padding:12px 8px 0 !important; }
  .nm-root .nm-code-card > .nm-btn { width:auto !important; justify-self:start; align-self:end; margin-bottom:8px; }
  .nm-root .nm-code-card > .nm-btn .elementor-button { width:auto; padding-right:24px !important; }
  /* CTA */
  .nm-root .nm-cta.e-con { padding:40px 32px !important; }
  .nm-root .nm-cta-title .elementor-heading-title { font-size:34px !important; line-height:40px !important; }
  .nm-root .nm-cta-title .elementor-heading-title br { display:none; }
}


/* ---- TABLETTE PAYSAGE (992–1200) : même DOM, échelle et respirations augmentées ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root.e-con { padding:20px !important; gap:20px !important; }
  .nm-root .nm-sec.e-con { padding:48px 40px !important; gap:32px !important; }
  .nm-root .nm-h1 .elementor-heading-title { font-size:56px !important; line-height:60px !important; }
  /* échelle tablette paysage (système 17/09) : saut vers le desktop réduit (H2 40 → 48, H1 56 → 65) */
  .nm-root .nm-h2 .elementor-heading-title { font-size:40px !important; line-height:46px !important; }
  .nm-root .nm-h3 .elementor-heading-title { font-size:24px !important; line-height:28px !important; }
  .nm-root .nm-h3--bold .elementor-heading-title { font-size:22px !important; line-height:26px !important; }
  .nm-root .nm-eyebrow span { font-size:14px !important; }
  .nm-root .nm-text p, .nm-root .nm-lead p { font-size:16px !important; line-height:24px !important; }
  .nm-root .nm-btn .elementor-button-text, .nm-root .nm-hbtn-text { font-size:15px !important; }
  .nm-root .nm-fcol strong, .nm-root .nm-fcol a { font-size:16px !important; line-height:20px !important; }
  /* hero : plein écran tablette, texte sur 58 % */
  .nm-root .nm-hero.e-con { min-height:clamp(520px, calc(100svh - 40px), 680px) !important; padding:32px 40px 40px !important; }
  .nm-root .nm-hero-text.e-con { max-width:58% !important; gap:16px !important; }
  .nm-root .nm-hero-intro p { font-size:18px !important; line-height:25px !important; }
  .nm-root .nm-hero-btns.e-con { gap:12px !important; }
  .nm-sitehead.e-con { top:40px !important; left:60px !important; right:60px !important; }
  .nm-sitehead-logo img { height:30px !important; }
  /* cartes */
  .nm-root .nm-cards.e-con, .nm-root .nm-stack.e-con { gap:16px !important; }
  .nm-root .nm-card.e-con { padding:28px 24px 30px !important; gap:20px !important; }
  .nm-root .nm-num .elementor-heading-title { font-size:80px !important; }
  .nm-root .nm-card-title .elementor-heading-title { font-size:24px !important; line-height:28px !important; }
  .nm-root .nm-card-title--20 .elementor-heading-title, .nm-root .nm-step-title { font-size:22px !important; line-height:26px !important; }
  .nm-root .nm-card-text p { font-size:16px !important; line-height:24px !important; }
  .nm-root .nm-card-text--15 p { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-eng .nm-header.e-con { max-width:760px !important; }
  .nm-root .nm-photo--300 img { height:420px !important; }
  /* prix */
  .nm-root .nm-pricing .nm-header.e-con { gap:32px !important; }
  .nm-root .nm-pricing .nm-header > .elementor-widget-image { width:30% !important; flex:0 0 30%; }
  /* (04/10) titre « Quatre formules » : règle locale 36/42 px retirée, il reprend la taille des H2 du kit */
  .nm-root .nm-pricing-sub p { font-size:16px !important; line-height:24px !important; }
  .nm-root .nm-price-inner.e-con { padding:28px 24px 24px !important; gap:16px !important; }
  .nm-root .nm-price-title .elementor-heading-title { font-size:22px !important; line-height:26px !important; }
  .nm-root .nm-price .elementor-heading-title { font-size:56px !important; }
  /* méthode / financement */
  .nm-root .nm-methode.e-con { gap:32px 40px !important; }
  .nm-root .nm-photo--240 img { height:360px !important; }
  .nm-root .nm-fin-card.e-con { padding:28px 24px !important; gap:16px !important; }
  /* conseils : 3 cartes visibles */
  .nm-root .nm-slider { gap:16px; margin:0 -40px; padding:0 40px; scroll-padding-left:40px; }
  .nm-root .nm-slide { flex-basis:calc((100% - 32px) / 3); }
  .nm-root .nm-slide-img { height:200px !important; }
  .nm-root .nm-slide-body { padding:20px 16px 16px; }
  /* contact */
  .nm-root .nm-contact.e-con { grid-template-columns:1fr 1fr; gap:32px 40px !important; }
  .nm-root .nm-contact > .nm-contact-left { top:calc(100svh - 20px - var(--nm-left-h, 360px)); }
  .nm-root .nm-form-card.e-con { padding:32px 28px 28px !important; }
  /* footer */
  .nm-root .nm-footer.e-con { padding:56px 40px 32px !important; gap:32px 40px !important; }
  .nm-root .nm-flinks { gap:28px; }
  .nm-root .nm-flegal { font-size:13px !important; line-height:20px !important; }
  /* ---- Formations (tablette paysage) ---- */
  .nm-root .nm-steps-sec.e-con { gap:32px 48px !important; }
  .nm-root .nm-step-name { font-size:44px !important; }
  .nm-root .nm-step { padding:22px 0 !important; }
  .nm-root .nm-cmp.e-con { padding:48px 30px !important; }
  .nm-root .nm-cmp-head.e-con { gap:24px 32px !important; padding:0 10px !important; }
  .nm-root .nm-cmp-cards.e-con { gap:16px !important; }
  .nm-root .nm-features li { font-size:15px !important; line-height:20px !important; }
  .nm-root .nm-det-card.e-con { padding:28px 24px 24px !important; gap:16px !important; }
  .nm-root .nm-det-card .nm-price .elementor-heading-title { font-size:56px !important; }
  .nm-root .nm-det-card .nm-lead p { font-size:16px !important; line-height:24px !important; }
  .nm-root .nm-det-card .nm-card-text p { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-code-card.e-con { gap:16px 28px !important; }
  .nm-root .nm-code-card .nm-photo img { min-height:280px; }
  .nm-root .nm-cta.e-con { padding:56px 40px !important; }
  .nm-root .nm-cta-title .elementor-heading-title { font-size:40px !important; line-height:46px !important; }
}

/* Sections desktop masquées (hide_mobile / hide_mobile_extra) : le thème Floka remplace le display:none d'Elementor par
   « display:block !important; visibility:hidden; position:absolute » (pour ses animations), et wow.js remet visibility:visible
   sur les éléments animés → titres, cartes blog, bouton PLAY… de la desktop apparaissent en fantôme par-dessus la version mobile.
   On rétablit display:none (spécificité > règle du thème grâce à :has(.nm-root)). */
@media (max-width: 767px) { body:has(.nm-root):not(.elementor-editor-active) .elementor .elementor-hidden-mobile { display:none !important; } }
@media (min-width: 768px) and (max-width: 99999px) { body:has(.nm-root):not(.elementor-editor-active) .elementor .elementor-hidden-mobile_extra { display:none !important; } }
/* Éléments « e-flexbox » (Elementor v4, ex. lien « Votre parcours de A à Z » de la page Formations) : hide_mobile ne s'applique pas à eux → masqués quand la version mobile est présente */
@media (max-width: 99999px) { body:has(.nm-root):not(.elementor-editor-active) .elementor > .e-atomic-element, body:has(.nm-root):not(.elementor-editor-active) .elementor > [data-element_type="e-flexbox"] { display:none !important; } }

/* Flou progressif du thème en bas d'écran (.pxl-hidden--blur) : retiré sur TOUS les formats (demande Frédéric, desktop compris) */
.pxl-hidden--blur { display:none !important; }

/* nm-root : version mobile visible jusqu'à 1200px (mobile, tablette portrait, tablette paysage — même plage que le header mobile du thème), masquée au-delà (laptop, desktop) */
@media (min-width: 99999px) { .nm-root { display:none !important; } }

/* ============================================================
   NEOVA — PAGES (accéléré, annulation, code, méthode) — composants partagés + blocs par page, généré le 18/09 depuis pages/css_pages_merged.css
   ============================================================ */
/* ============================================================
   NEOVA — SOUS-PAGES MOBILES (≤1200) : Forfait accéléré · Annulation / Invalidation · Code de la route · Méthode
   Fusion relue le 18/09 des quatre feuilles de page (css_accelere / css_annulation / css_code / css_methode).
   S'ajoute APRÈS neova-mobile.css (kit) ; aucune classe existante du kit n'est redéfinie. Quand une règle doit passer devant une
   règle du kit de même spécificité, le sélecteur porte la classe du kit en plus (.nm-sec.nm-grid2-sec.e-con, .nm-card.nm-card--sm.e-con…) :
   elle gagne quel que soit l'ordre de chargement. !important sur typo / padding / gap / width (le kit charge avant le thème),
   jamais sur le background des sections.

   Structure : 1. PARTAGÉ (composants communs, préfixe générique) · 2. ACCÉLÉRÉ (nm-acc-*) · 3. ANNULATION (nm-ann-*) ·
   4. CODE (rien : tout est partagé) · 5. MÉTHODE (nm-met-*). Chaque bloc = base ≤1200 → tablette portrait 768–1200 (.nm-root …)
   → tablette paysage 992–1200. Markup des composants partagés : pages/nm_shared.py (un seul script d'accordéon NM_ACC_SCRIPT).

   Composants partagés :
   nm-hero-price (+ --stack)        prix au-dessus du H1 (en ligne, ou deux lignes 22px pour Code)
   nm-header--12                    en-tête de section titre + phrase à 12px (le kit met 16)
   nm-btn--iconblack / nm-btn--black modificateurs du système nm-btn (pastille noire ; bouton noir à pastille blanche)
   nm-cta-btns                      CTA de fin de page à deux boutons empilés (en ligne en tablette)
   nm-kicker / nm-card-title--24    label 14 + titre de carte 24/28 (Méthode ; réutilisables)
   nm-recap                         section photo + en-tête + tableau récap (grille 40 % / 60 % en tablette)
   nm-table-*                       tableau récap 7 lignes, ligne en surbrillance (--hi)
   nm-stack-sec / nm-card--sm / nm-card-copy  série de cartes numérotées compactes en sticky stack (6 inclusions, 3 profils Code, 3 valeurs)
   nm-photo-card / nm-photo-card-text / nm-photo--180  carte grise photo + texte + bouton (profils Accéléré, expert Annulation)
   nm-list-*                        liste à séparateurs (numéro bleu + titre, ou icône + nom + sous-titre)
   nm-grid2-sec / nm-grid2-* / nm-grid2-note  section bleue « prestations à l'unité », grille 2 × 2, note blanche
   nm-pdf-sec / nm-pdf-title        section programme / guide PDF (carte nm-code-card du kit)
   nm-faq-*                         accordéon FAQ (h3 > button, une seule ouverte, + noir / − bleu)
   nm-tl-*                          chronologie numérotée en accordéon (préfecture ; CPF et Permis à 1 € à venir)
   nm-other-*                       cartes « autres parcours » grise / bleue avec prix 36
   nm-offer (+ --blue, --dark) / nm-offer-title / -sub / -price  carte d'offre 26/22 avec checklist nm-features (cas, formules, niveaux, renvois)
   nm-quote-*                       citation avec portrait
   nm-split / nm-split-body         tablette : surtitre pleine largeur, en-tête épinglé à gauche (36 %), contenu à droite
   ============================================================ */

/* ================================================================== 1. PARTAGÉ ================================================================== */
@media (max-width: 99999px) {
  /* ---- Hero : prix au-dessus du H1 (Figma : 34/100% + 14/100%, gap 10, ligne de base commune) ---- */
  .nm-hero-price { display:flex; align-items:baseline; gap:10px; margin:0 !important; padding:0 !important; }
  .nm-hero-price strong { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:34px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:#fff !important; }
  .nm-hero-price span { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:14px !important; line-height:1 !important; color:#fff !important; }
  /* variante deux lignes (Code : « 30 € TTC en ligne / 300 € TTC en salle », 22/100%) ; Figma colle le bloc au H1 (~8 px) alors que
     nm-hero-text est à gap 16 (kit, intouchable) → marge négative sur le <p> (le kit force margin:0 sur .elementor-widget, pas sur son contenu) */
  .nm-hero-price--stack { flex-direction:column; align-items:flex-start; gap:4px; margin:0 0 -8px !important; }
  .nm-hero-price--stack span { font-size:22px !important; letter-spacing:-0.03em !important; }

  /* ---- En-tête de section titre + phrase : 12px (la maquette est à 12, nm-header du kit à 16) ---- */
  .nm-header.nm-header--12.e-con { gap:12px !important; }

  /* ---- Boutons : modificateurs du système nm-btn ---- */
  /* pastille noire sur bouton gris clair : (0,3,0) > .nm-btn--light .elementor-button-icon (0,2,0) du kit, quel que soit l'ordre de chargement */
  .nm-btn.nm-btn--iconblack .elementor-button-icon { background:var(--nm-black) !important; color:#fff !important; }
  /* bouton noir, texte blanc, pastille blanche à + noir */
  .nm-btn--black .elementor-button { background:var(--nm-black) !important; color:#fff !important; }
  .nm-btn--black .elementor-button-icon { background:#fff !important; color:var(--nm-black) !important; }
  /* CTA à deux boutons empilés (Figma : 8px d'écart) */
  .nm-cta-btns.e-con { width:100% !important; gap:8px !important; }

  /* ---- Label + titre de carte : « kicker » 14/100% et nm-card-title 24/28 (interlettrage −3 % hérité de nm-card-title, système typo 17/09) ---- */
  .nm-kicker .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-card-title--24 .elementor-heading-title { font-size:24px !important; line-height:28px !important; }

  /* ---- Récap : photo 200 + en-tête + tableau (section gap 24 comme Figma) ---- */
  .nm-sec.nm-recap.e-con { gap:24px !important; }
  /* tableau récap : vrai <table> pour l'accessibilité (caption masquée, th scope=row), rendu en lignes flex ;
     Figma : fond #f5f5f5 r16 p6, lignes 46px (p16/14, r12), ligne en surbrillance blanche ; valeurs Space Grotesk Medium 14 #666 sur
     toutes les lignes, la ligne en surbrillance ne change que la couleur (#0a0a0a) */
  .nm-table { display:block; width:100% !important; max-width:100%; box-sizing:border-box; background:var(--nm-light); border-radius:16px; padding:6px !important; margin:0 !important; border:0 !important; border-collapse:collapse; border-spacing:0; }
  .nm-table-caption { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .nm-table tbody { display:block; width:100%; }
  .nm-table-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 14px !important; border-radius:12px; background:transparent !important; border:0 !important; }
  .nm-table-row--hi { background:#fff !important; }
  .nm-table-label, .nm-table-value { padding:0 !important; margin:0 !important; border:0 !important; background:transparent !important; vertical-align:middle; }
  .nm-table-label { flex:1 1 auto; text-align:left !important; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:var(--nm-black) !important; }
  .nm-table-value { flex:0 0 auto; white-space:nowrap; text-align:right !important; font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; color:var(--nm-grey) !important; }
  .nm-table-row--hi .nm-table-value { color:var(--nm-black) !important; }

  /* ---- Série de cartes numérotées compactes en sticky stack (nm-stack + nm-card du kit) ----
     section transparente sur le fond gris (Figma p30/10, gap 10) ; cartes p22/22/24 gap 18, numéro 48 (le kit met 64), titre 20/24, texte 15/20 ;
     liseré #e5e5e5 sauf la carte bleue. background sans !important : (0,3,0) bat .nm-sec.e-con { background:#fff } (0,2,0) du kit */
  .nm-sec.nm-stack-sec.e-con { background:transparent; padding:30px 10px !important; gap:10px !important; }
  .nm-card.nm-card--sm.e-con { padding:22px 22px 24px !important; gap:18px !important; border:1px solid var(--nm-line) !important; }
  .nm-card.nm-card--sm.nm-card--blue.e-con { border-color:transparent !important; }
  /* (0,3,0) > .nm-num .elementor-heading-title (0,2,0) du kit ; les tailles tablette (52 / 56) sont fixées plus bas en (0,4,0) pour passer devant
     .nm-root .nm-num (72 / 80) quel que soit l'ordre de chargement */
  .nm-card--sm .nm-num .elementor-heading-title { font-size:48px !important; }
  .nm-card-copy.e-con { gap:8px !important; }

  /* ---- Carte grise photo + titre + texte + bouton (pas de sticky stack : grande photo) ----
     Figma : carte #f5f5f5 r20 p10 gap 14 ; photo 310×180 r14 ; texte p6/12/4/12 gap 8 ; bouton fond = fond de carte */
  .nm-photo--180 img { height:180px !important; }
  .nm-photo-card.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:10px !important; gap:14px !important; align-items:flex-start !important; }
  .nm-photo-card-text.e-con { padding:6px 12px 4px !important; gap:8px !important; }
  .nm-photo-card .nm-btn--hug { width:auto !important; }

  /* ---- Liste à séparateurs (liste, pas des cartes → pas de sticky stack) ----
     item p22/0 + ligne dessous ; tête : numéro bleu 32 + titre 20/24 (Code), ou icône 28 + nom 22 puis sous-titre Inter Semi Bold 16/22 + description (Accéléré) */
  .nm-list { list-style:none; margin:0 !important; padding:0 !important; display:flex; flex-direction:column; border-top:1px solid var(--nm-line); }
  .nm-list-item { display:flex; flex-direction:column; gap:12px; margin:0 !important; padding:22px 0 !important; border-bottom:1px solid var(--nm-line); }
  .nm-list-head { display:flex; align-items:center; gap:14px; }
  .nm-list-num { flex:0 0 auto; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:32px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-blue) !important; }
  .nm-list-icon { width:28px; flex:0 0 28px; text-align:center; font-size:24px; line-height:1; color:var(--nm-black); }
  .nm-list-name { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:22px !important; line-height:1 !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; }
  .nm-list-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:20px !important; line-height:24px !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; margin:0 !important; padding:0 !important; }
  .nm-list-text { display:flex; flex-direction:column; gap:6px; }
  .nm-list-subtitle { font-family:var(--nm-inter) !important; font-weight:600 !important; font-size:16px !important; line-height:22px !important; letter-spacing:0 !important; color:var(--nm-black) !important; margin:0 !important; padding:0 !important; }
  .nm-list-desc { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; }

  /* ---- Prestations à l'unité : section bleue (gap 28 du kit), grille 2 × 2, note blanche ----
     Figma : cellules bordure blanche 25 % r16 p18/16 gap 14, icône 14, prix 40/100%, libellé Inter 14/20 ; note #fff r16 p20 gap 16 */
  .nm-sec.nm-grid2-sec.e-con { background:var(--nm-blue); } /* (0,3,0) > kit ; doublé par background_color dans les settings Elementor */
  .nm-grid2 { list-style:none; margin:0 !important; padding:0 !important; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
  .nm-grid2-cell { display:flex; flex-direction:column; gap:14px; margin:0 !important; padding:18px 16px !important; border:1px solid rgba(255,255,255,.25); border-radius:16px; min-width:0; }
  .nm-grid2-icon { display:block; font-size:14px; line-height:1; height:14px; color:#fff; } /* boîte de 14px explicite : gap 14 mesuré depuis le glyphe comme dans Figma */
  .nm-grid2-price { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:40px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:#fff !important; }
  .nm-grid2-price--sm { font-size:28px !important; } /* valeurs textuelles (« À vérifier », « dès 550 € ») */
  .nm-grid2-label { font-family:var(--nm-inter) !important; font-size:14px !important; line-height:20px !important; color:#fff !important; }
  .nm-grid2-note.e-con { background:#fff !important; border-radius:16px !important; padding:20px !important; gap:16px !important; align-items:flex-start !important; }
  .nm-grid2-note .nm-btn { width:auto !important; }

  /* ---- Programme / guide PDF : carte nm-code-card du kit (section gap 20 comme Figma), titre 26/31 propre à la maquette ---- */
  .nm-sec.nm-pdf-sec.e-con { gap:20px !important; }
  .nm-pdf-title .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:26px !important; line-height:31px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }

  /* ---- FAQ : accordéon, une seule ouverte, 2ᵉ ouverte au départ, toggle noir « + » / bleu « − » ----
     Figma : items #f5f5f5 r16 p16/16/16/18 gap 8 ; question 16/22 SG + pastille 28 ; réponse gap 12, image 296×160 r12, texte Inter 15/20 gris */
  .nm-faq { display:flex; flex-direction:column; gap:8px; }
  .nm-faq-item { background:var(--nm-light); border-radius:16px; padding:16px 16px 16px 18px; }
  .nm-faq-h { margin:0 !important; padding:0 !important; font-size:inherit !important; line-height:inherit !important; }
  /* <button> natif : on neutralise le dessin des boutons du thème (fond, hauteur, capitales, ombre) */
  .nm-faq-q { display:flex !important; align-items:center; gap:14px; width:100% !important; height:auto !important; min-height:0 !important; padding:0 !important; margin:0 !important; background:none !important; border:0 !important; border-radius:0 !important; box-shadow:none !important; text-align:left !important; cursor:pointer; text-transform:none !important; letter-spacing:0 !important; line-height:1 !important; font-weight:400 !important; color:var(--nm-black) !important; }
  .nm-faq-q:focus { outline:none !important; }
  .nm-faq-q:focus-visible { outline:2px solid var(--nm-blue) !important; outline-offset:4px; border-radius:4px; }
  .nm-faq-q-text { flex:1 1 auto; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:16px !important; line-height:22px !important; color:var(--nm-black) !important; }
  .nm-faq-toggle { width:28px; height:28px; flex:0 0 28px; border-radius:14px; background:var(--nm-black); color:#fff; display:flex; align-items:center; justify-content:center; font-size:11px; line-height:1; transition:background-color .25s ease; }
  .nm-faq-toggle .fa-minus { display:none; }
  .nm-faq-item.is-open .nm-faq-toggle { background:var(--nm-blue); }
  .nm-faq-item.is-open .nm-faq-toggle .fa-plus { display:none; }
  .nm-faq-item.is-open .nm-faq-toggle .fa-minus { display:inline-block; }
  /* panneau fermé : visibility:hidden le retire de l'arbre d'accessibilité (les lecteurs d'écran ne lisent plus les réponses repliées) ;
     visibility est dans la transition → reste visible pendant le repli (.3s), redevient visible dès le début du dépliage */
  .nm-faq-panel { display:grid; grid-template-rows:0fr; visibility:hidden; transition:grid-template-rows .3s ease-out, visibility .3s; }
  .nm-faq-panel-in { min-height:0; overflow:hidden; }
  .nm-faq-item.is-open .nm-faq-panel { grid-template-rows:1fr; visibility:visible; }
  .nm-faq-a-in { display:flex; flex-direction:column; gap:12px; padding:16px 0 4px; opacity:0; transform:translateY(-6px); transition:opacity .3s ease-out, transform .3s ease-out; }
  .nm-faq-item.is-open .nm-faq-a-in { opacity:1; transform:none; }
  .nm-faq-img { width:100% !important; height:160px !important; max-width:none !important; object-fit:cover !important; border-radius:12px !important; display:block; margin:0 !important; }
  .nm-faq-a { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; }

  /* ---- Chronologie numérotée en accordéon (01 → 0n, une seule ouverte) : même mécanique que la FAQ, numéro gris → bleu quand ouvert ---- */
  .nm-tl { display:flex; flex-direction:column; gap:8px; }
  .nm-tl-item { background:var(--nm-light); border-radius:16px; padding:16px; display:flex; flex-direction:column; }
  .nm-tl-h { margin:0 !important; padding:0 !important; font-size:inherit !important; line-height:inherit !important; }
  .nm-tl-btn { display:flex !important; align-items:center; gap:14px; width:100% !important; height:auto !important; min-height:0 !important; padding:0 !important; margin:0 !important; background:none !important; border:0 !important; border-radius:0 !important; text-align:left !important; cursor:pointer; box-shadow:none !important; text-transform:none !important; letter-spacing:0 !important; }
  .nm-tl-btn:focus { outline:none !important; }
  .nm-tl-btn:focus-visible { outline:2px solid var(--nm-blue) !important; outline-offset:6px; border-radius:4px; }
  .nm-tl-num { flex:0 0 auto; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:32px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:#cfcfcf; transition:color .25s ease; }
  .nm-tl-title { flex:1 1 0; min-width:0; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:17px !important; line-height:22px !important; letter-spacing:0 !important; color:var(--nm-black) !important; }
  .nm-tl-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .nm-tl-toggle { width:28px; height:28px; flex:0 0 28px; border-radius:14px; background:var(--nm-black); color:#fff; display:flex; align-items:center; justify-content:center; font-size:11px; line-height:1; transition:background-color .25s ease; }
  .nm-tl-toggle .fa-minus { display:none; }
  .nm-tl-item.is-open .nm-tl-num { color:var(--nm-blue); }
  .nm-tl-item.is-open .nm-tl-toggle { background:var(--nm-blue); }
  .nm-tl-item.is-open .nm-tl-toggle .fa-plus { display:none; }
  .nm-tl-item.is-open .nm-tl-toggle .fa-minus { display:inline-block; }
  .nm-tl-panel { display:grid; grid-template-rows:0fr; visibility:hidden; transition:grid-template-rows .3s ease-out, visibility .3s; }
  .nm-tl-panel-in { min-height:0; overflow:hidden; }
  .nm-tl-item.is-open .nm-tl-panel { grid-template-rows:1fr; visibility:visible; }
  .nm-tl-body { margin:16px 0 0; padding:0 0 4px; display:flex; flex-direction:column; gap:12px; opacity:0; transform:translateY(-6px); transition:opacity .3s ease-out, transform .3s ease-out; }
  .nm-tl-item.is-open .nm-tl-body { opacity:1; transform:none; }
  .nm-tl-copy { display:flex; flex-direction:column; gap:12px; }
  .nm-tl-desc { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-tl-delay { font-family:var(--nm-inter) !important; font-weight:600 !important; font-size:14px !important; line-height:20px !important; color:var(--nm-blue) !important; margin:0 !important; }
  .nm-tl-img { width:100% !important; height:180px !important; max-width:none !important; object-fit:cover !important; border-radius:12px !important; display:block; margin:0 !important; }

  /* ---- Autres parcours : 2 cartes empilées — Figma : p26/22/22/22 gap 16 r20, titre nm-card-title 22/26, prix 36/100%, bouton blanc pleine largeur ---- */
  .nm-other-card.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:26px 22px 22px !important; gap:16px !important; }
  .nm-other-card--blue.e-con { background:var(--nm-blue) !important; }
  .nm-other-price .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:36px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-other-card--blue .nm-card-title .elementor-heading-title, .nm-other-card--blue .nm-card-text p, .nm-other-card--blue .nm-other-price .elementor-heading-title { color:#fff !important; }

  /* ---- Carte d'offre : gris / bleu / noir, p26/22 gap 16 r20 ; titre 26/30, sous-titre 18/22, prix 40 ; checklist nm-features du kit
     posée à même la carte (Figma : padding 6/0/0/0, gap 10, sans le retrait de la carte comparatif Formations) ---- */
  .nm-offer.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:26px 22px !important; gap:16px !important; align-items:stretch !important; }
  .nm-offer--blue.e-con { background:var(--nm-blue) !important; }
  .nm-offer--dark.e-con { background:var(--nm-black) !important; }
  .nm-offer-title .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:26px !important; line-height:30px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-offer-sub .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:18px !important; line-height:22px !important; letter-spacing:0 !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-offer-price .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:40px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-offer .nm-features { padding:6px 0 0 !important; gap:10px; }
  .nm-offer--blue .nm-offer-title .elementor-heading-title, .nm-offer--blue .nm-offer-sub .elementor-heading-title, .nm-offer--blue .nm-offer-price .elementor-heading-title,
  .nm-offer--blue .nm-kicker .elementor-heading-title, .nm-offer--blue .nm-card-title .elementor-heading-title, .nm-offer--blue .nm-card-text p { color:#fff !important; }
  .nm-offer--blue .nm-features li, .nm-offer--blue .nm-features li i { color:#fff !important; }
  .nm-offer--dark .nm-kicker .elementor-heading-title, .nm-offer--dark .nm-card-title .elementor-heading-title { color:#fff !important; }
  .nm-offer--dark .nm-card-text p { color:#bdbdbd !important; }

  /* ---- Citation avec portrait : carte blanche liserée, photo 56 arrondie 12 à gauche, citation 18/24 + auteur 13 à droite ---- */
  .nm-quote { display:flex; align-items:flex-start; gap:14px; margin:0 !important; padding:22px 20px !important; background:#fff; border:1px solid var(--nm-line); border-radius:20px; }
  .nm-quote-img { width:56px !important; height:56px !important; max-width:none !important; flex:0 0 56px; border-radius:12px !important; object-fit:cover !important; display:block; margin:0 !important; }
  .nm-quote-text { flex:1; min-width:0; display:flex; flex-direction:column; gap:10px; }
  .nm-quote-q { margin:0 !important; padding:0 !important; border:0 !important; background:none !important; font-style:normal !important; quotes:none; }
  .nm-quote-q::before, .nm-quote-q::after { content:none !important; display:none !important; } /* pas de guillemets décoratifs du thème (ils sont dans le texte) */
  .nm-quote-q p { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:18px !important; line-height:24px !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; font-style:normal !important; margin:0 !important; }
  .nm-quote-author { font-family:var(--nm-inter) !important; font-size:13px !important; line-height:1 !important; color:var(--nm-grey) !important; margin:0 !important; }

  @media (prefers-reduced-motion: reduce) {
    .nm-faq-panel, .nm-faq-a-in, .nm-faq-toggle, .nm-tl-panel, .nm-tl-body, .nm-tl-toggle, .nm-tl-num { transition:none !important; }
  }
}

/* ---- PARTAGÉ · TABLETTE PORTRAIT (768–1200) : même DOM, mise en page élargie (sélecteurs préfixés .nm-root) ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  .nm-root .nm-hero-price strong { font-size:38px !important; }
  .nm-root .nm-hero-price--stack span { font-size:24px !important; }
  /* CTA : les deux boutons côte à côte, centrés */
  .nm-root .nm-cta-btns.e-con { flex-direction:row !important; justify-content:center !important; width:auto !important; gap:10px !important; }
  .nm-root .nm-cta-btns .elementor-widget { width:auto !important; flex:0 0 auto; }
  .nm-root .nm-cta-btns .nm-btn .elementor-button { width:auto; padding-right:24px !important; }
  .nm-root .nm-cta-btns .nm-btn .elementor-button-text { text-align:left !important; }
  /* split : surtitre pleine largeur, en-tête épinglé à gauche, contenu (nm-split-body) à droite */
  .nm-root .nm-sec.nm-split.e-con { display:grid !important; grid-template-columns:minmax(0, 36%) 1fr; grid-template-rows:auto auto; gap:24px 40px !important; align-items:start; }
  .nm-root .nm-split > .elementor-widget-html:first-child { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-split > .nm-header { grid-column:1; grid-row:2; position:sticky; top:24px; }
  .nm-root .nm-split > .nm-split-body { grid-column:2; grid-row:2; }
  /* récap : photo à gauche, en-tête à droite (placement automatique : le surtitre éventuel prend la 1ʳᵉ ligne), tableau pleine largeur */
  .nm-root .nm-sec.nm-recap.e-con { display:grid !important; grid-template-columns:40% 1fr; gap:24px 32px !important; align-items:center; }
  .nm-root .nm-recap > .elementor-widget-html:first-child { grid-column:1 / -1; }
  .nm-root .nm-recap > .elementor-widget-image { grid-column:1; height:100%; }
  .nm-root .nm-recap .nm-photo--200 img { height:100% !important; min-height:220px; }
  .nm-root .nm-recap > .nm-header { grid-column:2; }
  .nm-root .nm-recap > .nm-table-w { grid-column:1 / -1; }
  .nm-root .nm-table-row { padding:16px 18px !important; }
  /* cartes compactes : grille 3 colonnes (6 cartes = 2 rangées ; le kit met les nm-stack en ligne et retire le sticky) */
  .nm-root .nm-sec.nm-stack-sec.e-con { padding:30px 16px !important; }
  .nm-root .nm-stack-sec .nm-stack.e-con { display:grid !important; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px !important; }
  .nm-root .nm-card.nm-card--sm.e-con { width:auto !important; padding:22px 20px 24px !important; gap:16px !important; }
  .nm-root .nm-card--sm .nm-num .elementor-heading-title { font-size:52px !important; } /* (0,4,0) > .nm-root .nm-num (72) du kit */
  /* carte photo (3 colonnes via nm-cards du kit) : photo proportionnelle, bouton en bas */
  .nm-root .nm-photo-card.e-con { padding:10px 10px 12px !important; }
  .nm-root .nm-photo-card .nm-photo--180 img { height:auto !important; aspect-ratio:310 / 180; }
  .nm-root .nm-photo-card-text.e-con { flex:1; padding:6px 10px 4px !important; }
  .nm-root .nm-photo-card .nm-card-title .elementor-heading-title { font-size:20px !important; line-height:24px !important; }
  /* liste à séparateurs dans un split : plus de ligne ni de marge en tête */
  .nm-root .nm-list { margin-top:0 !important; border-top:0; }
  .nm-root .nm-list-item:first-child { padding-top:0 !important; }
  /* tarifs : 4 colonnes, note en ligne (texte + bouton) */
  .nm-root .nm-grid2 { grid-template-columns:repeat(4, minmax(0, 1fr)); gap:12px; align-items:stretch; }
  .nm-root .nm-grid2-price { font-size:36px !important; }
  .nm-root .nm-grid2-price--sm { font-size:26px !important; }
  .nm-root .nm-grid2-note.e-con { flex-direction:row !important; align-items:center !important; justify-content:space-between !important; gap:24px !important; padding:20px 24px !important; }
  .nm-root .nm-grid2-note > .elementor-widget-text-editor { flex:1 1 0 !important; width:auto !important; min-width:0; }
  .nm-root .nm-grid2-note > .nm-btn { flex:0 0 auto !important; width:auto !important; }
  /* PDF : la carte nm-code-card du kit passe en photo à gauche / texte à droite (règles du kit) ; le titre grandit avec les H2 */
  .nm-root .nm-pdf-title .elementor-heading-title { font-size:28px !important; line-height:34px !important; }
  /* FAQ (dans un split) : image de réponse proportionnelle */
  .nm-root .nm-faq-item { padding:18px 18px 18px 20px; }
  .nm-root .nm-faq-img { height:auto !important; aspect-ratio:296 / 160; max-height:240px; }
  /* chronologie (dans un split) : panneau texte + image côte à côte */
  .nm-root .nm-tl-item { padding:18px 18px 18px 20px; }
  .nm-root .nm-tl-body { flex-direction:row; align-items:flex-start; gap:20px; }
  .nm-root .nm-tl-copy { flex:1 1 0; min-width:0; }
  .nm-root .nm-tl-img { width:40% !important; flex:0 0 40%; height:auto !important; aspect-ratio:296 / 180; }
  /* autres parcours : 2 cartes côte à côte (nm-cards du kit), prix + bouton calés en bas */
  .nm-root .nm-other-card.e-con { padding:24px 22px 22px !important; }
  .nm-root .nm-other-card > .nm-other-price { margin-top:auto !important; }
  .nm-root .nm-other-price .elementor-heading-title { font-size:32px !important; }
  /* offres : 2 colonnes (nm-cards du kit → rangée, ou grille de page), même hauteur, dernier élément (checklist ou bouton) calé en bas */
  .nm-root .nm-offer.e-con { width:auto !important; padding:24px 22px !important; }
  .nm-root .nm-offer > .nm-btn:last-child, .nm-root .nm-offer > .nm-features-w:last-child { margin-top:auto !important; }
  .nm-root .nm-offer-title .elementor-heading-title { font-size:24px !important; line-height:28px !important; }
  /* citation */
  .nm-root .nm-quote { padding:28px !important; gap:20px; align-items:center; }
  .nm-root .nm-quote-img { width:72px !important; height:72px !important; flex-basis:72px; }
  .nm-root .nm-quote-q p { font-size:20px !important; line-height:28px !important; }
}

/* ---- PARTAGÉ · TABLETTE PAYSAGE (992–1200) : échelle et respirations augmentées ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-hero-price strong { font-size:44px !important; }
  .nm-root .nm-hero-price span { font-size:16px !important; }
  .nm-root .nm-hero-price--stack span { font-size:26px !important; }
  .nm-root .nm-header.nm-header--12.e-con { gap:14px !important; }
  .nm-root .nm-cta-btns.e-con { gap:12px !important; }
  .nm-root .nm-card-title--24 .elementor-heading-title { font-size:26px !important; line-height:30px !important; }
  .nm-root .nm-sec.nm-split.e-con { gap:32px 48px !important; }
  .nm-root .nm-sec.nm-recap.e-con { gap:32px 40px !important; }
  .nm-root .nm-table-row { padding:18px 20px !important; }
  .nm-root .nm-table-label { font-size:13px !important; }
  .nm-root .nm-table-value { font-size:15px !important; }
  .nm-root .nm-sec.nm-stack-sec.e-con { padding:36px 20px !important; }
  .nm-root .nm-stack-sec .nm-stack.e-con { gap:16px !important; }
  .nm-root .nm-card.nm-card--sm.e-con { padding:26px 24px 28px !important; gap:18px !important; }
  .nm-root .nm-card--sm .nm-num .elementor-heading-title { font-size:56px !important; } /* (0,4,0) > .nm-root .nm-num (80) du kit */
  .nm-root .nm-photo-card .nm-card-title .elementor-heading-title { font-size:22px !important; line-height:26px !important; }
  .nm-root .nm-list-item { padding:24px 0 !important; }
  .nm-root .nm-list-num { font-size:36px !important; }
  .nm-root .nm-list-name { font-size:24px !important; }
  .nm-root .nm-list-title { font-size:22px !important; line-height:26px !important; }
  .nm-root .nm-grid2 { gap:16px; }
  .nm-root .nm-grid2-cell { padding:22px 20px !important; }
  .nm-root .nm-grid2-price { font-size:40px !important; }
  .nm-root .nm-grid2-price--sm { font-size:30px !important; }
  .nm-root .nm-grid2-note.e-con { padding:24px 28px !important; }
  .nm-root .nm-pdf-title .elementor-heading-title { font-size:32px !important; line-height:38px !important; }
  .nm-root .nm-faq { gap:10px; }
  .nm-root .nm-faq-item { padding:20px 20px 20px 22px; }
  .nm-root .nm-faq-q-text { font-size:17px !important; line-height:24px !important; }
  .nm-root .nm-faq-a { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-tl { gap:10px; }
  .nm-root .nm-tl-item { padding:20px 20px 20px 24px; }
  .nm-root .nm-tl-num { font-size:36px !important; }
  .nm-root .nm-tl-title { font-size:18px !important; line-height:24px !important; }
  .nm-root .nm-tl-desc { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-other-card.e-con { padding:28px 26px 26px !important; gap:18px !important; }
  .nm-root .nm-other-price .elementor-heading-title { font-size:36px !important; }
  .nm-root .nm-offer.e-con { padding:28px 26px !important; gap:18px !important; }
  .nm-root .nm-offer-title .elementor-heading-title { font-size:26px !important; line-height:30px !important; }
  .nm-root .nm-offer-price .elementor-heading-title { font-size:44px !important; }
  .nm-root .nm-quote { padding:32px !important; gap:24px; }
  .nm-root .nm-quote-img { width:80px !important; height:80px !important; flex-basis:80px; }
  .nm-root .nm-quote-q p { font-size:22px !important; line-height:30px !important; }
}

/* ================================================================== 2. FORFAIT ACCÉLÉRÉ (maquette Figma 2385:191) — nm-acc-* ================================================================== */
@media (max-width: 99999px) {
  /* mois type : rythme Figma propre à la section — 22px sous l'en-tête puis ligne, 1ʳᵉ semaine p15, semaines gap 14 */
  .nm-acc-month .nm-list { margin-top:22px !important; }
  .nm-acc-month .nm-list-item { gap:14px; }
  .nm-acc-month .nm-list-item:first-child { padding-top:15px !important; }
  /* CTA : libellé « S’inscrire au forfait accéléré » composé en 16px comme la maquette (18px du kit déborde de la pilule en 375) */
  .nm-acc-cta-btn-w .nm-cta-btn-text strong { font-size:16px !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* mois type dans un split : le rythme de tête est celui du composant partagé (pas de marge ni de ligne) */
  .nm-root .nm-acc-month .nm-list { margin-top:0 !important; }
  .nm-root .nm-acc-month .nm-list-item:first-child { padding-top:0 !important; }
  /* CTA : la pilule a la place, on revient à la taille du kit */
  .nm-root .nm-acc-cta-btn-w .nm-cta-btn-text strong { font-size:18px !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  /* rien de propre à la page : l'échelle paysage des listes, tableaux, grilles, FAQ et autres parcours est celle du bloc partagé */
}

/* ================================================================== 3. ANNULATION / INVALIDATION (maquette Figma 2392:191) — nm-ann-* ================================================================== */
@media (max-width: 99999px) {
  /* l'expert : fiche Destan (nm-photo-card, photo 260, nom + rôle serrés à 4px, bouton noir pleine largeur), 2 paragraphes, photo voiture */
  .nm-sec.nm-ann-expert-sec.e-con { gap:24px !important; }
  .nm-ann-expert-photo img { height:260px !important; }
  .nm-ann-expert-card .nm-photo-card-text.e-con { gap:4px !important; }
  .nm-ann-expert-name .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:20px !important; line-height:1 !important; letter-spacing:0 !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-ann-expert-job p { font-family:var(--nm-inter) !important; font-size:13px !important; line-height:1 !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-ann-expert-paras.e-con { gap:12px !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* expert : en-tête + fiche Destan côte à côte, puis paragraphes + photo voiture */
  .nm-root .nm-sec.nm-ann-expert-sec.e-con { display:grid !important; grid-template-columns:1fr 44%; grid-template-rows:auto auto auto auto; gap:24px 32px !important; align-items:start; }
  .nm-root .nm-ann-expert-sec > .elementor-widget-html:first-child { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-ann-expert-sec > .nm-header { grid-column:1; grid-row:2; }
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-card { grid-column:2; grid-row:2 / span 2; }
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-paras { grid-column:1; grid-row:3; }
  .nm-root .nm-ann-expert-sec > .elementor-widget-image { grid-column:1 / -1; grid-row:4; }
  .nm-root .nm-ann-expert-photo img { height:auto !important; aspect-ratio:310 / 260; }
  .nm-root .nm-ann-expert-sec .nm-photo--200 img { height:260px !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-sec.nm-ann-expert-sec.e-con { gap:32px 40px !important; }
  .nm-root .nm-ann-expert-card .nm-photo-card-text.e-con { padding:8px 14px 6px !important; }
  .nm-root .nm-ann-expert-name .elementor-heading-title { font-size:22px !important; }
}

/* ================================================================== 4. CODE DE LA ROUTE (maquette Figma 2395:612) ================================================================== */
/* Aucune règle propre : hero-price --stack, nm-header--12 + nm-card-text--15, nm-offer (formules), nm-stack-sec / nm-card--sm (pour qui),
   nm-list + nm-split (jour J), nm-grid2-sec (+ --sm, note), nm-faq, nm-other — tout est dans le bloc partagé. */

/* ================================================================== 5. MÉTHODE (maquette Figma 2400:191) — nm-met-* ================================================================== */
@media (max-width: 99999px) {
  /* le constat : eyebrow / H2 / 3 paragraphes (14px d'écart) / photo voiture 220 — rythme de section 24 */
  .nm-sec.nm-met-constat.e-con { gap:24px !important; }
  .nm-met-paras.e-con { gap:14px !important; }
  /* équipement : bloc sombre #1e1e1e ((0,3,0) > .nm-sec.e-con du kit), accordéon 4 outils (une seule ouverte, ENPC / EDISER ouverte au départ) */
  .nm-sec.nm-met-equip.e-con { background:#1e1e1e; }
  .nm-met-equip .nm-eyebrow--light::after { background:#3a3a3a; }
  .nm-met-equip-desc p { color:var(--nm-muted) !important; }
  /* rythme Figma : [28 gap section] 18 / ligne / 16 / nom 32 / 16 / [carte / 16] / ligne / 18 → outil fermé 85px, premier outil 102px */
  .nm-met-tools { display:flex; flex-direction:column; border-top:1px solid #3a3a3a; margin-top:18px; }
  .nm-met-tool { padding:18px 0; }
  .nm-met-tool:first-child { padding-top:16px; }
  .nm-met-tool::after { content:''; display:block; height:1px; background:#3a3a3a; margin-top:16px; }
  .nm-met-tool-h { margin:0 !important; padding:0 !important; line-height:1 !important; font-size:inherit !important; }
  .nm-met-tool-btn { display:flex !important; align-items:center; justify-content:space-between; gap:14px; width:100% !important; min-height:32px; height:auto !important; padding:0 !important; margin:0 !important; background:none !important; border:0 !important; border-radius:0 !important; box-shadow:none !important; text-align:left !important; cursor:pointer; line-height:1 !important; font-weight:400 !important; text-transform:none !important; letter-spacing:0 !important; }
  .nm-met-tool-btn:focus { outline:none !important; } /* pas de cadre orange du thème au tap ; au clavier, un liseré cyan visible sur le fond sombre */
  .nm-met-tool-btn:focus-visible { outline:2px solid var(--nm-cyan) !important; outline-offset:6px; border-radius:4px; }
  .nm-met-tool-name { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:32px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:#5a5a5a; transition:color .25s ease; }
  .nm-met-tool.is-open .nm-met-tool-name { color:#fff; }
  .nm-met-tool-tog { width:28px; height:28px; flex:0 0 28px; border-radius:14px; background:#3a3a3a; color:#fff; display:flex; align-items:center; justify-content:center; font-size:11px; transition:background .25s ease; }
  .nm-met-tool-tog i { line-height:1; }
  .nm-met-tool-tog .fa-minus { display:none; }
  .nm-met-tool.is-open .nm-met-tool-tog { background:var(--nm-blue); }
  .nm-met-tool.is-open .nm-met-tool-tog .fa-plus { display:none; }
  .nm-met-tool.is-open .nm-met-tool-tog .fa-minus { display:block; }
  /* panneau fermé retiré de l'arbre d'accessibilité (même pattern que nm-faq-panel / nm-tl-panel) */
  .nm-met-tool-panel { display:grid; grid-template-rows:0fr; visibility:hidden; transition:grid-template-rows .3s ease-out, visibility .3s; }
  .nm-met-tool-panel-in { min-height:0; overflow:hidden; }
  .nm-met-tool.is-open .nm-met-tool-panel { grid-template-rows:1fr; visibility:visible; }
  .nm-met-tool-card { background:#2a2a2a; border-radius:16px; padding:20px 18px; margin:16px 0 0; display:flex; flex-direction:column; gap:10px; opacity:0; transform:translateY(-6px); transition:opacity .3s ease-out, transform .3s ease-out; }
  .nm-met-tool.is-open .nm-met-tool-card { opacity:1; transform:none; }
  .nm-met-tool-sub { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:18px !important; line-height:1 !important; letter-spacing:0 !important; color:#fff !important; margin:0 !important; }
  .nm-met-tool-desc { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-muted) !important; margin:0 !important; }
  @media (prefers-reduced-motion: reduce) { .nm-met-tool-panel, .nm-met-tool-card, .nm-met-tool-name, .nm-met-tool-tog { transition:none !important; } }
  /* valeurs : en-tête (surtitre + H2) dans la section transparente nm-stack-sec, puis 3 cartes nm-card--sm, puis citation */
  .nm-met-values-head.e-con { padding:10px !important; gap:16px !important; }
  /* ce qui complète : cartes de renvoi nm-offer (grise → Formations, noire → L'auto-école), Figma p26/22/22 */
  .nm-met-more-card.e-con { padding-bottom:22px !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* constat : texte à gauche (H2 + paragraphes), photo à droite sur toute la hauteur */
  .nm-root .nm-sec.nm-met-constat.e-con { display:grid !important; grid-template-columns:1fr 40%; grid-template-rows:auto auto 1fr; gap:24px 32px !important; align-items:start; }
  .nm-root .nm-met-constat > .elementor-widget-html { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-met-constat > .nm-h2 { grid-column:1; grid-row:2; }
  .nm-root .nm-met-constat > .nm-met-paras { grid-column:1; grid-row:3; }
  .nm-root .nm-met-constat > .elementor-widget-image { grid-column:2; grid-row:2 / span 2; height:100%; }
  .nm-root .nm-met-constat .nm-photo img { height:100% !important; min-height:320px; }
  /* compétences : en-tête limité en largeur, 4 niveaux en grille 2 × 2 (les 4 en ligne seraient trop étroits) */
  .nm-root .nm-met-comp > .nm-header.e-con { max-width:640px !important; }
  .nm-root .nm-met-levels.e-con { display:grid !important; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px !important; }
  .nm-root .nm-met-levels > .nm-offer.e-con { padding:24px 20px !important; gap:14px !important; }
  /* équipement : split à 42 % (titre + intro épinglés à gauche, accordéon à droite) */
  .nm-root .nm-sec.nm-met-equip.e-con { grid-template-columns:minmax(0, 42%) 1fr; }
  .nm-root .nm-met-tools { margin-top:0; }
  .nm-root .nm-met-tool-name { font-size:34px !important; }
  /* valeurs : 3 cartes en ligne (nm-stack-sec), en-tête et citation élargis */
  .nm-root .nm-sec.nm-met-values.e-con { padding:32px 16px !important; gap:16px !important; }
  .nm-root .nm-met-values-head.e-con { padding:0 8px !important; max-width:640px !important; }
  /* ce qui complète : bouton à la largeur du texte (calé en bas par la règle partagée nm-offer) */
  .nm-root .nm-met-more-card.e-con { padding:24px 20px 20px !important; gap:14px !important; }
  .nm-root .nm-met-more-card > .nm-btn { width:auto !important; }
  .nm-root .nm-met-more-card .nm-btn .elementor-button { width:auto; padding-right:24px !important; }
  .nm-root .nm-met-more-card .nm-btn .elementor-button-text { text-align:left !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-sec.nm-met-constat.e-con { gap:32px 48px !important; }
  .nm-root .nm-met-constat .nm-photo img { min-height:380px; }
  .nm-root .nm-met-comp > .nm-header.e-con { max-width:760px !important; }
  .nm-root .nm-met-levels.e-con { gap:16px !important; }
  .nm-root .nm-met-levels > .nm-offer.e-con { padding:28px 24px !important; gap:16px !important; }
  .nm-root .nm-sec.nm-met-equip.e-con { gap:32px 56px !important; }
  .nm-root .nm-met-tool-name { font-size:38px !important; }
  .nm-root .nm-met-tool { padding:20px 0; }
  .nm-root .nm-met-tool-card { padding:24px 22px; }
  .nm-root .nm-sec.nm-met-values.e-con { padding:40px 20px !important; gap:20px !important; }
  .nm-root .nm-met-values-head.e-con { max-width:760px !important; }
  .nm-root .nm-met-more-card.e-con { padding:28px 24px 24px !important; gap:16px !important; }
}

/* ============================================================
   NEOVA — PAGES 2 (BVA, financement, CPF, permis 1 €, aides, auto-école) — généré le 18/09 depuis pages/css_pages6_merged.css
   ============================================================ */
/* ============================================================
   NEOVA — SOUS-PAGES MOBILES (≤1200), 2ᵉ série : Forfait Boîte Automatique · Financement (pilier) · CPF · Permis à 1 € par jour ·
   Aides et dispositifs · L'auto-école
   Fusion relue le 18/09 des six feuilles de page (css_bva / css_financement / css_cpf / css_permis1e / css_aides / css_autoecole).
   S'ajoute APRÈS neova-mobile.css (kit + bloc « NEOVA — PAGES ») ; aucune classe existante du kit n'est redéfinie. Quand une règle doit
   passer devant une règle du kit de même spécificité, le sélecteur porte la classe du kit en plus (.nm-sec.nm-sec--24.e-con,
   .nm-root .nm-sec > .e-con.nm-narrow…) : elle gagne quel que soit l'ordre de chargement. !important sur typo / padding / gap / width
   (le kit charge avant le thème), jamais sur le background des sections (les cartes — nm-stat-block, nm-disp-card, nm-team-card — sont
   des cartes, pas des sections : background en !important comme nm-card--blue du kit).

   Structure : 1. PARTAGÉ 2 (composants génériques nouveaux) · 2. BVA (nm-bva-*) · 3. FINANCEMENT (nm-fin-*) · 4. CPF (nm-cpf-*) ·
   5. PERMIS À 1 € (nm-p1e-*) · 6. AIDES (nm-aid-*) · 7. L'AUTO-ÉCOLE (nm-ae-*). Chaque bloc = base ≤1200 → tablette portrait 768–1200
   (.nm-root …) → tablette paysage 992–1200. Markup des composants partagés : pages/nm_shared.py (NM_ACC_SCRIPT pour les accordéons,
   NM_MORE_SCRIPT pour « lire la suite »).

   Composants partagés (PARTAGÉ 2) :
   nm-sec--24                       section nm-sec à rythme 24 au lieu de 28 (Permis 1 € « comment ça marche » / « banques », L'auto-école ×6,
                                    Aides ×5) ; paysage : row-gap 32 comme les autres sections
   nm-narrow                        tablette : largeur de lecture (640 → 760) d'un en-tête nm-header ou d'un widget (H2, texte) posé directement
                                    dans la section — même valeurs que les en-têtes limités du kit (nm-eng, nm-met-comp)
   nm-stack-head / nm-stack-sec--head  en-tête (surtitre + H2 [+ texte]) DANS une section transparente nm-stack-sec : p10 gap 16 ; tablette :
                                    section p32/16 gap 16, en-tête p0/8 max-width 640 → 760 (= nm-met-values-head / nm-met-values du kit, Méthode :
                                    à basculer sur ces classes à la prochaine consolidation du kit)
   nm-stat-grid / nm-stat / nm-stat-icon / nm-stat-value / nm-stat-label  chiffres clés en grille 2 × 2 (4 colonnes en tablette) — base neutre +
                                    variante claire nm-stat-grid--light (tuiles grises, icône bleue, valeur 32 noire, libellé 13/18 gris — L'auto-école)
   nm-stat-block / nm-stat--wide / nm-stat-note / nm-stat-note-text  variante bleue des chiffres clés (Permis 1 €) : bloc bleu r20, cellules
                                    liserées blanches, tout en blanc, valeur 28 (règle client), 5ᵉ cellule pleine largeur, note blanche Semi Bold
   nm-table--titled / nm-table-title / nm-tables  tableau nm-table du kit à <caption> VISIBLE en tête de carte grise, lignes 38 px, valeur repliable ;
                                    pile de tableaux (grille 2 colonnes en tablette) — Aides « 4 aides en un coup d'œil » ; tout tableau desktop
                                    N colonnes réduit en mini-cartes
   nm-table-value--sm               valeur de tableau composée en 12 px (13 en paysage) — CPF « moncompteformation.gouv.fr »
   nm-other-card--plain             carte « autres aides » nm-other-card SANS prix : le bouton se cale en bas en tablette (CPF, Permis 1 €, Aides)
   nm-photo--150                    photo 310 × 150 (famille nm-photo--NNN du kit), proportionnelle dans une nm-photo-card en tablette
   nm-disp-card (+ --blue) / nm-disp-kicker / nm-disp-amount / nm-disp-public  carte dispositif (kicker capitales, nom, montant 32, public
                                    Semi Bold, description, bouton hug) — Financement ; attendu sur les « autres dispositifs » des sous-pages
   nm-logos / nm-logos-item / nm-logos-name / nm-logos-img  mur de logos en tuiles 2 × 2 (4 colonnes en tablette), placeholder texte puis <img>
   nm-video / nm-video-img / nm-video-play / -play-icon / -play-text / nm-video-sr / nm-video--pending  image + pilule « Play reel » centrée
   nm-team-card / -head / -id / -name / -role / -social / -bio / -p / -more / -more-in / -toggle / -toggle-text / -sr  fiche équipe avec
                                    « Lire la suite » (NM_MORE_SCRIPT)
   nm-mini-grid / nm-mini-card (+ --blue) / -num / -title / -text / -sr  mini-cartes numérotées 2 × 2 (4 colonnes en tablette), 01 bleue
   nm-check-list / nm-check-item / -icon / -body / -title / -text  lignes-cartes à pastille check bleue (garanties, conditions courtes)
   nm-gallery / nm-gallery-row      galerie 1 image large + 2 côte à côte (jamais de carrousel)
   Réutilisés du kit tels quels : nm-acc-cta-btn-w (libellé CTA 16 px — BVA l'emploie avec Accéléré : une seule définition, à renommer
   nm-cta-btn-w--16 à la prochaine consolidation), nm-code-card + nm-pdf-sec + nm-pdf-title (carte photo + titre 26/31 + texte [+ bouton] :
   RDV Destan, référencement CPF, caution — le nom « pdf » est historique).
   ============================================================ */

/* ================================================================== 1. PARTAGÉ 2 ================================================================== */
@media (max-width: 99999px) {
  /* ---- Section à rythme 24 (Figma : 24 entre tous les blocs ; le kit met 28) — (0,3,0) > .nm-sec.e-con (0,2,0) du kit ---- */
  .nm-sec.nm-sec--24.e-con { gap:24px !important; }

  /* ---- En-tête d'une section sticky stack (surtitre + H2 [+ texte]) : Figma p10 gap 16 (= nm-met-values-head du kit).
     Le conteneur porte en général aussi nm-header (gap 16 du kit) ; le gap est répété pour que la classe reste autonome ---- */
  .nm-stack-head.e-con { padding:10px !important; gap:16px !important; }

  /* ---- Chiffres clés nm-stat-* : BASE neutre (grille 2 × 2 gap 10, cellule r16 p18/16 gap 10, icône 14, polices) partagée par les deux variantes.
     Les couleurs / tailles sont portées par la variante : nm-stat-grid--light sur le <ul> (L'auto-école) ou le conteneur .nm-stat-block (Permis 1 €) —
     les deux ne matchent jamais le même élément. Sur les <li>, background / border / border-radius en !important : le thème pxl style ul / li ---- */
  .nm-stat-grid { list-style:none; margin:0 !important; padding:0 !important; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
  .nm-stat { display:flex; flex-direction:column; align-items:flex-start; gap:10px; margin:0 !important; padding:18px 16px !important; border-radius:16px !important; min-width:0; }
  .nm-stat-icon { display:block; font-size:14px; line-height:1; height:14px; } /* boîte de 14px explicite : gap 10 mesuré depuis le glyphe comme dans Figma */
  .nm-stat-value { font-family:var(--nm-sg) !important; font-weight:400 !important; line-height:1 !important; letter-spacing:-0.03em !important; overflow-wrap:anywhere; }
  .nm-stat-label { font-family:var(--nm-inter) !important; }
  /* variante claire : tuiles #f5f5f5, icône bleue, valeur 32/100% noire, libellé Inter 13/18 gris ; cellules d'une rangée non égalisées comme la maquette
     (« 1 mois » descend plus bas que « 93130 ») */
  .nm-stat-grid--light { align-items:start; }
  .nm-stat-grid--light .nm-stat { background:var(--nm-light) !important; }
  .nm-stat-grid--light .nm-stat-icon { color:var(--nm-blue); }
  .nm-stat-grid--light .nm-stat-value { font-size:32px !important; color:var(--nm-black) !important; }
  .nm-stat-grid--light .nm-stat-label { font-size:13px !important; line-height:18px !important; color:var(--nm-grey) !important; }
  /* variante bleue : bloc bleu r20 p20/16 gap 10 (carte, doublée par background_color dans les settings Elementor) ; cellules transparentes liserées
     blanches 25 %, gap 12 ; icône / valeur 28 (règle client) / libellé 14/20 blancs ; 5ᵉ cellule pleine largeur ; note blanche r16 p18 Semi Bold 15/20 noir */
  .nm-stat-block.e-con { background:var(--nm-blue) !important; border-radius:20px !important; padding:20px 16px !important; gap:10px !important; }
  .nm-stat-block .nm-stat { gap:12px; background:transparent !important; border:1px solid rgba(255,255,255,.25) !important; }
  .nm-stat-block .nm-stat--wide { grid-column:1 / -1; }
  .nm-stat-block .nm-stat-icon { color:#fff; }
  .nm-stat-block .nm-stat-value { font-size:28px !important; color:#fff !important; }
  .nm-stat-block .nm-stat-label { font-size:14px !important; line-height:20px !important; color:#fff !important; }
  .nm-stat-note.e-con { background:#fff !important; border-radius:16px !important; padding:18px !important; gap:14px !important; }
  .nm-stat-note-text p { font-family:var(--nm-inter) !important; font-weight:600 !important; font-size:15px !important; line-height:20px !important; color:var(--nm-black) !important; margin:0 !important; }

  /* ---- Tableau à titre visible (Aides) : la <caption> devient l'en-tête de la carte grise (Figma 2412:682 : p14/14/10, 20/100 %, −2 %).
     Le kit rend le <table> en display:block et le <tbody> en block : la <caption> passe elle aussi en display:block (et non table-caption, qui n'a
     pas de table parente) pour être le premier bloc de la carte. Sans effet sur la <caption> masquée du récap partagé (nm-table-caption).
     Lignes 38 px (p12/14) au lieu des 46 px du récap ; la valeur la plus longue (« Demandeurs d'emploi inscrits ») peut se replier, alignée à droite ---- */
  .nm-tables { display:flex; flex-direction:column; gap:10px; }
  .nm-table-title { display:block; caption-side:top; width:auto; padding:14px 14px 10px !important; margin:0 !important; text-align:left !important; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:20px !important; line-height:1 !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; }
  .nm-table--titled .nm-table-row { padding:12px 14px !important; }
  .nm-table--titled .nm-table-label { flex:0 0 auto; }
  .nm-table--titled .nm-table-value { flex:1 1 auto; white-space:normal; line-height:18px !important; }
  /* valeur longue en 12 px (CPF « moncompteformation.gouv.fr », les autres lignes restent à 14) */
  .nm-table-value--sm { font-size:12px !important; }

  /* ---- Photo 150 (Figma 2403:621 : 310 × 150 r14 dans une nm-photo-card) ---- */
  .nm-photo--150 img { height:150px !important; }

  /* ---- Carte dispositif (Figma 2403:664…) : #f5f5f5 r20 p24/22/22/22 gap 12 ; CPF bleue. Kicker 12/100% capitales ls 4 % ; nom = nm-card-title 22/26 ;
     montant 32/100% ls −3 % ; public Inter Semi Bold 15/20 ; description nm-card-text--15 ; bouton blanc hug (nm-btn--hug du kit) ---- */
  .nm-disp-card.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:24px 22px 22px !important; gap:12px !important; align-items:flex-start !important; }
  .nm-disp-card--blue.e-con { background:var(--nm-blue) !important; }
  .nm-disp-kicker .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-disp-amount .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:32px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-disp-public p { font-family:var(--nm-inter) !important; font-weight:600 !important; font-size:15px !important; line-height:20px !important; color:var(--nm-black) !important; margin:0 !important; }
  .nm-disp-card--blue .nm-disp-kicker .elementor-heading-title, .nm-disp-card--blue .nm-card-title .elementor-heading-title,
  .nm-disp-card--blue .nm-disp-amount .elementor-heading-title, .nm-disp-card--blue .nm-disp-public p, .nm-disp-card--blue .nm-card-text p { color:#fff !important; }

  /* ---- Mur de logos : grille 2 × 2 de tuiles #f5f5f5 r14 h72, nom Space Grotesk Medium 13 #666 centré ; vrai logo <img> 32 px de haut ---- */
  .nm-logos { list-style:none; margin:0 !important; padding:0 !important; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
  .nm-logos-item { display:flex; align-items:center; justify-content:center; min-height:72px; margin:0 !important; padding:12px 14px !important; background:var(--nm-light) !important; border:0 !important; border-radius:14px !important; min-width:0; }
  .nm-logos-name { font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:13px !important; line-height:1.2 !important; letter-spacing:0 !important; color:var(--nm-grey) !important; text-align:center; }
  .nm-logos-img { display:block; height:32px !important; width:auto !important; max-width:100% !important; object-fit:contain !important; margin:0 !important; }

  /* ---- Vidéo : section sans padding, image 260 r20, pilule blanche 52 centrée (icône 40 noire, libellé 14 Medium) ; --pending = sans lien ---- */
  .nm-sec.nm-video-sec.e-con { background:transparent; padding:0 !important; gap:0 !important; overflow:hidden !important; }
  .nm-video { position:relative; display:block; border-radius:20px; overflow:hidden; text-decoration:none !important; color:var(--nm-black) !important; }
  .nm-video--pending { cursor:default; }
  .nm-video--pending:hover .nm-video-play { transform:translate(-50%, -50%); }
  .nm-video-img { width:100% !important; height:260px !important; max-width:none !important; object-fit:cover !important; border-radius:20px !important; display:block; margin:0 !important; }
  .nm-video-play { position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); display:inline-flex; align-items:center; gap:12px; min-height:52px; padding:6px 20px 6px 6px; border-radius:40px; background:#fff; white-space:nowrap; transition:transform .25s ease; }
  .nm-video:hover .nm-video-play { transform:translate(-50%, -50%) scale(1.04); }
  .nm-video-play-icon { width:40px; height:40px; flex:0 0 40px; border-radius:20px; background:var(--nm-black); color:#fff; display:flex; align-items:center; justify-content:center; font-size:12px; line-height:1; }
  .nm-video-play-text { font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:14px !important; line-height:1 !important; color:var(--nm-black) !important; }
  .nm-video-sr, .nm-team-sr, .nm-mini-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
  .nm-video:focus { outline:none !important; }
  .nm-video:focus-visible { outline:2px solid var(--nm-blue) !important; outline-offset:3px; }

  /* ---- Fiche équipe : carte #f5f5f5 r20 p10 gap 16 ; photo nm-photo--300 nm-photo--r14 du kit ; bouton blanc à pastille noire = nm-btn du kit ---- */
  .nm-team-card.e-con { background:var(--nm-light) !important; border-radius:20px !important; padding:10px !important; gap:16px !important; align-items:stretch !important; }
  .nm-team-head { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:6px 12px 0; }
  .nm-team-id { display:flex; flex-direction:column; gap:4px; min-width:0; flex:1 1 0; }
  .nm-team-name { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:24px !important; line-height:1 !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; margin:0 !important; padding:0 !important; }
  .nm-team-role { font-family:var(--nm-inter) !important; font-size:13px !important; line-height:1.1 !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-team-social { display:flex; gap:8px; flex:0 0 auto; }
  .nm-team-social a, .nm-team-social span { width:32px; height:32px; border-radius:16px; background:#fff; display:flex; align-items:center; justify-content:center; color:var(--nm-black) !important; font-size:13px; line-height:1; text-decoration:none !important; }
  .nm-team-social a:focus { outline:none !important; }
  .nm-team-social a:focus-visible { outline:2px solid var(--nm-blue) !important; outline-offset:2px; }
  /* bio : p4/12/6/12, paragraphes Inter 15/20 espacés de 10 ; paragraphes 2 et 3 dans un panneau replié (0fr → 1fr, ~250 ms), retiré de l'arbre
     d'accessibilité par visibility:hidden ; pas de gap sur le conteneur (le panneau fermé ne doit pas créer d'espace) */
  .nm-team-bio { display:flex; flex-direction:column; gap:0; padding:4px 12px 6px; }
  .nm-team-p { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-team-more { display:grid; grid-template-rows:0fr; visibility:hidden; transition:grid-template-rows .25s ease-out, visibility .25s; }
  .nm-team-more-in { min-height:0; overflow:hidden; }
  .nm-team-more-in .nm-team-p { margin-top:10px !important; }
  .nm-team-bio.is-open .nm-team-more { grid-template-rows:1fr; visibility:visible; }
  /* « Lire la suite » / « Réduire » : <button> natif dessiné en lien bleu souligné + chevron 10 (rotation à l'ouverture) ; zone de tap 44 px par ::before */
  .nm-team-toggle { position:relative; display:inline-flex !important; align-items:center; gap:8px; align-self:flex-start; width:auto !important; height:auto !important; min-height:0 !important; padding:0 !important; margin:10px 0 0 !important; background:none !important; border:0 !important; border-radius:0 !important; box-shadow:none !important; cursor:pointer; text-transform:none !important; letter-spacing:0 !important; line-height:18px !important; font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:14px !important; color:var(--nm-blue) !important; text-decoration:none !important; }
  .nm-team-toggle::before { content:''; position:absolute; left:-4px; right:-4px; top:-13px; bottom:-13px; }
  .nm-team-toggle-text { text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1px; }
  .nm-team-toggle i { font-size:10px; line-height:1; transition:transform .25s ease; }
  .nm-team-bio.is-open .nm-team-toggle i { transform:rotate(180deg); }
  .nm-team-toggle:focus { outline:none !important; }
  .nm-team-toggle:focus-visible { outline:2px solid var(--nm-blue) !important; outline-offset:4px; border-radius:2px; }

  /* ---- Mini-cartes numérotées : grille 2 × 2, cellules #f5f5f5 (01 bleue) r16 p18/16 gap 10 ; numéro 32/100% −3 %, titre 17/21 −2 %, texte 13/18 ---- */
  .nm-mini-grid { list-style:none; margin:0 !important; padding:0 !important; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
  .nm-mini-card { display:flex; flex-direction:column; align-items:flex-start; gap:10px; margin:0 !important; padding:18px 16px !important; background:var(--nm-light) !important; border:0 !important; border-radius:16px !important; min-width:0; }
  .nm-mini-card--blue { background:var(--nm-blue) !important; }
  .nm-mini-num { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:32px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-line) !important; }
  .nm-mini-card--blue .nm-mini-num { color:var(--nm-cyan) !important; }
  .nm-mini-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:17px !important; line-height:21px !important; letter-spacing:-0.02em !important; color:var(--nm-black) !important; margin:0 !important; padding:0 !important; }
  .nm-mini-text { font-family:var(--nm-inter) !important; font-size:13px !important; line-height:18px !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-mini-card--blue .nm-mini-title, .nm-mini-card--blue .nm-mini-text { color:#fff !important; }

  /* ---- Lignes-cartes à pastille check : #f5f5f5 r16 p18 gap 14 ; pastille 36 bleue / check 13 blanc ; titre 18/22 SG, texte Inter 14/20, gap 4 ---- */
  .nm-check-list { list-style:none; margin:0 !important; padding:0 !important; display:flex; flex-direction:column; gap:10px; }
  .nm-check-item { display:flex; align-items:flex-start; gap:14px; margin:0 !important; padding:18px !important; background:var(--nm-light) !important; border:0 !important; border-radius:16px !important; }
  .nm-check-icon { width:36px; height:36px; flex:0 0 36px; border-radius:18px; background:var(--nm-blue); color:#fff; display:flex; align-items:center; justify-content:center; font-size:13px; line-height:1; }
  .nm-check-body { display:flex; flex-direction:column; gap:4px; flex:1 1 0; min-width:0; }
  .nm-check-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:18px !important; line-height:22px !important; letter-spacing:0 !important; color:var(--nm-black) !important; margin:0 !important; padding:0 !important; }
  .nm-check-text { font-family:var(--nm-inter) !important; font-size:14px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; }

  /* ---- Galerie : image large 220 puis 2 images 200 côte à côte, gap 10 — (0,3,0) > .nm-root .elementor-widget { width:100% } du kit ---- */
  .nm-gallery.e-con { gap:10px !important; }
  .nm-gallery-row.e-con { flex-direction:row !important; gap:10px !important; align-items:stretch !important; }
  .nm-root .nm-gallery-row > .elementor-widget { width:auto !important; flex:1 1 0 !important; min-width:0; }

  @media (prefers-reduced-motion: reduce) {
    .nm-team-more, .nm-team-toggle i, .nm-video-play { transition:none !important; }
    .nm-video:hover .nm-video-play { transform:translate(-50%, -50%); }
  }
}

/* ---- PARTAGÉ 2 · TABLETTE PORTRAIT (768–1200) : même DOM, mise en page élargie (sélecteurs préfixés .nm-root) ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  /* largeur de lecture d'un en-tête ou d'un widget direct de section — (0,4,0) > .nm-root .e-con.e-con-full { max-width:100% } (0,3,0) du kit */
  .nm-root .nm-sec > .e-con.nm-narrow, .nm-root .nm-sec > .elementor-widget.nm-narrow { max-width:640px !important; }
  /* section sticky stack à en-tête : en-tête aligné sur les cartes (p0/8), largeur de lecture limitée, 16 px avant la grille 3 colonnes du kit */
  .nm-root .nm-sec.nm-stack-sec.nm-stack-sec--head.e-con { padding:32px 16px !important; gap:16px !important; }
  .nm-root .nm-stack-sec > .nm-stack-head.e-con { padding:0 8px !important; max-width:640px !important; } /* (0,4,0) > .nm-root .e-con.e-con-full { max-width:100% } du kit */
  /* chiffres clés : 4 cellules en ligne, égalisées ; variante claire valeur 36 ; variante bleue valeur 28 (règle client) et 5ᵉ cellule pleine largeur */
  .nm-root .nm-stat-grid { grid-template-columns:repeat(4, minmax(0, 1fr)); gap:12px; align-items:stretch; }
  .nm-root .nm-stat { padding:20px 18px !important; }
  .nm-root .nm-stat-grid--light .nm-stat-value { font-size:36px !important; }
  .nm-root .nm-stat-block.e-con { padding:20px !important; gap:12px !important; }
  .nm-root .nm-stat-block .nm-stat--wide { grid-column:1 / -1; }
  .nm-root .nm-stat-block .nm-stat-value { font-size:28px !important; }
  .nm-root .nm-stat-note.e-con { padding:20px 24px !important; }
  /* tableaux à titre : grille 2 × 2 (4 colonnes seraient trop étroites pour les valeurs) */
  .nm-root .nm-tables { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; align-items:start; }
  .nm-root .nm-table--titled .nm-table-row { padding:12px 16px !important; }
  .nm-root .nm-table-title { padding:16px 16px 10px !important; font-size:22px !important; }
  /* autres aides sans prix : 2 cartes côte à côte (nm-cards du kit), bouton calé en bas */
  .nm-root .nm-other-card--plain > .nm-btn { margin-top:auto !important; }
  /* photo 150 dans une carte photo : proportionnelle (comme nm-photo--180 dans le kit) */
  .nm-root .nm-photo-card .nm-photo--150 img { height:auto !important; aspect-ratio:310 / 150; }
  /* cartes dispositif : bouton calé en bas (grille de page) */
  .nm-root .nm-disp-card.e-con { padding:24px 22px 22px !important; }
  .nm-root .nm-disp-card > .nm-btn { margin-top:auto !important; }
  /* logos : 4 tuiles par rangée */
  .nm-root .nm-logos { grid-template-columns:repeat(4, minmax(0, 1fr)); gap:12px; }
  /* vidéo : bloc paysage */
  .nm-root .nm-video-img { height:420px !important; }
  .nm-root .nm-video-play { min-height:56px; padding:8px 24px 8px 8px; }
  /* fiche équipe (2 côte à côte via la grille de page) : photo proportionnelle, bouton calé en bas — (0,3,1) > .nm-root .nm-photo--300 img (340) du kit */
  .nm-root .nm-team-card.e-con { width:auto !important; padding:12px !important; }
  .nm-root .nm-team-card .nm-photo--300 img { height:auto !important; aspect-ratio:310 / 300; }
  .nm-root .nm-team-card > .nm-btn { margin-top:auto !important; }
  .nm-root .nm-team-head { padding:6px 12px 0; }
  /* mini-cartes : 4 en ligne */
  .nm-root .nm-mini-grid { grid-template-columns:repeat(4, minmax(0, 1fr)); gap:12px; }
  .nm-root .nm-mini-card { padding:20px 18px !important; }
  /* lignes-cartes check : un peu plus aérées */
  .nm-root .nm-check-list { gap:12px; }
  .nm-root .nm-check-item { padding:20px !important; gap:16px; }
  /* galerie : image large + 2 images sur une ligne (hauteur commune) */
  .nm-root .nm-gallery.e-con { flex-direction:row !important; align-items:stretch !important; gap:12px !important; }
  .nm-root .nm-gallery > .elementor-widget-image { width:auto !important; flex:1.3 1 0 !important; min-width:0; }
  .nm-root .nm-gallery > .nm-gallery-row.e-con { width:auto !important; flex:1 1 0 !important; gap:12px !important; }
  .nm-root .nm-gallery .nm-photo img { height:300px !important; }
}

/* ---- PARTAGÉ 2 · TABLETTE PAYSAGE (992–1200) : échelle et respirations augmentées ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  /* rythme 24 → 32 comme les autres sections (row-gap seul : les sections en grille — split, une aide — gardent leur column-gap) */
  .nm-root .nm-sec.nm-sec--24.e-con { row-gap:32px !important; }
  .nm-root .nm-sec > .e-con.nm-narrow, .nm-root .nm-sec > .elementor-widget.nm-narrow { max-width:760px !important; }
  .nm-root .nm-sec.nm-stack-sec.nm-stack-sec--head.e-con { padding:40px 20px !important; gap:20px !important; }
  .nm-root .nm-stack-sec > .nm-stack-head.e-con { max-width:760px !important; }
  /* chiffres clés : claire valeur 40, libellé 14/20 ; bleue : les 5 cellules sur une ligne, valeur 32 */
  .nm-root .nm-stat-grid { gap:16px; }
  .nm-root .nm-stat { padding:24px 22px !important; gap:12px; }
  .nm-root .nm-stat-grid--light .nm-stat-value { font-size:40px !important; }
  .nm-root .nm-stat-grid--light .nm-stat-label { font-size:14px !important; line-height:20px !important; }
  .nm-root .nm-stat-block.e-con { padding:24px !important; gap:16px !important; }
  .nm-root .nm-stat-block .nm-stat-grid { grid-template-columns:repeat(5, minmax(0, 1fr)); }
  .nm-root .nm-stat-block .nm-stat--wide { grid-column:auto; }
  .nm-root .nm-stat-block .nm-stat-value { font-size:32px !important; }
  .nm-root .nm-stat-note.e-con { padding:24px 28px !important; }
  .nm-root .nm-stat-note-text p { font-size:16px !important; line-height:22px !important; }
  /* tableaux à titre */
  .nm-root .nm-tables { gap:16px; }
  .nm-root .nm-table--titled .nm-table-row { padding:14px 18px !important; }
  .nm-root .nm-table--titled .nm-table-label { font-size:13px !important; }
  .nm-root .nm-table--titled .nm-table-value { font-size:15px !important; line-height:20px !important; }
  .nm-root .nm-table-title { padding:18px 18px 12px !important; font-size:24px !important; }
  .nm-root .nm-table-value--sm { font-size:13px !important; }
  /* cartes dispositif */
  .nm-root .nm-disp-card.e-con { padding:28px 24px 24px !important; gap:14px !important; }
  .nm-root .nm-disp-kicker .elementor-heading-title { font-size:13px !important; }
  .nm-root .nm-disp-amount .elementor-heading-title { font-size:36px !important; }
  .nm-root .nm-disp-public p { font-size:16px !important; line-height:22px !important; }
  /* logos : tuiles plus hautes, nom 14 */
  .nm-root .nm-logos { gap:16px; }
  .nm-root .nm-logos-item { min-height:84px; }
  .nm-root .nm-logos-name { font-size:14px !important; }
  .nm-root .nm-logos-img { height:36px !important; }
  /* vidéo, équipe, mini-cartes, check, galerie */
  .nm-root .nm-video-img { height:480px !important; }
  .nm-root .nm-team-card.e-con { gap:18px !important; }
  .nm-root .nm-team-name { font-size:26px !important; }
  .nm-root .nm-team-p { font-size:16px !important; line-height:22px !important; }
  .nm-root .nm-mini-grid { gap:16px; }
  .nm-root .nm-mini-card { padding:24px 22px !important; gap:12px; }
  .nm-root .nm-mini-num { font-size:36px !important; }
  .nm-root .nm-mini-title { font-size:18px !important; line-height:22px !important; }
  .nm-root .nm-mini-text { font-size:14px !important; line-height:20px !important; }
  .nm-root .nm-check-list { gap:14px; }
  .nm-root .nm-check-item { padding:22px 24px !important; }
  .nm-root .nm-check-title { font-size:20px !important; line-height:24px !important; }
  .nm-root .nm-check-text { font-size:15px !important; line-height:22px !important; }
  .nm-root .nm-gallery.e-con { gap:16px !important; }
  .nm-root .nm-gallery > .nm-gallery-row.e-con { gap:16px !important; }
  .nm-root .nm-gallery .nm-photo img { height:360px !important; }
}

/* ================================================================== 2. FORFAIT BOÎTE AUTOMATIQUE (maquette Figma 2389:191) — nm-bva-* ================================================================== */
/* Tout le reste est partagé : nm-hero-price, nm-recap + nm-table, nm-stack-sec + nm-card--sm, nm-photo-card, nm-list, nm-grid2-sec, nm-pdf-sec, nm-faq,
   nm-other-card, nm-split, nm-header--12, nm-btn--iconblack, nm-acc-cta-btn-w (kit). Seule la section « Votre formation, votre tempo » a des règles propres. */
@media (max-width: 99999px) {
  /* en-tête (kit) + corps = sous-en-tête « Trois rythmes possibles » + liste (Figma : section g28) ; sous-en-tête : nm-h3 22/26 + phrase 15/20, gap 8 */
  .nm-bva-tempo-body.e-con { gap:28px !important; }
  .nm-bva-tempo-sub.e-con { gap:8px !important; }
  /* rythme vertical de la maquette (2389:359) : 22 sous le sous-en-tête puis ligne ; 1ʳᵉ tête 14 sous la ligne ; tête / 14 / sous-titre / 14 / ligne / 44 / tête suivante ;
     22 après la dernière ligne (le kit met 22/22 autour de la ligne et 12 entre tête et texte ; l'Accéléré (nm-acc-month) garde 22/22) */
  .nm-bva-tempo .nm-list { margin:22px 0 !important; }
  .nm-bva-tempo .nm-list-item { gap:14px; padding:44px 0 14px !important; }
  .nm-bva-tempo .nm-list-item:first-child { padding-top:14px !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* tempo dans un split (kit) : en-tête épinglé à gauche, sous-en-tête + liste à droite ; plus de ligne ni de marge en tête de liste, rythme resserré (32 / 14) */
  .nm-root .nm-bva-tempo-body.e-con { gap:24px !important; }
  .nm-root .nm-bva-tempo .nm-list { margin:0 !important; }
  .nm-root .nm-bva-tempo .nm-list-item { padding:32px 0 14px !important; }
  .nm-root .nm-bva-tempo .nm-list-item:first-child { padding-top:0 !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-bva-tempo-body.e-con { gap:32px !important; }
  .nm-root .nm-bva-tempo-sub.e-con { gap:10px !important; }
  /* (0,4,0) > .nm-root .nm-list-item { padding:24px 0 } du bloc partagé paysage */
  .nm-root .nm-bva-tempo .nm-list-item { padding:36px 0 16px !important; }
  .nm-root .nm-bva-tempo .nm-list-item:first-child { padding-top:0 !important; }
}

/* ================================================================== 3. FINANCEMENT (pilier, maquette Figma 2403:191) — nm-fin-* ================================================================== */
/* Réutilisé tel quel : nm-hero, nm-header--12, nm-photo-card + nm-photo--150 + nm-btn--iconblue / --hug, nm-disp-* (PARTAGÉ 2), nm-stack-sec--head + nm-stack-head
   + nm-card--sm (démarche), nm-pdf-sec + nm-code-card + nm-pdf-title (carte RDV Destan), nm-faq + nm-split, nm-narrow, nm-cta. Ici : mises en page tablette propres. */
@media (max-width: 99999px) {
  /* rien de propre en portrait : tout est partagé */
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* profils : section en split (en-tête épinglé à gauche, cartes à droite) ; les 4 cartes restent en UNE colonne à cette largeur (le corps du split fait
     ~390 px : deux colonnes seraient trop étroites pour photo + titre 20 px) — (0,4,0) > .nm-root .nm-cards.e-con (0,3,0) du kit */
  .nm-root .nm-cards.nm-fin-profils.e-con { flex-direction:column !important; gap:12px !important; }
  .nm-root .nm-cards.nm-fin-profils.e-con > .e-con { flex:0 0 auto !important; width:100% !important; }
  /* dispositifs : 6 cartes en grille 2 colonnes (3 rangées) */
  .nm-root .nm-cards.nm-fin-disp.e-con { display:grid !important; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px !important; align-items:stretch; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con { width:auto !important; }
  /* démarche : 4 étapes en grille 2 × 2 ((0,5,0) > .nm-root .nm-stack-sec .nm-stack.e-con (0,4,0) du kit qui met 3 colonnes) */
  .nm-root .nm-stack-sec.nm-fin-steps .nm-stack.e-con { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  /* besoin d'aide : la carte nm-code-card passe en photo à gauche / texte à droite (règles du kit) ; le portrait de Destan est cadré en haut */
  .nm-root .nm-fin-help-card .nm-photo img { object-position:center top !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  /* profils : le corps du split fait ~580 px → 2 colonnes */
  .nm-root .nm-cards.nm-fin-profils.e-con { display:grid !important; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:16px !important; align-items:stretch; }
  .nm-root .nm-cards.nm-fin-profils.e-con > .e-con { width:auto !important; }
  /* dispositifs : 3 colonnes (2 rangées) */
  .nm-root .nm-cards.nm-fin-disp.e-con { grid-template-columns:repeat(3, minmax(0, 1fr)); gap:16px !important; }
  /* démarche : 4 étapes sur une ligne */
  .nm-root .nm-stack-sec.nm-fin-steps .nm-stack.e-con { grid-template-columns:repeat(4, minmax(0, 1fr)); }
}

/* ================================================================== 4. CPF (maquette Figma 2407:191) — nm-cpf-* ================================================================== */
/* Réutilisé tel quel : nm-stack-sec--head + nm-stack-head + nm-card--sm (3 choses à savoir, 5 profils, 3 cumuls), nm-recap + nm-table + nm-table-value--sm,
   nm-tl + nm-split (5 étapes), nm-pdf-sec + nm-code-card + nm-narrow (référencement), nm-faq + nm-split, nm-other-card--plain, nm-cta-btns. */
@media (max-width: 99999px) {
  /* 5 étapes : image du panneau à 170 px (Figma 296 × 170 ; la chronologie partagée met 180) */
  .nm-cpf-steps-sec .nm-tl-img { height:170px !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* 5 étapes (dans un split) : l'image du panneau redevient proportionnelle (règle partagée nm-tl-img), la hauteur fixe ne s'applique plus */
  .nm-root .nm-cpf-steps-sec .nm-tl-img { height:auto !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  /* rien de propre : l'échelle paysage est celle des blocs partagés */
}

/* ================================================================== 5. PERMIS À 1 € PAR JOUR (maquette Figma 2410:191) — nm-p1e-* ================================================================== */
/* Réutilisé tel quel : nm-sec--24 + nm-narrow (comment ça marche, banques), nm-stat-block (PARTAGÉ 2), nm-recap + nm-table, nm-stack-sec--head + nm-stack-head
   + nm-card--sm (5 conditions), nm-tl + nm-split, nm-pdf-sec + nm-code-card + nm-pdf-title (caution, sans bouton), nm-logos, nm-faq, nm-other-card--plain, nm-cta-btns. */
@media (max-width: 99999px) {
  /* rien de propre en portrait : tout est partagé */
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* engagement caution : la carte suit la règle partagée nm-code-card (photo 44 % à gauche, texte à droite) — sans bouton, le texte occupe la colonne de droite */
  .nm-root .nm-p1e-caution-card > .nm-code-text { grid-row:1 / span 2; padding:14px 8px 10px !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-p1e-caution-card > .nm-code-text { padding:16px 12px 12px !important; }
}

/* ================================================================== 6. AIDES ET DISPOSITIFS (maquette Figma 2412:191) — nm-aid-* ================================================================== */
/* Réutilisé tel quel : nm-sec--24 (une aide, mini-cartes), nm-narrow (en-tête des mini-cartes), nm-features (checklist), nm-tables + nm-table--titled (PARTAGÉ 2),
   nm-code-card + nm-pdf-title + nm-btn--iconblue (carte RDV), nm-faq + nm-split, nm-other-card--plain, nm-cta-btns. */
@media (max-width: 99999px) {
  /* titre 22/26 (nm-card-title du kit) + montant 28/100 % Space Grotesk, −3 %, bleu — Figma 2412:572/573, gap 6 */
  .nm-aid-head.e-con { gap:6px !important; }
  .nm-aid-amount .elementor-heading-title { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:28px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-blue) !important; margin:0 !important; }
  /* labels « Conditions requises » / « La démarche » : Inter Semi Bold 15/100 % noir (Figma 2412:576/590) */
  .nm-aid-label .elementor-heading-title { font-family:var(--nm-inter) !important; font-weight:600 !important; font-size:15px !important; line-height:1 !important; letter-spacing:0 !important; color:var(--nm-black) !important; margin:0 !important; }
  /* bloc gris des conditions : #f5f5f5 r16 p20/18 gap 12 (Figma 2412:575) ; checklist nm-features du kit posée à même le bloc (le kit met p20/14/14, gap 8, 14/18)
     → sans retrait, gap 12, 14/20 ; pastille check-circle alignée sur la 1ʳᵉ ligne */
  .nm-aid-cond.e-con { background:var(--nm-light) !important; border-radius:16px !important; padding:20px 18px !important; gap:12px !important; align-items:stretch !important; }
  .nm-aid-cond .nm-features { padding:0 !important; gap:12px; }
  .nm-aid-cond .nm-features li { line-height:20px !important; }
  .nm-aid-cond .nm-features li i { line-height:20px; }
  /* « La démarche » : label + paragraphe, gap 8 (Figma 2412:589) */
  .nm-aid-step.e-con { gap:8px !important; }
  /* carte RDV : portrait Destan (PNG vertical) cadré sur le visage */
  .nm-aid-rdv-card .nm-photo img { object-position:center 30% !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* une aide : surtitre pleine largeur ; H2 + photo (épinglée) à gauche sur 40 %, à droite titre + montant, paragraphe, conditions, démarche */
  .nm-root .nm-sec.nm-aid-sec.e-con { display:grid !important; grid-template-columns:minmax(0, 40%) 1fr; grid-template-rows:auto auto auto auto auto; gap:24px 32px !important; align-items:start; }
  .nm-root .nm-aid-sec > .elementor-widget-html:first-child { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-aid-sec > .nm-h2 { grid-column:1; grid-row:2; }
  .nm-root .nm-aid-sec > .elementor-widget-image { grid-column:1; grid-row:3 / span 3; position:sticky; top:24px; align-self:start; }
  .nm-root .nm-aid-sec .nm-photo--200 img { height:auto !important; aspect-ratio:330 / 220; }
  .nm-root .nm-aid-sec > .nm-aid-head { grid-column:2; grid-row:2; }
  .nm-root .nm-aid-sec > .nm-aid-desc { grid-column:2; grid-row:3; }
  .nm-root .nm-aid-sec > .nm-aid-cond { grid-column:2; grid-row:4; padding:22px 20px !important; }
  .nm-root .nm-aid-sec > .nm-aid-step { grid-column:2; grid-row:5; }
  .nm-root .nm-aid-amount .elementor-heading-title { font-size:32px !important; }
  .nm-root .nm-aid-cond .nm-features li { font-size:15px !important; line-height:20px !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-sec.nm-aid-sec.e-con { gap:32px 48px !important; }
  .nm-root .nm-aid-head.e-con { gap:8px !important; }
  .nm-root .nm-aid-amount .elementor-heading-title { font-size:36px !important; }
  .nm-root .nm-aid-sec > .nm-aid-cond { padding:24px 22px !important; gap:14px !important; }
  .nm-root .nm-aid-cond .nm-features { gap:14px; }
  .nm-root .nm-aid-cond .nm-features li { font-size:15px !important; line-height:22px !important; }
  .nm-root .nm-aid-label .elementor-heading-title { font-size:16px !important; }
  .nm-root .nm-aid-step.e-con { gap:10px !important; }
}

/* ================================================================== 7. L'AUTO-ÉCOLE (maquette Figma 2414:191) — nm-ae-* ================================================================== */
/* Réutilisé tel quel : nm-sec--24 (toutes les sections blanches, Garanties comprise), nm-narrow, nm-stat-grid--light, nm-video, nm-team, nm-stack-sec--head + nm-stack-head
   + nm-card--sm (valeurs), nm-gallery, nm-mini, nm-check + nm-split (garanties), nm-cta-btns. Ici : chronologie 5 dates + grilles tablette. */
@media (max-width: 99999px) {
  /* chronologie : 5 dates en <dl>, ligne p18/0 gap 16, séparateur #e5e5e5 sous chaque ligne (y compris la dernière) ; année 36/100% −3 %, la dernière en bleu */
  .nm-ae-dates { margin:0 !important; padding:0 !important; display:flex; flex-direction:column; }
  .nm-ae-date { display:flex; align-items:flex-start; gap:16px; margin:0 !important; padding:18px 0 !important; border-bottom:1px solid var(--nm-line); }
  .nm-ae-year { flex:0 0 auto; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:36px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; margin:0 !important; padding:2px 0 0 !important; } /* 2px : ligne de base de l'année calée sur la 1ʳᵉ ligne du texte (Figma y20 / y18) */
  .nm-ae-date:last-child .nm-ae-year { color:var(--nm-blue) !important; }
  .nm-ae-date-text { flex:1 1 0; min-width:0; font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; padding:0 !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* histoire : surtitre et H2 (nm-narrow) pleine largeur, photo à gauche (42 %) / texte à droite sur toute la hauteur, chiffres clés en 4 colonnes */
  .nm-root .nm-sec.nm-ae-histoire.e-con { display:grid !important; grid-template-columns:minmax(0, 42%) 1fr; grid-template-rows:auto auto auto auto; gap:24px 32px !important; align-items:start; }
  .nm-root .nm-ae-histoire > .elementor-widget-html:first-child { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-ae-histoire > .nm-h2 { grid-column:1 / -1; grid-row:2; }
  .nm-root .nm-ae-histoire > .elementor-widget-image { grid-column:1; grid-row:3; height:100%; }
  .nm-root .nm-ae-histoire .nm-photo img { height:100% !important; min-height:300px; }
  .nm-root .nm-ae-histoire > .nm-ae-histoire-text { grid-column:2; grid-row:3; }
  .nm-root .nm-ae-histoire > .nm-stat-w { grid-column:1 / -1; grid-row:4; }
  /* chronologie : surtitre pleine largeur, en-tête + photo à gauche (42 %), les 5 dates à droite */
  .nm-root .nm-sec.nm-ae-chrono.e-con { display:grid !important; grid-template-columns:minmax(0, 42%) 1fr; grid-template-rows:auto auto 1fr; gap:24px 32px !important; align-items:start; }
  .nm-root .nm-ae-chrono > .elementor-widget-html:first-child { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-ae-chrono > .nm-header { grid-column:1; grid-row:2; }
  .nm-root .nm-ae-chrono > .elementor-widget-image { grid-column:1; grid-row:3; }
  .nm-root .nm-ae-chrono .nm-photo img { height:auto !important; aspect-ratio:330 / 220; }
  .nm-root .nm-ae-chrono > .nm-ae-dates-w { grid-column:2; grid-row:2 / span 2; }
  .nm-root .nm-ae-date:first-child { padding-top:0 !important; }
  .nm-root .nm-ae-date { padding:20px 0 !important; gap:20px; }
  .nm-root .nm-ae-year { font-size:40px !important; min-width:96px; }
  .nm-root .nm-ae-date-text { font-size:16px !important; line-height:22px !important; }
  /* équipe : surtitre et H2 (nm-narrow) pleine largeur, les 2 fiches côte à côte (règles nm-team-card partagées) */
  .nm-root .nm-sec.nm-ae-team.e-con { display:grid !important; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:24px 20px !important; align-items:stretch; }
  .nm-root .nm-ae-team > .elementor-widget-html, .nm-root .nm-ae-team > .nm-h2 { grid-column:1 / -1; }
  /* galerie : surtitre pleine largeur, H2 à gauche / texte à droite, puis la galerie partagée sur toute la largeur */
  .nm-root .nm-sec.nm-ae-galerie.e-con { display:grid !important; grid-template-columns:minmax(0, 48%) 1fr; grid-template-rows:auto auto auto; gap:24px 32px !important; align-items:end; }
  .nm-root .nm-ae-galerie > .elementor-widget-html:first-child { grid-column:1 / -1; grid-row:1; }
  .nm-root .nm-ae-galerie > .nm-h2 { grid-column:1; grid-row:2; }
  .nm-root .nm-ae-galerie > .nm-ae-galerie-text { grid-column:2; grid-row:2; }
  .nm-root .nm-ae-galerie > .nm-gallery { grid-column:1 / -1; grid-row:3; }
  /* comment on enseigne : en-tête nm-narrow, 4 compétences en ligne (nm-mini partagé), bouton à la largeur du texte */
  .nm-root .nm-ae-enseigne > .nm-btn { width:auto !important; align-self:flex-start; }
  .nm-root .nm-ae-enseigne > .nm-btn .elementor-button { width:auto; padding-right:24px !important; }
  .nm-root .nm-ae-enseigne > .nm-btn .elementor-button-text { text-align:left !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-sec.nm-ae-histoire.e-con, .nm-root .nm-sec.nm-ae-chrono.e-con, .nm-root .nm-sec.nm-ae-galerie.e-con { gap:32px 48px !important; }
  .nm-root .nm-ae-histoire .nm-photo img { min-height:360px; }
  .nm-root .nm-ae-date { padding:22px 0 !important; }
  .nm-root .nm-ae-year { font-size:44px !important; min-width:108px; }
  .nm-root .nm-sec.nm-ae-team.e-con { gap:32px 24px !important; }
}


/* ============================================================
   NEOVA — RETOURS CLIENT 19/08 (intégrés le 18/09) : icônes de contact, séries de 4 cartes (Boîte manuelle)
   ============================================================ */
@media (max-width: 99999px) {
  /* liste de contact à icônes (Accueil « Pour venir nous voir ») : icônes à la place des lettres A/E/P/H */
  .nm-clist { list-style:none !important; margin:0 !important; padding:0 !important; display:flex; flex-direction:column; gap:10px; }
  .nm-clist li { display:flex; align-items:flex-start; gap:12px; margin:0 !important; padding:0 !important; font-family:Inter,sans-serif; font-size:16px; line-height:22px; color:var(--nm-grey); }
  .nm-clist li i { flex:0 0 20px; text-align:center; font-size:16px; line-height:22px; color:var(--nm-blue); }
  .nm-clist a { color:inherit; text-decoration:none; }
  .nm-clist--white li, .nm-clist--white li i, .nm-clist--white a { color:#fff; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  /* séries de 4 cartes (Accueil parcours, Formations comparatif + détails) : 2 × 2 en tablette, 4 colonnes seraient trop étroites */
  .nm-root .nm-cards.nm-cards--4.e-con { display:grid !important; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px !important; align-items:stretch; }
  .nm-root .nm-cards.nm-cards--4.e-con > .e-con { width:auto !important; flex:none !important; }
  .nm-root .nm-cmp-cards.nm-cards--4.e-con { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .nm-root .nm-clist li { font-size:16px; line-height:24px; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-cards.nm-cards--4.e-con { gap:16px !important; }
}

/* ============================================================
   NEOVA — HERO DESKTOP (19/09) : H1 et intro au même endroit sur les 13 pages
   Colonne texte 52 %, bas à 100 px du bas du hero, gap 16, intro calée sur 3 lignes,
   boutons 420 px alignés sur le bas de l'intro. Entre 1201 et 1600 px (MacBook 14"),
   H1 ramené à 56/60 pour tenir en 2 lignes.
   ============================================================ */
@media (min-width: 99999px) {
  .nm-desk-hero-intro { min-height:72px; }
  .nm-desk-hero-intro p { font-size:16px; line-height:24px; margin:0; }
  .nm-desk-hero-btns .btn { white-space:nowrap; }
  /* le widget titre de l'Accueil porte un padding bas de 15 px (thème) : neutralisé pour que le H1 soit au même endroit partout */
  .nm-desk-hero-text .elementor-widget-pxl_heading > .elementor-widget-container { padding-bottom:0 !important; margin-bottom:0 !important; }
}
/* interlettrage −3 % (système typo 17/09) sur les H1 des 14 pages : −1,68 px à 56 px, −1,95 px à 65 px (relecture Blog 19/09 ; avant : −1,2 / −1,44) */
@media (min-width: 99999px) and (max-width: 1600px) {
  .nm-desk-hero-text h1.pxl-item--title { font-size:56px !important; line-height:60px !important; letter-spacing:-1.68px !important; }
}
@media (min-width: 1601px) {
  .nm-desk-hero-text h1.pxl-item--title { letter-spacing:-1.95px !important; }
}

/* ---- CARTES PRIX DESKTOP (19/09, demande Frédéric) : 4 cartes sur une même ligne, titre calé sur 2 lignes,
   prix / description / bouton au même niveau d'une carte à l'autre (Accueil 7772a4a, Formations abc7dc2 + b228adc) ---- */
@media (min-width: 99999px) {
  .nm-desk-pricing-row .elementor-widget-pxl_pricing, .nm-desk-pricing-row .elementor-widget-pxl_pricing > .elementor-widget-container,
  .nm-desk-pricing-row .pxl-pricing, .nm-desk-pricing-row .pxl-pricing .pxl-item--inner { height:100%; }
  .nm-desk-pricing-row .pxl-pricing .pxl-item--inner { display:flex; flex-direction:column; }
  .nm-desk-pricing-row .pxl-pricing .pxl-pricing--inner { display:flex; flex-direction:column; flex:1 1 auto; }
  .nm-desk-pricing-row .pxl-pricing .pxl-pricing--button { margin-top:auto !important; padding-top:0; align-self:flex-start; }
  .nm-desk-pricing-row .pxl-pricing .pxl-item--desc { margin-bottom:50px; } /* garde l'écart thème (50) au-dessus du bouton quand la carte n'est pas étirée */
  .nm-desk-pricing-row .pxl-pricing .pxl-item--title { min-height:40px; }   /* 2 lignes de 20 px */
  .nm-desk-pricing-row .pxl-pricing .pxl-item--desc { min-height:48px; }    /* 2 lignes de 24 px */
}

/* ---- RYTHME DES EN-TÊTES DE SECTION DESKTOP (19/09, demande Frédéric) : surtitre → filet 16, filet → titre/photo 16 (surtitre → titre = 32),
   titre/en-tête → contenu 64 (= 2 ×, règle Frédéric 19/09), surtitre centré → titre 32. Classes posées par script : nm-desk-sec (conteneur commun, gap 0),
   nm-desk-eb (surtitre), nm-desk-line (filet), nm-desk-h2 (titre), nm-desk-head (en-tête suivi d'un contenu), nm-desk-gap0 (spacer neutralisé) ---- */
@media (min-width: 99999px) {
  .nm-desk-sec.e-con, .nm-desk-sec > .e-con-inner { row-gap:0 !important; }
  .nm-desk-eb, .nm-desk-eb > .elementor-widget-container { margin:0 !important; padding:0 !important; }
  .nm-desk-eb .pxl-item--title, .nm-desk-eb .elementor-heading-title { line-height:1 !important; margin:0 !important; }
  .nm-desk-line { margin:20px 0 20px !important; }   /* réglage Frédéric à l'œil (Figma 19/09) : 20 au-dessus et au-dessous du filet */
  .nm-desk-line.nm-desk-line--photo { margin-bottom:56px !important; }   /* filet → rangée qui commence par une photo */
  .nm-desk-line > .elementor-widget-container, .nm-desk-line .pxl-divider, .nm-desk-line .elementor-divider { margin:0 !important; padding:0 !important; }
  .nm-desk-head { margin-bottom:72px !important; }    /* titre → contenu 72 (validé Frédéric) */
  .nm-desk-head > .elementor-widget-container { padding-bottom:0 !important; margin-bottom:0 !important; }
  .nm-desk-gap0 { display:none !important; }
  .nm-desk-h2 .pxl-item--sub-title, .nm-desk-h2 .pxl-item--subtitle { margin-bottom:40px !important; }  /* surtitre centré sans filet → titre 40 (= 20 + filet + 20) */
  .nm-desk-h2 .pxl-item--title { margin-top:0 !important; }
  .nm-desk-h2 > .elementor-widget-container { margin-top:0 !important; padding-top:0 !important; }
  /* surtitre sans filet (pages du 18/09) : même respiration que surtitre → filet */
  .nm-desk-sec:not(:has(.nm-desk-line)) .nm-desk-eb:not(.nm-desk-h2) { margin-bottom:40px !important; }
  /* l'enveloppe qui porte surtitre + filet ne doit pas ajouter de padding bas (ex. Accueil « Notre méthode » : 45 px) */
  .nm-desk-sec .e-con:has(> .nm-desk-line), .nm-desk-sec .e-con:has(> .e-con-inner > .nm-desk-line) { padding-bottom:0 !important; margin-bottom:0 !important; }
  /* les marges hautes propres aux rangées (73, 60…) sont neutralisées : seul le rythme ci-dessus compte */
  .nm-desk-sec > .e-con-inner > .e-con, .nm-desk-sec > .e-con, .nm-desk-sec > .e-con-inner > .elementor-widget, .nm-desk-sec > .elementor-widget { margin-top:0 !important; }
  .nm-desk-sec > .e-con-inner > .nm-desk-line, .nm-desk-sec > .nm-desk-line, .nm-desk-sec .nm-desk-line { margin-top:20px !important; }
  /* marges intérieures de la carte blanche / section : 64 en haut, 80 en bas, partout ; l'enveloppe extérieure et les rangées ne s'ajoutent pas */
  .nm-desk-sec.e-con { padding-top:64px !important; padding-bottom:80px !important; }
  .nm-desk-sec > .e-con-inner { padding-top:0 !important; padding-bottom:0 !important; }
  .nm-desk-outer.e-con, .nm-desk-outer > .e-con-inner { padding-top:0 !important; padding-bottom:0 !important; }
  .nm-desk-sec .e-con:has(> .nm-desk-eb), .nm-desk-sec .e-con:has(> .e-con-inner > .nm-desk-eb) { padding-top:0 !important; }
  .nm-desk-sec > .e-con-inner > .e-con:last-child, .nm-desk-sec > .e-con:last-child { padding-bottom:0 !important; margin-bottom:0 !important; }
}

/* ============================================================
   NEOVA — BLOG (19/09) : grille d'articles [neova_blog] (thème enfant, inc/neova-shortcodes.php)
   Un seul markup (div.nm-blog > div.nm-blog-grid > article.nm-blog-card · nav.nm-blog-pag) servi par le shortcode dans la
   section desktop (.nm-blog-sec, ≥1201 : maquette Figma 27_Blog_Grid traduite dans le système NEOVA — carte 433 × 611 :
   photo carrée r20, corps blanc r20 p24 min-h 168, tags 14 capitales, titre 24/28, pastilles 50 r10 gap 14) et dans la racine
   mobile (.nm-root, ≤1200 : carte « conseil » du site — fond #f5f5f5 r20 p10, photo 4/3 r16, tags 12, titre 22/26 ; 2 colonnes
   en tablette, 24/28 en paysage ; pastilles 44 → 50). Fond de page #f5f5f5 ; survol : photo zoom 1,04 + titre bleu #00339f.
   ============================================================ */
.nm-sr { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ---- DESKTOP ≥1201 : 3 colonnes de 433,33 (1320 − 2 × 10), rangées + 10 ---- */
@media (min-width: 99999px) {
  .nm-blog-sec .elementor-widget-shortcode, .nm-blog-sec .nm-blog { width:100%; }
  .nm-blog-sec .nm-blog-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:10px; }
  .nm-blog-sec .nm-blog-card { position:relative; display:flex; flex-direction:column; gap:10px; min-width:0; margin:0; padding:0; background:none; border:0; }
  .nm-blog-sec .nm-blog-media { display:block; aspect-ratio:1 / 1; border-radius:20px; overflow:hidden; background:#e5e5e5; }
  .nm-blog-sec .nm-blog-img { width:100% !important; height:100% !important; max-width:none !important; object-fit:cover !important; display:block; margin:0 !important; transition:transform .4s ease; }
  .nm-blog-sec .nm-blog-img--empty { display:block; width:100%; height:100%; }
  .nm-blog-sec .nm-blog-card:hover .nm-blog-img { transform:scale(1.04); }
  .nm-blog-sec .nm-blog-body { flex:1 1 auto; background:#fff; border-radius:20px; padding:24px; min-height:168px; display:flex; flex-direction:column; gap:16px; }
  .nm-blog-sec .nm-blog-tags { display:flex; align-items:center; gap:20px; font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; text-transform:uppercase !important; }
  .nm-blog-sec .nm-blog-cat { color:#0a0a0a !important; text-decoration:none !important; position:relative; z-index:2; transition:color .2s ease; }
  .nm-blog-sec .nm-blog-cat:hover, .nm-blog-sec .nm-blog-cat:focus-visible { color:#00339f !important; }
  .nm-blog-sec .nm-blog-date { color:#6f6f6f !important; } /* relecture 19/09 : #999 = 2,85:1 à 14 px ; #6f6f6f = 5,1:1 sur blanc (écart Figma assumé, à valider) */
  /* titre 24/28 −3 % sur 3 lignes max (système NEOVA : titres de carte 24 en desktop ; Figma 20/30) */
  .nm-blog-sec .nm-blog-title, .nm-blog-sec .nm-blog-title a { font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:24px !important; line-height:28px !important; letter-spacing:-0.72px !important; color:#0a0a0a !important; text-decoration:none !important; margin:0 !important; padding:0 !important; }
  .nm-blog-sec .nm-blog-title { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; min-height:84px; }
  .nm-blog-sec .nm-blog-title a { transition:color .2s ease; }
  .nm-blog-sec .nm-blog-title a::after { content:''; position:absolute; inset:0; border-radius:20px; } /* toute la carte est cliquable */
  .nm-blog-sec .nm-blog-card:hover .nm-blog-title a, .nm-blog-sec .nm-blog-title a:focus-visible { color:#00339f !important; }
  .nm-blog-sec .nm-blog-title a:focus-visible { outline:none; }
  .nm-blog-sec .nm-blog-title a:focus-visible::after { outline:2px solid #00339f; outline-offset:2px; }
  /* pagination : pastilles 50 × 50 r10, gap 14, 60 sous la grille (Figma) ; courante noire, survol bleu NEOVA */
  .nm-blog-sec .nm-blog-pag { display:flex; justify-content:center; flex-wrap:wrap; gap:14px; margin:60px 0 0; }
  .nm-blog-sec .nm-blog-pag .page-numbers { display:flex; align-items:center; justify-content:center; width:50px; height:50px; margin:0; padding:0; border:0; border-radius:10px; background:#fff; color:#0a0a0a !important; font-family:'Inter',sans-serif !important; font-weight:600 !important; font-size:14px !important; line-height:1 !important; text-decoration:none !important; transition:background-color .2s ease, color .2s ease; }
  .nm-blog-sec .nm-blog-pag .page-numbers.current { background:#0a0a0a; color:#fff !important; }
  .nm-blog-sec .nm-blog-pag a.page-numbers:hover, .nm-blog-sec .nm-blog-pag a.page-numbers:focus-visible { background:#00339f; color:#fff !important; outline:none; }
  .nm-blog-sec .nm-blog-pag .page-numbers i { font-size:16px; line-height:1; }
  /* filtre de catégorie actif / aucun article */
  .nm-blog-sec .nm-blog-filter, .nm-blog-sec .nm-blog-empty { font-family:'Inter',sans-serif !important; font-size:16px !important; line-height:24px !important; color:#666666 !important; margin:0 0 24px !important; }
  .nm-blog-sec .nm-blog-filter strong { color:#0a0a0a; font-weight:600; }
  .nm-blog-sec .nm-blog-filter a { color:#00339f !important; text-decoration:underline; }
  /* 80 px entre la grille (ou la pagination) et la section suivante (marge haute 37 du CTA + 43) */
  .nm-blog-sec.e-con { padding-bottom:43px !important; }
  @media (prefers-reduced-motion: reduce) { .nm-blog-sec .nm-blog-img, .nm-blog-sec .nm-blog-title a, .nm-blog-sec .nm-blog-cat, .nm-blog-sec .nm-blog-pag .page-numbers { transition:none; } .nm-blog-sec .nm-blog-card:hover .nm-blog-img { transform:none; } }
}

/* ---- MOBILE ≤1200 (dans nm-root) : cartes empilées, carte « conseil » du site ---- */
@media (max-width: 99999px) {
  .nm-root .nm-blog-w, .nm-root .nm-blog-w > .elementor-widget-container { width:100% !important; }
  .nm-root .nm-blog { display:flex; flex-direction:column; gap:18px; } /* grille → pagination 18 (gap 28 de la section − 10) */
  .nm-root .nm-blog-grid { display:flex; flex-direction:column; gap:10px; }
  .nm-root .nm-blog-card { position:relative; display:flex; flex-direction:column; margin:0; padding:10px; background:var(--nm-light); border:0; border-radius:20px; min-width:0; }
  .nm-root .nm-blog-media { display:block; aspect-ratio:4 / 3; border-radius:16px; overflow:hidden; background:var(--nm-line); }
  .nm-root .nm-blog-img { width:100% !important; height:100% !important; max-width:none !important; object-fit:cover !important; display:block; margin:0 !important; }
  .nm-root .nm-blog-img--empty { display:block; width:100%; height:100%; }
  .nm-root .nm-blog-body { padding:20px 14px 14px; display:flex; flex-direction:column; gap:14px; }
  .nm-root .nm-blog-tags { display:flex; align-items:center; gap:16px; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; text-transform:uppercase !important; }
  /* lien de catégorie : rendu 12 px, cible tactile 44 px (padding compensé par une marge négative) */
  .nm-root .nm-blog-cat { color:var(--nm-black) !important; text-decoration:none !important; position:relative; z-index:2; padding:16px 0; margin:-16px 0; }
  .nm-root .nm-blog-date { color:#6f6f6f !important; } /* 4,7:1 sur #f5f5f5 à 12 px (relecture 19/09 ; #999 = 2,6:1) */
  /* nm-card-title 22/26 −3 % (système typo 17/09), 3 lignes max ; le h3 porte corps + interlignage (comme nm-slide-title) */
  .nm-root .nm-blog-title, .nm-root .nm-blog-title a { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:22px !important; line-height:26px !important; letter-spacing:-0.03em !important; color:var(--nm-black) !important; text-decoration:none !important; margin:0 !important; padding:0 !important; }
  .nm-root .nm-blog-title { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
  .nm-root .nm-blog-title a::after { content:''; position:absolute; inset:0; border-radius:20px; }
  .nm-root .nm-blog-title a:focus-visible { outline:none; }
  .nm-root .nm-blog-title a:focus-visible::after { outline:2px solid var(--nm-blue); outline-offset:2px; }
  /* pagination : pastilles 44 r10 liserées (section blanche), gap 8, courante noire ; « … » en pastille réduite de 20 px en portrait (315 px utiles) */
  .nm-root .nm-blog-pag { display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin:0; }
  .nm-root .nm-blog-pag .page-numbers { display:flex; align-items:center; justify-content:center; width:44px; height:44px; margin:0; padding:0; border:1px solid var(--nm-line); border-radius:10px; background:#fff; color:var(--nm-black) !important; font-family:var(--nm-inter) !important; font-weight:600 !important; font-size:14px !important; line-height:1 !important; text-decoration:none !important; }
  .nm-root .nm-blog-pag .page-numbers.current { background:var(--nm-black); border-color:var(--nm-black); color:#fff !important; }
  .nm-root .nm-blog-pag .page-numbers i { font-size:16px; line-height:1; }
  .nm-root .nm-blog-filter, .nm-root .nm-blog-empty { font-family:var(--nm-inter) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey) !important; margin:0 !important; }
  .nm-root .nm-blog-filter strong { color:var(--nm-black); font-weight:600; }
  .nm-root .nm-blog-filter a { color:var(--nm-blue) !important; text-decoration:underline; }
}
@media (max-width: 767px) {
  /* ellipse visible mais compacte (20 px, sans fond ni liseré) ; au-delà de 315 px la ligne se replie (flex-wrap) */
  .nm-root .nm-blog-pag .page-numbers.dots { width:20px; border:0; background:none; color:var(--nm-muted) !important; }
}
/* ---- TABLETTE PORTRAIT 768–1200 : 2 colonnes, pastilles 50 ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  .nm-root .nm-blog { gap:24px; }
  .nm-root .nm-blog-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; align-items:stretch; }
  .nm-root .nm-blog-body { padding:20px 16px 16px; flex:1 1 auto; }
  .nm-root .nm-blog-pag { gap:14px; }
  .nm-root .nm-blog-pag .page-numbers { width:50px; height:50px; }
  .nm-root .nm-blog-filter, .nm-root .nm-blog-empty { font-size:16px !important; line-height:22px !important; }
}
/* ---- TABLETTE PAYSAGE 992–1200 : gouttière 16, titre 24/28 (échelle tablette du kit) ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-root .nm-blog-grid { gap:16px; }
  .nm-root .nm-blog-title, .nm-root .nm-blog-title a { font-size:24px !important; line-height:28px !important; }
  .nm-root .nm-blog-tags { font-size:13px !important; }
}

/* ============================================================
   NEOVA — ARTICLE (19/09) : gabarit d'article unique (floka-child/single.php), classes nm-post-*
   main.nm-post > div.nm-post-root > section.nm-post-hero (img.nm-post-hero-img + div.nm-post-hero-inner > div.nm-post-hero-text :
   p.nm-post-meta (a.nm-post-cat + time.nm-post-date) · h1.nm-post-title · p.nm-post-intro) + article.nm-post-body (div.nm-post-content
   + p.nm-post-back) ; puis le modèle Elementor « CTA + version mobile » (CTA desktop nm-desk-*, racine nm-root : CTA + footer mobile).
   Desktop ≥1201 : hero bord à bord, même géométrie que le hero unifié des pages (897 / padding 80, colonne 52 %, bas à 100 px, H1 56/60 puis
   65/60, intro Space Grotesk 16/24) ; corps = carte blanche 800 r20 (72 en haut), Inter 16/24 #666, H2 48/52 Medium −3 %.
   Mobile ≤1200 : carte photo arrondie 20 (min 600, dégradé bas + dégradé haut pour le header), H1 40/44, corps carte blanche 40/20,
   Inter 16/22, H2 28/34 Medium ; tablette : H1 48 puis 56, colonne de lecture 720 centrée.
   ============================================================ */
/* le thème réserve 152 / 90 / 60 px au-dessus du contenu des articles (.single-post #pxl-main) : le hero passe sous le header transparent comme sur les pages */
.single-post #pxl-main { padding-top:0 !important; padding-bottom:0 !important; }
.nm-post-hero { position:relative; overflow:hidden; background:#0a0a0a; }
.nm-post-hero-img { position:absolute; inset:0; width:100% !important; height:100% !important; max-width:none !important; object-fit:cover; object-position:center center; margin:0 !important; z-index:0; }
.nm-post-hero::before { content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.6) 100%); pointer-events:none; } /* dégradé unifié des pages : transparent → noir 0,6 */
.nm-post-hero-inner { position:relative; z-index:2; }
.nm-post-meta { display:flex; align-items:center; gap:20px; margin:0 !important; padding:0; font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; text-transform:uppercase !important; color:#fff !important; }
.nm-post-cat { color:#fff !important; text-decoration:none !important; padding:15px 0; margin:-15px 0; } /* cible 44 px */
.nm-post-cat:hover, .nm-post-cat:focus-visible { text-decoration:underline !important; }
.nm-post-date { color:rgba(255,255,255,.8) !important; }
.nm-post-title { font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; color:#fff !important; margin:0 !important; padding:0; hyphens:none; text-wrap:balance; }
.nm-post-intro { font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; color:#fff !important; margin:0 !important; }
.nm-post-body { background:#fff; border-radius:20px; }
.nm-post-content > *:first-child { margin-top:0 !important; }
.nm-post-content p, .nm-post-content li { font-family:'Inter',sans-serif !important; font-weight:400 !important; color:#666666 !important; }
.nm-post-content p { margin:0 0 18px !important; }
.nm-post-content h2, .nm-post-content h3, .nm-post-content h4 { font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; color:#0a0a0a !important; hyphens:none; text-wrap:balance; padding:0; }
.nm-post-content h2 { font-weight:500 !important; }
.nm-post-content h3, .nm-post-content h4 { font-weight:400 !important; }
.nm-post-content strong { color:#0a0a0a; font-weight:600; }
.nm-post-content a { color:#00339f !important; text-decoration:underline !important; text-underline-offset:2px; }
.nm-post-content a:hover, .nm-post-content a:focus-visible { color:#0a0a0a !important; }
.nm-post-content ul, .nm-post-content ol { margin:0 0 18px !important; padding:0 0 0 24px !important; list-style-position:outside; }
.nm-post-content ul { list-style:disc; }
.nm-post-content ol { list-style:decimal; }
.nm-post-content li { margin:0 0 10px !important; padding:0 !important; }
.nm-post-content li::marker { color:#00339f; font-weight:600; }
.nm-post-content img { max-width:100%; height:auto; border-radius:16px; display:block; margin:24px 0; }
.nm-post-content blockquote { margin:24px 0 !important; padding:0 0 0 20px !important; border-left:3px solid #00339f; background:none; font-style:normal; }
.nm-post-content blockquote p { font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; color:#0a0a0a !important; }
.nm-post-content table { width:100%; border-collapse:collapse; margin:0 0 18px; font-family:'Inter',sans-serif; font-size:15px; }
.nm-post-content th, .nm-post-content td { text-align:left; padding:10px 12px; border-bottom:1px solid #e5e5e5; }
.nm-post-content .page-links { margin:24px 0 0; }
.nm-post-back { margin:0 !important; padding:0; }
.nm-post-back a { display:inline-flex; align-items:center; gap:10px; min-height:44px; font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; text-transform:uppercase !important; color:#0a0a0a !important; text-decoration:none !important; }
.nm-post-back a:hover, .nm-post-back a:focus-visible { color:#00339f !important; }
.nm-post-back i { font-size:16px; }
/* le CTA desktop rendu depuis le modèle Elementor n'a pas de conteneur .elementor-section-wrap : même gouttière que sur les pages */
.nm-post > .elementor { width:100%; }

/* ---- DESKTOP ≥1201 ---- */
@media (min-width: 99999px) {
  .nm-post-hero { width:100%; }
  .nm-post-hero-inner { display:flex; align-items:flex-end; min-height:897px; padding:80px 100px; } /* texte à x = 100 comme sur les pages (gouttière 20 + padding 80) */
  .nm-post-hero-text { width:52%; display:flex; flex-direction:column; gap:16px; padding:0 0 100px; }
  .nm-post-title { font-size:65px !important; line-height:60px !important; letter-spacing:-1.95px !important; }
  .nm-post-intro { font-size:16px !important; line-height:24px !important; max-width:600px; min-height:72px; } /* 3 lignes réservées : H1 au même endroit que sur les pages (509 px à 1512) */
  .nm-post-body { width:800px; max-width:calc(100% - 40px); margin:37px auto 0; padding:72px 80px 80px; }
  .nm-post-content p, .nm-post-content li { font-size:16px !important; line-height:24px !important; }
  .nm-post-content h2 { font-size:48px !important; line-height:52px !important; letter-spacing:-1.44px !important; margin:56px 0 24px !important; }
  .nm-post-content h3, .nm-post-content h4 { font-size:24px !important; line-height:28px !important; letter-spacing:-0.72px !important; margin:40px 0 16px !important; }
  .nm-post-back { margin-top:48px !important; }
}
@media (min-width: 99999px) and (max-width: 1600px) {
  .nm-post-title { font-size:56px !important; line-height:60px !important; letter-spacing:-1.68px !important; }
}
@media (min-width: 99999px) and (max-width: 1366px) {
  .nm-post-hero-inner { min-height:750px; padding:30px 45px; }
  .nm-post-hero-text { width:610px; }
}

/* ---- MOBILE ≤1200 : même enveloppe que nm-root (fond #f5f5f5, gouttière 10, gap 10) ---- */
@media (max-width: 99999px) {
  .nm-post-root { display:flex; flex-direction:column; gap:10px; padding:10px 10px 0; background:var(--nm-light); } /* tablette : 16 / 20 comme nm-root */
  .nm-post-hero { display:flex; align-items:flex-end; min-height:600px; border-radius:20px; padding:16px 20px 24px; }
  .nm-post-hero::before { background:linear-gradient(180deg, rgba(10,10,10,0) 25%, rgba(10,10,10,.85) 100%); }
  /* dégradé haut pour la lisibilité du header transparent (même valeur que .nm-hero du kit) */
  .nm-post-hero::after { content:''; position:absolute; left:0; right:0; top:0; height:220px; z-index:1; background:linear-gradient(180deg, rgba(10,10,10,.55) 0%, rgba(10,10,10,.38) 25%, rgba(10,10,10,.2) 50%, rgba(10,10,10,.08) 75%, rgba(10,10,10,0) 100%); pointer-events:none; }
  .nm-post-hero-inner { width:100%; }
  .nm-post-hero-text { display:flex; flex-direction:column; gap:16px; }
  .nm-post-meta { font-size:12px !important; letter-spacing:.04em !important; gap:16px; }
  .nm-post-title { font-size:40px !important; line-height:44px !important; letter-spacing:-0.03em !important; }
  .nm-post-intro { font-size:16px !important; line-height:22px !important; }
  .nm-post-body { padding:40px 20px; }
  .nm-post-content p, .nm-post-content li { font-size:16px !important; line-height:22px !important; }
  .nm-post-content h2 { font-size:28px !important; line-height:34px !important; letter-spacing:-0.03em !important; margin:32px 0 14px !important; }
  .nm-post-content h3, .nm-post-content h4 { font-size:22px !important; line-height:26px !important; letter-spacing:-0.03em !important; margin:28px 0 12px !important; }
  .nm-post-back { margin-top:28px !important; }
  /* la racine mobile du modèle CTA + footer suit sans double gouttière */
  .nm-post > .elementor > .nm-root.e-con { padding-top:10px !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  .nm-post-root { gap:16px; padding:16px 16px 0; }
  .nm-post > .elementor > .nm-root.e-con { padding-top:16px !important; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-post-root { gap:20px; padding:20px 20px 0; }
  .nm-post > .elementor > .nm-root.e-con { padding-top:20px !important; }
}
/* ---- TABLETTE PORTRAIT 768–1200 ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  .nm-post-hero { min-height:clamp(400px, calc(100svh - 32px), 560px); padding:24px 32px 32px; }
  .nm-post-hero-text { max-width:80%; gap:12px; } /* titres d'article plus longs que les H1 des pages (66 %) */
  .nm-post-title { font-size:48px !important; line-height:52px !important; }
  .nm-post-intro { font-size:17px !important; line-height:24px !important; }
  .nm-post-body { padding:48px 32px; }
  .nm-post-content, .nm-post-back { max-width:720px; margin-left:auto !important; margin-right:auto !important; }
  .nm-post-content p, .nm-post-content li { line-height:24px !important; }
  .nm-post-content h2 { font-size:34px !important; line-height:40px !important; }
}
/* ---- TABLETTE PAYSAGE 992–1200 ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-post-hero { min-height:clamp(520px, calc(100svh - 40px), 680px); padding:32px 40px 40px; }
  .nm-post-hero-text { max-width:58%; gap:16px; }
  .nm-post-title { font-size:56px !important; line-height:60px !important; }
  .nm-post-intro { font-size:18px !important; line-height:25px !important; }
  .nm-post-body { padding:56px 40px; }
  .nm-post-content h2 { font-size:40px !important; line-height:46px !important; }
}

/* ============================================================
   NEOVA — PAGES LÉGALES + 404 (19/09) */
/* gabarits floka-child/page-legal.php (Mentions légales, Politique de confidentialité, CGV) et floka-child/404.php.
   main.nm-post.nm-legal[.nm-404] > div.nm-post-root > section.nm-post-hero.nm-post-hero--noimg (hero court sans photo, fond #0a0a0a :
   p.nm-post-meta > span.nm-post-cat · h1.nm-post-title · p.nm-post-intro.nm-legal-updated > time.nm-post-date [+ span.nm-legal-excerpt])
   + article.nm-post-body > div.nm-post-content.nm-legal-content (the_content : h2/h3/p/ul/table, mark.nm-legal-todo = mention à compléter ;
   404 : div.nm-legal-btns > div.pxl-button > a.btn.btn-icon-box, boutons du thème comme les heros desktop) + p.nm-post-back ;
   puis le modèle Elementor « CTA + version mobile » (#11599), comme les articles. Les règles « NEOVA — ARTICLE » restent la base ;
   ce bloc n'ajoute que le hero court, la typo de lecture longue (h2 32 / h3 22 / p 18 desktop) et les boutons de la 404. */
/* le thème réserve 120 / 90 / 60 px autour d'une page non Elementor et 0 20px sur la 404 : le hero passe sous le header transparent */
.page-template-page-legal #pxl-main, .error404 #pxl-main { padding:0 !important; }
/* hero court à fond uni : dégradés inutiles */
.nm-post-hero--noimg::before, .nm-post-hero--noimg::after { display:none !important; }
.nm-legal .nm-post-intro { min-height:0 !important; }
.nm-legal-updated { display:flex; flex-direction:column; gap:10px; }
.nm-legal-updated .nm-post-date { color:rgba(255,255,255,.8) !important; }
.nm-legal-updated .nm-legal-excerpt { color:#fff; }
/* corps : lecture longue */
.nm-legal .nm-legal-content h2[id], .nm-legal .nm-legal-content h3[id] { scroll-margin-top:110px; } /* ancres (#agrement…) sous le header flottant */
.nm-legal .nm-legal-content p, .nm-legal .nm-legal-content li { color:#444444 !important; }
.nm-legal .nm-legal-content ul, .nm-legal .nm-legal-content ol { padding-left:22px !important; }
.nm-legal .nm-legal-content li { margin-bottom:8px !important; }
.nm-legal .nm-legal-content li > ul, .nm-legal .nm-legal-content li > ol { margin:8px 0 0 !important; }
.nm-legal .nm-legal-content a { overflow-wrap:anywhere; }
/* tableaux lisibles : bordures fines, en-tête gris clair */
.nm-legal .nm-legal-content table { width:100%; border-collapse:collapse; border:1px solid #e5e5e5; margin:0 0 24px; font-family:'Inter',sans-serif !important; color:#444444; }
/* enveloppe div.nm-legal-table[data-cols] posée par page-legal.php (vérif 1, 19/09) : défilement horizontal interne au lieu d'un tableau coupé */
.nm-legal .nm-legal-content .nm-legal-table { overflow-x:auto; -webkit-overflow-scrolling:touch; margin:0 0 24px; max-width:100%; }
.nm-legal .nm-legal-content .nm-legal-table table { margin:0; }
.nm-legal .nm-legal-content th, .nm-legal .nm-legal-content td { text-align:left; vertical-align:top; padding:12px 14px; border:1px solid #e5e5e5; }
.nm-legal .nm-legal-content th { background:#f5f5f5; font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:500; color:#0a0a0a; letter-spacing:0; }
.nm-legal .nm-legal-content td p, .nm-legal .nm-legal-content td li { font-size:inherit !important; line-height:inherit !important; }
.nm-legal .nm-legal-content td p:last-child { margin-bottom:0 !important; }
/* mention à compléter par le client : surligné jaune pâle */
.nm-legal .nm-legal-content mark.nm-legal-todo { background:#FFF3B0; color:#0a0a0a; padding:0 4px; border-radius:4px; -webkit-box-decoration-break:clone; box-decoration-break:clone; font-style:normal; }
/* 404 : boutons du thème (.btn.btn-icon-box, Funnel Display 14 uppercase, pastille +) alignés en ligne */
.nm-legal-btns { display:flex; flex-wrap:wrap; gap:12px; margin:8px 0 0; }
.nm-legal-btns .pxl-button { margin:0; }
.nm-legal-btns .btn { white-space:nowrap; }
/* les liens du corps (.nm-post-content a : bleu souligné) ne s'appliquent pas aux boutons */
.nm-legal .nm-legal-content .nm-legal-btns a.btn, .nm-legal .nm-legal-content .nm-legal-btns a.btn:hover, .nm-legal .nm-legal-content .nm-legal-btns a.btn:focus-visible { color:#fff !important; text-decoration:none !important; }
.nm-legal-btns .btn .pxl--btn-text { color:#fff; text-decoration:none; }
.nm-404 .nm-legal-btns .btn { margin-top:0 !important; } /* le thème pousse .error404 .btn de 60 px */
.nm-legal-btns .btn.btn-block { width:auto; }

/* ---- DESKTOP ≥1201 ---- */
@media (min-width: 99999px) {
  .nm-legal .nm-post-hero--noimg .nm-post-hero-inner { min-height:480px; }
  .nm-legal .nm-post-hero--noimg .nm-post-hero-text { width:60%; padding-bottom:64px; }
  .nm-legal .nm-legal-content p, .nm-legal .nm-legal-content li { font-size:18px !important; line-height:1.6 !important; }
  .nm-legal .nm-legal-content p { margin:0 0 20px !important; }
  .nm-legal .nm-legal-content h2 { font-size:32px !important; line-height:1.2 !important; letter-spacing:-0.96px !important; margin:56px 0 20px !important; }
  .nm-legal .nm-legal-content h3, .nm-legal .nm-legal-content h4 { font-size:22px !important; line-height:1.25 !important; letter-spacing:-0.66px !important; margin:36px 0 14px !important; }
  .nm-legal .nm-legal-content table { font-size:16px; line-height:24px; }
  .nm-legal-btns { gap:16px; margin-top:12px; }
}
@media (min-width: 99999px) and (max-width: 1366px) {
  .nm-legal .nm-post-hero--noimg .nm-post-hero-inner { min-height:420px; }
  .nm-legal .nm-post-hero--noimg .nm-post-hero-text { width:640px; }
}

/* ---- MOBILE ≤1200 : base ---- */
@media (max-width: 99999px) {
  .nm-legal .nm-post-hero--noimg { min-height:360px; }
  .nm-legal .nm-post-hero--noimg .nm-post-hero-text { max-width:100%; gap:14px; }
  .nm-legal .nm-legal-content p, .nm-legal .nm-legal-content li { font-size:16px !important; line-height:22px !important; }
  .nm-legal .nm-legal-content h2 { font-size:28px !important; line-height:34px !important; letter-spacing:-0.03em !important; margin:36px 0 14px !important; }
  .nm-legal .nm-legal-content h3, .nm-legal .nm-legal-content h4 { font-size:22px !important; line-height:26px !important; letter-spacing:-0.03em !important; margin:28px 0 12px !important; }
  .nm-legal .nm-legal-content table { font-size:14px; line-height:20px; }
  .nm-legal .nm-legal-content th, .nm-legal .nm-legal-content td { padding:10px 10px; }
  .nm-legal-btns { flex-direction:column; align-items:stretch; }
  .nm-legal-btns .pxl-button, .nm-legal-btns .btn.btn-block { width:100%; }
}
/* ---- MOBILE ≤767 (vérif 1, 19/09) ---- */
@media (max-width: 767px) {
  /* boutons pleine largeur : pastille + calée à gauche, libellé centré (même dessin que .nm-btn du kit mobile) */
  .nm-legal-btns .btn.btn-block { justify-content:flex-start; padding-right:44px; }
  .nm-legal-btns .btn.btn-block .pxl--btn-icon { flex:0 0 40px; }
  .nm-legal-btns .btn.btn-block .pxl--btn-text { flex:1; text-align:center; }
  /* tableaux ≥3 colonnes : largeur minimale, l'enveloppe .nm-legal-table défile (2 colonnes : tiennent dans la carte) */
  .nm-legal .nm-legal-content .nm-legal-table[data-cols="3"] table { min-width:560px; }
  .nm-legal .nm-legal-content .nm-legal-table[data-cols="4"] table { min-width:680px; }
  .nm-legal .nm-legal-content .nm-legal-table[data-cols="5"] table, .nm-legal .nm-legal-content .nm-legal-table[data-cols="6"] table { min-width:800px; }
}
/* ---- TABLETTE PORTRAIT 768–1200 ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  .nm-legal .nm-post-hero--noimg { min-height:clamp(320px, 45svh, 420px); }
  .nm-legal .nm-post-hero--noimg .nm-post-hero-text { max-width:85%; }
  .nm-legal .nm-legal-content p, .nm-legal .nm-legal-content li { font-size:17px !important; line-height:1.6 !important; }
  .nm-legal .nm-legal-content h2 { font-size:30px !important; line-height:36px !important; margin:44px 0 16px !important; }
  .nm-legal .nm-legal-content table { font-size:15px; line-height:22px; }
  .nm-legal-btns { flex-direction:row; align-items:flex-start; }
  .nm-legal-btns .pxl-button, .nm-legal-btns .btn.btn-block { width:auto; }
}
/* ---- TABLETTE PAYSAGE 992–1200 ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-legal .nm-post-hero--noimg { min-height:clamp(360px, 45svh, 440px); }
  .nm-legal .nm-post-hero--noimg .nm-post-hero-text { max-width:70%; }
}


/* ============================================================
   NEOVA — MENU TABLETTE/MOBILE (19/09) — panneau #11188 (ouvert par le burger du header mobile #10947)
   Maquettes Figma « Menu ouvert NEOVA – Mobile » 2603:191 (≤767) et « – Tablette » 2604:191 (768–1200).
   Le thème masque le panneau ≤1200 (style.css:11006) : on le réaffiche et on le remet en page.
   Ouverture/fermeture = classe .active du thème (inchangée) ; sous-menus = bouton .nm-sub-toggle + li.nm-open (neova-menu.js, thème enfant) ;
   verrou de scroll = html/body.nm-menu-open. Pied (adresse + « S’inscrire ») = conteneur Elementor .nm-panel-foot ajouté au template.
   Desktop ≥1201 : strictement inchangé (seule règle : .nm-panel-foot / .nm-sub-toggle masqués).
   Écart tranché : la pastille « Fermer » se cale sur la position du bouton menu du kit (26/26, 32/44, 40/60) et non sur 16/16 – 24/24 de Figma → pas de saut à l'ouverture.
   Option non retenue (à trancher) : logo blanc en haut à gauche du panneau (présent dans Figma) — aucun logo n'existe dans le template, rien n'est ajouté par CSS.
   ============================================================ */
@media (min-width: 99999px) {
  .nm-panel-mobile-only, .nm-sub-toggle { display:none !important; }
}
@media (max-width: 99999px) {
  /* ---- verrou de scroll pendant l'ouverture (classe posée par neova-menu.js) ---- */
  html.nm-menu-open, body.nm-menu-open { overflow:hidden !important; overscroll-behavior:none; }
  body.nm-menu-open #ea11y-root { display:none !important; } /* widget accessibilité Elementor (bouton flottant) : masqué pendant l'ouverture, il chevauchait « S’inscrire » */
  /* curseur personnalisé du thème (démo) : inutile au doigt, et il passe au-dessus du panneau (z 999999) */
  .pxl-cursor { display:none !important; }

  /* ---- Panneau : réaffiché (bat style.css:11006), plein écran fixe, fond noir ---- */
  .pxl-hidden-panel-popup.pxl-hidden-template-11188 { display:block !important; height:100vh; height:100dvh; width:100%; left:0; right:0; top:0; }
  .pxl-hidden-template-11188 .pxl-popup--conent { background:#0a0a0a !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; height:100%; max-height:100vh; max-height:100dvh; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
  .pxl-hidden-template-11188 .pxl-conent-elementor, .pxl-hidden-template-11188 .elementor-11188 { width:100%; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d { --padding-top:0px; --padding-bottom:0px; --padding-left:0px; --padding-right:0px; padding:0 !important; background:#0a0a0a !important; width:100% !important; max-width:100% !important; min-height:100vh; min-height:100dvh; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { display:flex !important; flex-direction:column !important; align-items:stretch !important; gap:0 !important; width:100% !important; max-width:none !important; min-height:100vh; min-height:100dvh; padding:26px 20px 16px !important; padding-bottom:calc(16px + env(safe-area-inset-bottom, 0px)) !important; box-sizing:border-box; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-widget { margin:0 !important; width:100% !important; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-widget-container { margin:0 !important; }
  /* wow.js / GSAP ScrollTrigger du thème : le contenu du panneau ne doit jamais rester invisible */
  .elementor-11188 .scrolling-effect, .elementor-11188 .wow, .elementor-11188 .pxl-item--title, .elementor-11188 .pxl-nav-menu, .elementor-11188 .pxl-image-single, .elementor-11188 .pxl-item--inner { opacity:1 !important; transform:none !important; visibility:visible !important; animation:none !important; }

  /* ---- Barre haute : « Fermer » + pastille blanche (widget pxl_close_popup ef8fb80, remis dans le flux) ---- */
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-element.elementor-element-ef8fb80 { position:static !important; top:auto !important; right:auto !important; left:auto !important; --align-self:auto; align-self:stretch !important; display:flex !important; justify-content:flex-end !important; height:48px; margin:0 6px 40px 0 !important; width:auto !important; }
  .elementor-11188 .elementor-element-ef8fb80 .elementor-widget-container { display:flex; justify-content:flex-end; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup { display:inline-flex !important; flex-direction:row !important; align-items:center !important; gap:10px !important; margin:0 !important; padding:0 !important; color:#fff !important; cursor:pointer; -webkit-tap-highlight-color:transparent; outline:none; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-btn--text { font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; color:#fff !important; text-transform:none !important; margin:0 !important; padding:0 !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider { position:relative !important; width:48px !important; height:48px !important; flex:0 0 48px; border-radius:24px !important; background:#fff !important; overflow:hidden !important; margin:0 !important; transform:none !important; transition:none !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider .pxl-icon-line { display:none !important; }
  /* croix noire 16 px (FA5 « times ») dessinée en CSS */
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::before, .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::after { content:''; position:absolute; left:50%; top:50%; width:16px; height:2px; border-radius:1px; background:#0a0a0a; transform:translate(-50%,-50%) rotate(45deg); }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::after { transform:translate(-50%,-50%) rotate(-45deg); }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup:focus-visible .pxl-anchor-divider { box-shadow:0 0 0 2px #0a0a0a, 0 0 0 4px #fff; }

  /* ---- Titre « À vos clés. Prêts. Roulez. » ---- */
  .elementor-11188 .elementor-element-2f0e061 .pxl-heading, .elementor-11188 .elementor-element-2f0e061 .pxl-heading--inner { max-width:none !important; width:100%; }
  .elementor-11188 .elementor-element-2f0e061 .pxl-heading .pxl-item--title { font-family:var(--nm-sg) !important; font-weight:500 !important; font-size:28px !important; line-height:1.1 !important; letter-spacing:-0.03em !important; color:#fff !important; margin:0 !important; padding:0 !important; }
  .elementor-11188 .elementor-element-2f0e061 .pxl-heading .pxl-heading--text { color:#fff !important; background:none !important; -webkit-text-fill-color:#fff; }

  /* ---- Corps : liste au-dessus, photo (tablette) en dessous ---- */
  .elementor-11188 .elementor-element.elementor-element-fb631a8 { --flex-direction:column; --gap:40px 40px; --row-gap:40px; --column-gap:40px; --margin-top:32px; --margin-bottom:0px; --margin-left:0px; --margin-right:0px; flex-direction:column !important; gap:40px !important; margin:32px 0 0 !important; width:100% !important; max-width:100% !important; align-items:stretch !important; }
  .elementor-11188 .elementor-element.elementor-element-3ae941b { --width:100%; width:100% !important; max-width:100% !important; order:1; flex:0 0 auto !important; }
  .elementor-11188 .elementor-element.elementor-element-1d00c59 { --width:100%; width:100% !important; max-width:100% !important; order:2; flex:0 0 auto !important; display:none !important; } /* photo masquée en mobile */

  /* ---- Liste (pxl_menu 210460f, menu WordPress « Neova ») ---- */
  .pxl-hidden-template-11188 .pxl-nav-menu { width:100%; }
  .pxl-hidden-template-11188 .pxl-menu-primary { display:block !important; margin:0 !important; padding:0 !important; list-style:none !important; width:100%; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li { display:block !important; position:relative; margin:0 !important; padding:0 !important; border-bottom:1px solid #2a2a2a; }
  .elementor-11188 .elementor-element-210460f .pxl-nav-menu .pxl-menu-primary > li + li { margin-top:0 !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li > a { display:flex !important; align-items:center !important; padding:18px 56px 18px 0 !important; margin:0 !important; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:28px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:#fff !important; text-decoration:none !important; background:none !important; border:0 !important; -webkit-tap-highlight-color:transparent; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li:hover > a, .pxl-hidden-template-11188 .pxl-menu-primary > li.current-menu-item > a, .pxl-hidden-template-11188 .pxl-menu-primary > li.current-menu-ancestor > a { color:#fff !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary .pxl-menu-item-text { display:inline !important; position:static !important; padding:0 !important; margin:0 !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary .pxl-menu-item-text::before, .pxl-hidden-template-11188 .pxl-menu-primary .pxl-menu-item-text::after, .pxl-hidden-template-11188 .pxl-menu-primary li > a::before, .pxl-hidden-template-11188 .pxl-menu-primary li > a::after { display:none !important; content:none !important; }
  /* « + » du thème (dans le lien) et flèche ajoutée par theme.js : remplacés par le bouton .nm-sub-toggle */
  .pxl-hidden-template-11188 .pxl-menu-primary .pxl-arrow-plus, .pxl-hidden-template-11188 .pxl-menu-primary .pxl-arrow-toggle, .pxl-hidden-template-11188 .pxl-menu-primary .pxl-arrow-arrow { display:none !important; }
  .pxl-hidden-template-11188 .nm-sub-toggle { position:absolute; top:0; right:-16px; width:48px; height:64px; margin:0; padding:0; border:0; background:transparent; color:#999; cursor:pointer; display:flex; align-items:center; justify-content:center; -webkit-appearance:none; appearance:none; -webkit-tap-highlight-color:transparent; z-index:2; }
  .pxl-hidden-template-11188 .nm-sub-toggle::before, .pxl-hidden-template-11188 .nm-sub-toggle::after { content:''; position:absolute; left:50%; top:50%; width:16px; height:2px; border-radius:1px; background:currentColor; transform:translate(-50%,-50%); transition:transform .2s ease, background-color .2s ease; }
  .pxl-hidden-template-11188 .nm-sub-toggle::after { transform:translate(-50%,-50%) rotate(90deg); }
  .pxl-hidden-template-11188 li.nm-open > .nm-sub-toggle { color:#fff; }
  .pxl-hidden-template-11188 li.nm-open > .nm-sub-toggle::after { transform:translate(-50%,-50%) rotate(0deg); }
  .pxl-hidden-template-11188 .nm-sub-toggle:focus-visible { outline:2px solid #fff; outline-offset:-6px; border-radius:24px; }
  /* sous-menus : fermés par défaut (bat le slideToggle inline du thème), ouverts par li.nm-open */
  .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu { display:none !important; position:static !important; width:100%; min-width:0 !important; margin:0 !important; padding:0 !important; background:transparent !important; box-shadow:none !important; opacity:1 !important; visibility:visible !important; transform:none !important; transition:none !important; list-style:none !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li.nm-open > .sub-menu { display:flex !important; flex-direction:column; gap:14px; padding:2px 0 22px !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li { display:block !important; margin:0 !important; padding:0 !important; border:0 !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li > a { display:block !important; padding:0 !important; margin:0 !important; font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:18px !important; line-height:1 !important; letter-spacing:0 !important; color:#999 !important; text-decoration:none !important; background:none !important; border:0 !important; -webkit-tap-highlight-color:transparent; }
  .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li:hover > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current-menu-item > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current_page_item > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current-menu-ancestor > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current_page_ancestor > a { color:#999 !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary a:focus-visible { outline:2px solid #fff; outline-offset:4px; border-radius:4px; }

  /* ---- Pied : adresse + « S’inscrire » (conteneur .nm-panel-foot ajouté au template, calé en bas d'écran) ---- */
  .elementor-11188 .nm-panel-foot.e-con { --display:flex; --flex-direction:column; --gap:14px 14px; --row-gap:14px; --column-gap:14px; display:flex !important; flex-direction:column !important; align-items:stretch !important; gap:14px !important; margin:auto 0 0 !important; padding:40px 0 0 !important; width:100% !important; max-width:100% !important; }
  .elementor-11188 .nm-panel-addr, .elementor-11188 .nm-panel-addr p { font-family:var(--nm-sg) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:0 !important; color:#666 !important; margin:0 !important; padding:0 !important; }
  .elementor-11188 .nm-panel-cta.elementor-widget { width:100% !important; margin:0 !important; }
  .elementor-11188 .nm-panel-cta .elementor-button { text-decoration:none !important; }
  .elementor-11188 .nm-panel-cta .elementor-button:focus-visible { outline:2px solid #fff; outline-offset:3px; }
}
/* ---- TABLETTE 768–1200 (frame 834×1194) ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { padding:32px 32px 24px !important; padding-bottom:calc(24px + env(safe-area-inset-bottom, 0px)) !important; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-element.elementor-element-ef8fb80 { height:56px; margin:0 12px 40px 0 !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup { gap:12px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-btn--text { font-size:15px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider { width:56px !important; height:56px !important; flex:0 0 56px; border-radius:28px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::before, .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::after { width:18px; }
  .elementor-11188 .elementor-element-2f0e061 .pxl-heading .pxl-item--title { font-size:40px !important; }
  .elementor-11188 .elementor-element.elementor-element-fb631a8 { --margin-top:36px; margin-top:36px !important; }
  /* photo : pilule 20 px, hauteur de la frame (219), entre la liste et le pied */
  .elementor-11188 .elementor-element.elementor-element-1d00c59 { display:flex !important; }
  .elementor-11188 .elementor-element-d0ba664 .pxl-image-single, .elementor-11188 .elementor-element-d0ba664 .pxl-item--inner, .elementor-11188 .elementor-element-d0ba664 .pxl-item--image { width:100% !important; display:block; }
  .elementor-11188 .elementor-element-d0ba664 .pxl-image-single img { display:block; width:100% !important; height:219px !important; max-height:none !important; object-fit:cover !important; border-radius:20px !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li > a { padding:20px 64px 20px 0 !important; font-size:40px !important; }
  .pxl-hidden-template-11188 .nm-sub-toggle { right:-18px; width:56px; height:80px; }
  .pxl-hidden-template-11188 .nm-sub-toggle::before, .pxl-hidden-template-11188 .nm-sub-toggle::after { width:20px; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li.nm-open > .sub-menu { gap:16px; padding:2px 0 26px !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li > a { font-size:22px !important; }
  /* pied : bouton 360 × 56 à gauche, adresse à droite sur la même ligne */
  .elementor-11188 .nm-panel-foot.e-con { --flex-direction:row; flex-direction:row !important; justify-content:space-between !important; align-items:center !important; gap:24px !important; }
  .elementor-11188 .nm-panel-cta.elementor-widget { order:1; width:360px !important; flex:0 0 360px !important; }
  .elementor-11188 .nm-panel-addr { order:2; width:auto !important; flex:1 1 auto !important; text-align:right !important; }
  .elementor-11188 .nm-panel-addr, .elementor-11188 .nm-panel-addr p { font-size:13px !important; text-align:right !important; }
  .elementor-11188 .nm-panel-cta .elementor-button { width:360px !important; min-height:56px !important; padding:4px 52px 4px 4px !important; }
  .elementor-11188 .nm-panel-cta .elementor-button-icon { width:48px !important; height:48px !important; flex:0 0 48px !important; border-radius:24px !important; }
  .elementor-11188 .nm-panel-cta .elementor-button-text { font-size:15px !important; }
}
/* ---- TABLETTE PAYSAGE 992–1200 (pas de maquette : gouttières du kit 40/60, tailles de la frame 834) ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { padding:40px 40px 24px !important; padding-bottom:calc(24px + env(safe-area-inset-bottom, 0px)) !important; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-element.elementor-element-ef8fb80 { margin:0 20px 40px 0 !important; }
}


/* ============================================================
   NEOVA — ARTICLE : MÉDIAS (19/09) : blocs de l'éditeur dans le corps d'article (.nm-post-content, floka-child/single.php) + article vidéo
   Embeds YouTube / Vimeo / Dailymotion (figure.wp-block-embed > .wp-block-embed__wrapper > iframe, ou iframe nu de l'autoembed) : pleine
   colonne, 16/9, rayon 20 ; bloc Vidéo (figure.wp-block-video), [video] (.wp-video + mediaelement) : pleine colonne ; figure.wp-block-image
   pleine colonne r20 + légende 14 #888 ; galerie .wp-block-gallery en grille (3 colonnes ≥1201, 2 en tablette et mobile, columns-1 / -2
   respectées, gap 12, images cover r12) ; citation NEOVA (filet bleu 3 px, Space Grotesk 22 Regular, cite Inter 14 #888 sans capitales,
   style démo du thème et icône .pxl-blockquote-icon de theme.js retirés) ; séparateur, tableau, fichier, bouton ; garde-fous de largeur.
   Article vidéo (inc/neova-video.php) : section.nm-post-hero--video > a.nm-post-play (cercle blanc 72, play) ; au clic neova-video.js
   ajoute div.nm-post-player (iframe / video) et .nm-post-hero--playing (texte masqué, lecteur 16/9 sous le header). Cartes : span.nm-blog-play
   (pastille blanche 40 en bas à gauche de la photo) dans a.nm-blog-media / a.nm-slide-media. Mobile ≤767 : rayons 16, citation 18/26, légende 13.
   ============================================================ */
/* ---- garde-fous : rien ne dépasse de la carte blanche ---- */
.nm-post-body { overflow:hidden; }
.nm-post-content { overflow-wrap:anywhere; }
.nm-post-content > * { max-width:100%; }
.nm-post-content figure { max-width:100%; }

/* ---- embeds (bloc Intégration) : 16/9 pleine colonne, rayon 20 ---- */
.nm-post-content .wp-block-embed { margin:32px 0 !important; padding:0; width:100%; }
.nm-post-content .wp-block-embed .wp-block-embed__wrapper { position:relative; display:block; width:100%; overflow:hidden; border-radius:20px; background:#0a0a0a; }
.nm-post-content .wp-block-embed.is-type-video .wp-block-embed__wrapper, .nm-post-content .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper,
.nm-post-content .is-provider-youtube .wp-block-embed__wrapper, .nm-post-content .is-provider-vimeo .wp-block-embed__wrapper, .nm-post-content .is-provider-dailymotion .wp-block-embed__wrapper { aspect-ratio:16 / 9; }
.nm-post-content .wp-block-embed.wp-embed-aspect-4-3 .wp-block-embed__wrapper { aspect-ratio:4 / 3; }
.nm-post-content .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper { aspect-ratio:9 / 16; max-width:420px; margin:0 auto; }
.nm-post-content .wp-block-embed.wp-embed-aspect-1-1 .wp-block-embed__wrapper { aspect-ratio:1 / 1; }
.nm-post-content .wp-block-embed .wp-block-embed__wrapper::before { display:none !important; content:none !important; } /* le ratio est porté par aspect-ratio, pas par le padding de wp-block-library */
.nm-post-content .wp-block-embed.is-type-video .wp-block-embed__wrapper iframe, .nm-post-content .wp-block-embed.wp-has-aspect-ratio .wp-block-embed__wrapper iframe,
.nm-post-content .is-provider-youtube .wp-block-embed__wrapper iframe, .nm-post-content .is-provider-vimeo .wp-block-embed__wrapper iframe, .nm-post-content .is-provider-dailymotion .wp-block-embed__wrapper iframe,
.nm-post-content .wp-block-embed .wp-block-embed__wrapper video { position:absolute; inset:0; width:100% !important; height:100% !important; max-width:none; border:0; display:block; }
.nm-post-content .wp-block-embed:not(.is-type-video):not(.wp-has-aspect-ratio) .wp-block-embed__wrapper iframe { max-width:100%; display:block; margin:0 auto; } /* autres embeds (réseaux sociaux…) : largeur bornée, hauteur propre */
/* iframe nu (URL collée sans bloc → autoembed) : mêmes règles */
.nm-post-content > iframe, .nm-post-content > p > iframe { display:block; width:100% !important; max-width:100% !important; height:auto !important; aspect-ratio:16 / 9; border:0; border-radius:20px; margin:32px 0; background:#0a0a0a; }
.nm-post-content > p:has(> iframe:only-child) { margin:0 !important; }

/* ---- vidéo (bloc Vidéo, [video] + mediaelement, <video> nu) : pleine colonne ---- */
.nm-post-content .wp-block-video, .nm-post-content .wp-video { width:100% !important; max-width:100% !important; margin:32px 0 !important; }
.nm-post-content .wp-block-video video, .nm-post-content video.wp-video-shortcode, .nm-post-content > video, .nm-post-content > p > video { display:block; width:100% !important; max-width:100%; height:auto !important; border-radius:20px; background:#0a0a0a; }
.nm-post-content .mejs-container { width:100% !important; max-width:100%; border-radius:20px; overflow:hidden; background:#0a0a0a; }
.nm-post-content .wp-block-video figcaption { margin-top:12px; }

/* ---- image + légende ---- */
.nm-post-content figure.wp-block-image, .nm-post-content .wp-caption { margin:32px 0 !important; padding:0; width:100%; max-width:100%; }
.nm-post-content figure.wp-block-image img, .nm-post-content .wp-caption img { display:block; width:100%; height:auto; max-width:100%; margin:0 !important; border-radius:20px; }
.nm-post-content figure.wp-block-image.alignleft, .nm-post-content figure.wp-block-image.alignright { width:auto; max-width:50%; margin-top:6px !important; }
.nm-post-content figure.wp-block-image.alignleft { float:left; margin-right:24px !important; }
.nm-post-content figure.wp-block-image.alignright { float:right; margin-left:24px !important; }
.nm-post-content figure.wp-block-image.alignleft img, .nm-post-content figure.wp-block-image.alignright img { width:auto; }
.nm-post-content figcaption, .nm-post-content .wp-element-caption, .nm-post-content .wp-caption-text { display:block; margin:12px 0 0 !important; padding:0 !important; font-family:'Inter',sans-serif !important; font-weight:400 !important; font-style:normal !important; font-size:14px !important; line-height:20px !important; letter-spacing:0 !important; color:#888888 !important; text-align:left !important; }
.nm-post-content figcaption a { color:#00339f !important; }

/* ---- galerie : grille (3 colonnes desktop), images cover r12 ---- */
.nm-post-content .wp-block-gallery { display:grid !important; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px !important; align-items:start; margin:32px 0 !important; padding:0; width:100%; max-width:100%; }
.nm-post-content .wp-block-gallery.columns-1 { grid-template-columns:minmax(0, 1fr); }
.nm-post-content .wp-block-gallery.columns-2 { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.nm-post-content .wp-block-gallery.columns-4 { grid-template-columns:repeat(4, minmax(0, 1fr)); }
.nm-post-content .wp-block-gallery > figure.wp-block-image, .nm-post-content .wp-block-gallery > .blocks-gallery-item, .nm-post-content .wp-block-gallery .blocks-gallery-grid > .blocks-gallery-item { display:block; width:auto !important; max-width:none !important; flex:none !important; float:none !important; margin:0 !important; padding:0; min-width:0; }
.nm-post-content .wp-block-gallery .blocks-gallery-grid { display:contents; }
.nm-post-content .wp-block-gallery figure.wp-block-image img, .nm-post-content .wp-block-gallery .blocks-gallery-item img { display:block; width:100% !important; height:auto; max-width:100%; margin:0 !important; border-radius:12px !important; object-fit:cover; }
.nm-post-content .wp-block-gallery.is-cropped figure.wp-block-image img, .nm-post-content .wp-block-gallery.is-cropped .blocks-gallery-item img { aspect-ratio:4 / 3; height:auto !important; flex:none !important; }
.nm-post-content .wp-block-gallery.is-cropped.columns-1 figure.wp-block-image img { aspect-ratio:16 / 10; }
.nm-post-content .wp-block-gallery > figure.wp-block-image > a { display:block; }
.nm-post-content .wp-block-gallery figure.wp-block-image figcaption { position:static !important; width:auto; margin:8px 0 0 !important; padding:0 !important; background:none !important; font-size:13px !important; line-height:18px !important; color:#888888 !important; text-shadow:none; }
.nm-post-content .wp-block-gallery > figcaption { grid-column:1 / -1; margin-top:0 !important; }

/* ---- citation : filet bleu, Space Grotesk 22 Regular, cite Inter 14 #888 (le style démo du thème — fond, dégradés, capitales, icône — est retiré) ---- */
.nm-post-content blockquote, .nm-post-content blockquote:not(.pxl-blockquote), .nm-post-content blockquote.wp-block-quote, .nm-post-content .wp-block-pullquote { position:relative; margin:36px 0 !important; padding:4px 0 4px 24px !important; border:0 !important; border-left:3px solid #00339f !important; border-radius:0 !important; background:none !important; overflow:visible !important; font-weight:400 !important; text-align:left !important; z-index:auto; }
.nm-post-content blockquote::before, .nm-post-content blockquote::after, .nm-post-content .wp-block-pullquote::before, .nm-post-content .wp-block-pullquote::after { display:none !important; content:none !important; }
.nm-post-content blockquote .pxl-blockquote-icon, .nm-post-content .wp-block-pullquote .pxl-blockquote-icon { display:none !important; }
.nm-post-content .wp-block-pullquote blockquote { margin:0 !important; padding:0 !important; border:0 !important; }
.nm-post-content blockquote p, .nm-post-content .wp-block-pullquote p { font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:22px !important; line-height:30px !important; letter-spacing:-0.02em !important; color:#0a0a0a !important; margin:0 0 12px !important; }
.nm-post-content blockquote p:last-of-type, .nm-post-content .wp-block-pullquote p:last-of-type { margin-bottom:0 !important; }
.nm-post-content blockquote cite, .nm-post-content blockquote:not(.pxl-blockquote) cite, .nm-post-content .wp-block-pullquote cite { display:block !important; margin:12px 0 0 !important; padding:0 !important; font-family:'Inter',sans-serif !important; font-weight:400 !important; font-style:normal !important; font-size:14px !important; line-height:20px !important; letter-spacing:0 !important; text-transform:none !important; color:#888888 !important; background:none !important; -webkit-background-clip:border-box !important; background-clip:border-box !important; -webkit-text-fill-color:#888888 !important; }
.nm-post-content blockquote cite::before, .nm-post-content blockquote cite::after { display:none !important; content:none !important; }

/* ---- séparateur, tableau, fichier, bouton ---- */
.nm-post-content hr, .nm-post-content .wp-block-separator { display:block; width:100% !important; height:0 !important; margin:32px 0 !important; border:0 !important; border-top:1px solid #e5e5e5 !important; background:none !important; opacity:1 !important; }
.nm-post-content .wp-block-table { margin:32px 0 !important; overflow-x:auto; -webkit-overflow-scrolling:touch; }
.nm-post-content .wp-block-table table, .nm-post-content table { width:100%; min-width:0; border-collapse:collapse; margin:0; font-family:'Inter',sans-serif !important; font-size:15px; line-height:22px; }
.nm-post-content .wp-block-table th, .nm-post-content .wp-block-table td, .nm-post-content th, .nm-post-content td { text-align:left; vertical-align:top; padding:12px 14px !important; border:0 !important; border-bottom:1px solid #e5e5e5 !important; color:#666666; }
.nm-post-content .wp-block-table th, .nm-post-content th { font-weight:600; color:#0a0a0a; border-bottom:2px solid #0a0a0a !important; }
.nm-post-content .wp-block-table.is-style-stripes tbody tr:nth-child(odd) { background:#f5f5f5; }
.nm-post-content .wp-block-table figcaption { margin-top:10px !important; }
.nm-post-content .wp-block-file { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin:24px 0 !important; font-family:'Inter',sans-serif !important; font-size:16px; }
.nm-post-content .wp-block-file a:not(.wp-block-file__button) { color:#00339f !important; }
.nm-post-content .wp-block-buttons { display:flex; flex-wrap:wrap; gap:12px; margin:32px 0 !important; }
.nm-post-content .wp-block-button { margin:0 !important; }
.nm-post-content .wp-block-button__link, .nm-post-content .wp-block-file__button { display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:0 26px !important; border:0 !important; border-radius:40px !important; background:#00339f !important; color:#fff !important; font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; text-transform:uppercase !important; text-decoration:none !important; transition:background .2s ease; }
.nm-post-content .wp-block-button__link:hover, .nm-post-content .wp-block-button__link:focus-visible, .nm-post-content .wp-block-file__button:hover, .nm-post-content .wp-block-file__button:focus-visible { background:#0a0a0a !important; color:#fff !important; }
.nm-post-content .wp-block-button.is-style-outline .wp-block-button__link { background:none !important; color:#00339f !important; box-shadow:inset 0 0 0 2px #00339f; }
.nm-post-content .wp-block-button.is-style-outline .wp-block-button__link:hover { background:#00339f !important; color:#fff !important; }

/* ---- hero d'un article vidéo : affiche + bouton lecture (façade), puis lecteur 16/9 au clic ---- */
.nm-post-hero--video .nm-post-play { position:absolute; z-index:3; left:50%; top:50%; transform:translate(-50%, -50%); display:flex; align-items:center; justify-content:center; width:72px; height:72px; margin:0; padding:0; border-radius:50%; background:#fff; color:#0a0a0a !important; text-decoration:none !important; box-shadow:0 10px 30px rgba(0,0,0,.28); transition:background .2s ease, color .2s ease, transform .25s ease; cursor:pointer; }
.nm-post-hero--video .nm-post-play i { font-size:22px; line-height:1; margin-left:4px; }
.nm-post-hero--video .nm-post-play:hover, .nm-post-hero--video .nm-post-play:focus-visible { background:#00339f; color:#fff !important; transform:translate(-50%, -50%) scale(1.06); }
.nm-post-hero--video .nm-post-play:focus-visible { outline:2px solid #fff; outline-offset:4px; }
.nm-post-player { position:relative; z-index:4; width:100%; aspect-ratio:16 / 9; overflow:hidden; border-radius:20px; background:#0a0a0a; }
.nm-post-player iframe, .nm-post-player video { position:absolute; inset:0; width:100% !important; height:100% !important; max-width:none; border:0; display:block; background:#0a0a0a; }
.nm-post-hero--playing { display:block !important; min-height:0 !important; }
.nm-post-hero--playing .nm-post-hero-inner, .nm-post-hero--playing .nm-post-play, .nm-post-hero--playing .nm-post-hero-img { display:none !important; }
.nm-post-hero--playing::before, .nm-post-hero--playing::after { display:none !important; }

/* ---- cartes (grille du blog, carrousel « Nos conseils ») : pastille lecture ---- */
.nm-blog-media, .nm-slide-media { position:relative; }
.nm-blog-play { position:absolute; left:16px; bottom:16px; z-index:2; display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:20px; background:#fff; color:#0a0a0a; box-shadow:0 4px 14px rgba(0,0,0,.18); pointer-events:none; }
.nm-blog-play i { font-size:12px; line-height:1; margin-left:2px; }

/* ---- DESKTOP ≥1201 : lecteur sous le header transparent (logo + menu), largeur du hero moins la gouttière des pages ---- */
@media (min-width: 99999px) {
  .nm-post-hero--playing { padding:130px 100px 60px !important; }
  .nm-post-hero--playing .nm-post-player { max-width:1312px; margin:0 auto; }
}
/* ---- MOBILE ≤1200 : carte hero → lecteur sous la pilule du header (26 + 48) ---- */
@media (max-width: 99999px) {
  .nm-post-hero--playing { padding:78px 12px 12px !important; aspect-ratio:auto; }
  .nm-post-hero--playing .nm-post-player { border-radius:14px; }
  .nm-post-content .wp-block-gallery, .nm-post-content .wp-block-gallery.columns-4 { grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .nm-post-content .wp-block-gallery.columns-1 { grid-template-columns:minmax(0, 1fr); }
  .nm-post-content .wp-block-embed { margin:28px 0 !important; }
  .nm-post-content figure.wp-block-image, .nm-post-content .wp-block-video, .nm-post-content .wp-video, .nm-post-content .wp-block-gallery { margin:28px 0 !important; }
  .nm-post-content blockquote, .nm-post-content blockquote:not(.pxl-blockquote), .nm-post-content .wp-block-pullquote { margin:32px 0 !important; padding-left:20px !important; }
  .nm-post-content blockquote p, .nm-post-content .wp-block-pullquote p { font-size:20px !important; line-height:28px !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  .nm-post-hero--playing { padding:92px 16px 16px !important; }
  .nm-post-hero--playing .nm-post-player { border-radius:16px; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .nm-post-hero--playing { padding:104px 20px 20px !important; }
  .nm-post-content .wp-block-gallery { grid-template-columns:repeat(3, minmax(0, 1fr)); }
}
/* ---- MOBILE ≤767 : rayons 16, citation 18/26, légende 13, galerie 2 colonnes (columns-1 : une seule) ---- */
@media (max-width: 767px) {
  .nm-post-content .wp-block-embed .wp-block-embed__wrapper, .nm-post-content > iframe, .nm-post-content > p > iframe, .nm-post-content .wp-block-video video, .nm-post-content video.wp-video-shortcode, .nm-post-content .mejs-container, .nm-post-content figure.wp-block-image img, .nm-post-content .wp-caption img { border-radius:16px; }
  .nm-post-content .wp-block-embed.wp-embed-aspect-9-16 .wp-block-embed__wrapper { max-width:100%; }
  .nm-post-content .wp-block-gallery { gap:10px !important; }
  .nm-post-content .wp-block-gallery figure.wp-block-image img, .nm-post-content .wp-block-gallery .blocks-gallery-item img { border-radius:10px !important; }
  .nm-post-content figure.wp-block-image.alignleft, .nm-post-content figure.wp-block-image.alignright { float:none; width:100%; max-width:100%; margin:28px 0 !important; }
  .nm-post-content figure.wp-block-image.alignleft img, .nm-post-content figure.wp-block-image.alignright img { width:100%; }
  .nm-post-content figcaption, .nm-post-content .wp-element-caption, .nm-post-content .wp-caption-text { font-size:13px !important; line-height:18px !important; margin-top:10px !important; }
  .nm-post-content blockquote p, .nm-post-content .wp-block-pullquote p { font-size:18px !important; line-height:26px !important; }
  .nm-post-content blockquote cite, .nm-post-content blockquote:not(.pxl-blockquote) cite, .nm-post-content .wp-block-pullquote cite { font-size:13px !important; line-height:18px !important; }
  .nm-post-content .wp-block-table table, .nm-post-content table { font-size:14px; line-height:20px; }
  .nm-post-content .wp-block-table th, .nm-post-content .wp-block-table td, .nm-post-content th, .nm-post-content td { padding:10px 10px !important; }
  .nm-post-content .wp-block-button__link, .nm-post-content .wp-block-file__button { width:100%; }
  .nm-post-hero--video .nm-post-play { width:56px; height:56px; }
  .nm-post-hero--video .nm-post-play i { font-size:18px; margin-left:3px; }
  .nm-post-hero--playing { padding:84px 10px 10px !important; }
  .nm-post-hero--playing .nm-post-player { border-radius:12px; }
  .nm-blog-play { left:12px; bottom:12px; width:36px; height:36px; }
  .nm-blog-play i { font-size:11px; }
}

/* ============================================================
   NEOVA — MENU TABLETTE : VÉRIFICATION 1 (19/09) — hauteur d'écran plus courte que la frame Figma 834×1194
   À 768×1024 (iPad portrait) le contenu du panneau faisait 1194 px : photo et bouton « S’inscrire » passaient sous le pli
   (atteignables seulement par défilement). La photo (219 px dans la frame) s'adapte à la hauteur disponible
   (le reste du panneau occupe 975 px : 1194 − 219), et disparaît quand il reste moins de 120 px ; le pied reste ainsi
   calé en bas d'écran, comme dans la maquette. Desktop ≥1201 : hors media query, inchangé.
   ============================================================ */
@media (min-width: 768px) and (max-width: 99999px) and (max-height: 1193px) {
  .elementor-11188 .elementor-element-d0ba664 .pxl-image-single img { height:clamp(120px, calc(100vh - 975px), 219px) !important; height:clamp(120px, calc(100dvh - 975px), 219px) !important; }
}
@media (min-width: 768px) and (max-width: 99999px) and (max-height: 1094px) {
  .elementor-11188 .elementor-element.elementor-element-1d00c59 { display:none !important; }
}

/* ============================================================
   NEOVA — MENU TABLETTE/MOBILE : LOGO (19/09) — logo blanc en haut à gauche du panneau, comme dans les frames Figma
   2603:191 / 2604:191. Widget image #53e24ec (nm-panel-logo nm-panel-mobile-only) ajouté au template #11188 ;
   posé en absolu dans le conteneur b3a562d, centré sur la pastille « Fermer ». Desktop ≥1201 : masqué (nm-panel-mobile-only).
   ============================================================ */
@media (max-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d { position:relative; }
  .elementor-11188 .elementor-element.elementor-element-53e24ec { position:absolute !important; top:37px; left:20px; width:104px !important; max-width:104px; margin:0 !important; padding:0 !important; z-index:2; }
  .elementor-11188 .elementor-element-53e24ec .elementor-widget-container, .elementor-11188 .elementor-element-53e24ec img { display:block; width:104px; height:auto; margin:0; padding:0; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-53e24ec { top:45px; left:32px; width:125px !important; max-width:125px; }
  .elementor-11188 .elementor-element-53e24ec .elementor-widget-container, .elementor-11188 .elementor-element-53e24ec img { width:125px; }
}
@media (min-width: 992px) and (max-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-53e24ec { top:53px; left:40px; }
}

/* ============================================================
   NEOVA — HERO PLEIN ÉCRAN MOBILE + TABLETTE (20/09) — règle Frédéric : le hero s'étend jusqu'aux bords, sans coins
   arrondis, sur toute la hauteur de l'écran, comme sur desktop. Le hero mobile (.nm-root .nm-hero) était une carte
   insérée de 10 px (16 en tablette) avec rayon 20 et hauteur fixe 700/560 : on annule l'inset par des marges négatives,
   rayon 0, hauteur = écran (dvh, repli vh). Le contenu reste calé en bas (flex-end déjà en place). Desktop ≥1201 : inchangé.
   ============================================================ */
@media (max-width: 767px) {
  .nm-root .nm-hero.e-con { margin: -10px -10px 0 !important; width: calc(100% + 20px) !important; max-width: none !important; border-radius: 0 !important; min-height: 100vh !important; min-height: 100dvh !important; }
  .nm-root .nm-hero.e-con > .e-con-inner { min-height: 100vh; min-height: 100dvh; border-radius: 0 !important; }
}
@media (min-width: 768px) and (max-width: 99999px) {
  .nm-root .nm-hero.e-con { margin: -16px -16px 0 !important; width: calc(100% + 32px) !important; max-width: none !important; border-radius: 0 !important; min-height: 100vh !important; min-height: 100dvh !important; }
  .nm-root .nm-hero.e-con > .e-con-inner { min-height: 100vh; min-height: 100dvh; border-radius: 0 !important; }
}

/* ============================================================
   NEOVA — MENU V2 (20/09) — panneau #11188 (.pxl-hidden-template-11188) redessiné par Frédéric dans Figma pour les trois formats :
   « Menu ouvert » mobile 390×844, tablette 834×1194, desktop 1512×982. Fond #0a0a0a, filets 1 px #2a2a2a, Space Grotesk (SG), Inter, Font Awesome 5 (FA).
   Ce bloc remplace, par des règles plus tardives / plus spécifiques / !important, les blocs « MENU TABLETTE/MOBILE (19/09) », « VÉRIFICATION 1 » et
   « LOGO » qui restent en place et ne sont pas réécrits. Éléments du template : logo #53e24ec (affiché partout), « Fermer » #ef8fb80 (pastille 48
   blanche, × FA 16 noir, calée sur le bouton menu du header : 26/26 mobile, 44/32 tablette, 60/40 ≥992, centre du burger desktop = largeur − 212 / 56),
   titre #2f0e061 (desktop seulement, en bas à gauche), corps #fb631a8 (photo #1d00c59 desktop seulement, 650×427 r20 calée à droite ; liste #3ae941b /
   pxl_menu #210460f), pied v1 #e7f00a1 (adresse + « S’inscrire ») masqué partout, nouveau conteneur .nm-panel-legal #c2e0a11 (liens sociaux
   .nm-panel-social Inter 15 blanc + ligne légale .nm-panel-copy Inter 10/11/12 #666).
   Accordéon (neova-menu.js V2, thème enfant) sur tous les formats : pour une entrée à sous-pages, le tap/clic sur TOUTE la ligne (libellé + icône
   FA plus #999 / minus blanc) déplie/replie sans naviguer ; la page parente devient le premier lien de la sous-liste (li.nm-sub-parent : « Toutes les
   formations », « Le financement », « L’auto-école »). .sub-menu fermé sauf li.nm-open — le survol du thème et son slideToggle (theme.js « Menu
   Vertical ») sont ainsi neutralisés sur desktop. Verrou de scroll html/body.nm-menu-open partout. En fin de bloc : sous-menus déroulants du header
   desktop #3944 (pxl_list #cc0fe45, ul.nm-head-sub injecté par JS).
   Logo et pastille ≤1200 : calés sur le logo et le bouton menu du header mobile #10947 (rien ne saute à l'ouverture) — écart assumé vs Figma
   (mobile 16/25 → 26/34 ; tablette 32/34 → 44/36). Desktop : logo 96/40 (Figma), pastille sur le burger réel du header #3944.
   ============================================================ */
/* ---- commun (tous formats) ---- */
.pxl-hidden-template-11188 { --nm2-sg:'SpaceGrotesk','Space Grotesk',sans-serif; --nm2-inter:'Inter',sans-serif; --nm2-fa:'Font Awesome 5 Free'; }
html.nm-menu-open, body.nm-menu-open { overflow:hidden !important; overscroll-behavior:none; }
body.nm-menu-open #ea11y-root { display:none !important; }
.pxl-hidden-panel-popup.pxl-hidden-template-11188 { display:block !important; height:100vh; height:100dvh; width:100%; left:0; right:0; top:0; }
.pxl-hidden-template-11188 .pxl-popup--conent { background:#0a0a0a !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; height:100%; max-height:100vh; max-height:100dvh; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
.pxl-hidden-template-11188 .pxl-conent-elementor, .pxl-hidden-template-11188 .elementor-11188 { width:100%; }
.elementor-11188 .elementor-element.elementor-element-b3a562d { position:relative; --padding-top:0px; --padding-bottom:0px; --padding-left:0px; --padding-right:0px; padding:0 !important; background:#0a0a0a !important; width:100% !important; max-width:100% !important; min-height:100vh; min-height:100dvh; }
.elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { display:flex !important; flex-direction:column !important; align-items:stretch !important; gap:0 !important; width:100% !important; max-width:none !important; min-height:100vh; min-height:100dvh; box-sizing:border-box; }
.elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-widget { margin:0 !important; width:100% !important; }
.elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-widget-container { margin:0 !important; }
.elementor-11188 .scrolling-effect, .elementor-11188 .wow, .elementor-11188 .pxl-item--title, .elementor-11188 .pxl-nav-menu, .elementor-11188 .pxl-image-single, .elementor-11188 .pxl-item--inner { opacity:1 !important; transform:none !important; visibility:visible !important; animation:none !important; }
/* pied v1 (adresse + « S’inscrire ») : plus dans la maquette, sur aucun format */
.elementor-11188 .elementor-element.elementor-element-e7f00a1 { display:none !important; }

/* ---- logo (widget image #53e24ec) : affiché partout, posé en absolu sur la position du logo du header ---- */
.elementor-11188 .elementor-element.elementor-element-53e24ec { display:block !important; position:absolute !important; top:34px; left:26px; width:119px !important; max-width:119px; margin:0 !important; padding:0 !important; z-index:3; }
.elementor-11188 .elementor-element-53e24ec .elementor-widget-container, .elementor-11188 .elementor-element-53e24ec img { display:block; width:119px; height:auto; margin:0; padding:0; }

/* ---- « Fermer » + pastille (widget pxl_close_popup #ef8fb80) : absolu, calé sur le bouton menu du header ---- */
.elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-element.elementor-element-ef8fb80 { position:absolute !important; top:26px !important; right:26px !important; left:auto !important; bottom:auto !important; display:block !important; height:48px !important; width:auto !important; margin:0 !important; padding:0 !important; z-index:4; }
.elementor-11188 .elementor-element-ef8fb80 .elementor-widget-container { display:flex; justify-content:flex-end; }
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup { display:inline-flex !important; flex-direction:row !important; align-items:center !important; gap:10px !important; margin:0 !important; padding:0 !important; color:#fff !important; cursor:pointer; -webkit-tap-highlight-color:transparent; outline:none; }
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup:hover { color:#fff !important; }
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-btn--text { font-family:var(--nm2-sg) !important; font-weight:500 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; color:#fff !important; text-transform:none !important; margin:0 !important; padding:0 !important; }
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider { position:relative !important; display:flex !important; align-items:center !important; justify-content:center !important; width:48px !important; height:48px !important; flex:0 0 48px !important; border-radius:24px !important; background:#fff !important; overflow:hidden !important; margin:0 !important; transform:none !important; transition:none !important; color:#0a0a0a; }
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider .pxl-icon-line { display:none !important; }
/* × = FA5 « times » 16 px noir (remplace les deux barres CSS du bloc 19/09). Pour pousser le kit : update_post_meta avec wp_slash(), sinon les antislashs des glyphes FA (\f00d) sont perdus */
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::before { content:'\f00d'; position:static !important; width:auto !important; height:auto !important; border-radius:0 !important; background:none !important; transform:none !important; font-family:var(--nm2-fa) !important; font-weight:900 !important; font-size:16px !important; line-height:1 !important; color:#0a0a0a !important; }
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::after { display:none !important; content:none !important; }
.elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup:focus-visible .pxl-anchor-divider { box-shadow:0 0 0 2px #0a0a0a, 0 0 0 4px #fff; }

/* ---- titre « À vos clés. Prêts. Roulez. » : desktop seulement (voir plus bas), masqué ≤1200 ---- */
.elementor-11188 .elementor-element-2f0e061 .pxl-heading, .elementor-11188 .elementor-element-2f0e061 .pxl-heading--inner { max-width:none !important; width:100%; }
.elementor-11188 .elementor-element-2f0e061 .pxl-heading .pxl-item--title { font-family:var(--nm2-sg) !important; font-weight:500 !important; font-size:23px !important; line-height:1.1 !important; letter-spacing:-0.03em !important; color:#fff !important; margin:0 !important; padding:0 !important; text-transform:none !important; }
.elementor-11188 .elementor-element-2f0e061 .pxl-heading .pxl-heading--text { color:#fff !important; background:none !important; -webkit-text-fill-color:#fff; }

/* ---- corps (#fb631a8) : liste (#3ae941b) ; photo (#1d00c59) desktop seulement ---- */
.elementor-11188 .elementor-element.elementor-element-fb631a8 { --margin-top:0px; --margin-bottom:0px; --margin-left:0px; --margin-right:0px; --gap:0px 0px; --row-gap:0px; --column-gap:0px; margin:0 !important; padding:0 !important; gap:0 !important; width:100% !important; max-width:100% !important; }
.elementor-11188 .elementor-element.elementor-element-3ae941b { --width:100%; width:100% !important; max-width:100% !important; flex:0 0 auto !important; padding:0 !important; }
.elementor-11188 .elementor-element.elementor-element-1d00c59 { display:none !important; }

/* ---- liste (pxl_menu #210460f, menu WordPress « Neova » : Accueil, Nos formations +, Méthode, Financement +, L’auto-école +, Blog) ---- */
.pxl-hidden-template-11188 .pxl-nav-menu { width:100%; padding:0 !important; }
.pxl-hidden-template-11188 .pxl-menu-primary { display:block !important; margin:0 !important; padding:0 !important; list-style:none !important; width:100%; }
.pxl-hidden-template-11188 .pxl-menu-primary > li { display:block !important; position:relative; margin:0 !important; padding:0 !important; border-bottom:1px solid #2a2a2a; }
.pxl-hidden-template-11188 .pxl-menu-primary > li::before, .pxl-hidden-template-11188 .pxl-menu-primary > li::after { display:none !important; content:none !important; }
.elementor-11188 .elementor-element-210460f .pxl-nav-menu .pxl-menu-primary > li + li { margin-top:0 !important; }
.pxl-hidden-template-11188 .pxl-menu-primary > li > a { position:relative; display:flex !important; align-items:center !important; padding:18px 56px 18px 0 !important; margin:0 !important; font-family:var(--nm2-sg) !important; font-weight:400 !important; font-size:28px !important; line-height:1 !important; letter-spacing:-0.03em !important; color:#fff !important; text-decoration:none !important; text-transform:none !important; background:none !important; border:0 !important; -webkit-tap-highlight-color:transparent; }
.pxl-hidden-template-11188 .pxl-menu-primary > li:hover > a, .pxl-hidden-template-11188 .pxl-menu-primary > li > a:hover, .pxl-hidden-template-11188 .pxl-menu-primary > li > a.active, .pxl-hidden-template-11188 .pxl-menu-primary > li.current-menu-item > a, .pxl-hidden-template-11188 .pxl-menu-primary > li.current_page_item > a, .pxl-hidden-template-11188 .pxl-menu-primary > li.current-menu-ancestor > a, .pxl-hidden-template-11188 .pxl-menu-primary > li.current_page_ancestor > a { color:#fff !important; }
.pxl-hidden-template-11188 .pxl-menu-primary .pxl-menu-item-text { display:inline !important; position:static !important; padding:0 !important; margin:0 !important; }
.pxl-hidden-template-11188 .pxl-menu-primary .pxl-menu-item-text::before, .pxl-hidden-template-11188 .pxl-menu-primary .pxl-menu-item-text::after, .pxl-hidden-template-11188 .pxl-menu-primary li > a::before, .pxl-hidden-template-11188 .pxl-menu-primary li > a::after { display:none !important; content:none !important; }
.pxl-hidden-template-11188 .pxl-menu-primary .pxl-arrow-plus, .pxl-hidden-template-11188 .pxl-menu-primary .pxl-arrow-toggle, .pxl-hidden-template-11188 .pxl-menu-primary .pxl-arrow-arrow, .pxl-hidden-template-11188 .pxl-menu-primary .pxl-menu-toggle { display:none !important; }
/* bouton +/− (neova-menu.js) : FA5 « plus » #999 / « minus » blanc, 16 px ; zone tactile 48×64 à droite */
.pxl-hidden-template-11188 .nm-sub-toggle { position:absolute; top:0; right:-16px; width:48px; height:64px; margin:0; padding:0; border:0; background:transparent; color:#999; cursor:pointer; display:flex; align-items:center; justify-content:center; -webkit-appearance:none; appearance:none; -webkit-tap-highlight-color:transparent; z-index:2; }
.pxl-hidden-template-11188 .nm-sub-toggle::before { content:'\f067'; position:static !important; left:auto; top:auto; width:auto !important; height:auto !important; border-radius:0 !important; background:none !important; transform:none !important; transition:none !important; font-family:var(--nm2-fa) !important; font-weight:900 !important; font-size:16px !important; line-height:1 !important; color:currentColor; }
.pxl-hidden-template-11188 .nm-sub-toggle::after, .pxl-hidden-template-11188 li.nm-open > .nm-sub-toggle::after { display:none !important; content:none !important; }
.pxl-hidden-template-11188 li.nm-open > .nm-sub-toggle { color:#fff; }
.pxl-hidden-template-11188 li.nm-open > .nm-sub-toggle::before { content:'\f068'; }
.pxl-hidden-template-11188 .nm-sub-toggle:focus-visible { outline:2px solid #fff; outline-offset:-6px; border-radius:24px; }
/* sous-menus : fermés par défaut (bat le survol et le slideToggle inline du thème), ouverts par li.nm-open */
.pxl-hidden-template-11188 .pxl-menu-primary .sub-menu, .pxl-hidden-template-11188 .pxl-menu-primary > li:hover > .sub-menu, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu.active { display:none !important; position:static !important; width:100%; min-width:0 !important; height:auto !important; margin:0 !important; padding:0 !important; background:transparent !important; box-shadow:none !important; opacity:1 !important; visibility:visible !important; transform:none !important; transition:none !important; list-style:none !important; overflow:visible !important; }
.pxl-hidden-template-11188 .pxl-menu-primary > li.nm-open > .sub-menu { display:flex !important; flex-direction:column; gap:14px; padding:2px 0 22px !important; }
.pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li { display:block !important; margin:0 !important; padding:0 !important; border:0 !important; white-space:normal !important; }
.pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li > a { display:block !important; padding:0 !important; margin:0 !important; font-family:var(--nm2-sg) !important; font-weight:400 !important; font-size:18px !important; line-height:1 !important; letter-spacing:0 !important; color:#999 !important; text-decoration:none !important; text-transform:none !important; background:none !important; border:0 !important; -webkit-tap-highlight-color:transparent; }
.pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current-menu-item > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current_page_item > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current-menu-ancestor > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li.current_page_ancestor > a { color:#999 !important; }
.pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li:hover > a, .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li > a:hover { color:#fff !important; }
.pxl-hidden-template-11188 .pxl-menu-primary a:focus-visible { outline:2px solid #fff; outline-offset:4px; border-radius:4px; }

/* ---- pied : liens sociaux + ligne légale (conteneur .nm-panel-legal #c2e0a11, widgets HTML) ---- */
.elementor-11188 .nm-panel-legal.e-con { --display:flex; --flex-direction:column; --gap:0px 0px; --row-gap:0px; --column-gap:0px; --padding-top:0px; --padding-bottom:0px; --padding-left:0px; --padding-right:0px; display:flex !important; flex-direction:column !important; align-items:center !important; gap:13px !important; margin:auto 0 0 !important; padding:40px 0 0 !important; width:100% !important; max-width:100% !important; min-height:0 !important; }
.elementor-11188 .nm-panel-legal .elementor-widget, .elementor-11188 .nm-panel-legal .elementor-widget-container { width:100% !important; margin:0 !important; padding:0 !important; }
.elementor-11188 .nm-panel-social { display:flex; flex-direction:row; justify-content:center; align-items:center; gap:24px; margin:0; padding:0; }
.elementor-11188 .nm-panel-social a { font-family:var(--nm2-inter) !important; font-weight:400 !important; font-size:15px !important; line-height:18px !important; letter-spacing:0 !important; color:#fff !important; text-decoration:none !important; text-transform:none !important; }
.elementor-11188 .nm-panel-social a:hover, .elementor-11188 .nm-panel-social a:focus-visible { text-decoration:underline !important; text-underline-offset:3px; outline:none; }
.elementor-11188 .nm-panel-copy { margin:0 !important; padding:0 !important; font-family:var(--nm2-inter) !important; font-weight:400 !important; font-size:10px !important; line-height:1.25 !important; letter-spacing:-0.01em !important; color:#666 !important; text-align:center !important; }
.elementor-11188 .nm-panel-copy a { color:#666 !important; text-decoration:none !important; }
.elementor-11188 .nm-panel-copy a:hover, .elementor-11188 .nm-panel-copy a:focus-visible { color:#fff !important; text-decoration:underline !important; text-underline-offset:2px; outline:none; }

/* ---- MOBILE ≤767 (frame 390×844 : gouttière 20, nav à y 121, pied centré, légale à 20 du bas) ---- */
@media (max-width: 767px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { padding:121px 20px 20px !important; padding-bottom:calc(20px + env(safe-area-inset-bottom, 0px)) !important; }
  .elementor-11188 .elementor-element.elementor-element-2f0e061 { display:none !important; }
  .pxl-cursor { display:none !important; }
}
/* ---- TABLETTE 768–1200 (frame 834×1194 : gouttière 32, nav à y 243, entrées 40 / ligne 80, sous-pages 22, icônes FA 20, pied centré à 32 du bas) ---- */
@media (min-width: 768px) and (max-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { padding:243px 32px 32px !important; padding-bottom:calc(32px + env(safe-area-inset-bottom, 0px)) !important; }
  .elementor-11188 .elementor-element.elementor-element-2f0e061 { display:none !important; }
  .pxl-cursor { display:none !important; }
  .elementor-11188 .elementor-element.elementor-element-53e24ec { top:36px; left:44px; width:149px !important; max-width:149px; }
  .elementor-11188 .elementor-element-53e24ec .elementor-widget-container, .elementor-11188 .elementor-element-53e24ec img { width:149px; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-element.elementor-element-ef8fb80 { top:32px !important; right:44px !important; height:48px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup { gap:12px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-btn--text { font-size:14px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider { width:48px !important; height:48px !important; flex:0 0 48px !important; border-radius:24px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-anchor-divider::before { font-size:16px !important; width:auto !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li > a { padding:20px 64px 20px 0 !important; font-size:40px !important; }
  .pxl-hidden-template-11188 .nm-sub-toggle { right:-18px; width:56px; height:80px; }
  .pxl-hidden-template-11188 .nm-sub-toggle::before { font-size:20px !important; width:auto !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary > li.nm-open > .sub-menu { gap:16px; padding:2px 0 26px !important; }
  .pxl-hidden-template-11188 .pxl-menu-primary .sub-menu > li > a { font-size:22px !important; }
  .elementor-11188 .nm-panel-legal.e-con { gap:14px !important; }
  .elementor-11188 .nm-panel-copy { font-size:11px !important; }
}
/* ---- TABLETTE PAYSAGE 992–1200 (pas de maquette : gouttière 40, logo et pastille sur le header du kit 60/44 – 60/40) ---- */
@media (min-width: 992px) and (max-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { padding:243px 40px 32px !important; padding-bottom:calc(32px + env(safe-area-inset-bottom, 0px)) !important; }
  .elementor-11188 .elementor-element.elementor-element-53e24ec { top:44px; left:60px; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-element.elementor-element-ef8fb80 { top:40px !important; right:60px !important; }
}
/* écran tablette court (paysage) : la liste (6 × 80) ne tient pas sous y 243 → nav remontée à 150 */
@media (min-width: 768px) and (max-width: 99999px) and (max-height: 900px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { padding-top:150px !important; }
}

/* ---- DESKTOP ≥1201 (frame 1512×982, largeur fluide : gouttière 96 fixe ; nav à gauche 470 à y 191 ; photo 650×427 r20 calée à droite, bas à 184 du bas ;
        titre SG Medium 23 en bas à gauche ; liens sociaux à x 449 ; ligne légale Inter 12 #666 alignée à droite sur deux lignes) ---- */
@media (min-width: 99999px) {
  .elementor-11188 .elementor-element.elementor-element-b3a562d > .e-con-inner { padding:191px 96px 0 !important; }
  /* logo 96/40, hauteur 40 (largeur suivant le SVG ≈ 149) */
  .elementor-11188 .elementor-element.elementor-element-53e24ec { top:40px; left:96px; width:149px !important; max-width:149px; }
  .elementor-11188 .elementor-element-53e24ec .elementor-widget-container, .elementor-11188 .elementor-element-53e24ec img { width:149px; }
  /* « Fermer » SG Medium 15 + pastille 48 centrée sur le burger du header desktop (centre à largeur − 212 / 56) */
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-element.elementor-element-ef8fb80 { top:32px !important; right:188px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup { gap:12px !important; }
  .elementor-11188 .elementor-element-ef8fb80 .pxl-close-popup .pxl-btn--text { font-size:15px !important; }
  /* corps : liste à gauche (470), photo à droite (650×427) calée en bas du corps, 184 px réservés au pied */
  .elementor-11188 .elementor-element.elementor-element-fb631a8 { --flex-direction:row; display:flex !important; flex-direction:row !important; flex-wrap:nowrap !important; justify-content:space-between !important; align-items:flex-start !important; flex:1 0 auto !important; padding:0 0 184px !important; }
  .elementor-11188 .elementor-element.elementor-element-3ae941b { order:1; --width:470px; width:470px !important; max-width:470px !important; flex:0 0 470px !important; }
  .elementor-11188 .elementor-element.elementor-element-1d00c59 { order:2; display:flex !important; --width:650px; width:650px !important; max-width:650px !important; flex:0 1 650px !important; min-width:0; align-self:flex-end !important; margin:0 0 0 40px !important; padding:0 !important; }
  .elementor-11188 .elementor-element-d0ba664 .pxl-image-single, .elementor-11188 .elementor-element-d0ba664 .pxl-item--inner, .elementor-11188 .elementor-element-d0ba664 .pxl-item--image { width:100% !important; display:block; transform:none !important; }
  .elementor-11188 .elementor-element-d0ba664 .pxl-image-single img { display:block; width:100% !important; height:auto !important; aspect-ratio:650 / 427; max-height:427px !important; object-fit:cover !important; border-radius:20px !important; transform:none !important; }
  /* liste : SG 32, ligne 64 (padding 16/0), sous-pages 18 #999, icônes FA 18 */
  .pxl-hidden-template-11188 .pxl-menu-primary > li > a { padding:16px 56px 16px 0 !important; font-size:32px !important; }
  .pxl-hidden-template-11188 .nm-sub-toggle { display:flex !important; right:-16px; width:48px; height:64px; } /* le bloc 19/09 masque .nm-sub-toggle ≥1201 */
  .pxl-hidden-template-11188 .nm-sub-toggle::before { font-size:18px !important; }
  /* titre en bas à gauche (96 / bas 54 → y 903 à 982) */
  .elementor-11188 .elementor-element.elementor-element-b3a562d .elementor-widget.elementor-element-2f0e061 { display:block !important; position:absolute !important; left:96px; bottom:54px; width:auto !important; max-width:340px !important; margin:0 !important; z-index:2; }
  /* pied : zone de 184 px en bas ; liens sociaux à x 449 (= 96 + 353), bas 52 ; légale 412 px à droite, bas 57, deux lignes */
  .elementor-11188 .nm-panel-legal.e-con { position:absolute !important; left:96px; right:96px; bottom:0; height:184px !important; margin:0 !important; padding:0 !important; width:auto !important; display:block !important; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .nm-panel-legal .elementor-widget { position:absolute !important; width:auto !important; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .nm-panel-legal .nm-panel-social-w { left:353px; bottom:52px; }
  .elementor-11188 .elementor-element.elementor-element-b3a562d .nm-panel-legal .nm-panel-copy-w { right:0; bottom:57px; width:412px !important; }
  .elementor-11188 .nm-panel-social { justify-content:flex-start; }
  .elementor-11188 .nm-panel-copy { font-size:12px !important; line-height:1.25 !important; text-align:right !important; }
  .elementor-11188 .nm-panel-copy .nm-panel-copy-l1, .elementor-11188 .nm-panel-copy .nm-panel-copy-l2 { display:block; }
}

/* ---- HEADER DESKTOP #3944 (≥1201) : sous-menus déroulants du pxl_list #cc0fe45 (ul.nm-head-sub injecté par neova-menu.js dans chaque .pxl--item
        à sous-pages, en absolu : le header fermé ne bouge pas). Panneau #0a0a0a r20, padding 20/24, liens SG Regular 16 blanc, gap 12, survol #999 ;
        ouvert par .nm-head-open (survol / focus clavier) ; pont invisible de 12 px au-dessus pour le passage de la souris ---- */
@media (min-width: 99999px) {
  .elementor-3944 .elementor-element-cc0fe45 .pxl-list .pxl--item.nm-head-has-sub { position:relative; }
  .elementor-3944 .elementor-element-cc0fe45 .pxl-list .nm-head-sub { position:absolute; left:-24px; top:100%; margin:10px 0 0 !important; padding:20px 24px !important; list-style:none !important; display:flex; flex-direction:column; gap:12px; width:max-content; min-width:100%; background:#0a0a0a; border-radius:20px; z-index:20; opacity:0; visibility:hidden; transform:translateY(6px); transition:opacity .18s ease, transform .18s ease, visibility 0s linear .18s; pointer-events:none; }
  .elementor-3944 .elementor-element-cc0fe45 .pxl-list .nm-head-sub::before { content:''; position:absolute; left:0; right:0; top:-12px; height:12px; }
  .elementor-3944 .elementor-element-cc0fe45 .pxl-list .nm-head-has-sub.nm-head-open > .nm-head-sub { opacity:1; visibility:visible; transform:none; transition:opacity .18s ease, transform .18s ease, visibility 0s; pointer-events:auto; }
  .elementor-3944 .elementor-element-cc0fe45 .pxl-list .nm-head-sub li { margin:0 !important; padding:0 !important; display:block; }
  .elementor-3944 .elementor-element-cc0fe45 .pxl-list .nm-head-sub a { display:block; margin:0; padding:0; font-family:'SpaceGrotesk','Space Grotesk',sans-serif !important; font-weight:400 !important; font-size:16px !important; line-height:1.25 !important; letter-spacing:0 !important; color:#fff !important; text-decoration:none !important; text-transform:none !important; white-space:nowrap; transition:color .15s ease; }
  .elementor-3944 .elementor-element-cc0fe45 .pxl-list .nm-head-sub a:hover, .elementor-3944 .elementor-element-cc0fe45 .pxl-list .nm-head-sub a:focus-visible { color:#999 !important; outline:none; }
}

/* ============================================================
   NEOVA — SECTIONS CONTENUES DESKTOP (20/09) — règle Frédéric : sur grand écran, aucune section colorée (blanche, noire,
   bleue) ne s'étale jusqu'aux bords ; toutes sont contenues avec 18 px de chaque côté (valeur Figma desktop : frame 1920, padding 18) et un rayon de 20, comme les
   sections de l'Accueil. Classe nm-desk-card posée sur les conteneurs concernés (relevé du 20/09 : pleine largeur ou
   inset de 10 sur 13 pages). Hero exclu (bord à bord). Tablette/mobile : inchangés (.nm-root).
   ============================================================ */
@media (min-width: 99999px) {
  .nm-desk-card.e-con { width: calc(100% - 36px) !important; max-width: calc(100% - 36px) !important; margin-left: 18px !important; margin-right: 18px !important; border-radius: 20px !important; box-sizing: border-box; }
}

@media (min-width: 99999px) {
  /* variante : conteneur parent déjà en retrait de 10 px → 10 + 10 = 20 */
  .nm-desk-card.nm-desk-card--in10.e-con { width: calc(100% - 16px) !important; max-width: calc(100% - 16px) !important; margin-left: 8px !important; margin-right: 8px !important; }
}

@media (min-width: 99999px) {
  /* variante : conteneur parent déjà en retrait de 20 px → 20 − 2 = 18 */
  .nm-desk-card.nm-desk-card--in20.e-con { width: calc(100% + 4px) !important; max-width: calc(100% + 4px) !important; margin-left: -2px !important; margin-right: -2px !important; }
}

/* ============================================================
   NEOVA — TABLETTE EN GRAND FORMAT (20/09) — décision Frédéric : « pour le desktop je veux la version tablette en grand
   format ». Les bornes 1200/1201 du kit ont été repoussées (max-width:1200 → 99999, min-width:1201 → 99999) : la version
   mobile/tablette (.nm-root, header pilule #10947, panneau V2, footer mobile) s'affiche à toute largeur ≥ 768, la version
   desktop native n'est plus rendue. Ci-dessous : header du thème forcé en mode mobile, espaces latéraux intérieurs des
   sections élargis à partir de 1201 (demande Frédéric : contenu trop près des bords), corps de texte +1, plafond 1512
   centré au-delà de 1600. Retour arrière : neova-mobile.backup-avant-tablette-grand-format-20-09.css.
   ============================================================ */
@media (min-width: 768px) {
  #pxl-header-elementor .pxl-header-elementor-main, #pxl-header-elementor .pxl-header-elementor-sticky { display: none !important; }
  #pxl-header-elementor #pxl-header-mobile { display: block !important; position: relative; z-index: 999; }
  /* header « sticky » du thème (header.php : getHeaderSticky(), rendu hors #pxl-wapper sur les navigateurs d'ordinateur) : il dupliquait le header mobile par-dessus le vrai → jamais affiché */
  body > #pxl-header-elementor { display: none !important; }
  /* tiroir de menu natif du thème (positionné hors écran seulement ≤1200 par le thème) : jamais utilisé, le panneau NEOVA #11188 le remplace */
  #pxl-header-mobile .pxl-header-menu, .pxl-header-menu-backdrop, #pxl-header-mobile .pxl-header-mobile-search { display: none !important; }
  body:has(.nm-root):not(.elementor-editor-active) .elementor > .e-atomic-element, body:has(.nm-root):not(.elementor-editor-active) .elementor > [data-element_type="e-flexbox"] { display: none !important; }
}
@media (min-width: 1201px) {
  /* espaces latéraux intérieurs = proportion exacte de la maquette Figma desktop (section Engagements : 279 / 1884 = 14,8 % de la largeur) → 224 px à 1512 */
  .nm-root .nm-sec.e-con, .nm-root .nm-sec.nm-stack-sec.e-con, .nm-root .nm-sec.nm-met-values.e-con, .nm-root .nm-sec.nm-stack-sec.nm-stack-sec--head.e-con { padding-left: 14.8% !important; padding-right: 14.8% !important; }
  /* hero : texte à 96 px du bord comme dans la frame Figma desktop */
  .nm-root .nm-hero.e-con { padding-left: 96px !important; padding-right: 96px !important; }
  .nm-root .nm-sec.nm-footer.e-con { padding-left: clamp(64px, 7vw, 120px) !important; padding-right: clamp(64px, 7vw, 120px) !important; }
  /* corps de texte : un cran de plus à distance de lecture d'un portable */
  .nm-root .nm-text p, .nm-root .nm-lead p { font-size: 17px !important; line-height: 26px !important; }
}
@media (min-width: 1601px) {
  body:has(.nm-root) { background: var(--nm-light, #f5f5f5); }
  .nm-root.e-con { max-width: 1512px !important; margin-left: auto !important; margin-right: auto !important; }
  #pxl-header-mobile .elementor-10947 { max-width: 1512px; margin-left: auto; margin-right: auto; }
  .nm-root .nm-sec.e-con, .nm-root .nm-sec.nm-stack-sec.e-con, .nm-root .nm-sec.nm-met-values.e-con, .nm-root .nm-sec.nm-stack-sec.nm-stack-sec--head.e-con { padding-left: 224px !important; padding-right: 224px !important; }
  .nm-root .nm-hero.e-con { padding-left: 96px !important; padding-right: 96px !important; }
}

/* ============================================================
   NEOVA — NAVIGATION DANS LE HEADER À PARTIR DE 1100 px (20/09) — décision Frédéric : les quatre liens (Nos formations,
   Méthode, Financement, L’auto-école) visibles entre le logo et le burger sur grand écran ; survol en fondu, page active en Medium
   (traits et cyan retirés le 20/09) ; déroulant sombre des sous-pages au survol.
   Widget html #0596e3e (classe nm-sitehead-nav-w) dans le header #10947. Masqué sous 1100 px et en état « float ».
   ============================================================ */
.nm-sitehead .nm-sitehead-nav-w { display: none; }
@media (min-width: 1100px) {
  .nm-sitehead .nm-sitehead-nav-w { display: block; flex: 1 1 auto; margin: 0 24px !important; min-width: 0; }
  .nm-sitehead.e-con.nm-head--float .nm-sitehead-nav-w { display: none !important; }
  .nm-sitehead-nav > ul { display: flex; justify-content: center; align-items: center; gap: 40px; margin: 0; padding: 0; list-style: none; }
  .nm-sitehead-nav > ul > li { position: relative; margin: 0; padding: 0; }
  .nm-sitehead-nav > ul > li > a { position: relative; display: inline-block; padding: 6px 0; font-family: var(--nm-sg, 'SpaceGrotesk', 'Space Grotesk', sans-serif); font-size: 16px; font-weight: 400; line-height: 1; letter-spacing: -0.01em; color: #fff; text-decoration: none; text-shadow: 0 1px 8px rgba(0, 0, 0, .25); white-space: nowrap; }
  /* survol : léger fondu (ni trait ni cyan, décision Frédéric 20/09) ; page active en graisse Medium */
  .nm-sitehead-nav > ul > li > a { transition: opacity .2s ease; }
  .nm-sitehead-nav > ul > li:hover > a, .nm-sitehead-nav > ul > li > a:focus-visible { opacity: .65; }
  .nm-sitehead-nav > ul > li > a.is-active { font-weight: 500; }
  /* déroulant des sous-pages */
  .nm-sitehead-nav .nm-nav-sub { position: absolute; top: 100%; left: 50%; transform: translate(-50%, 8px); min-width: 260px; margin: 0; padding: 20px 24px; list-style: none; background: #0a0a0a; border-radius: 20px; box-shadow: 0 16px 40px rgba(0, 0, 0, .25); opacity: 0; visibility: hidden; transition: opacity .2s ease, transform .2s ease, visibility 0s linear .2s; z-index: 60; }
  .nm-sitehead-nav .nm-nav-sub::before { content: ''; position: absolute; left: 0; right: 0; top: -14px; height: 14px; } /* pont pour ne pas perdre le survol entre le lien et le panneau */
  .nm-sitehead-nav > ul > li:hover > .nm-nav-sub, .nm-sitehead-nav > ul > li:focus-within > .nm-nav-sub { opacity: 1; visibility: visible; transform: translate(-50%, 0); transition: opacity .2s ease, transform .2s ease, visibility 0s; }
  .nm-sitehead-nav .nm-nav-sub li { margin: 0; padding: 0; }
  .nm-sitehead-nav .nm-nav-sub a { display: block; padding: 6px 0; font-family: var(--nm-sg, 'SpaceGrotesk', 'Space Grotesk', sans-serif); font-size: 16px; font-weight: 400; line-height: 1.25; color: #fff; text-decoration: none; white-space: nowrap; transition: color .2s ease; }
  .nm-sitehead-nav .nm-nav-sub a:hover, .nm-sitehead-nav .nm-nav-sub a:focus-visible { color: #999; }
  .nm-sitehead-nav .nm-nav-sub li:first-child a { color: #999; }
  .nm-sitehead-nav .nm-nav-sub li:first-child a:hover { color: #fff; }
}

/* ============================================================
   NEOVA — HEADER PILULE DESKTOP (20/09) — à partir de 1100 px, le header du thème (.pxl-header-elementor-main) affiche le
   gabarit pxl-template #11873 « Header Desktop - NEOVA (pilule) », copie adaptée de « Menu - Home 8 » (#9537) : pilule
   blanche ajustée à son contenu comme Home 8 (v4 20/09 : plus de largeur fixe, ≈ 800 × 50 avec les 5 liens, sans contour ;
   Home 8 mesuré sur la démo : 905 × 72 dont 6 de bordure), rayon 25, logo sombre (Neova-Logo.svg) 26 px, menu
   WordPress « Neova » (liens 15 px Regular, jamais en gras, survol atténué sans couleur ; déroulants blancs, texte sombre comme la page),
   bouton bleu #00339f « S’inscrire / On vous attend » collé au bord
   droit — maquette Figma desktop nAez4PMsoWJ3FAioXJQbGg, frame 1851:1286. Sous 1100 px : pilule mobile #10947 + panneau
   #11188, inchangés.
   Dynamique (floka-child/assets/neova-header-pill.js), principe du gabarit « Menu - Home 8 » (pxl-menu--scale) : classes
   posées sur .pxl-header-elementor-main — nm-pill--top (haut de page : pilule pleine) · nm-pill--compact (défilement
   > 120 px : les liens s'effacent pendant que la pilule se condense autour du logo et du bouton, qui se rapprochent ;
   largeurs pleine et condensée mesurées par le JS dans --nmp-wfull / --nmp-wc pour que la largeur s'anime ; au survol de
   la pilule condensée, les liens reviennent) ·
   nm-pill--hidden (défilement vers le bas : la pilule remonte hors écran ; retour au défilement vers le haut).
   Hauteur, logo et bouton ne changent pas. Transitions .35 s, désactivées avec prefers-reduced-motion.
   Sauvegardes : kit → meta _nm_bak_20260920_pill, fichier → neova-mobile.backup-avant-pill-20-09.css, header #10947 →
   _nm_bak_20260920_pill, options thème + header_layout des pages (3944) → option _nm_bak_20260920_pill_theme_options.
   ============================================================ */
@media (min-width: 1100px) {
  /* ---- bascule : header desktop du thème affiché, pilule mobile et sa ligne de liens masquées ---- */
  #pxl-header-elementor .pxl-header-elementor-main { display: block !important; }
  #pxl-header-elementor #pxl-header-mobile { display: none !important; }
  .nm-sitehead .nm-sitehead-nav-w { display: none !important; }

  /* ---- variables d'état (taille pleine) ---- */
  #pxl-header-elementor .pxl-header-elementor-main { --nmp-h: 50px; --nmp-w: var(--nmp-wfull, max-content); --nmp-logo: 26px; --nmp-logo-ml: 20px; --nmp-lh: 40px; --nmp-gap: 12px; --nmp-nav-pad: 28px; --nmp-cta-pad: 22px; --nmp-cta-gap: 3px; --nmp-ease: cubic-bezier(.24, .74, .58, 1); }
  /* état condensé : même hauteur, même logo, même bouton ; la largeur vient du JS (logo + écart + bouton), les liens disparaissent */
  #pxl-header-elementor .pxl-header-elementor-main.nm-pill--compact { --nmp-w: var(--nmp-wc, 340px); }

  /* ---- bande fixe (transparente aux clics hors pilule) ---- */
  #pxl-header-elementor .pxl-header-elementor-main { position: fixed !important; top: 26px !important; left: 0 !important; right: 0 !important; width: 100% !important; z-index: 1000 !important; pointer-events: none; transform: translateY(0); transition: transform .35s var(--nmp-ease); will-change: transform; }
  .admin-bar #pxl-header-elementor .pxl-header-elementor-main { top: 58px !important; }
  #pxl-header-elementor .pxl-header-elementor-main.nm-pill--hidden { transform: translateY(calc(-100% - 70px)); }
  #pxl-header-elementor .pxl-header-elementor-main.nm-pill--hidden:focus-within { transform: translateY(0); } /* navigation clavier : la pilule revient dès qu'un lien reçoit le focus */
  #pxl-header-elementor .pxl-header-elementor-main .pxl-header-content, #pxl-header-elementor .pxl-header-elementor-main .row, #pxl-header-elementor .pxl-header-elementor-main .col-12 { margin: 0 !important; padding: 0 !important; max-width: none !important; width: 100% !important; flex: none !important; min-height: 0 !important; }
  #pxl-header-elementor .pxl-header-elementor-main .elementor-11873 { width: 100%; }

  /* ---- conteneurs Elementor du gabarit ---- */
  .nm-pill-wrap.e-con { width: 100% !important; max-width: none !important; min-height: 0 !important; margin: 0 !important; padding: 0 24px !important; box-sizing: border-box; }
  .nm-pill-wrap.e-con > .e-con-inner { display: flex !important; flex-direction: row !important; justify-content: center !important; align-items: center !important; width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; gap: 0 !important; }
  .nm-pill.e-con { pointer-events: auto; box-sizing: border-box; width: var(--nmp-w, 1090px) !important; max-width: 100% !important; height: var(--nmp-h, 60px) !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; border-radius: 25px !important; background: #fff !important; box-shadow: 0 10px 30px rgba(10, 10, 10, .10) !important; display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; align-items: center !important; justify-content: space-between !important; gap: 0 !important; overflow: visible !important; transition: width .35s var(--nmp-ease); }
  /* survol de la pilule condensée : elle se rouvre le temps du survol (accès au menu sans remonter en haut de page) */
  #pxl-header-elementor .pxl-header-elementor-main.nm-pill--compact:not(.nm-pill--hidden) .nm-pill.e-con:hover, #pxl-header-elementor .pxl-header-elementor-main.nm-pill--compact .nm-pill.e-con:focus-within { width: var(--nmp-wfull, max-content) !important; }
  .nm-pill.e-con > .elementor-widget { margin: 0 !important; }
  .nm-pill.e-con > .elementor-widget > .elementor-widget-container { margin: 0 !important; padding: 0 !important; } /* _margin/_padding du gabatit (posés par Elementor sur ce conteneur) : tout passe par les variables ci-dessus */

  /* ---- logo sombre à angle bleu ---- */
  .nm-pill .nm-pill-logo.elementor-widget { flex: 0 0 auto !important; width: auto !important; margin: 0 0 0 var(--nmp-logo-ml, 18px) !important; transition: margin .35s var(--nmp-ease); }
  .nm-pill .nm-pill-logo .pxl-logo { line-height: 0; }
  .nm-pill .nm-pill-logo .pxl-logo a { display: inline-block; line-height: 0; }
  .nm-pill .nm-pill-logo img { display: block; height: var(--nmp-logo, 37px) !important; width: auto !important; max-width: none !important; transition: height .35s var(--nmp-ease); }

  /* ---- menu WordPress « Neova » (widget pxl_menu du thème) ---- */
  .nm-pill .nm-pill-nav.elementor-widget { flex: 1 1 auto !important; min-width: 0 !important; width: auto !important; margin: 0 !important; padding: 0 var(--nmp-nav-pad, 24px) !important; opacity: 1; transition: opacity .3s ease, padding .35s var(--nmp-ease); }
  .nm-pill--compact .nm-pill .nm-pill-nav.elementor-widget { opacity: 0; padding: 0 !important; pointer-events: none; overflow: hidden; transition: opacity .22s ease, padding .35s var(--nmp-ease); } /* les liens s'effacent pendant que la pilule se resserre */
  .nm-pill--compact:not(.nm-pill--hidden) .nm-pill.e-con:hover .nm-pill-nav.elementor-widget, .nm-pill--compact .nm-pill.e-con:focus-within .nm-pill-nav.elementor-widget { opacity: 1; padding: 0 var(--nmp-nav-pad, 24px) !important; pointer-events: auto; overflow: visible; transition: opacity .3s ease .12s, padding .35s var(--nmp-ease); }
  .nm-pill .nm-pill-nav .pxl-nav-menu { text-align: center; }
  .nm-pill .nm-pill-nav .pxl-menu-primary { display: flex !important; flex-wrap: nowrap !important; justify-content: center !important; align-items: center !important; margin: 0 !important; padding: 0 !important; list-style: none !important; }
  .nm-pill .nm-pill-nav .pxl-menu-primary > li { position: relative !important; display: block !important; margin: 0 !important; padding: 0 var(--nmp-gap, 16px) !important; transition: padding .35s var(--nmp-ease); }
  .nm-pill .nm-pill-nav .pxl-menu-primary > li.menu-item-home { display: none !important; } /* « Accueil » : le logo y mène (la maquette Figma n'a pas ce lien) */
  .nm-pill .nm-pill-nav .pxl-menu-primary > li > a { display: block !important; margin: 0 !important; padding: 0 !important; font-family: var(--nm-sg, 'SpaceGrotesk', 'Space Grotesk', sans-serif) !important; font-size: 15px !important; font-weight: 400 !important; line-height: var(--nmp-lh, 40px) !important; letter-spacing: -0.01em !important; color: #0a0a0a !important; opacity: 1; text-decoration: none !important; text-transform: none !important; white-space: nowrap !important; background: none !important; border: 0 !important; transition: opacity .2s ease, line-height .35s var(--nmp-ease); }
  .nm-pill .nm-pill-nav .pxl-menu-primary > li > a .pxl-menu-item-text { display: inline !important; padding: 0 !important; margin: 0 !important; background: none !important; }
  .nm-pill .nm-pill-nav .pxl-menu-primary li a .pxl-menu-item-text::before, .nm-pill .nm-pill-nav .pxl-menu-primary li a .pxl-menu-item-text::after, .nm-pill .nm-pill-nav .pxl-menu-primary li a::before, .nm-pill .nm-pill-nav .pxl-menu-primary li a::after, .nm-pill .nm-pill-nav .pxl-divider-move { display: none !important; content: none !important; } /* ni trait ni soulignement du thème */
  .nm-pill .nm-pill-nav .pxl-menu-primary li a i { display: none !important; } /* pas de chevron (maquette Figma) */
  /* survol : le lien s'atténue (même règle que la nav tablette), ni couleur, ni trait. Page active : aucune graisse
     (demande Frédéric 20/09 : jamais de lien en gras), les classes current-* de WordPress sont neutralisées */
  .nm-pill .nm-pill-nav .pxl-menu-primary > li:hover > a, .nm-pill .nm-pill-nav .pxl-menu-primary > li > a:focus-visible { color: #0a0a0a !important; opacity: .55; }
  .nm-pill .nm-pill-nav .pxl-menu-primary li.current-menu-item > a, .nm-pill .nm-pill-nav .pxl-menu-primary li.current_page_item > a, .nm-pill .nm-pill-nav .pxl-menu-primary li.current-menu-ancestor > a, .nm-pill .nm-pill-nav .pxl-menu-primary li.current_page_ancestor > a, .nm-pill .nm-pill-nav .pxl-menu-primary li.current_page_parent > a, .nm-pill .nm-pill-nav .pxl-menu-primary li.current-menu-parent > a { font-weight: 400 !important; }
  /* déroulants : panneau sombre centré sous le lien, au survol ou au focus */
  .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu { position: absolute !important; top: calc(100% + 14px) !important; left: 50% !important; right: auto !important; bottom: auto !important; display: block !important; min-width: 240px !important; width: auto !important; margin: 0 !important; padding: 18px 24px !important; list-style: none !important; text-align: left !important; background: #fff !important; border: 0 !important; border-radius: 20px !important; box-shadow: 0 12px 36px rgba(10, 10, 10, .14) !important; opacity: 0; visibility: hidden; transform: translate(-50%, 8px); transition: opacity .2s ease, transform .2s ease, visibility 0s linear .2s !important; z-index: 60; }
  .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu::before { content: '' !important; display: block !important; position: absolute; left: 0; right: 0; top: -22px; height: 22px; } /* pont : le survol ne se perd pas entre le lien et le panneau */
  .nm-pill .nm-pill-nav .pxl-menu-primary > li:hover > .sub-menu, .nm-pill .nm-pill-nav .pxl-menu-primary > li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: translate(-50%, 0); transition: opacity .2s ease, transform .2s ease, visibility 0s !important; }
  .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu li { display: block !important; margin: 0 !important; padding: 0 !important; white-space: nowrap !important; }
  .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu li a { display: block !important; margin: 0 !important; padding: 6px 0 !important; font-family: var(--nm-sg, 'SpaceGrotesk', 'Space Grotesk', sans-serif) !important; font-size: 15px !important; font-weight: 400 !important; line-height: 1.25 !important; letter-spacing: -0.01em !important; color: #0a0a0a !important; opacity: 1; text-decoration: none !important; text-transform: none !important; background: none !important; border: 0 !important; transition: opacity .2s ease; }
  .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu li a .pxl-menu-item-text { display: inline !important; padding: 0 !important; background: none !important; }
  .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu li a:hover, .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu li a:focus-visible { opacity: .55; }
  .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu li.current-menu-item > a { font-weight: 400 !important; }

  /* ---- bouton « S’inscrire / On vous attend » (widget pxl_icon_box, layout 2) collé au bord droit, par-dessus la bordure ---- */
  .nm-pill .nm-pill-cta.elementor-widget { flex: 0 0 auto !important; width: auto !important; margin: 0 !important; }
  .nm-pill .nm-pill-cta .pxl-icon-box2 { position: relative; box-sizing: border-box; display: flex !important; align-items: center !important; height: var(--nmp-h, 60px) !important; margin: 0 !important; padding: 0 var(--nmp-cta-pad, 22px) !important; border-radius: 25px !important; background: #00339f !important; border: 0 !important; box-shadow: none !important; transition: height .35s var(--nmp-ease), padding .35s var(--nmp-ease), background-color .2s ease; }
  .nm-pill .nm-pill-cta .pxl-icon-box2:hover { background: #0f2f6e !important; }
  .nm-pill .nm-pill-cta .pxl-item--link { position: absolute; inset: 0; z-index: 2; border-radius: 25px; }
  .nm-pill .nm-pill-cta .pxl-item--main { display: block !important; margin: 0 !important; padding: 0 !important; }
  .nm-pill .nm-pill-cta .pxl-item--content { display: flex !important; flex-direction: column !important; align-items: flex-start !important; gap: var(--nmp-cta-gap, 4px) !important; margin: 0 !important; padding: 0 !important; }
  .nm-pill .nm-pill-cta .pxl-item--title { display: block !important; margin: 0 !important; padding: 0 !important; font-family: var(--nm-sg, 'SpaceGrotesk', 'Space Grotesk', sans-serif) !important; font-size: 14px !important; font-weight: 400 !important; line-height: 1 !important; letter-spacing: 0 !important; text-transform: none !important; color: #fff !important; white-space: nowrap; }
  .nm-pill .nm-pill-cta .pxl-item--description { display: block !important; margin: 0 !important; padding: 0 !important; font-family: var(--nm-inter, 'Inter', sans-serif) !important; font-size: 12px !important; font-weight: 400 !important; line-height: 1 !important; letter-spacing: 0 !important; text-transform: none !important; color: #2a94ff !important; white-space: nowrap; }
}
@media (min-width: 1100px) and (prefers-reduced-motion: reduce) {
  #pxl-header-elementor .pxl-header-elementor-main, .nm-pill.e-con, .nm-pill .nm-pill-logo.elementor-widget, .nm-pill .nm-pill-logo img, .nm-pill .nm-pill-nav.elementor-widget, .nm-pill .nm-pill-nav .pxl-menu-primary > li, .nm-pill .nm-pill-nav .pxl-menu-primary > li > a, .nm-pill .nm-pill-nav .pxl-menu-primary .sub-menu, .nm-pill .nm-pill-cta .pxl-icon-box2 { transition: none !important; }
}

/* ============================================================
   NEOVA — OUVERTURE DU SITE (20/09) — demande Frédéric : écran noir, un trait horizontal part de la gauche vers la droite et
   coupe l'écran en deux, puis la moitié haute monte et la moitié basse descend en même temps. Le thème possède ce loader
   (option site_loader = on, style-2 : .line + .split top/bottom, classes is-loading au DOM ready puis is-loaded 300 ms après
   le chargement) mais sa feuille style.css passe après post-7.css : l'id #pxl-loadding est nécessaire pour que ces durées
   priment. Trait blanc 2 px en 1 s, moitiés en 0,9 s juste après (1,9 s au total), état final conservé jusqu'à la
   disparition (jamais avant la fin des moitiés : is-loaded ne peut arriver qu'après is-loading), clics jamais bloqués.
   Jouée une seule fois par session : functions.php (neova_opening_once) masque le loader dès la deuxième page.
   ============================================================ */
#pxl-loadding.pxl-loader.style-2 { background: transparent; pointer-events: none; }
#pxl-loadding.pxl-loader.style-2 .split { background-color: #0a0a0a; transition: transform .9s cubic-bezier(.77, 0, .18, 1) 1s; }
#pxl-loadding.pxl-loader.style-2 .line { height: 2px; background-color: #fff; transition: width 1s cubic-bezier(.4, 0, .2, 1), opacity .2s linear 1s; }
#pxl-loadding.pxl-loader.style-2.is-loading .line, #pxl-loadding.pxl-loader.style-2.is-loaded .line { width: 100%; opacity: 0; }
#pxl-loadding.pxl-loader.style-2.is-loading .split.top, #pxl-loadding.pxl-loader.style-2.is-loaded .split.top { transform: translateY(-100%); }
#pxl-loadding.pxl-loader.style-2.is-loading .split.bottom, #pxl-loadding.pxl-loader.style-2.is-loaded .split.bottom { transform: translateY(100%); }
#pxl-loadding.pxl-loader.style-2.is-loaded { opacity: 1; visibility: hidden; transition: visibility 0s linear 1.8s; }
html.nm-opened #pxl-loadding.pxl-loader { display: none !important; }
@media (prefers-reduced-motion: reduce) { #pxl-loadding.pxl-loader.style-2 .split, #pxl-loadding.pxl-loader.style-2 .line, #pxl-loadding.pxl-loader.style-2.is-loaded { transition-duration: .01s; transition-delay: 0s; } }

/* NEOVA — pastilles « + » : animation de survol (rotation 90°, comme le thème) essayée puis retirée le 20/09 à la demande
   de Frédéric (« ça fait trop »). Le bouton du formulaire garde celle du thème (.btn:hover .pxl--btn-icon) : neutralisée ici
   pour être cohérent. */
form.wpcf7-form .btn:hover .pxl--btn-icon, form.wpcf7-form .btn:focus .pxl--btn-icon { rotate: none; }

/* ============================================================
   NEOVA : TRAITS DYNAMIQUES SOUS LES LIENS DU FOOTER (20/09) : reproduit l'effet du widget pxl_link « style-hover-divider » du thème Floka, mesuré sur le pied de page de la démo (floka.casethemes.net) : un pseudo-élément ::before de 1 px, posé à 2 px du bas de la boîte du texte, couleur du texte (blanc sur la démo, var(--color-primary) dans les SCSS mais surchargé en blanc dans le footer), scaleX(0) au repos avec transform-origin « right center », scaleX(1) au survol avec transform-origin « left center », transition transform 0.3s cubic-bezier(0.37, 0.31, 0.2, 0.85). Le trait entre donc par la gauche et se retire par la droite. Choix NEOVA : même géométrie, même timing, couleur = currentColor (le trait prend la couleur du lien, #999 ou blanc, et suit son changement éventuel) ; ::after au lieu de ::before pour ne pas croiser le ::before des mentions ; :focus-visible reçoit le même trait ; prefers-reduced-motion : le trait apparaît sans transition. Rien d'autre que le footer n'est touché (traits du header et de la pilule retirés le 20/09).
   ============================================================ */
.nm-root .nm-footer .nm-fcol a,
.nm-root .nm-footer .nm-femail,
.nm-root .nm-footer .nm-flegal a,
.nm-root .nm-footer .nm-design-credit {
  position: relative;
  width: fit-content;            /* .nm-femail est un item de flex-column (bloc pleine largeur) : le trait doit suivre la largeur du texte, pas celle de la colonne */
  max-width: 100%;
}
.nm-root .nm-footer .nm-fcol a::after,
.nm-root .nm-footer .nm-femail::after,
.nm-root .nm-footer .nm-flegal a::after,
.nm-root .nm-footer .nm-design-credit::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;                     /* demo : bottom 2px sous une boîte de 40 px pour 40 px de corps (ligne 1) ; ici corps 15/16 px, ligne 20 px : 0 = le trait passe sous les descendantes, à hauteur du soulignement natif */
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform 0.3s cubic-bezier(0.37, 0.31, 0.2, 0.85);
  pointer-events: none;
}
.nm-root .nm-footer .nm-fcol a:hover::after,
.nm-root .nm-footer .nm-fcol a:focus-visible::after,
.nm-root .nm-footer .nm-femail:hover::after,
.nm-root .nm-footer .nm-femail:focus-visible::after,
.nm-root .nm-footer .nm-flegal a:hover::after,
.nm-root .nm-footer .nm-flegal a:focus-visible::after,
.nm-root .nm-footer .nm-design-credit:hover::after,
.nm-root .nm-footer .nm-design-credit:focus-visible::after {
  transform: scaleX(1);
  transform-origin: left center;
}
@media (prefers-reduced-motion: reduce) {
  .nm-root .nm-footer .nm-fcol a::after,
  .nm-root .nm-footer .nm-femail::after,
  .nm-root .nm-footer .nm-flegal a::after,
  .nm-root .nm-footer .nm-design-credit::after {
    transition: none;
  }
}

/* ============================================================
   NEOVA : TABLEAU GRIS ANIMÉ AU SURVOL (20/09) : reproduit le survol du bloc tarif du thème Floka
   (.pxl-pricing1 .pxl-pricing--inner, démo home-2 / home-5 / home-7) : bloc gris #f5f5f5 qui se remplit
   de la couleur primaire au survol, titre et prix passent en blanc, transition all 0.3s linear, aucun
   ::before, aucun glissement, simple fondu de couleur. Ici : chaque ligne .nm-table-row (fond transparent,
   radius 12) se remplit de --nm-blue (primaire NEOVA, la démo utilise sa propre primaire #0a0a0a) et ses
   textes passent en blanc, mêmes 0.3s linear. Variante sobre retenue pour NEOVA (choix 20/09, après le retrait de
   la rotation des « + » jugée « trop ») : la ligne survolée fond vers le blanc et sa valeur vers le noir, exactement
   comme la ligne en surbrillance --hi ; pas de bleu. Repos strictement inchangé.
   Survol réservé aux pointeurs fins (hover:hover + pointer:fine) : rien au toucher. Concerne nm-table,
   nm-table--titled (nm-tables) et nm-table-value--sm (CPF). Pages : forfaits BVA / BVM / accéléré,
   annulation, CPF, permis à 1 €, aides et dispositifs (code de la route n'a pas de tableau).
   Le thème anime aussi l'apparition des blocs au défilement (classe scrolling-effect, GSAP) : non inclus.
   ============================================================ */
@media (hover: hover) and (pointer: fine) {
  .nm-root .nm-table-row { transition: background-color 0.3s linear; }
  .nm-root .nm-table-label,
  .nm-root .nm-table-value { transition: color 0.3s linear; }

  .nm-root .nm-table-row:hover { background: #fff !important; }
  .nm-root .nm-table-row:hover .nm-table-value { color: var(--nm-black) !important; }
  /* Variantes écartées : fond var(--nm-blue) ou var(--nm-black) avec textes blancs (fidèle à la couleur brute de la démo). */
}
@media (prefers-reduced-motion: reduce) {
  .nm-root .nm-table-row,
  .nm-root .nm-table-label,
  .nm-root .nm-table-value { transition: none !important; }
}

/* ============================================================
   NEOVA : PHOTOS : ZOOM AU SURVOL (20/09) : zoom lent de l'image dans son cadre arrondi, comme les cartes d'articles du thème.
   Mesuré sur la démo Floka (pxl-style.min.css, post.scss, _effect.scss) : le cadre (.pxl-item--image / .pxl-post--featured) porte
   overflow:hidden + border-radius et reste fixe ; seule l'img bouge : repos transform:scale(1.01) (évite le liseré au bord du cadre),
   survol de la carte scale(1.07) (blog archive, related posts, catégories) ou 1.1 (hover-imge-effect2 des grilles d'articles),
   transition « all 0.8s ease » (archive), 0.6s (related), 1s (effect2). Aucun voile, aucun filtre, aucun déplacement.
   Sur la démo, les widgets image isolés (pxl-image-single) n'ont PAS de zoom : le thème ne l'applique qu'aux cartes cliquables.
   Choix : valeur la plus répandue (1.01 vers 1.07, 0.8s ease, sur transform seulement), déclenchée par le survol de la carte
   entière quand il y en a une ; bloc entier sous @media (hover:hover) and (pointer:fine) : au doigt (375) rien ne change, ni au repos
   ni au tap ; reduced-motion : pas de transition ni de zoom. Le radius du cadre reprend celui que le kit donne à l'img
   (20 / 16 / 14) ; le radius de l'img est conservé (repli sans survol). Exclus : logos, avatars, hero, menu, vidéo du thème.
   Images sans cadre propre (nm-step-img, nm-faq-img, nm-tl-img : l'img est posée dans un flex avec le texte) : non traitées,
   il faudrait un span enveloppant, voir rapport.
   ============================================================ */
@media (hover: hover) and (pointer: fine) {

  /* ---- A. Cartes cliquables (fidèle au thème) : cartes du blog, articles de l'accueil, bloc vidéo ---- */
  .nm-root .nm-blog-media,
  .nm-root .nm-slide-media { display: block; overflow: hidden; border-radius: 16px; }
  .nm-root .nm-blog-img,
  .nm-root .nm-slide-img,
  .nm-root .nm-video .nm-video-img {
    transform: scale(1.01);
    transition: transform .8s ease;
    will-change: transform;
  }
  .nm-root .nm-blog-card:hover .nm-blog-img,
  .nm-root .nm-blog-card:focus-within .nm-blog-img,
  .nm-root .nm-slide:hover .nm-slide-img,
  .nm-root .nm-slide:focus-within .nm-slide-img,
  .nm-root .nm-video:hover .nm-video-img { transform: scale(1.07); }

  /* ---- B. Photos de contenu : zoom retiré le 24/09 (avis UX validé par Frédéric) : un effet de survol sur une photo non
     cliquable promet un clic qui n'existe pas ; seules les cartes cliquables (A) zooment, comme sur le thème. ---- */
}

@media (prefers-reduced-motion: reduce) {
  /* repos ET survol (les sélecteurs :hover ci-dessus sont plus spécifiques, on les reprend) */
  .nm-root .nm-blog-img,
  .nm-root .nm-blog-card:hover .nm-blog-img,
  .nm-root .nm-blog-card:focus-within .nm-blog-img,
  .nm-root .nm-slide-img,
  .nm-root .nm-slide:hover .nm-slide-img,
  .nm-root .nm-slide:focus-within .nm-slide-img,
  .nm-root .nm-video .nm-video-img,
  .nm-root .nm-video:hover .nm-video-img,
  .nm-root .nm-photo img,
  .nm-root .nm-photo:hover img,
  .nm-root .nm-photo-card:hover .nm-photo img,
  .nm-root .nm-team-card:hover .nm-photo img,
  .nm-root .nm-code-card:hover .nm-photo img,
  .nm-root .nm-article:hover .nm-photo img { transition: none; transform: none; will-change: auto; }
}

/* ============================================================
   NEOVA : BLOG : RECHERCHE (20/09) : champ de recherche du blog + page de résultats
   Thème enfant : form.nm-blog-search rendu en tête de div.nm-blog par [neova_blog] (inc/neova-shortcodes.php,
   neova_blog_search_form) et par floka-child/search.php (main.nm-post.nm-search > div.nm-post-root >
   section.nm-post-hero.nm-post-hero--noimg [hero court, comme les pages légales] + section.nm-search-sec [carte blanche
   r20, mêmes paddings que .nm-sec] > div.nm-blog [form + p.nm-blog-filter + grille + pagination, mêmes classes que /blog/]).
   Dessin : pilule #f5f5f5 r40 h56, texte Space Grotesk 16, bouton loupe = pastille noire 44 (blanc au survol : bleu #00339f),
   liseré noir 1 px au focus. Mobile d'abord, puis ≥768 (pilule limitée à 560 px, alignée à gauche).
   ============================================================ */
/* le thème réserve 120 / 90 / 60 px autour d'une page non Elementor : le hero passe sous le header, comme les articles et la 404 */
.search-results #pxl-main, .search-no-results #pxl-main { padding:0 !important; }

/* ---- champ de recherche (blog + résultats) ---- */
.nm-blog-search { display:flex; align-items:center; gap:8px; width:100%; min-height:56px; margin:0 0 4px; padding:6px 6px 6px 20px; box-sizing:border-box; border:1px solid var(--nm-light, #f5f5f5); border-radius:40px; background:var(--nm-light, #f5f5f5); transition:border-color .2s ease; }
.nm-blog-search:focus-within { border-color:var(--nm-black, #0a0a0a); }
.nm-blog-search-input { flex:1 1 auto; min-width:0; height:44px; margin:0 !important; padding:0 !important; border:0 !important; border-radius:0 !important; background:transparent !important; box-shadow:none !important; outline:none !important; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:16px !important; line-height:1 !important; letter-spacing:0 !important; text-transform:none !important; color:var(--nm-black, #0a0a0a) !important; } /* le thème met les champs en capitales */
.nm-blog-search-input::placeholder { color:#6f6f6f !important; opacity:1; } /* 5,1:1 sur #f5f5f5 */
.nm-blog-search-input::-webkit-search-decoration, .nm-blog-search-input::-webkit-search-cancel-button { -webkit-appearance:none; }
.nm-blog-search-btn { display:flex; align-items:center; justify-content:center; flex:0 0 44px; width:44px; height:44px; margin:0 !important; padding:0 !important; border:0 !important; border-radius:22px !important; background:var(--nm-black, #0a0a0a) !important; color:#fff !important; box-shadow:none !important; cursor:pointer; transition:background-color .2s ease; }
.nm-blog-search-btn i { font-size:15px; line-height:1; color:inherit; }
.nm-blog-search-btn:hover, .nm-blog-search-btn:focus-visible { background:var(--nm-blue, #00339f) !important; outline:none; }
.nm-blog-search-btn:focus-visible { box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--nm-blue, #00339f) !important; }

/* ---- page de résultats ---- */
/* hero compact (le hero court des pages légales fait 600 / 560 / 680 px : les résultats passaient sous la ligne de flottaison) */
.nm-search .nm-post-hero { min-height:320px !important; }
.nm-search .nm-post-intro { min-height:0 !important; }
.nm-search .nm-post-meta .nm-post-cat { color:#fff !important; text-decoration:none !important; }
.nm-search .nm-post-meta .nm-post-cat:hover, .nm-search .nm-post-meta .nm-post-cat:focus-visible { color:#c9d3ea !important; }
.nm-search-sec { display:flex; flex-direction:column; gap:28px; width:100%; padding:40px 20px; box-sizing:border-box; border-radius:20px; background:#fff; }
.nm-search-sec .nm-blog { display:flex; flex-direction:column; gap:18px; }
.nm-search-sec .nm-blog-grid { display:flex; flex-direction:column; gap:10px; }
.nm-search-sec .nm-blog-card { position:relative; display:flex; flex-direction:column; margin:0; padding:10px; background:var(--nm-light, #f5f5f5); border:0; border-radius:20px; min-width:0; }
.nm-search-sec .nm-blog-media { display:block; aspect-ratio:4 / 3; border-radius:16px; overflow:hidden; background:var(--nm-line, #e5e5e5); }
.nm-search-sec .nm-blog-img { width:100% !important; height:100% !important; max-width:none !important; object-fit:cover !important; display:block; margin:0 !important; }
.nm-search-sec .nm-blog-img--empty { display:block; width:100%; height:100%; }
.nm-search-sec .nm-blog-body { padding:20px 14px 14px; display:flex; flex-direction:column; gap:14px; }
.nm-search-sec .nm-blog-tags { display:flex; align-items:center; gap:16px; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; text-transform:uppercase !important; }
.nm-search-sec .nm-blog-cat { color:var(--nm-black, #0a0a0a) !important; text-decoration:none !important; position:relative; z-index:2; padding:16px 0; margin:-16px 0; }
.nm-search-sec .nm-blog-date { color:#6f6f6f !important; }
.nm-search-sec .nm-blog-title, .nm-search-sec .nm-blog-title a { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:22px !important; line-height:26px !important; letter-spacing:-0.03em !important; color:var(--nm-black, #0a0a0a) !important; text-decoration:none !important; margin:0 !important; padding:0 !important; }
.nm-search-sec .nm-blog-title { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.nm-search-sec .nm-blog-title a::after { content:''; position:absolute; inset:0; border-radius:20px; }
.nm-search-sec .nm-blog-title a:focus-visible { outline:none; }
.nm-search-sec .nm-blog-title a:focus-visible::after { outline:2px solid var(--nm-blue, #00339f); outline-offset:2px; }
.nm-search-sec .nm-blog-pag { display:flex; justify-content:center; flex-wrap:wrap; gap:8px; margin:0; }
.nm-search-sec .nm-blog-pag .page-numbers { display:flex; align-items:center; justify-content:center; width:44px; height:44px; margin:0; padding:0; border:1px solid var(--nm-line, #e5e5e5); border-radius:10px; background:#fff; color:var(--nm-black, #0a0a0a) !important; font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-weight:600 !important; font-size:14px !important; line-height:1 !important; text-decoration:none !important; }
.nm-search-sec .nm-blog-pag .page-numbers.current { background:var(--nm-black, #0a0a0a); border-color:var(--nm-black, #0a0a0a); color:#fff !important; }
.nm-search-sec .nm-blog-pag .page-numbers.dots { width:20px; border:0; background:none; color:var(--nm-muted, #999) !important; }
.nm-search-sec .nm-blog-pag .page-numbers i { font-size:16px; line-height:1; }
.nm-search-sec .nm-blog-filter, .nm-search-sec .nm-blog-empty { font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey, #666) !important; margin:0 !important; }
.nm-search-sec .nm-blog-filter strong, .nm-search-sec .nm-blog-empty strong { color:var(--nm-black, #0a0a0a); font-weight:600; }
.nm-search-sec .nm-blog-filter a, .nm-search-sec .nm-blog-empty a { color:var(--nm-blue, #00339f) !important; text-decoration:underline; }

@media (min-width: 768px) {
  .nm-blog-search { max-width:560px; }
  .nm-search .nm-post-hero { min-height:360px !important; }
  .nm-search-sec { padding:40px 32px; gap:32px; }
  .nm-search-sec .nm-blog { gap:24px; }
  .nm-search-sec .nm-blog-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; align-items:stretch; }
  .nm-search-sec .nm-blog-body { padding:20px 16px 16px; flex:1 1 auto; }
  .nm-search-sec .nm-blog-pag { gap:14px; }
  .nm-search-sec .nm-blog-pag .page-numbers { width:50px; height:50px; }
  .nm-search-sec .nm-blog-filter, .nm-search-sec .nm-blog-empty { font-size:16px !important; line-height:22px !important; }
}
@media (min-width: 992px) {
  .nm-search .nm-post-hero { min-height:420px !important; }
  .nm-search-sec { padding:48px 40px; }
  .nm-search-sec .nm-blog-grid { gap:16px; }
  .nm-search-sec .nm-blog-title, .nm-search-sec .nm-blog-title a { font-size:24px !important; line-height:28px !important; }
  .nm-search-sec .nm-blog-tags { font-size:13px !important; }
}
/* même colonne que la section blog de /blog/ (.nm-root .nm-sec : marges intérieures 14,8 %, 224 px à partir de 1601) */
@media (min-width: 1201px) {
  .nm-search-sec { padding-left:14.8%; padding-right:14.8%; }
}
@media (min-width: 1601px) {
  .nm-search-sec { padding-left:224px; padding-right:224px; }
}

/* ============================================================
   NEOVA : ÉPINGLAGE SOUS LE HEADER, VARIABLE COMMUNE --nm-pin-top (20/09) : tout élément position:sticky du .nm-root se fige sous le header fixe avec une marge, au lieu de passer dessous (mesuré sur /formations/forfait-boite-automatique/ à 1512 : le titre FAQ « Les questions des futurs conducteurs. » se figeait à 24 px du haut, sous la pilule fixe du header qui occupe 26 à 76 px). Démo Floka mesurée à 1512 : les colonnes épinglées .pxl-column-sticky (_layout.scss, position:sticky dès 1200 px, top réglé par page dans Elementor) se figent à 30 px (home, FAQ), 35 px (home-3) ou 0 (about-us), sous le header sticky fixe de 74 px (.pxl-header-elementor-sticky) : le thème ne réserve pas la place du header, la règle NEOVA corrige ce défaut. Header mesuré dans le DOM : à partir de 1100 px, pilule fixe top 26, hauteur 50, bas à 76 (top 58 avec la barre d'admin, kit) ; sous 1100 px, seul le bouton menu rond (48 px) revient fixé en remontant : bas à 74 (top 26 mobile), 80 (top 32 dès 768) et 88 (top 40 dès 992). Variable : --nm-pin-top = bas du header + marge (24 dès 1100, 16 dessous) + barre d'admin (32, ou 46 jusqu'à 782). Éléments repris : en-tête épinglé des sections nm-split (FAQ, chronologies, mois type), scène des étapes nm-steps-stage (Formations), photo épinglée des sections nm-aid-sec (Aides et dispositifs), cartes du sticky stack mobile (leur décalage 12/22/32... est conservé, ajouté à la base). La colonne contact de la home (épinglée en bas d'écran, jamais sous le header) n'est pas touchée, ni l'en-tête sticky du mini-panier WooCommerce (hors .nm-root, panneau fermé). Vérifié par injection sur 5 pages aux 3 largeurs, défilement par paliers de 200 px : chaque élément se fige à --nm-pin-top (100 / 104 / 90 px) et se libère au bas de sa section comme avant. Aucune animation d'entrée dans le .nm-root (toutes les données Elementor sont en plus_gsap_animation_type:none, aucun elementor-invisible / animated / wow) : rien à corriger côté « timings des départs ». Spécificités : (0,4,0) devant les (0,3,0) du kit ; sur les cartes nm-stack, !important comme dans le kit.
   ============================================================ */
.nm-root {
  --nm-hdr-bottom: 76px;   /* pilule fixe : top 26 + 50 de haut (à partir de 1100 px) */
  --nm-pin-gap: 24px;
  --nm-adm: 0px;
  --nm-pin-top: calc(var(--nm-hdr-bottom) + var(--nm-pin-gap) + var(--nm-adm));
}
/* sous 1100 px : bouton menu rond de 48 px fixé en haut à droite en remontant (kit : .nm-sitehead top 26 / 32 dès 768 / 40 dès 992) */
@media (max-width: 1099px) {
  .nm-root { --nm-hdr-bottom: 74px; --nm-pin-gap: 16px; }
}
@media (min-width: 768px) and (max-width: 1099px) {
  .nm-root { --nm-hdr-bottom: 80px; }
}
@media (min-width: 992px) and (max-width: 1099px) {
  .nm-root { --nm-hdr-bottom: 88px; }
}
/* barre d'admin WordPress : 32 px, 46 px jusqu'à 782 px (le kit descend déjà la pilule de 32 px) */
body.admin-bar .nm-root { --nm-adm: 32px; }
@media (max-width: 782px) {
  body.admin-bar .nm-root { --nm-adm: 46px; }
}

/* ---- Colonnes épinglées (à partir de 768 px, comme dans le kit) : l'en-tête reste sous le header pendant tout le défilement de la colonne d'en face ;
   align-self:start explicite pour que l'épinglage se libère bien en fin de grille (le kit le pose déjà sur nm-steps-stage et nm-aid-sec) ---- */
@media (min-width: 768px) {
  .nm-root .nm-sec.nm-split > .nm-header { top: var(--nm-pin-top); align-self: start; }
  .nm-root .nm-steps-sec .nm-steps-stage { top: var(--nm-pin-top); }
  .nm-root .nm-sec.nm-aid-sec > .elementor-widget-image { top: var(--nm-pin-top); }
}

/* Sticky stack mobile (sous 768 px) : volontairement laissé aux valeurs validées sur la maquette Figma (12 / 22 / 32… px du haut) ;
   seul le bouton menu rond passe au-dessus des cartes en remontant, comportement accepté. */

/* ============================================================
   NEOVA : PAGE CONTACT (23/09) : lien « politique de confidentialité » lisible sur le fond bleu de la section formulaire.
   ============================================================ */
.nm-root .nm-disclaimer a { color: #fff !important; text-decoration: underline !important; text-underline-offset: 2px; }

/* ============================================================
   NEOVA : BOUTONS CTA V3 (23/09) : demande Frédéric, composants Figma « Bouton à flèche » 2695:225 (fond clair) et
   2748:1385 (fond sombre). Trois modèles, remplacent les couches précédentes (flèche à gauche, lien souligné, etc.) :
   1. Bouton principal : pilule 48, contour 1,5 px, libellé Space Grotesk Medium 15, pastille pleine 38 calée à 5 px du
      bord droit, flèche en diagonale (↗). Survol : la flèche se remet droite (→).
   2. Second bouton d'une paire (hero, CTA de fin) : même pilule, libellé seul (28 / 25). Survol : la pilule se remplit.
   3. Lien à pastille (cartes, boutons --ghost) : pastille pleine 40 à « + » (traits 1,5 px), libellé à 16 px, trait
      dynamique sous le libellé. Survol : le « + » tourne d'un quart de tour.
   Couleurs : noir sur fond clair ; blanc sur photo, bleu ou noir (pastille blanche, flèche ou « + » noirs), fond détecté
   par assets/js/neova-buttons.js (nm-on-dark / nm-on-black / nm-in-card), hero sombre d'office.
   Survol réservé aux pointeurs fins, même état au focus clavier ; prefers-reduced-motion : sans animation.
   Retour arrière : neova-mobile.backup-avant-cta-v3-23-09.css.
   ============================================================ */
:root {
  --nm-bf-h: 48px;
  --nm-bf-bw: 1.5px;
  --nm-bf-ease: cubic-bezier(.65, .05, .36, 1);
  --nm-bf-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M0 7h9.5v2H0z'/%3E%3Cpath d='M8.5 3.2 15.5 8l-7 4.8z'/%3E%3C/svg%3E");
  --nm-bf-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M5.25 0h1.5v12h-1.5z'/%3E%3Cpath d='M0 5.25h12v1.5H0z'/%3E%3C/svg%3E");
}
/* couleurs : --fg (contour, libellé, pastille), --on (flèche, « + », libellé du bouton rempli) */
:root body .nm-btn .elementor-button, :root body .nm-hbtn { --fg: #0a0a0a; --on: #fff; }
:root body .nm-hero .nm-btn .elementor-button, :root body .nm-hero .nm-hbtn,
:root body .nm-btn .elementor-button.nm-on-dark, :root body .nm-hbtn.nm-on-dark,
:root body .nm-btn .elementor-button.nm-on-black, :root body .nm-hbtn.nm-on-black,
:root body .elementor-11188 .nm-btn .elementor-button, :root body .nm-det-card--blue .nm-btn .elementor-button { --fg: #fff; --on: #0a0a0a; }
:root body .nm-det-card--blue .nm-btn--ghost .elementor-button { --on: var(--nm-blue, #00339f); }

/* ---- 1. Bouton principal ---- */
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button,
:root body .nm-hbtn { box-sizing: border-box !important; display: inline-flex !important; align-items: center !important; min-height: 0 !important; height: var(--nm-bf-h) !important; padding: 0 !important; background: transparent !important; border: var(--nm-bf-bw) solid var(--fg) !important; border-radius: 999px !important; box-shadow: none !important; color: var(--fg) !important; gap: 0 !important; text-decoration: none !important; transition: background-color .35s ease, color .35s ease !important; }
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button-content-wrapper { display: flex !important; flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; gap: 0 !important; width: 100% !important; height: 100% !important; }
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button-content-wrapper::after, :root body .nm-hbtn::after { content: none !important; display: none !important; }
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button-text,
:root body .nm-hbtn-text { order: 1 !important; box-sizing: border-box !important; flex: 1 1 auto !important; display: flex !important; align-items: center !important; justify-content: center !important; height: auto !important; margin: 0 !important; padding: 0 20px 0 32px !important; border: 0 !important; border-radius: 0 !important; background: none !important; color: inherit !important; font-family: var(--nm-sg) !important; font-weight: 500 !important; font-size: 15px !important; line-height: 1.2 !important; letter-spacing: 0 !important; text-transform: none !important; text-align: center !important; white-space: nowrap; }
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button-icon,
:root body .nm-hbtn-icon { order: 2 !important; position: relative; box-sizing: border-box !important; flex: 0 0 38px !important; width: 38px !important; height: 38px !important; margin: 0 calc(5px - var(--nm-bf-bw)) 0 0 !important; border: 0 !important; border-radius: 50% !important; background: var(--fg) !important; color: var(--on) !important; display: flex !important; align-items: center !important; justify-content: center !important; overflow: hidden !important; opacity: 1 !important; transform: none !important; transition: none !important; }
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button-icon > *,
:root body .nm-hbtn-icon > * { display: none !important; }
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button-icon::before,
:root body .nm-hbtn-icon::before { content: "" !important; display: block !important; flex: 0 0 auto; width: 16px !important; height: 16px !important; margin: 0 !important; border: 0 !important; background: currentColor !important; -webkit-mask: var(--nm-bf-arrow) center / contain no-repeat; mask: var(--nm-bf-arrow) center / contain no-repeat; transform: rotate(-45deg); transition: transform .5s var(--nm-bf-ease); }
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button-icon::after, :root body .nm-hbtn-icon::after { content: none !important; }
@media (hover: hover) and (pointer: fine) {
  :root body .nm-btn:not(.nm-btn--ghost) .elementor-button:hover .elementor-button-icon::before,
  :root body .nm-hbtn:hover .nm-hbtn-icon::before { transform: rotate(0deg); }
}
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button:focus-visible .elementor-button-icon::before,
:root body .nm-hbtn:focus-visible .nm-hbtn-icon::before { transform: rotate(0deg); }
:root body .nm-btn .elementor-button:focus-visible, :root body .nm-hbtn:focus-visible { outline: 2px solid var(--fg) !important; outline-offset: 3px !important; }
:root body .elementor-11188 .nm-panel-cta .elementor-button { width: 100% !important; }

/* ---- 2. Second bouton d'une paire : pilule au libellé seul, remplie au survol ---- */
:root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button,
:root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button { width: auto !important; }
:root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button .elementor-button-icon,
:root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button .elementor-button-icon { display: none !important; }
:root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button .elementor-button-text,
:root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button .elementor-button-text { padding: 0 25px 0 28px !important; }
@media (hover: hover) and (pointer: fine) {
  :root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button:hover,
  :root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button:hover { background: var(--fg) !important; color: var(--on) !important; }
}
:root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button:focus-visible,
:root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button:focus-visible { background: var(--fg) !important; color: var(--on) !important; }
:root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost), :root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) { width: auto !important; align-self: center !important; justify-self: start !important; margin-left: 12px !important; }
:root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button-wrapper, :root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) .elementor-button-wrapper { display: flex !important; justify-content: flex-start !important; text-align: left !important; }
@media (max-width: 767px) { :root body .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost), :root body .nm-cta-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) { align-self: flex-start !important; margin-left: 0 !important; } }

/* ---- 3. Lien à pastille : cartes (nm-in-card) et boutons --ghost ---- */
:root body .nm-btn .elementor-button.nm-in-card, :root body .nm-hbtn.nm-in-card, :root body .nm-btn--ghost .elementor-button { display: inline-flex !important; align-items: center !important; width: auto !important; height: auto !important; min-height: 40px !important; padding: 0 !important; background: transparent !important; border: 0 !important; border-radius: 0 !important; color: var(--fg) !important; }
:root body .nm-btn .elementor-button.nm-in-card .elementor-button-content-wrapper, :root body .nm-btn--ghost .elementor-button-content-wrapper { display: flex !important; flex-direction: row !important; align-items: center !important; gap: 0 !important; width: auto !important; height: auto !important; }
:root body .nm-btn .elementor-button.nm-in-card .elementor-button-icon, :root body .nm-hbtn.nm-in-card .nm-hbtn-icon, :root body .nm-btn--ghost .elementor-button-icon { order: 0 !important; box-sizing: border-box !important; flex: 0 0 40px !important; width: 40px !important; height: 40px !important; margin: 0 16px 0 0 !important; border: 0 !important; border-radius: 50% !important; background: var(--fg) !important; color: var(--on) !important; display: flex !important; align-items: center !important; justify-content: center !important; overflow: hidden !important; opacity: 1 !important; transform: none !important; }
:root body .nm-btn .elementor-button.nm-in-card .elementor-button-icon > *, :root body .nm-hbtn.nm-in-card .nm-hbtn-icon > *, :root body .nm-btn--ghost .elementor-button-icon > * { display: none !important; }
:root body .nm-btn .elementor-button.nm-in-card .elementor-button-icon::before, :root body .nm-hbtn.nm-in-card .nm-hbtn-icon::before, :root body .nm-btn--ghost .elementor-button-icon::before { content: "" !important; display: block !important; width: 12px !important; height: 12px !important; background: currentColor !important; -webkit-mask: var(--nm-bf-plus) center / contain no-repeat; mask: var(--nm-bf-plus) center / contain no-repeat; transform: rotate(0deg); transition: transform .5s var(--nm-bf-ease); }
:root body .nm-btn .elementor-button.nm-in-card .elementor-button-text, :root body .nm-hbtn.nm-in-card .nm-hbtn-text, :root body .nm-btn--ghost .elementor-button-text { order: 1 !important; position: relative !important; flex: 0 1 auto !important; display: block !important; height: auto !important; margin: 0 !important; padding: 0 0 3px !important; border: 0 !important; background: none !important; color: var(--fg) !important; text-align: left !important; font-family: var(--nm-sg) !important; font-weight: 500 !important; font-size: 15px !important; line-height: 1.2 !important; letter-spacing: 0 !important; text-transform: none !important; opacity: 1 !important; white-space: normal; }
:root body .nm-btn .elementor-button.nm-in-card .elementor-button-text::after, :root body .nm-hbtn.nm-in-card .nm-hbtn-text::after, :root body .nm-btn--ghost .elementor-button-text::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right center; transition: transform .3s cubic-bezier(.37, .31, .2, .85); pointer-events: none; }
@media (hover: hover) and (pointer: fine) {
  :root body .nm-btn .elementor-button.nm-in-card:hover .elementor-button-icon::before, :root body .nm-hbtn.nm-in-card:hover .nm-hbtn-icon::before, :root body .nm-btn--ghost .elementor-button:hover .elementor-button-icon::before { transform: rotate(90deg); }
  :root body .nm-btn .elementor-button.nm-in-card:hover .elementor-button-text::after, :root body .nm-hbtn.nm-in-card:hover .nm-hbtn-text::after, :root body .nm-btn--ghost .elementor-button:hover .elementor-button-text::after { transform: scaleX(1); transform-origin: left center; }
}
:root body .nm-btn .elementor-button.nm-in-card:focus-visible .elementor-button-icon::before, :root body .nm-hbtn.nm-in-card:focus-visible .nm-hbtn-icon::before, :root body .nm-btn--ghost .elementor-button:focus-visible .elementor-button-icon::before { transform: rotate(90deg); }
:root body .nm-btn .elementor-button.nm-in-card:focus-visible .elementor-button-text::after, :root body .nm-hbtn.nm-in-card:focus-visible .nm-hbtn-text::after, :root body .nm-btn--ghost .elementor-button:focus-visible .elementor-button-text::after { transform: scaleX(1); transform-origin: left center; }
.nm-root .nm-btn:has(.elementor-button.nm-in-card) { width: auto !important; align-self: flex-start !important; }

@media (prefers-reduced-motion: reduce) {
  :root body .nm-btn .elementor-button, :root body .nm-hbtn,
  :root body .nm-btn .elementor-button-icon::before, :root body .nm-hbtn-icon::before,
  :root body .nm-btn .elementor-button-text::after, :root body .nm-hbtn-text::after { transition: none !important; }
}

/* ============================================================
   NEOVA : BOUTON « PLAY » DE LA VIDÉO (23/09) : demande Frédéric, la pilule ne touche plus les bords de l'image :
   décollée de 20 px (24 dès la tablette) du bas et de la gauche.
   ============================================================ */
.nm-root .btn-video-wrap.p-bottom-left { left: 20px !important; bottom: 20px !important; }
@media (min-width: 768px) { .nm-root .btn-video-wrap.p-bottom-left { left: 24px !important; bottom: 24px !important; } }

/* Carte contact (Destan + « Nous contacter ») : largeur ajustée au contenu depuis que le bouton est un lien sans pilule
   (Frédéric 23/09 : « réduire la largeur ») ; retrait droit 40 px. Mobile : inchangé (pleine largeur). */
@media (min-width: 768px) { .nm-root .nm-contact-card.e-con { width: fit-content !important; max-width: 100% !important; align-self: flex-start !important; padding-right: 40px !important; } }

/* ============================================================
   NEOVA : CARTES EN RANGÉE, TEXTES ALIGNÉS (23/09) : demande Frédéric. Dès que les cartes sont côte à côte (≥ 768 px),
   numéro, titre et texte occupent les mêmes rangées d'une carte à l'autre (grille + subgrid) : quand un titre passe sur
   trois lignes, les textes des cartes voisines descendent au même niveau. Engagements (accueil) et financements.
   ============================================================ */
@media (min-width: 768px) {
  .nm-root .nm-eng .nm-cards.e-con, .nm-root .nm-fin .nm-cards.e-con { display: grid !important; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); grid-template-rows: auto auto 1fr; align-items: stretch; }
  .nm-root .nm-eng .nm-cards > .nm-card.e-con, .nm-root .nm-fin .nm-cards > .nm-card.e-con { display: grid !important; grid-template-rows: subgrid; grid-row: span 3; align-content: start; width: auto !important; }
  .nm-root .nm-eng .nm-cards > .nm-card > .elementor-widget, .nm-root .nm-fin .nm-cards > .nm-card > .elementor-widget { align-self: start; }
}

/* Liens à pastille (cartes, --ghost) : libellé en minuscules, comme les autres boutons (Frédéric 23/09) : Space Grotesk
   Medium 15, sans espacement de capitales. */
:root body .nm-btn:not(.nm-btn--ghost) .elementor-button.nm-in-card .elementor-button-text, :root body .nm-hbtn.nm-in-card .nm-hbtn-text, :root body .nm-btn--ghost .elementor-button .elementor-button-text { text-transform: none !important; letter-spacing: 0 !important; font-size: 15px !important; }

/* ============================================================
   NEOVA : CARTES NIVEAU EMPILÉES AU SCROLL, SECTION IMMOBILE (23/09, v6) : demande Frédéric. Page Méthode (.nm-met-comp)
   ou toute section .nm-stackfx, à partir de 768 px : les 4 cartes occupent la même case (même hauteur) ; la section se
   fige au milieu de l'écran (bas de la section du dessus et haut de celle du dessous visibles) et
   assets/js/neova-hscroll.js fait monter chaque carte depuis le bas de la section pour recouvrir la précédente, décalée
   de 16 px (translateY inline) ; progression « Niveau 2 sur 4 » sous l'intro. Dès 1024 : titre à gauche, pile à droite.
   Mobile, mouvement réduit : inchangé.
   ============================================================ */
@media (min-width: 768px) {
  .nm-root .nm-stackfx-on.e-con { overflow: clip !important; }
  .nm-root .nm-stackfx-on .nm-cards.e-con { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; grid-template-rows: auto !important; gap: 0 !important; padding-bottom: 48px !important; overflow: visible !important; }
  .nm-root .nm-stackfx-on .nm-cards > .e-con { grid-area: 1 / 1 !important; width: 100% !important; will-change: transform; box-shadow: none !important; }
  .nm-root .nm-stackfx-on .nm-cards > .e-con:nth-child(1) { z-index: 1; } .nm-root .nm-stackfx-on .nm-cards > .e-con:nth-child(2) { z-index: 2; }
  .nm-root .nm-stackfx-on .nm-cards > .e-con:nth-child(3) { z-index: 3; } .nm-root .nm-stackfx-on .nm-cards > .e-con:nth-child(4) { z-index: 4; }
  .nm-root .nm-hs-prog { display: flex; flex-direction: column; gap: 12px; margin-top: 24px !important; }
  .nm-root .nm-hs-count { font-family: var(--nm-sg); font-size: 14px; line-height: 1; letter-spacing: 0; color: #888; }
  .nm-root .nm-hs-count b { font-weight: 500; color: #0a0a0a; }
  .nm-root .nm-hs-segs { display: flex; gap: 6px; }
  .nm-root .nm-hs-seg { width: 32px; height: 2px; background: #e3e3e3; border-radius: 2px; transition: background-color .3s ease; }
  .nm-root .nm-hs-seg.is-on { background: #0a0a0a; }
}
@media (max-width: 767px) { .nm-root .nm-hs-prog { display: none; } }
@media (min-width: 1024px) {
  .nm-root .nm-stackfx-on.e-con { display: grid !important; grid-template-columns: minmax(0, 38%) minmax(0, 1fr); column-gap: 56px !important; row-gap: 32px !important; align-items: center !important; }
  .nm-root .nm-stackfx-on > .elementor-widget-html:first-child { grid-column: 1 / -1; }
  .nm-root .nm-stackfx-on > .nm-header { grid-column: 1; }
  .nm-root .nm-stackfx-on > .nm-cards { grid-column: 2; grid-row: 2; }
}

/* ============================================================
   NEOVA : TUILES GRISES (23/09) : demande Frédéric, les tuiles blanches posées sur fond gris (cartes numérotées des
   sections d'empilement, engagements de l'accueil, comparatif des formations) prennent le gris des autres cartes du site
   (#f5f5f5) ; leur section passe en blanc (rayon 20, comme les autres sections) pour que le gris se lise. Les tuiles
   bleues ou noires ne changent pas. Toutes largeurs (écart assumé avec la maquette mobile d'origine).
   ============================================================ */
.nm-root .nm-stack-sec.e-con, .nm-root .nm-eng.e-con, .nm-root .nm-cmp.e-con { background-color: #fff !important; border-radius: 20px !important; }
.nm-root .nm-stack-sec .nm-card.e-con:not(.nm-card--blue):not(.nm-card--dark), .nm-root .nm-eng .nm-eng-card.e-con:not(.nm-card--blue), .nm-root .nm-cmp .nm-cmp-card.e-con:not(.nm-cmp-card--blue) { background-color: #f5f5f5 !important; }
/* numéros « 02, 03… » : gris un ton plus soutenu pour rester lisibles sur le gris des tuiles */
.nm-root .nm-stack-sec .nm-card:not(.nm-card--blue):not(.nm-card--dark) .nm-num .elementor-heading-title, .nm-root .nm-eng .nm-eng-card:not(.nm-card--blue) .nm-num .elementor-heading-title { color: #d2d2d2 !important; }

/* Cartes grises un ton plus soutenu (#eeeeee au lieu de #f5f5f5) et sans ombre (Frédéric 23/09 : « un peu plus gris »,
   « les ombres font sale ») : tuiles numérotées, engagements, comparatif, cartes Niveau et cartes d'offre grises. */
.nm-root .nm-stack-sec .nm-card.e-con:not(.nm-card--blue):not(.nm-card--dark), .nm-root .nm-eng .nm-eng-card.e-con:not(.nm-card--blue), .nm-root .nm-cmp .nm-cmp-card.e-con:not(.nm-cmp-card--blue), .nm-root .nm-offer.e-con:not(.nm-offer--blue):not(.nm-offer--dark), .nm-root .nm-fin-card.e-con { background-color: #eeeeee !important; }
.nm-root .nm-stack > .e-con, .nm-root .nm-stack-sec .nm-card.e-con, .nm-root .nm-stackfx-on .nm-cards > .e-con { box-shadow: none !important; }
.nm-root .nm-stack-sec .nm-card:not(.nm-card--blue):not(.nm-card--dark) .nm-num .elementor-heading-title, .nm-root .nm-eng .nm-eng-card:not(.nm-card--blue) .nm-num .elementor-heading-title { color: #cbcbcb !important; }

/* ============================================================
   NEOVA : ACCORDÉON « NOTRE ÉQUIPEMENT » (Méthode, 23/09) : demande Frédéric. Plus de pastilles « + / − » ; plus de
   cadre bleu au clic (au clavier : le nom passe en blanc, souligné) ; un onglet reste toujours ouvert pour signaler
   l'accordéon (ENPC / EDISER au départ ; cliquer l'onglet ouvert ne le referme plus : assets/js/neova-buttons.js).
   ============================================================ */
.nm-root .nm-met-tool-tog { display: none !important; }
.nm-root .nm-met-tool-btn { justify-content: center !important; cursor: pointer; }
.nm-root .nm-met-tool-btn:focus, .nm-root .nm-met-tool-btn:focus-visible { outline: none !important; box-shadow: none !important; }
.nm-root .nm-met-tool-btn:focus-visible .nm-met-tool-name { color: #fff !important; text-decoration: underline; text-underline-offset: 6px; text-decoration-thickness: 1px; }
.nm-root .nm-met-tool.is-open .nm-met-tool-btn { cursor: default; }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-met-tool:not(.is-open) .nm-met-tool-btn:hover .nm-met-tool-name { color: #9a9a9a; } }
/* v3 (Frédéric 23/09) : au survol d'un onglet fermé, le nom passe au blanc et le filet de séparation sous l'onglet
   s'anime discrètement : un filet plus clair (#8a8a8a sur #3a3a3a) le parcourt de gauche à droite (0,6 s), puis se retire
   par la droite en sortant. Pas de trait sous le mot. Même état au focus clavier. */
.nm-root .nm-met-tool-name { transition: color .4s ease; }
.nm-root .nm-met-tool::after { background: #3a3a3a linear-gradient(#8a8a8a, #8a8a8a) no-repeat right center / 0% 100% !important; transition: background-size .6s cubic-bezier(.37, .31, .2, .85); }
@media (hover: hover) and (pointer: fine) {
  .nm-root .nm-met-tool:not(.is-open) .nm-met-tool-btn:hover .nm-met-tool-name { color: #fff !important; }
  .nm-root .nm-met-tool:not(.is-open):has(.nm-met-tool-btn:hover)::after { background-position: left center !important; background-size: 100% 100% !important; }
}
.nm-root .nm-met-tool-btn:focus-visible .nm-met-tool-name { text-decoration: none !important; }
.nm-root .nm-met-tool:not(.is-open):has(.nm-met-tool-btn:focus-visible)::after { background-position: left center !important; background-size: 100% 100% !important; }
@media (prefers-reduced-motion: reduce) { .nm-root .nm-met-tool-name, .nm-root .nm-met-tool::after { transition: none; } }

/* ============================================================
   NEOVA : ACCUEIL, CARROUSEL D'ARTICLES DU THÈME EN DESKTOP (23/09) : demande Frédéric. Dans « Nos conseils pour
   réussir », à partir de 1024 px, le widget pxl_post_carousel du Home 6 du thème (layout post-3 : carte active ouverte,
   photos de part et d'autre) remplace les 3 cartes [neova_conseils] ; il déborde des retraits de la section (≈ 16 px du
   bord) comme sur la démo. Carte active grise comme les autres cartes. En dessous de 1024 : les 3 cartes, inchangées.
   ============================================================ */
@media (min-width: 1024px) {
  .nm-root .nm-conseils > .nm-slider-w { display: none !important; }
  .nm-root .nm-conseils > .nm-conseils-carousel { width: auto !important; max-width: none !important; margin-left: 0 !important; margin-right: 0 !important; }
  .nm-root .nm-conseils-carousel .pxl-post--inner.active { background-color: #eeeeee !important; }
  .nm-root .nm-conseils-carousel .pxl-post--title, .nm-root .nm-conseils-carousel .pxl-post--title a { font-family: var(--nm-sg) !important; font-weight: 400 !important; letter-spacing: -0.03em !important; color: #0a0a0a !important; }
  .nm-root .nm-conseils-carousel .pxl-post--content { font-family: var(--nm-inter) !important; color: #666 !important; }
}
/* v2 (Frédéric : « moins imposant ») : plus de débord, le carrousel reste dans les retraits de la section ; hauteur
   600 → 440, titre 32 → 24. */
@media (min-width: 1024px) {
  .nm-root .nm-conseils-carousel .pxl-swiper-slide, .nm-root .nm-conseils-carousel .pxl-post--inner { height: 440px !important; }
  .nm-root .nm-conseils-carousel .pxl-post--inner .pxl-post--featured { height: 420px !important; overflow: hidden !important; border-radius: 20px !important; }
  .nm-root .nm-conseils-carousel .pxl-post--inner .pxl-post--featured a { display: block; height: 100% !important; }
  .nm-root .nm-root .nm-conseils-carousel .pxl-post--inner .pxl-post--featured img, .nm-root .nm-conseils-carousel .pxl-post--inner .pxl-post--featured a img { height: 100% !important; max-height: 420px !important; width: 100% !important; object-fit: cover !important; } /* l'image gardait 580 px et débordait : coins arrondis perdus */
  .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-post--holder { padding: 36px 26px 30px 24px !important; } /* retraits du thème (50 à droite, avec débord de la carte) ramenés pour que la flèche reste dans la carte */
  .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-item--author { min-width: 0; flex: 1 1 auto; gap: 12px; }
  .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-author--box { flex-wrap: nowrap !important; gap: 12px; }
  .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-item--info { min-width: 0; }
  .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-user--name, .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-user--position { overflow: hidden; text-overflow: ellipsis; }
  .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-item--avatar, .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-item--avatar img { width: 40px !important; height: 40px !important; flex: 0 0 40px !important; }
  .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-button--arrow, .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-button--arrow a { width: 44px !important; height: 44px !important; flex: 0 0 44px !important; }
  .nm-root .nm-conseils-carousel .pxl-post--title { font-size: 24px !important; line-height: 1.2 !important; }
  .nm-root .nm-conseils-carousel .pxl-swiper-slide { padding: 0 !important; }
  .nm-root .nm-conseils-carousel .pxl-swiper-container, .nm-root .nm-conseils-carousel .swiper-wrapper { margin-left: 0 !important; margin-right: 0 !important; } /* le thème décale de −15 px : les photos latérales étaient coupées */
  .nm-root .nm-conseils-carousel .pxl-post--inner:not(.active) { flex: 2 1 0% !important; }
  .nm-root .nm-conseils-carousel .pxl-post--inner.active { flex: 6 1 0% !important; }
  .nm-root .nm-conseils-carousel .pxl-user--name, .nm-root .nm-conseils-carousel .pxl-user--position { white-space: nowrap; }
}
@media (max-width: 1023px) { .nm-root .nm-conseils-carousel { display: none !important; } }

/* ============================================================
   NEOVA : BLOG V2, MOSAÏQUE ET MAGAZINE (21/09) : deux présentations des mêmes articles sur la page Blog (#11545), à onglets.
   Thème enfant : [neova_blog] (inc/neova-shortcodes.php, neova_blog_render layout « tabs ») rend div.nm-blog.nm-blog--v2[data-nm-tabs] >
   div.nm-blog-bar (div.nm-blog-views[role=tablist] > a.nm-blog-view[role=tab] « Mosaïque » / « Magazine », pilule segmentée, + form.nm-blog-search
   du 20/09) · div.nm-blog-panel--mosaique[role=tabpanel] (nav.nm-blog-cats : onglets de catégories centrés, capitales grises, actif souligné
   noir ; div.nm-blog-mosaic : grille 3 colonnes à partir de 768, tuiles article.nm-blog-tile--text (fond uni bleu #00339f / gris #f5f5f5 /
   noir #0a0a0a / bleu clair #e8edf6, pilule contour 1 px, icône NEOVA en haut à droite, titre 24/28, « LIRE L’ARTICLE » + pastille ronde
   flèche), --photo (photo pleine, 2 colonnes, titre blanc sur voile), --mixed (moitié couleur + moitié photo, 1 colonne × 2 rangs, « VOIR
   PLUS » blanc + pastille blanche) ; composition sans trou pour 6 articles, voir neova_blog_mosaic_plan) · div.nm-blog-panel--magazine
   (article.nm-blog-feat : à la une pleine largeur, voile sombre, pilule, titre blanc, chapô, auteur + date ; div.nm-blog-mag : à gauche
   div.nm-blog-list > article.nm-blog-item (photo 40 % à gauche dès 768, pilule pleine, titre, extrait 2 lignes, avatar + nom + date, carte
   blanche liseré #e5e5e5 + ombre légère) ; à droite aside.nm-blog-side (blocs #f5f5f5 : « Les plus récents » ou « À ne pas manquer »,
   vignette 64 + titre + date relative ; « Catégories », icône NEOVA + nom + description ou nombre d'articles) ; colonne 300 px dès 992) ·
   nav.nm-blog-pag. search.php : layout « list » = barre + p.nm-blog-filter + div.nm-blog-list. JS : assets/js/neova-blog.js (bascule,
   mémoire localStorage, URL ?vue=magazine) ; html.nm-vue-magazine = garde anti-flash posée par functions.php avant le rendu.
   Palette NEOVA seule (pas de cyan) ; Space Grotesk (titres, étiquettes, boutons) / Inter (textes), grands titres Regular tracking −3 % ;
   aucun lien en gras. Survol : zoom lent des photos 1,01 → 1,07 (0,8 s, souris fine seulement), titres en bleu sur fond clair, flèche des
   pastilles décalée de 4 px ; focus visible 2 px bleu ; prefers-reduced-motion : ni transition ni zoom. Mobile d'abord (375 : tout s'empile,
   pilule des vues pleine largeur), puis ≥768 (barre sur une ligne, 3 colonnes, cartes horizontales) et ≥992 (colonne latérale, tailles
   desktop jusqu'à 1512 centré). L'ancienne grille (nm-blog-grid / nm-blog-card, bloc « NEOVA : BLOG (19/09) ») n'est pas touchée.
   ============================================================ */

/* ---- conteneur, barre : onglets de vue + recherche ---- */
.nm-blog.nm-blog--v2 { display:flex; flex-direction:column; gap:24px; width:100%; min-width:0; }
.nm-blog--v2 .nm-blog-bar { display:flex; flex-direction:column; gap:12px; width:100%; }
.nm-blog--v2 .nm-blog-views { display:flex; width:100%; padding:4px; box-sizing:border-box; border-radius:40px; background:var(--nm-light, #f5f5f5); }
.nm-blog--v2 .nm-blog-view { display:flex; flex:1 1 0; align-items:center; justify-content:center; min-height:40px; padding:0 18px; border-radius:40px; box-sizing:border-box; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:500 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; text-transform:none !important; color:var(--nm-black, #0a0a0a) !important; text-decoration:none !important; transition:background-color .2s ease, color .2s ease; }
.nm-blog--v2 .nm-blog-view:hover { color:var(--nm-blue, #00339f) !important; }
.nm-blog--v2 .nm-blog-view.is-active, .nm-blog--v2 .nm-blog-view[aria-selected="true"] { background:var(--nm-black, #0a0a0a); color:#fff !important; }
.nm-blog--v2 .nm-blog-view:focus-visible { outline:2px solid var(--nm-blue, #00339f); outline-offset:2px; }
.nm-blog--v2 .nm-blog-search { margin:0; max-width:none; }
.nm-blog--v2 .nm-blog-panel[hidden] { display:none !important; }
.nm-blog--v2 .nm-blog-panel { min-width:0; }

/* garde anti-flash (html.nm-vue-magazine posée avant le rendu, retirée par neova-blog.js) : panneau et onglet magazine affichés d'emblée */
html.nm-vue-magazine .nm-blog--v2[data-nm-view="mosaique"] .nm-blog-panel--mosaique { display:none !important; }
html.nm-vue-magazine .nm-blog--v2[data-nm-view="mosaique"] .nm-blog-panel--magazine[hidden] { display:flex !important; }
html.nm-vue-magazine .nm-blog--v2[data-nm-view="mosaique"] .nm-blog-view[data-nm-view="mosaique"] { background:transparent; color:var(--nm-black, #0a0a0a) !important; }
html.nm-vue-magazine .nm-blog--v2[data-nm-view="mosaique"] .nm-blog-view[data-nm-view="magazine"] { background:var(--nm-black, #0a0a0a); color:#fff !important; }

/* ---- pilule de catégorie (commune : contour 1 px de la couleur du texte ; pleine #f5f5f5 dans les cartes du magazine) ---- */
.nm-blog--v2 .nm-blog-pill { display:inline-flex; align-items:center; position:relative; z-index:2; min-height:28px; padding:0 12px; box-sizing:border-box; border:1px solid currentColor; border-radius:40px; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:inherit !important; text-decoration:none !important; transition:background-color .2s ease, color .2s ease, border-color .2s ease; }
.nm-blog--v2 a.nm-blog-pill:hover, .nm-blog--v2 a.nm-blog-pill:focus-visible { background:rgba(10,10,10,.06); }
.nm-blog--v2 .nm-blog-tile--blue a.nm-blog-pill:hover, .nm-blog--v2 .nm-blog-tile--black a.nm-blog-pill:hover, .nm-blog--v2 .nm-blog-tile--photo a.nm-blog-pill:hover, .nm-blog--v2 .nm-blog-feat a.nm-blog-pill:hover,
.nm-blog--v2 .nm-blog-tile--blue a.nm-blog-pill:focus-visible, .nm-blog--v2 .nm-blog-tile--black a.nm-blog-pill:focus-visible, .nm-blog--v2 .nm-blog-tile--photo a.nm-blog-pill:focus-visible, .nm-blog--v2 .nm-blog-feat a.nm-blog-pill:focus-visible { background:rgba(255,255,255,.16); }
.nm-blog--v2 a.nm-blog-pill:focus-visible { outline:2px solid currentColor; outline-offset:2px; }

/* ---- signature (avatar 32 rond, nom, date) ---- */
.nm-blog--v2 .nm-blog-by { display:flex; align-items:center; flex-wrap:wrap; gap:10px; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:13px !important; line-height:1 !important; letter-spacing:0 !important; color:inherit; }
.nm-blog--v2 .nm-blog-by-avatar { display:block; flex:0 0 32px; width:32px !important; height:32px !important; max-width:none !important; margin:0 !important; border-radius:50% !important; object-fit:cover; }
.nm-blog--v2 .nm-blog-by-name { color:inherit; }
.nm-blog--v2 .nm-blog-by-date { color:inherit; opacity:.75; }
.nm-blog--v2 .nm-blog-by-date::before { content:'·'; margin-right:10px; }

/* ============================================================ MOSAÏQUE ============================================================ */

/* ---- onglets de catégories : capitales grises centrées, actif noir souligné 2 px ---- */
.nm-blog--v2 .nm-blog-cats { display:flex; flex-wrap:wrap; justify-content:center; gap:0 22px; margin:0 0 20px; padding:0; }
.nm-blog--v2 .nm-blog-cat-tab { display:inline-flex; align-items:center; min-height:44px; padding:0 2px; box-sizing:border-box; border-bottom:2px solid transparent; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:13px !important; line-height:1 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:#6f6f6f !important; text-decoration:none !important; transition:color .2s ease, border-color .2s ease; } /* #6f6f6f = 5,1:1 sur blanc */
.nm-blog--v2 .nm-blog-cat-tab:hover, .nm-blog--v2 .nm-blog-cat-tab:focus-visible { color:var(--nm-black, #0a0a0a) !important; }
.nm-blog--v2 .nm-blog-cat-tab.is-active { color:var(--nm-black, #0a0a0a) !important; border-bottom-color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-cat-tab:focus-visible { outline:2px solid var(--nm-blue, #00339f); outline-offset:2px; border-radius:2px; }

/* ---- grille : une colonne sur mobile, tout s'empile ---- */
.nm-blog--v2 .nm-blog-mosaic { display:grid; grid-template-columns:minmax(0, 1fr); gap:12px; }
.nm-blog--v2 .nm-blog-tile { position:relative; display:flex; flex-direction:column; min-width:0; margin:0; padding:0; border:0; border-radius:20px; overflow:hidden; background:var(--nm-light, #f5f5f5); color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-tile--light { background:var(--nm-light, #f5f5f5); color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-tile--sky { background:#e8edf6; color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-tile--blue { background:var(--nm-blue, #00339f); color:#fff; }
.nm-blog--v2 .nm-blog-tile--black { background:var(--nm-black, #0a0a0a); color:#fff; }

.nm-blog--v2 .nm-blog-tile-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.nm-blog--v2 .nm-blog-tile-icon { display:block; flex:0 0 28px; width:28px; height:28px; color:inherit; }
.nm-blog--v2 .nm-blog-tile-icon svg { display:block; width:100%; height:100%; fill:currentColor; }
.nm-blog--v2 .nm-blog-tile-title { flex:1 1 auto; margin:0 !important; padding:0 !important; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:24px !important; line-height:28px !important; letter-spacing:-0.03em !important; color:inherit !important; display:-webkit-box; -webkit-line-clamp:4; -webkit-box-orient:vertical; overflow:hidden; }
.nm-blog--v2 .nm-blog-tile-title a { font:inherit !important; letter-spacing:inherit !important; color:inherit !important; text-decoration:none !important; }
.nm-blog--v2 .nm-blog-tile-title a::after { content:''; position:absolute; inset:0; z-index:1; border-radius:20px; } /* toute la tuile est cliquable */
.nm-blog--v2 .nm-blog-tile-title a:focus-visible { outline:none; }
.nm-blog--v2 .nm-blog-tile-title a:focus-visible::after { outline:2px solid var(--nm-blue, #00339f); outline-offset:2px; }
.nm-blog--v2 .nm-blog-tile--blue .nm-blog-tile-title a:focus-visible::after, .nm-blog--v2 .nm-blog-tile--black .nm-blog-tile-title a:focus-visible::after, .nm-blog--v2 .nm-blog-tile--photo .nm-blog-tile-title a:focus-visible::after { outline-color:#fff; outline-offset:-4px; }
.nm-blog--v2 .nm-blog-tile-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:auto; }
.nm-blog--v2 .nm-blog-tile-cta { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:inherit; }
.nm-blog--v2 .nm-blog-tile-arrow { display:flex; align-items:center; justify-content:center; flex:0 0 44px; width:44px; height:44px; border-radius:22px; background:var(--nm-black, #0a0a0a); color:#fff; transition:background-color .25s ease, color .25s ease; }
.nm-blog--v2 .nm-blog-tile-arrow i { font-size:14px; line-height:1; color:inherit; transition:transform .25s ease; }
.nm-blog--v2 .nm-blog-tile--blue .nm-blog-tile-arrow { background:#fff; color:var(--nm-blue, #00339f); }
.nm-blog--v2 .nm-blog-tile--black .nm-blog-tile-arrow { background:#fff; color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-tile--sky .nm-blog-tile-arrow { background:var(--nm-blue, #00339f); color:#fff; }
.nm-blog--v2 .nm-blog-tile--photo .nm-blog-tile-arrow, .nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-arrow { background:#fff; color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-tile:hover .nm-blog-tile-arrow i, .nm-blog--v2 .nm-blog-tile:focus-within .nm-blog-tile-arrow i { transform:translateX(4px); }
.nm-blog--v2 .nm-blog-tile--light:hover .nm-blog-tile-arrow, .nm-blog--v2 .nm-blog-tile--photo:hover .nm-blog-tile-arrow, .nm-blog--v2 .nm-blog-tile--mixed:hover .nm-blog-tile-arrow,
.nm-blog--v2 .nm-blog-tile--light:focus-within .nm-blog-tile-arrow, .nm-blog--v2 .nm-blog-tile--photo:focus-within .nm-blog-tile-arrow, .nm-blog--v2 .nm-blog-tile--mixed:focus-within .nm-blog-tile-arrow { background:var(--nm-blue, #00339f); color:#fff; }

/* tuile texte */
.nm-blog--v2 .nm-blog-tile--text { padding:20px; gap:24px; min-height:300px; box-sizing:border-box; }

/* photo (commune aux tuiles photo et mixtes) */
.nm-blog--v2 .nm-blog-tile-media { display:block; position:relative; overflow:hidden; background:var(--nm-line, #e5e5e5); }
.nm-blog--v2 .nm-blog-tile-img { display:block; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; object-fit:cover; object-position:center; }
.nm-blog--v2 .nm-blog-tile-media .nm-blog-play { left:50%; top:50%; bottom:auto; transform:translate(-50%, -50%); }

/* tuile photo : image pleine, voile bas, pilule + icône en haut, titre + « Lire l’article » en bas */
.nm-blog--v2 .nm-blog-tile--photo { justify-content:flex-end; min-height:300px; padding:20px; box-sizing:border-box; background:var(--nm-black, #0a0a0a); color:#fff; }
.nm-blog--v2 .nm-blog-tile--photo .nm-blog-tile-media { position:absolute; inset:0; z-index:0; border-radius:20px; }
.nm-blog--v2 .nm-blog-tile--photo::before { content:''; position:absolute; inset:0; z-index:1; border-radius:20px; background:linear-gradient(180deg, rgba(10,10,10,.28) 0%, rgba(10,10,10,0) 32%, rgba(10,10,10,0) 48%, rgba(10,10,10,.78) 100%); pointer-events:none; }
.nm-blog--v2 .nm-blog-tile--photo .nm-blog-tile-head { position:absolute; top:20px; left:20px; right:20px; z-index:2; }
.nm-blog--v2 .nm-blog-tile-over { position:relative; z-index:2; display:flex; flex-direction:column; gap:20px; margin-top:auto; padding-top:72px; }
.nm-blog--v2 .nm-blog-tile--photo .nm-blog-tile-title { flex:0 0 auto; -webkit-line-clamp:3; }
.nm-blog--v2 .nm-blog-tile--photo .nm-blog-tile-title a::after { border-radius:20px; }

/* tuile mixte : moitié haute couleur (pilule + icône + titre), moitié basse photo, « Voir plus » blanc sur la photo */
.nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-top { display:flex; flex-direction:column; gap:20px; padding:20px; min-height:200px; box-sizing:border-box; }
.nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-top .nm-blog-tile-title { flex:0 0 auto; }
.nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-media { flex:1 1 auto; min-height:220px; }
.nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-media::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(10,10,10,0) 45%, rgba(10,10,10,.62) 100%); pointer-events:none; }
.nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-foot { position:absolute; left:20px; right:20px; bottom:20px; z-index:2; margin:0; color:#fff; }

/* ============================================================ MAGAZINE ============================================================ */
.nm-blog--v2 .nm-blog-panel--magazine { display:flex; flex-direction:column; gap:24px; }
.nm-blog--v2 .nm-blog-panel--magazine .nm-blog-filter { margin:0 !important; }

/* à la une */
.nm-blog--v2 .nm-blog-feat { position:relative; display:flex; flex-direction:column; justify-content:flex-end; min-height:440px; margin:0; padding:20px; box-sizing:border-box; border-radius:20px; overflow:hidden; background:var(--nm-black, #0a0a0a); color:#fff; }
.nm-blog--v2 .nm-blog-feat-media { position:absolute; inset:0; z-index:0; display:block; overflow:hidden; }
.nm-blog--v2 .nm-blog-feat-img { display:block; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; object-fit:cover; object-position:center; }
.nm-blog--v2 .nm-blog-feat::before { content:''; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg, rgba(10,10,10,.1) 0%, rgba(10,10,10,0) 25%, rgba(10,10,10,.82) 100%); pointer-events:none; }
.nm-blog--v2 .nm-blog-feat--noimg::before { display:none; }
.nm-blog--v2 .nm-blog-feat-media .nm-blog-play { left:50%; top:50%; bottom:auto; transform:translate(-50%, -50%); width:56px; height:56px; }
.nm-blog--v2 .nm-blog-feat-body { position:relative; z-index:2; display:flex; flex-direction:column; align-items:flex-start; gap:14px; padding-top:120px; }
.nm-blog--v2 .nm-blog-feat-title { margin:0 !important; padding:0 !important; max-width:820px; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:28px !important; line-height:32px !important; letter-spacing:-0.03em !important; color:#fff !important; }
.nm-blog--v2 .nm-blog-feat-title a { font:inherit !important; letter-spacing:inherit !important; color:inherit !important; text-decoration:none !important; }
.nm-blog--v2 .nm-blog-feat-title a::after { content:''; position:absolute; inset:0; z-index:1; border-radius:20px; }
.nm-blog--v2 .nm-blog-feat-title a:focus-visible { outline:none; }
.nm-blog--v2 .nm-blog-feat-title a:focus-visible::after { outline:2px solid #fff; outline-offset:-4px; }
.nm-blog--v2 .nm-blog-feat-excerpt { margin:0 !important; max-width:720px; font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-weight:400 !important; font-size:15px !important; line-height:20px !important; color:rgba(255,255,255,.88) !important; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.nm-blog--v2 .nm-blog-feat .nm-blog-by { margin-top:6px; }
.nm-blog--v2 .nm-blog-feat .nm-blog-by-date { color:#fff; opacity:.8; }

/* colonnes : liste + barre latérale */
.nm-blog--v2 .nm-blog-mag { display:grid; grid-template-columns:minmax(0, 1fr); gap:24px; align-items:start; }
.nm-blog--v2 .nm-blog-list { display:flex; flex-direction:column; gap:12px; min-width:0; }

/* carte horizontale (magazine et résultats de recherche) */
.nm-blog--v2 .nm-blog-item { position:relative; display:flex; flex-direction:column; min-width:0; margin:0; padding:0; border:1px solid var(--nm-line, #e5e5e5); border-radius:20px; overflow:hidden; background:#fff; color:var(--nm-black, #0a0a0a); box-shadow:0 6px 20px rgba(10,10,10,.04); }
.nm-blog--v2 .nm-blog-item-media { display:block; position:relative; aspect-ratio:16 / 10; overflow:hidden; background:var(--nm-line, #e5e5e5); }
.nm-blog--v2 .nm-blog-item-img { display:block; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; object-fit:cover; object-position:center; }
.nm-blog--v2 .nm-blog-item-img--empty { display:block; }
.nm-blog--v2 .nm-blog-item-body { display:flex; flex:1 1 auto; flex-direction:column; align-items:flex-start; gap:12px; padding:20px; box-sizing:border-box; }
.nm-blog--v2 .nm-blog-item .nm-blog-pill { border-color:transparent; background:var(--nm-light, #f5f5f5); }
.nm-blog--v2 .nm-blog-item a.nm-blog-pill:hover, .nm-blog--v2 .nm-blog-item a.nm-blog-pill:focus-visible { background:#e8edf6; color:var(--nm-blue, #00339f) !important; }
.nm-blog--v2 .nm-blog-item-title { margin:0 !important; padding:0 !important; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:22px !important; line-height:26px !important; letter-spacing:-0.03em !important; color:var(--nm-black, #0a0a0a) !important; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.nm-blog--v2 .nm-blog-item-title a { font:inherit !important; letter-spacing:inherit !important; color:inherit !important; text-decoration:none !important; transition:color .2s ease; }
.nm-blog--v2 .nm-blog-item-title a::after { content:''; position:absolute; inset:0; z-index:1; border-radius:20px; }
.nm-blog--v2 .nm-blog-item:hover .nm-blog-item-title a, .nm-blog--v2 .nm-blog-item-title a:focus-visible { color:var(--nm-blue, #00339f) !important; }
.nm-blog--v2 .nm-blog-item-title a:focus-visible { outline:none; }
.nm-blog--v2 .nm-blog-item-title a:focus-visible::after { outline:2px solid var(--nm-blue, #00339f); outline-offset:2px; }
.nm-blog--v2 .nm-blog-item-excerpt { margin:0 !important; font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-weight:400 !important; font-size:15px !important; line-height:20px !important; color:var(--nm-grey, #666) !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.nm-blog--v2 .nm-blog-item .nm-blog-by { margin-top:auto; padding-top:4px; color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-item .nm-blog-by-date { color:#6f6f6f; opacity:1; }

/* barre latérale */
.nm-blog--v2 .nm-blog-side { display:flex; flex-direction:column; gap:16px; min-width:0; }
.nm-blog--v2 .nm-blog-side-block { display:flex; flex-direction:column; gap:14px; padding:20px; box-sizing:border-box; border-radius:20px; background:var(--nm-light, #f5f5f5); }
.nm-blog--v2 .nm-blog-side-title { margin:0 !important; padding:0 !important; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:500 !important; font-size:18px !important; line-height:1 !important; letter-spacing:-0.02em !important; color:var(--nm-black, #0a0a0a) !important; }
.nm-blog--v2 .nm-blog-recent { list-style:none; margin:0 !important; padding:0 !important; display:flex; flex-direction:column; }
.nm-blog--v2 .nm-blog-recent-item { position:relative; display:flex; align-items:center; gap:12px; margin:0 !important; padding:12px 0 !important; border-top:1px solid var(--nm-line, #e5e5e5); }
.nm-blog--v2 .nm-blog-recent-item:first-child { border-top:0; padding-top:0 !important; }
.nm-blog--v2 .nm-blog-recent-item:last-child { padding-bottom:0 !important; }
.nm-blog--v2 .nm-blog-recent-media { display:block; position:relative; flex:0 0 64px; width:64px; height:64px; border-radius:12px; overflow:hidden; background:var(--nm-line, #e5e5e5); }
.nm-blog--v2 .nm-blog-recent-img { display:block; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; object-fit:cover; }
.nm-blog--v2 .nm-blog-recent-text { display:flex; flex-direction:column; gap:6px; min-width:0; }
.nm-blog--v2 .nm-blog-recent-title { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:15px !important; line-height:19px !important; letter-spacing:-0.01em !important; color:var(--nm-black, #0a0a0a) !important; text-decoration:none !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; transition:color .2s ease; }
.nm-blog--v2 .nm-blog-recent-title::after { content:''; position:absolute; inset:0; border-radius:8px; }
.nm-blog--v2 .nm-blog-recent-item:hover .nm-blog-recent-title, .nm-blog--v2 .nm-blog-recent-title:focus-visible { color:var(--nm-blue, #00339f) !important; }
.nm-blog--v2 .nm-blog-recent-title:focus-visible { outline:none; }
.nm-blog--v2 .nm-blog-recent-title:focus-visible::after { outline:2px solid var(--nm-blue, #00339f); outline-offset:2px; }
.nm-blog--v2 .nm-blog-recent-date { font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-size:12px !important; line-height:1 !important; color:#6f6f6f !important; }
.nm-blog--v2 .nm-blog-cats-list { list-style:none; margin:0 !important; padding:0 !important; display:flex; flex-direction:column; gap:8px; }
.nm-blog--v2 .nm-blog-cats-list li { margin:0 !important; padding:0 !important; }
.nm-blog--v2 .nm-blog-cat-card { display:flex; align-items:center; gap:12px; padding:10px; box-sizing:border-box; border-radius:16px; background:#fff; color:var(--nm-black, #0a0a0a) !important; text-decoration:none !important; transition:background-color .2s ease, color .2s ease; }
.nm-blog--v2 .nm-blog-cat-card-icon { display:flex; align-items:center; justify-content:center; flex:0 0 48px; width:48px; height:48px; border-radius:12px; background:var(--nm-light, #f5f5f5); color:var(--nm-black, #0a0a0a); transition:background-color .2s ease, color .2s ease; }
.nm-blog--v2 .nm-blog-cat-card-icon svg { display:block; width:24px; height:24px; fill:currentColor; }
.nm-blog--v2 .nm-blog-cat-card-text { display:flex; flex-direction:column; gap:5px; min-width:0; }
.nm-blog--v2 .nm-blog-cat-card-name { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:16px !important; line-height:1 !important; letter-spacing:0 !important; color:inherit; }
.nm-blog--v2 .nm-blog-cat-card-desc { font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-size:13px !important; line-height:16px !important; color:#6f6f6f; transition:color .2s ease; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.nm-blog--v2 .nm-blog-cat-card:hover, .nm-blog--v2 .nm-blog-cat-card:focus-visible { background:var(--nm-blue, #00339f); color:#fff !important; outline:none; }
.nm-blog--v2 .nm-blog-cat-card.is-active { background:var(--nm-black, #0a0a0a); color:#fff !important; }
.nm-blog--v2 .nm-blog-cat-card:hover .nm-blog-cat-card-icon, .nm-blog--v2 .nm-blog-cat-card:focus-visible .nm-blog-cat-card-icon, .nm-blog--v2 .nm-blog-cat-card.is-active .nm-blog-cat-card-icon { background:rgba(255,255,255,.14); color:#fff; }
.nm-blog--v2 .nm-blog-cat-card:hover .nm-blog-cat-card-desc, .nm-blog--v2 .nm-blog-cat-card:focus-visible .nm-blog-cat-card-desc, .nm-blog--v2 .nm-blog-cat-card.is-active .nm-blog-cat-card-desc { color:rgba(255,255,255,.8); }
.nm-blog--v2 .nm-blog-cat-card:focus-visible { box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--nm-blue, #00339f); }

/* ============================================================ ≥ 768 : tablette (sert aussi de desktop jusqu'à 1512 centré) ============================================================ */
@media (min-width: 768px) {
  .nm-blog.nm-blog--v2 { gap:28px; }
  .nm-blog--v2 .nm-blog-bar { flex-direction:row; align-items:center; justify-content:space-between; gap:16px; }
  .nm-blog--v2 .nm-blog-views { width:auto; flex:0 0 auto; }
  .nm-blog--v2 .nm-blog-view { flex:0 0 auto; min-width:120px; }
  .nm-blog--v2 .nm-blog-search { flex:0 1 420px; max-width:420px; }
  .nm-blog--v2 .nm-blog-cats { gap:0 28px; margin-bottom:24px; }

  /* mosaïque : 3 colonnes, rangées d'au moins 300 px ; les spans composent les rangées (voir neova_blog_mosaic_plan) */
  .nm-blog--v2 .nm-blog-mosaic { grid-template-columns:repeat(3, minmax(0, 1fr)); grid-auto-rows:minmax(300px, auto); grid-auto-flow:row dense; gap:12px; }
  .nm-blog--v2 .nm-blog-tile--s2 { grid-column:span 2; }
  .nm-blog--v2 .nm-blog-tile--s3 { grid-column:span 3; }
  .nm-blog--v2 .nm-blog-tile--tall { grid-row:span 2; }
  .nm-blog--v2 .nm-blog-tile--text, .nm-blog--v2 .nm-blog-tile--photo { min-height:0; }
  .nm-blog--v2 .nm-blog-tile-title { font-size:22px !important; line-height:26px !important; }
  .nm-blog--v2 .nm-blog-tile--s2 .nm-blog-tile-title { font-size:26px !important; line-height:30px !important; max-width:80%; }
  .nm-blog--v2 .nm-blog-tile--s3 .nm-blog-tile-title { font-size:28px !important; line-height:32px !important; max-width:62%; }
  .nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-top { min-height:0; flex:0 0 auto; }
  .nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-media { min-height:200px; }

  /* magazine */
  .nm-blog--v2 .nm-blog-feat { min-height:480px; padding:32px; }
  .nm-blog--v2 .nm-blog-feat-body { gap:16px; }
  .nm-blog--v2 .nm-blog-feat-title { font-size:40px !important; line-height:44px !important; }
  .nm-blog--v2 .nm-blog-feat-excerpt { font-size:16px !important; line-height:22px !important; -webkit-line-clamp:2; }
  .nm-blog--v2 .nm-blog-item { flex-direction:row; align-items:stretch; }
  .nm-blog--v2 .nm-blog-item-media { flex:0 0 40%; aspect-ratio:auto; min-height:220px; }
  .nm-blog--v2 .nm-blog-item-body { padding:24px; }
  .nm-blog--v2 .nm-blog-side { flex-direction:row; align-items:stretch; }
  .nm-blog--v2 .nm-blog-side-block { flex:1 1 0; min-width:0; }
  .nm-blog--v2 .nm-blog-mag--solo .nm-blog-side { flex-direction:row; }
}

/* ============================================================ ≥ 992 : colonne latérale, tailles desktop ============================================================ */
@media (min-width: 992px) {
  .nm-blog--v2 .nm-blog-mosaic { grid-auto-rows:minmax(336px, auto); gap:16px; }
  .nm-blog--v2 .nm-blog-tile--text, .nm-blog--v2 .nm-blog-tile--photo { padding:24px; }
  .nm-blog--v2 .nm-blog-tile--photo .nm-blog-tile-head { top:24px; left:24px; right:24px; }
  .nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-top { padding:24px; }
  .nm-blog--v2 .nm-blog-tile--mixed .nm-blog-tile-foot { left:24px; right:24px; bottom:24px; }
  .nm-blog--v2 .nm-blog-tile-title { font-size:24px !important; line-height:28px !important; }
  .nm-blog--v2 .nm-blog-tile--s2 .nm-blog-tile-title { font-size:30px !important; line-height:34px !important; }
  .nm-blog--v2 .nm-blog-tile--s3 .nm-blog-tile-title { font-size:34px !important; line-height:38px !important; }
  .nm-blog--v2 .nm-blog-tile-icon { flex-basis:32px; width:32px; height:32px; }

  .nm-blog--v2 .nm-blog-feat { min-height:520px; padding:40px; }
  .nm-blog--v2 .nm-blog-feat-title { font-size:48px !important; line-height:52px !important; }
  .nm-blog--v2 .nm-blog-mag { grid-template-columns:minmax(0, 1fr) 300px; gap:32px; }
  .nm-blog--v2 .nm-blog-list { gap:16px; }
  .nm-blog--v2 .nm-blog-item-title { font-size:24px !important; line-height:28px !important; }
  .nm-blog--v2 .nm-blog-side { flex-direction:column; }
  .nm-blog--v2 .nm-blog-mag--solo { grid-template-columns:minmax(0, 1fr); }
  .nm-blog--v2 .nm-blog-mag--solo .nm-blog-side { flex-direction:row; }
  /* résultats de recherche : liste sur 860 px maximum */
  .nm-blog--list .nm-blog-list { max-width:860px; }
}

/* ============================================================ survol (souris fine) : zoom lent des photos, comme les cartes du site ============================================================ */
@media (hover: hover) and (pointer: fine) {
  .nm-blog--v2 .nm-blog-tile-img, .nm-blog--v2 .nm-blog-feat-img, .nm-blog--v2 .nm-blog-item-img, .nm-blog--v2 .nm-blog-recent-img { transform:scale(1.01); transition:transform .8s ease; will-change:transform; }
  .nm-blog--v2 .nm-blog-tile:hover .nm-blog-tile-img, .nm-blog--v2 .nm-blog-tile:focus-within .nm-blog-tile-img,
  .nm-blog--v2 .nm-blog-feat:hover .nm-blog-feat-img, .nm-blog--v2 .nm-blog-feat:focus-within .nm-blog-feat-img,
  .nm-blog--v2 .nm-blog-item:hover .nm-blog-item-img, .nm-blog--v2 .nm-blog-item:focus-within .nm-blog-item-img,
  .nm-blog--v2 .nm-blog-recent-item:hover .nm-blog-recent-img { transform:scale(1.07); }
}

/* ============================================================ mouvement réduit ============================================================ */
@media (prefers-reduced-motion: reduce) {
  .nm-blog--v2 .nm-blog-view, .nm-blog--v2 .nm-blog-pill, .nm-blog--v2 .nm-blog-cat-tab, .nm-blog--v2 .nm-blog-tile-arrow, .nm-blog--v2 .nm-blog-tile-arrow i,
  .nm-blog--v2 .nm-blog-item-title a, .nm-blog--v2 .nm-blog-recent-title, .nm-blog--v2 .nm-blog-cat-card, .nm-blog--v2 .nm-blog-cat-card-icon, .nm-blog--v2 .nm-blog-cat-card-desc,
  .nm-blog--v2 .nm-blog-tile-img, .nm-blog--v2 .nm-blog-feat-img, .nm-blog--v2 .nm-blog-item-img, .nm-blog--v2 .nm-blog-recent-img { transition:none !important; }
  .nm-blog--v2 .nm-blog-tile:hover .nm-blog-tile-arrow i, .nm-blog--v2 .nm-blog-tile:focus-within .nm-blog-tile-arrow i { transform:none; }
  .nm-blog--v2 .nm-blog-tile-img, .nm-blog--v2 .nm-blog-feat-img, .nm-blog--v2 .nm-blog-item-img, .nm-blog--v2 .nm-blog-recent-img,
  .nm-blog--v2 .nm-blog-tile:hover .nm-blog-tile-img, .nm-blog--v2 .nm-blog-tile:focus-within .nm-blog-tile-img,
  .nm-blog--v2 .nm-blog-feat:hover .nm-blog-feat-img, .nm-blog--v2 .nm-blog-feat:focus-within .nm-blog-feat-img,
  .nm-blog--v2 .nm-blog-item:hover .nm-blog-item-img, .nm-blog--v2 .nm-blog-item:focus-within .nm-blog-item-img,
  .nm-blog--v2 .nm-blog-recent-item:hover .nm-blog-recent-img { transform:none !important; will-change:auto; }
}

/* ============================================================
   NEOVA : BLOG V3 (23/09) : carrousel « à la une » du magazine + filtre de catégorie sans rechargement de la mosaïque.
   À fusionner dans le kit #7 à la suite du bloc « NEOVA : BLOG V2, MOSAÏQUE ET MAGAZINE (21/09) » (mêmes sélecteurs nm-blog-*).
   Thème enfant : inc/neova-shortcodes.php (neova_blog_carousel, tuiles data-cats) + assets/js/neova-blog.js (glisser souris, boutons,
   compteur, clavier ; filtre FLIP).
   Carrousel : div.nm-blog-carousel[role=region] > div.nm-blog-carousel-track (défilement horizontal natif, scroll-snap obligatoire, barre
   de défilement fine sans JS puis masquée ; curseur main quand le glisser souris est actif) > div.nm-blog-carousel-slide (100 % de large,
   snap au début) > article.nm-blog-feat inchangé. div.nm-blog-carousel-nav (révélée par le JS) en haut à droite sur la photo : compteur
   « 1 / 5 » en pilule sombre translucide, deux pastilles blanches 40 px (flèches Font Awesome) qui passent en bleu au survol, bouton en
   bout de course atténué. Aucune lecture automatique ; prefers-reduced-motion : aucune transition.
   Mosaïque : tuile [hidden] masquée ; la photo rendue dans les tuiles texte reste invisible ; pendant la réorganisation (FLIP) les tuiles
   passent en absolu (is-flip) dans une grille à hauteur figée (is-animating), les sortantes (is-leaving) ne captent plus la souris.
   ============================================================ */

/* ---- carrousel « à la une » ---- */
.nm-blog--v2 .nm-blog-carousel { position:relative; min-width:0; }
.nm-blog--v2 .nm-blog-carousel-track { display:flex; gap:12px; margin:0; padding:0; overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; overscroll-behavior-x:contain; scrollbar-width:thin; scrollbar-color:var(--nm-line, #e5e5e5) transparent; border-radius:20px; }
.nm-blog--v2 .nm-blog-carousel.is-ready .nm-blog-carousel-track { scrollbar-width:none; cursor:grab; }
.nm-blog--v2 .nm-blog-carousel.is-ready .nm-blog-carousel-track::-webkit-scrollbar { display:none; width:0; height:0; }
.nm-blog--v2 .nm-blog-carousel.is-dragging .nm-blog-carousel-track { cursor:grabbing; scroll-snap-type:none; user-select:none; -webkit-user-select:none; }
.nm-blog--v2 .nm-blog-carousel.is-dragging .nm-blog-carousel-track a { pointer-events:none; }
.nm-blog--v2 .nm-blog-carousel-track:focus { outline:none; }
.nm-blog--v2 .nm-blog-carousel-track:focus-visible { outline:2px solid var(--nm-blue, #00339f); outline-offset:4px; }
.nm-blog--v2 .nm-blog-carousel-slide { display:flex; flex:0 0 100%; min-width:0; scroll-snap-align:start; scroll-snap-stop:always; }
.nm-blog--v2 .nm-blog-carousel-slide .nm-blog-feat { flex:1 1 auto; width:100%; }
.nm-blog--v2 .nm-blog-carousel-slide .nm-blog-feat-img { -webkit-user-drag:none; user-select:none; }

/* navigation : compteur + pastilles, en haut à droite (la partie haute de la carte est libre, le texte est en bas) */
.nm-blog--v2 .nm-blog-carousel-nav { position:absolute; top:20px; right:20px; z-index:3; display:flex; align-items:center; gap:8px; }
.nm-blog--v2 .nm-blog-carousel-nav[hidden] { display:none !important; }
.nm-blog--v2 .nm-blog-carousel-count { display:inline-flex; align-items:center; min-height:40px; padding:0 14px; margin-right:4px; box-sizing:border-box; border-radius:40px; background:rgba(10,10,10,.42); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:13px !important; line-height:1 !important; letter-spacing:.02em !important; font-variant-numeric:tabular-nums; color:#fff !important; white-space:nowrap; }
.nm-blog--v2 .nm-blog-carousel-btn { display:flex; align-items:center; justify-content:center; flex:0 0 40px; width:40px; height:40px; margin:0; padding:0; border:0; border-radius:20px; box-sizing:border-box; background:#fff; color:var(--nm-black, #0a0a0a); box-shadow:0 2px 10px rgba(10,10,10,.14); cursor:pointer; -webkit-appearance:none; appearance:none; transition:background-color .25s ease, color .25s ease, opacity .25s ease; }
.nm-blog--v2 .nm-blog-carousel-btn i { font-size:14px; line-height:1; color:inherit; transition:transform .25s ease; }
.nm-blog--v2 .nm-blog-carousel-btn:hover, .nm-blog--v2 .nm-blog-carousel-btn:focus-visible { background:var(--nm-blue, #00339f); color:#fff; }
.nm-blog--v2 .nm-blog-carousel-btn--next:hover i, .nm-blog--v2 .nm-blog-carousel-btn--next:focus-visible i { transform:translateX(3px); }
.nm-blog--v2 .nm-blog-carousel-btn--prev:hover i, .nm-blog--v2 .nm-blog-carousel-btn--prev:focus-visible i { transform:translateX(-3px); }
.nm-blog--v2 .nm-blog-carousel-btn:focus-visible { outline:2px solid #fff; outline-offset:2px; }
.nm-blog--v2 .nm-blog-carousel-btn[aria-disabled="true"] { opacity:.38; cursor:default; }
.nm-blog--v2 .nm-blog-carousel-btn[aria-disabled="true"]:hover { background:#fff; color:var(--nm-black, #0a0a0a); }
.nm-blog--v2 .nm-blog-carousel-btn[aria-disabled="true"]:hover i { transform:none; }

/* ---- mosaïque : filtre sans rechargement ---- */
.nm-blog--v2 .nm-blog-mosaic { position:relative; }
.nm-blog--v2 .nm-blog-tile[hidden] { display:none !important; }
.nm-blog--v2 .nm-blog-tile--text .nm-blog-tile-media { display:none !important; } /* photo rendue pour le retypage par le JS, invisible en tuile texte */
.nm-blog--v2 .nm-blog-mosaic.is-animating { overflow:visible; }
.nm-blog--v2 .nm-blog-tile.is-flip { position:absolute; margin:0; box-sizing:border-box; min-height:0 !important; }
.nm-blog--v2 .nm-blog-tile.is-leaving { pointer-events:none; z-index:0; }
.nm-blog--v2 .nm-blog-tile.is-flip:not(.is-leaving) { z-index:1; }
.nm-blog--filter-js .nm-blog-cat-tab { cursor:pointer; }

/* ---- ≥ 768 / ≥ 992 : la navigation suit le retrait de la carte (32 puis 40 px) ---- */
@media (min-width: 768px) {
  .nm-blog--v2 .nm-blog-carousel-nav { top:32px; right:32px; }
}
@media (min-width: 992px) {
  .nm-blog--v2 .nm-blog-carousel-nav { top:40px; right:40px; }
}

/* ---- mouvement réduit ---- */
@media (prefers-reduced-motion: reduce) {
  .nm-blog--v2 .nm-blog-carousel-track { scroll-behavior:auto; }
  .nm-blog--v2 .nm-blog-carousel-btn, .nm-blog--v2 .nm-blog-carousel-btn i { transition:none !important; }
  .nm-blog--v2 .nm-blog-carousel-btn--next:hover i, .nm-blog--v2 .nm-blog-carousel-btn--prev:hover i { transform:none; }
}

/* ============================================================
   NEOVA : BLOG MAGAZINE, COLONNE DE DROITE (23/09) : demande Frédéric. 1. Bloc « Rechercher » en tête de la colonne
   (titre, filet, champ gris + bouton noir à coins arrondis, dessin de la référence du thème) ; 2. en vue Magazine, la
   recherche de la barre du haut disparaît (elle reste en vue Mosaïque) ; 3. dès que la colonne est à droite (992 px),
   elle est épinglée sous le header pendant le défilement de la liste.
   ============================================================ */
.nm-blog--v2 .nm-blog-side-block--search .nm-blog-side-title { padding-bottom: 14px !important; border-bottom: 1px solid #e3e3e3; }
.nm-blog--v2 .nm-blog-side-block--search .nm-blog-search { display: flex !important; align-items: stretch; width: 100% !important; max-width: none !important; height: 52px; margin: 0 !important; padding: 0 !important; background: #fff !important; border-radius: 12px !important; overflow: hidden; }
.nm-blog--v2 .nm-blog-side-block--search .nm-blog-search-input { flex: 1 1 auto; min-width: 0; height: 52px !important; padding: 0 16px !important; background: transparent !important; border: 0 !important; border-radius: 0 !important; font-size: 15px !important; }
.nm-blog--v2 .nm-blog-side-block--search .nm-blog-search-btn { flex: 0 0 52px; width: 52px !important; height: 52px !important; margin: 0 !important; border-radius: 0 12px 12px 0 !important; background: #0a0a0a !important; color: #fff !important; }
.nm-blog--v2[data-nm-view="magazine"] > .nm-blog-bar > .nm-blog-search, html.nm-vue-magazine .nm-blog--v2 > .nm-blog-bar > .nm-blog-search { display: none !important; }
.nm-blog--v2[data-nm-view="mosaique"] .nm-blog-side-block--search { display: none; }
@media (min-width: 992px) {
  .nm-blog--v2 .nm-blog-side { position: sticky; top: var(--nm-pin-top, 100px); align-self: start; }
}
/* Pagination de la liste d'articles (Mosaïque, Magazine, recherche) : carrés 50 px arrondis 14, gris des cartes, page
   courante noire, flèches fines, « --- » pour les pages sautées, numéros sur deux chiffres (Frédéric 23/09, réf. thème). */
.nm-blog--v2 .nm-blog-pag { display: flex !important; justify-content: flex-start !important; flex-wrap: wrap; gap: 12px !important; margin: 32px 0 0 !important; }
.nm-blog--v2 .nm-blog-pag .page-numbers { display: flex !important; align-items: center; justify-content: center; width: 50px !important; height: 50px !important; margin: 0 !important; padding: 0 !important; border: 0 !important; border-radius: 14px !important; background: #eeeeee !important; color: #0a0a0a !important; font-family: var(--nm-sg) !important; font-weight: 500 !important; font-size: 16px !important; line-height: 1 !important; text-decoration: none !important; transition: background-color .2s ease, color .2s ease; }
.nm-blog--v2 .nm-blog-pag .page-numbers.current { background: #0a0a0a !important; color: #fff !important; }
.nm-blog--v2 .nm-blog-pag .page-numbers.dots { font-size: 0 !important; }
.nm-blog--v2 .nm-blog-pag .page-numbers.dots::before { content: "---"; font-size: 16px; letter-spacing: .05em; }
.nm-blog--v2 .nm-blog-pag .page-numbers i { font-size: 18px !important; }
@media (hover: hover) and (pointer: fine) { .nm-blog--v2 .nm-blog-pag a.page-numbers:hover { background: #0a0a0a !important; color: #fff !important; } }
/* colonne du magazine : les blocs gardent leur hauteur naturelle (ils se partageaient la hauteur de la colonne : bloc
   « Rechercher » étiré sur 250 px) ; champ de recherche à 52 px */
@media (min-width: 992px) { .nm-blog--v2 .nm-blog-side .nm-blog-side-block { flex: 0 0 auto !important; } }
.nm-blog--v2 .nm-blog-side-block--search .nm-blog-search { height: 52px !important; min-height: 0 !important; flex: 0 0 auto !important; }

/* ============================================================
   NEOVA : PAGE CONTACT V2 (23/09) : demande Frédéric, sur la référence du thème. Après le hero : un plan (carte Google en
   niveaux de gris, arrondie, lien « Ouvrir dans Google Maps »), puis « Écrivez-nous » : surtitre, titre et coordonnées
   (téléphone et horaires, agence, e-mail) à gauche, formulaire dans une carte blanche à droite (champs gris arrondis sur
   deux colonnes, message pleine largeur, envoi en lien à pastille). Les deux sections sont posées sur le gris de la page,
   sans carte blanche de section. En dessous de 1024 : une colonne.
   ============================================================ */
.nm-root .nm-map-sec.e-con, .nm-root .nm-git.e-con { background: transparent !important; box-shadow: none !important; }
.nm-root .nm-map { position: relative; height: 320px; border-radius: 20px; overflow: hidden; background: #2a2a2a; }
.nm-root .nm-map iframe { display: block; width: 100%; height: 100%; border: 0; filter: grayscale(1) invert(.92) contrast(.85) brightness(.95); }
/* Carte interactive en option (23/09) : image statique du plan à la place de l’iframe Google, rien n’est chargé chez Google tant que l’option n’est pas souscrite. Iframe d’origine : _nm_bak_20260923_carte */
.nm-root .nm-map img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; border-radius: 0; }
.nm-root .nm-map-link { position: absolute; left: 16px; bottom: 16px; display: inline-flex; align-items: center; height: 36px; padding: 0 16px; border-radius: 999px; background: #fff; color: #0a0a0a !important; font-family: var(--nm-sg) !important; font-size: 14px !important; text-decoration: none !important; }
.nm-root .nm-git.e-con { gap: 20px !important; }
.nm-root .nm-git-info { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; margin-top: 8px; }
.nm-root .nm-git-label { display: flex; align-items: center; gap: 8px; margin: 0 0 8px !important; font-family: var(--nm-sg) !important; font-weight: 500 !important; font-size: 14px !important; line-height: 1 !important; color: #0a0a0a !important; }
.nm-root .nm-git-label i { font-size: 13px; color: #888; }
.nm-root .nm-git-text { margin: 0 !important; font-family: var(--nm-inter) !important; font-size: 15px !important; line-height: 22px !important; color: #555 !important; }
.nm-root .nm-git-text a { color: inherit !important; text-decoration: none !important; }
.nm-root .nm-git-form.e-con { background: #fff !important; border-radius: 20px !important; padding: 24px 20px !important; gap: 20px !important; }
.nm-root .nm-git-form-title .elementor-heading-title { font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 20px !important; line-height: 1.2 !important; letter-spacing: -0.02em !important; color: #0a0a0a !important; }
.nm-root .nm-git-disclaimer { display: none !important; } /* le consentement du formulaire suffit */
.nm-root .nm-git-cf7 .neova-form { display: grid !important; grid-template-columns: minmax(0, 1fr); gap: 12px !important; margin: 0 !important; }
.nm-root .nm-git-cf7 .pxl-item--form { position: relative; margin: 0 !important; padding: 0 !important; }
.nm-root .nm-git-cf7 .pxl-item--form > i { display: none !important; }
.nm-root .nm-git-cf7 .pxl-item--select > i { display: block !important; position: absolute; right: 16px; top: 50%; transform: translateY(-50%); color: #888; pointer-events: none; font-size: 14px; }
.nm-root .nm-git-cf7 input.wpcf7-form-control:not([type=checkbox]):not([type=submit]), .nm-root .nm-git-cf7 select.wpcf7-form-control, .nm-root .nm-git-cf7 textarea.wpcf7-form-control { width: 100% !important; height: 48px !important; margin: 0 !important; padding: 0 16px !important; border: 0 !important; border-radius: 12px !important; background: #f5f5f5 !important; color: #0a0a0a !important; font-family: var(--nm-inter) !important; font-size: 15px !important; line-height: 48px !important; box-shadow: none !important; -webkit-appearance: none; appearance: none; }
.nm-root .nm-git-cf7 textarea.wpcf7-form-control { height: 128px !important; padding: 14px 16px !important; line-height: 22px !important; resize: vertical; }
.nm-root .nm-git-cf7 .wpcf7-form-control::placeholder { color: #888 !important; opacity: 1; }
.nm-root .nm-git-cf7 .wpcf7-form-control:focus { outline: 2px solid #0a0a0a !important; outline-offset: 0; }
.nm-root .nm-git-cf7 .pxl-item--consent { font-family: var(--nm-inter) !important; font-size: 13px !important; line-height: 19px !important; color: #666 !important; margin: 4px 0 0 !important; }
.nm-root .nm-git-cf7 .pxl-item--consent a { color: #0a0a0a !important; text-decoration: underline !important; text-underline-offset: 2px; }
.nm-root .nm-git-cf7 .pxl-item--submit { margin: 4px 0 0 !important; }
.nm-root .nm-git-cf7 .pxl-item--submit .btn { display: inline-flex !important; align-items: center !important; gap: 14px !important; width: auto !important; height: auto !important; min-height: 0 !important; margin: 0 !important; padding: 0 !important; background: transparent !important; border: 0 !important; box-shadow: none !important; color: #0a0a0a !important; font-family: var(--nm-sg) !important; font-weight: 500 !important; font-size: 15px !important; text-transform: none !important; letter-spacing: 0 !important; }
.nm-root .nm-git-cf7 .pxl-item--submit .btn br { display: none; }
.nm-root .nm-git-cf7 .pxl-item--submit .pxl--btn-icon { width: 40px !important; height: 40px !important; min-width: 40px !important; border-radius: 50% !important; background: #0a0a0a !important; display: inline-flex !important; align-items: center; justify-content: center; margin: 0 !important; }
.nm-root .nm-git-cf7 .pxl-item--submit .pxl--btn-text { position: relative; padding-bottom: 3px; }
.nm-root .nm-git-cf7 .pxl-item--submit .pxl--btn-text::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right center; transition: transform .3s cubic-bezier(.37, .31, .2, .85); }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-git-cf7 .pxl-item--submit .btn:hover .pxl--btn-text::after { transform: scaleX(1); transform-origin: left center; } }
.nm-root .nm-git-cf7 .wpcf7-response-output { margin: 12px 0 0 !important; border-radius: 12px; font-size: 14px; }
@media (min-width: 768px) {
  .nm-root .nm-map { height: 380px; }
  .nm-root .nm-git-info { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 32px; }
  .nm-root .nm-git-form.e-con { padding: 32px !important; }
  .nm-root .nm-git-cf7 .neova-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nm-root .nm-git-cf7 .pxl-item--textarea, .nm-root .nm-git-cf7 .pxl-item--consent, .nm-root .nm-git-cf7 .pxl-item--submit { grid-column: 1 / -1; }
}
@media (min-width: 1024px) {
  .nm-root .nm-git.e-con { display: grid !important; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 64px !important; row-gap: 20px !important; align-items: start !important; }
  .nm-root .nm-git > .nm-git-eb { grid-column: 1; grid-row: 1; }
  .nm-root .nm-git > .nm-git-title { grid-column: 1; grid-row: 2; }
  .nm-root .nm-git > .nm-git-info-w { grid-column: 1; grid-row: 3; }
  .nm-root .nm-git > .nm-git-form { grid-column: 2; grid-row: 1 / span 3; align-self: center; }
}
@media (min-width: 1201px) { .nm-root .nm-map { height: 420px; } }
/* Contact v2, finitions : pas d'icônes dans les champs (flèche du menu déroulant seule), textes et placeholders sans
   capitales, menu déroulant sur une ligne ; colonne de gauche centrée verticalement face au formulaire */
.nm-root .nm-git-cf7 .pxl-item--form i:not(.fa-angle-down), .nm-root .nm-git-cf7 .pxl-item--form svg { display: none !important; }
.nm-root .nm-git-cf7 .wpcf7-form-control, .nm-root .nm-git-cf7 .wpcf7-form-control::placeholder, .nm-root .nm-git-cf7 select.wpcf7-form-control option { text-transform: none !important; letter-spacing: 0 !important; font-weight: 400 !important; }
.nm-root .nm-git-cf7 select.wpcf7-form-control { padding-right: 40px !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; background-image: none !important; color: #888 !important; }
.nm-root .nm-git-cf7 select.wpcf7-form-control:valid, .nm-root .nm-git-cf7 select.wpcf7-form-control option { color: #0a0a0a !important; }
.nm-root .nm-git-cf7 .pxl-item--select::after, .nm-root .nm-git-cf7 .pxl-item--select::before { display: none !important; }
@media (min-width: 1024px) {
  .nm-root .nm-git.e-con { grid-template-rows: 1fr auto auto auto 1fr; }
  .nm-root .nm-git > .nm-git-eb { grid-row: 2; }
  .nm-root .nm-git > .nm-git-title { grid-row: 3; }
  .nm-root .nm-git > .nm-git-info-w { grid-row: 4; }
  .nm-root .nm-git > .nm-git-form { grid-row: 1 / -1; align-self: start; }
}
/* menu déroulant remplacé par le thème (.pxl-select : libellé .pxl-select-higthlight + liste .pxl-select-options) : même
   dessin que les champs, sans capitales ; liste blanche arrondie */
.nm-root .nm-git-cf7 .pxl-select { position: relative; width: 100%; }
.nm-root .nm-git-cf7 .pxl-select-higthlight { display: flex !important; align-items: center; height: 48px !important; margin: 0 !important; padding: 0 40px 0 16px !important; border: 0 !important; border-radius: 12px !important; background: #f5f5f5 !important; color: #0a0a0a !important; font-family: var(--nm-inter) !important; font-weight: 400 !important; font-size: 15px !important; line-height: 1 !important; letter-spacing: 0 !important; text-transform: none !important; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.nm-root .nm-git-cf7 .pxl-select-higthlight::before, .nm-root .nm-git-cf7 .pxl-select-higthlight::after { display: none !important; }
.nm-root .nm-git-cf7 .pxl-select-options { margin: 6px 0 0 !important; padding: 8px !important; border: 0 !important; border-radius: 12px !important; background: #fff !important; box-shadow: 0 12px 32px rgba(10, 10, 10, .12) !important; z-index: 20; }
.nm-root .nm-git-cf7 .pxl-select-options li { padding: 10px 12px !important; border-radius: 8px; font-family: var(--nm-inter) !important; font-size: 15px !important; text-transform: none !important; letter-spacing: 0 !important; color: #0a0a0a !important; }
.nm-root .nm-git-cf7 .pxl-select-options li:hover { background: #f5f5f5 !important; }
.nm-root .nm-git-cf7 .pxl-item--select > p { margin: 0 !important; }
.nm-root .nm-git-cf7 .pxl-item--select > i { z-index: 2; }
.nm-root .nm-git-cf7 .pxl-select-higthlight { display: block !important; line-height: 48px !important; }
.nm-root .nm-git-cf7 .pxl-select:has(select option[value=""]:checked) .pxl-select-higthlight { color: #888 !important; } /* invite grise tant qu'aucun objet n'est choisi */

/* ============================================================
   NEOVA : ARTICLE DE BLOG V2 (23/09) : gabarit floka-child/single.php réécrit (fonctions inc/neova-article.php) d'après
   l'article de blog du thème Floka : fond de page #f5f5f5, grande carte blanche r20 (méta · photo à la une r16 · H1 · chapô ·
   contenu · étiquettes en pilules + partage), bloc auteur sombre #0a0a0a, navigation précédent / suivant (carré blanc ← / carré
   noir →), colonne de cartes blanches (« Rechercher », « Les plus récents », « Catégories », carte d'appel « Découvrir nos
   formations ») épinglée sous le header (--nm-pin-top) à partir de 992 px.
   Markup : main.nm-post.nm-art > div.nm-art-root > div.nm-art-grid > div.nm-art-main (article.nm-art-card + aside.nm-art-author +
   nav.nm-art-nav) + aside.nm-art-side (section.nm-art-widget × 3 + a.nm-art-promo) ; puis le modèle Elementor CTA + footer.
   Le corps garde div.nm-post-content (règles « NEOVA : ARTICLE » et « ARTICLE : MÉDIAS » du kit : Inter 16, H2 Space Grotesk
   Medium, embeds, galeries, citations) ; seules sa largeur (720 centrée → pleine carte) et la photo à la une (figure.nm-art-figure
   qui garde .nm-post-hero / --video / --playing pour neova-video.js) sont reprises ici. Aucune règle nm-post-* du kit n'est modifiée.
   Header : sous 1100 px le header mobile #10947 (logo blanc, bouton rond) est posé en absolu sur la page ; la racine reçoit une
   bande sombre de sa hauteur (100 / 112 / 128 px, + barre d'admin) pour que le logo reste lisible sur le fond gris ; à partir de
   1100 px la pilule fixe blanche passe sur le gris et la page commence à --nm-pin-top (76 + 24). Variables --nm-hdr-bottom /
   --nm-pin-gap / --nm-adm / --nm-pin-top recopiées du bloc « ÉPINGLAGE SOUS LE HEADER » (la racine article n'est pas un .nm-root).
   Palette : noir #0a0a0a, blanc, gris #eeeeee (champ, vignettes vides), fond #f5f5f5, filets #e5e5e5, textes #666 / #6f6f6f,
   bleu #00339f au survol des liens seulement ; Space Grotesk (titres, méta, boutons, étiquettes) / Inter (textes) ; aucun lien
   en gras ; ni vues ni commentaires (fermés). Mobile d'abord (375 : une colonne, gouttière 10, carte 20), puis 480 (auteur en
   ligne), 600 (précédent / suivant côte à côte), 768 (gouttière 16, carte 32, photo 16/9, H1 48), 992 (grille article + colonne
   300 épinglée, gouttière 20, carte 40, H1 56), 1100 (header pilule), 1201 (grille centrée 1100, colonne 320), 1601 (grille 1180).
   prefers-reduced-motion : ni transition ni zoom. Survol : photos zoom lent 1,01 → 1,07 (0,8 s, souris fine), titres bleu,
   flèches décalées de 4 px ; focus visible 2 px bleu.
   ============================================================ */

/* ---- variables : hauteur du header (kit : bouton rond 48 fixé en remontant, top 26 / 32 dès 768 / 40 dès 992 ; pilule 26 + 50 dès 1100) ---- */
.nm-art { --nm-art-band:100px; --nm-hdr-bottom:74px; --nm-pin-gap:16px; --nm-adm:0px; --nm-pin-top:calc(var(--nm-hdr-bottom) + var(--nm-pin-gap) + var(--nm-adm)); }
@media (min-width: 768px) { .nm-art { --nm-art-band:112px; --nm-hdr-bottom:80px; } }
@media (min-width: 992px) { .nm-art { --nm-art-band:128px; --nm-hdr-bottom:88px; } }
@media (min-width: 1100px) { .nm-art { --nm-art-band:0px; --nm-hdr-bottom:76px; --nm-pin-gap:24px; } }
body.admin-bar .nm-art { --nm-adm:32px; }
@media (max-width: 782px) { body.admin-bar .nm-art { --nm-adm:46px; } }

/* ---- racine : fond gris, bande sombre sous le header mobile, gouttières du site ---- */
.nm-art .nm-art-root { position:relative; width:100%; padding:calc(var(--nm-art-band) + var(--nm-adm) + 10px) 10px 0; box-sizing:border-box; background:#f5f5f5; background-image:linear-gradient(#0a0a0a, #0a0a0a); background-repeat:no-repeat; background-size:100% calc(var(--nm-art-band) + var(--nm-adm)); }
.nm-art .nm-art-grid { display:flex; flex-direction:column; gap:10px; width:100%; min-width:0; }
.nm-art .nm-art-main, .nm-art .nm-art-side { display:flex; flex-direction:column; gap:10px; min-width:0; }
.nm-art .nm-sr { position:absolute !important; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0; }

/* ---- carte article ---- */
.nm-art .nm-art-card { display:flex; flex-direction:column; gap:24px; margin:0; padding:20px; box-sizing:border-box; border-radius:20px; background:#fff; overflow:hidden; }
.nm-art .nm-art-head { display:flex; flex-direction:column; gap:20px; }
.nm-art .nm-art-meta { display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; margin:0 !important; padding:0; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:#6f6f6f !important; }
.nm-art .nm-art-cat { color:#0a0a0a !important; text-decoration:none !important; padding:16px 0; margin:-16px 0; transition:color .2s ease; } /* cible 44 px */
.nm-art .nm-art-cat:hover, .nm-art .nm-art-cat:focus-visible { color:#00339f !important; }
.nm-art .nm-art-cat:focus-visible { outline:2px solid #00339f; outline-offset:2px; border-radius:4px; }
.nm-art .nm-art-date { color:#6f6f6f !important; }
.nm-art .nm-art-read { display:inline-flex; align-items:center; gap:6px; color:#6f6f6f !important; white-space:nowrap; } /* à droite dès 480 (margin-left:auto), à la suite de la date en dessous */
.nm-art .nm-art-read i { font-size:12px; line-height:1; }

/* photo à la une : cadre r16 ; les classes nm-post-hero / --video du kit sont conservées pour neova-video.js (façade + lecteur) */
.nm-art .nm-art-figure.nm-post-hero { position:relative; display:block; width:100%; min-height:0; margin:0 !important; padding:0; aspect-ratio:4 / 3; border-radius:16px; overflow:hidden; background:#eeeeee; }
.nm-art .nm-art-figure.nm-post-hero::before, .nm-art .nm-art-figure.nm-post-hero::after { display:none !important; content:none !important; } /* dégradés du hero v1 */
.nm-art .nm-art-figure .nm-post-hero-img { position:absolute; inset:0; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; object-fit:cover; object-position:center; display:block; }
.nm-art .nm-art-figure.nm-post-hero--playing { aspect-ratio:16 / 9; padding:0 !important; background:#0a0a0a; }
.nm-art .nm-art-figure.nm-post-hero--playing .nm-post-player { position:absolute; inset:0; width:100%; height:100%; border-radius:16px; }

.nm-art .nm-art-title { margin:0 !important; padding:0; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:40px !important; line-height:44px !important; letter-spacing:-0.03em !important; color:#0a0a0a !important; text-wrap:balance; hyphens:none; overflow-wrap:anywhere; }
.nm-art .nm-art-intro { margin:0 !important; padding:0; font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-weight:400 !important; font-size:17px !important; line-height:26px !important; letter-spacing:0 !important; color:#0a0a0a !important; }

/* corps : règles du kit conservées (Inter 16, H2 28/34…), la colonne de lecture 720 centrée (kit ≥768) devient la carte entière */
.nm-art .nm-post-content { width:100%; max-width:none !important; margin:0 !important; }
.nm-art .nm-post-content > *:first-child { margin-top:0 !important; }
.nm-art .nm-post-content > *:last-child { margin-bottom:0 !important; }
/* bloc Média et texte (image à gauche, liste à droite séparée par des filets) : le dessin de la référence Floka */
.nm-art .nm-post-content .wp-block-media-text { display:grid !important; grid-template-columns:minmax(0, 1fr); gap:20px; align-items:center; margin:32px 0 !important; padding:0; }
.nm-art .nm-post-content .wp-block-media-text__media { grid-column:auto !important; grid-row:auto !important; margin:0 !important; }
.nm-art .nm-post-content .wp-block-media-text__media img { display:block; width:100%; height:auto; margin:0 !important; border-radius:16px; object-fit:cover; }
.nm-art .nm-post-content .wp-block-media-text__content { grid-column:auto !important; grid-row:auto !important; padding:0 !important; }
.nm-art .nm-post-content .wp-block-media-text__content > *:first-child { margin-top:0 !important; }
.nm-art .nm-post-content .wp-block-media-text__content > *:last-child { margin-bottom:0 !important; }
.nm-art .nm-post-content .wp-block-media-text__content ul { list-style:none !important; margin:0 !important; padding:0 !important; }
.nm-art .nm-post-content .wp-block-media-text__content li { margin:0 !important; padding:12px 0 !important; border-bottom:1px solid #e5e5e5; }
.nm-art .nm-post-content .wp-block-media-text__content li:first-child { padding-top:0 !important; }
.nm-art .nm-post-content .wp-block-media-text__content li:last-child { border-bottom:0; padding-bottom:0 !important; }
.nm-art .nm-post-content .wp-block-media-text__content li::marker { content:none; }

/* pied de carte : étiquettes + partage */
.nm-art .nm-art-foot { display:flex; flex-direction:column; gap:16px; padding-top:20px; border-top:1px solid #e5e5e5; }
.nm-art .nm-art-tags { list-style:none; display:flex; flex-wrap:wrap; gap:8px; margin:0 !important; padding:0 !important; }
.nm-art .nm-art-tags li { margin:0 !important; padding:0 !important; }
.nm-art .nm-art-tag { display:inline-flex; align-items:center; min-height:32px; padding:0 14px; box-sizing:border-box; border:1px solid #0a0a0a; border-radius:40px; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.04em !important; text-transform:uppercase !important; color:#0a0a0a !important; text-decoration:none !important; background:#fff; transition:background-color .2s ease, color .2s ease, border-color .2s ease; }
.nm-art a.nm-art-tag:hover, .nm-art a.nm-art-tag:focus-visible { background:#0a0a0a; color:#fff !important; outline:none; }
.nm-art a.nm-art-tag:focus-visible { box-shadow:0 0 0 2px #fff, 0 0 0 4px #00339f; }
.nm-art .nm-art-share { display:flex; flex-wrap:wrap; align-items:center; gap:12px; }
.nm-art .nm-art-share-label { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:14px !important; line-height:1 !important; letter-spacing:0 !important; color:#0a0a0a !important; }
.nm-art .nm-art-share-list { list-style:none; display:flex; gap:8px; margin:0 !important; padding:0 !important; }
.nm-art .nm-art-share-list li { margin:0 !important; padding:0 !important; }
.nm-art .nm-art-share-btn { display:flex; align-items:center; justify-content:center; width:40px; height:40px; margin:0 !important; padding:0 !important; box-sizing:border-box; border:1px solid #e5e5e5 !important; border-radius:20px !important; background:#fff !important; color:#0a0a0a !important; font-size:14px; line-height:1; text-decoration:none !important; box-shadow:none !important; cursor:pointer; transition:border-color .2s ease, color .2s ease, background-color .2s ease; -webkit-appearance:none; appearance:none; }
.nm-art .nm-art-share-btn i { font-size:14px; line-height:1; color:inherit; }
.nm-art .nm-art-share-btn svg { display:block; width:14px; height:14px; }
.nm-art .nm-art-share-btn:hover, .nm-art .nm-art-share-btn:focus-visible { border-color:#00339f !important; color:#00339f !important; outline:none; }
.nm-art .nm-art-share-btn:focus-visible { box-shadow:0 0 0 2px #fff, 0 0 0 4px #00339f !important; }
.nm-art .nm-art-share-btn.is-done { background:#0a0a0a !important; border-color:#0a0a0a !important; color:#fff !important; }
.nm-art .nm-art-share-msg { font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-size:13px !important; line-height:1 !important; color:#6f6f6f !important; }
.nm-art .nm-art-share-msg:empty { display:none; }

/* ---- bloc auteur (profil WordPress) ---- */
.nm-art .nm-art-author { display:flex; flex-direction:column; gap:16px; margin:0; padding:24px 20px; box-sizing:border-box; border-radius:20px; background:#0a0a0a; color:#fff; }
.nm-art .nm-art-author-media { flex:0 0 auto; width:72px; height:72px; border-radius:14px; overflow:hidden; background:#1e1e1e; }
.nm-art .nm-art-author-img { display:block; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; border-radius:0 !important; object-fit:cover; }
.nm-art .nm-art-author-text { display:flex; flex-direction:column; min-width:0; }
.nm-art .nm-art-author-text p { margin:0 !important; padding:0; }
.nm-art .nm-art-author-label { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:12px !important; line-height:1 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:#999999 !important; }
.nm-art .nm-art-author-name { margin-top:10px !important; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:22px !important; line-height:26px !important; letter-spacing:-0.02em !important; color:#fff !important; }
.nm-art .nm-art-author-role { margin-top:4px !important; font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-weight:400 !important; font-size:14px !important; line-height:20px !important; letter-spacing:0 !important; color:#bfbfbf !important; }
.nm-art .nm-art-author-bio { margin-top:12px !important; max-width:62ch; font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-weight:400 !important; font-size:15px !important; line-height:22px !important; letter-spacing:0 !important; color:#999999 !important; }

/* ---- précédent / suivant (sur le fond gris) ---- */
.nm-art .nm-art-nav { display:grid; grid-template-columns:minmax(0, 1fr); gap:10px; margin:0; padding:0 4px; }
.nm-art .nm-art-nav-link { display:flex; align-items:center; gap:14px; min-height:64px; padding:6px 0; color:#0a0a0a !important; text-decoration:none !important; }
.nm-art .nm-art-nav-link--next { justify-content:flex-end; text-align:right; }
.nm-art .nm-art-nav-arrow { display:flex; align-items:center; justify-content:center; flex:0 0 48px; width:48px; height:48px; box-sizing:border-box; border:1px solid #e5e5e5; border-radius:12px; background:#fff; color:#0a0a0a; font-size:15px; line-height:1; transition:transform .25s ease, background-color .2s ease, color .2s ease, border-color .2s ease; }
.nm-art .nm-art-nav-link--next .nm-art-nav-arrow { border-color:#0a0a0a; background:#0a0a0a; color:#fff; }
.nm-art .nm-art-nav-text { display:flex; flex-direction:column; gap:6px; min-width:0; }
.nm-art .nm-art-nav-label { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:11px !important; line-height:1 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:#6f6f6f !important; }
.nm-art .nm-art-nav-title { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:17px !important; line-height:21px !important; letter-spacing:-0.02em !important; color:#0a0a0a !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; transition:color .2s ease; }
.nm-art .nm-art-nav-link:hover .nm-art-nav-title, .nm-art .nm-art-nav-link:focus-visible .nm-art-nav-title { color:#00339f !important; }
.nm-art .nm-art-nav-link--prev:hover .nm-art-nav-arrow { transform:translateX(-4px); }
.nm-art .nm-art-nav-link--next:hover .nm-art-nav-arrow { transform:translateX(4px); }
.nm-art .nm-art-nav-link:focus-visible { outline:2px solid #00339f; outline-offset:4px; border-radius:8px; }

/* ---- colonne : cartes blanches ---- */
.nm-art .nm-art-widget { display:flex; flex-direction:column; gap:16px; margin:0; padding:20px; box-sizing:border-box; border-radius:20px; background:#fff; }
.nm-art .nm-art-widget-title { margin:0 !important; padding:0 0 14px !important; border-bottom:1px solid #e5e5e5; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:500 !important; font-size:18px !important; line-height:1 !important; letter-spacing:-0.02em !important; color:#0a0a0a !important; }
/* Rechercher : champ gris + bouton noir carré arrondi */
.nm-art .nm-art-search { display:flex; align-items:stretch; gap:8px; width:100%; margin:0 !important; padding:0 !important; }
.nm-art .nm-art-search-input { flex:1 1 auto; min-width:0; height:48px !important; margin:0 !important; padding:0 16px !important; box-sizing:border-box; border:0 !important; border-radius:12px !important; background:#eeeeee !important; box-shadow:none !important; outline:none !important; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:15px !important; line-height:1 !important; letter-spacing:0 !important; text-transform:none !important; color:#0a0a0a !important; transition:box-shadow .2s ease; }
.nm-art .nm-art-search-input::placeholder { color:#6f6f6f !important; opacity:1; } /* 5,1:1 sur #eee */
.nm-art .nm-art-search-input::-webkit-search-decoration, .nm-art .nm-art-search-input::-webkit-search-cancel-button { -webkit-appearance:none; }
.nm-art .nm-art-search-input:focus, .nm-art .nm-art-search-input:focus-visible { box-shadow:inset 0 0 0 1px #0a0a0a !important; }
.nm-art .nm-art-search-btn { display:flex; align-items:center; justify-content:center; flex:0 0 48px; width:48px; height:48px; margin:0 !important; padding:0 !important; border:0 !important; border-radius:12px !important; background:#0a0a0a !important; color:#fff !important; box-shadow:none !important; cursor:pointer; transition:background-color .2s ease; }
.nm-art .nm-art-search-btn i { font-size:15px; line-height:1; color:inherit; }
.nm-art .nm-art-search-btn:hover, .nm-art .nm-art-search-btn:focus-visible { background:#00339f !important; outline:none; }
.nm-art .nm-art-search-btn:focus-visible { box-shadow:0 0 0 2px #fff, 0 0 0 4px #00339f !important; }
/* Les plus récents : vignette 64 r12, date en capitales grises, titre */
.nm-art .nm-art-recent { list-style:none; display:flex; flex-direction:column; margin:0 !important; padding:0 !important; }
.nm-art .nm-art-recent-item { position:relative; display:flex; align-items:center; gap:14px; margin:0 !important; padding:12px 0 !important; border-top:1px solid #eeeeee; }
.nm-art .nm-art-recent-item:first-child { border-top:0; padding-top:0 !important; }
.nm-art .nm-art-recent-item:last-child { padding-bottom:0 !important; }
.nm-art .nm-art-recent-media { display:block; position:relative; flex:0 0 64px; width:64px; height:64px; border-radius:12px; overflow:hidden; background:#eeeeee; }
.nm-art .nm-art-recent-img { display:block; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; object-fit:cover; }
.nm-art .nm-art-recent-text { display:flex; flex-direction:column; gap:6px; min-width:0; }
.nm-art .nm-art-recent-date { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:11px !important; line-height:1 !important; letter-spacing:.06em !important; text-transform:uppercase !important; color:#6f6f6f !important; }
.nm-art .nm-art-recent-title { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:15px !important; line-height:19px !important; letter-spacing:-0.01em !important; color:#0a0a0a !important; text-decoration:none !important; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; transition:color .2s ease; }
.nm-art .nm-art-recent-title::after { content:''; position:absolute; inset:0; border-radius:8px; }
.nm-art .nm-art-recent-item:hover .nm-art-recent-title, .nm-art .nm-art-recent-title:focus-visible { color:#00339f !important; }
.nm-art .nm-art-recent-title:focus-visible { outline:none; }
.nm-art .nm-art-recent-title:focus-visible::after { outline:2px solid #00339f; outline-offset:2px; }
/* Catégories : pastille ronde contour (pleine noire pour la catégorie de l'article), nom, nombre « (03) » à droite */
.nm-art .nm-art-cats { list-style:none; display:flex; flex-direction:column; margin:0 !important; padding:0 !important; }
.nm-art .nm-art-cats li { margin:0 !important; padding:0 !important; border-top:1px solid #eeeeee; }
.nm-art .nm-art-cats li:first-child { border-top:0; }
.nm-art .nm-art-cat-row { display:flex; align-items:center; gap:12px; min-height:44px; padding:6px 0; color:#0a0a0a !important; text-decoration:none !important; }
.nm-art .nm-art-cat-dot { flex:0 0 12px; width:12px; height:12px; box-sizing:border-box; border:1.5px solid #0a0a0a; border-radius:50%; background:transparent; transition:background-color .2s ease, border-color .2s ease; }
.nm-art .nm-art-cat-row.is-active .nm-art-cat-dot { background:#0a0a0a; }
.nm-art .nm-art-cat-name { flex:1 1 auto; min-width:0; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:15px !important; line-height:19px !important; letter-spacing:0 !important; color:#0a0a0a !important; transition:color .2s ease; }
.nm-art .nm-art-cat-count { flex:0 0 auto; font-family:var(--nm-inter, 'Inter', sans-serif) !important; font-weight:400 !important; font-size:13px !important; line-height:1 !important; letter-spacing:0 !important; color:#6f6f6f !important; }
.nm-art .nm-art-cat-row:hover .nm-art-cat-name, .nm-art .nm-art-cat-row:focus-visible .nm-art-cat-name { color:#00339f !important; }
.nm-art .nm-art-cat-row:hover .nm-art-cat-dot, .nm-art .nm-art-cat-row:focus-visible .nm-art-cat-dot { border-color:#00339f; }
.nm-art .nm-art-cat-row.is-active:hover .nm-art-cat-dot, .nm-art .nm-art-cat-row.is-active:focus-visible .nm-art-cat-dot { background:#00339f; }
.nm-art .nm-art-cat-row:focus-visible { outline:2px solid #00339f; outline-offset:2px; border-radius:6px; }
/* carte d'appel : photo pleine carte, voile bas, accroche + titre + pastille flèche */
.nm-art .nm-art-promo { position:relative; display:block; padding:0 !important; aspect-ratio:4 / 3; overflow:hidden; background:#0a0a0a; color:#fff !important; text-decoration:none !important; } /* padding 0 !important : devant le padding 24 des widgets ≥768 */
.nm-art .nm-art-promo-img { position:absolute; inset:0; width:100% !important; height:100% !important; max-width:none !important; margin:0 !important; object-fit:cover; display:block; transform:scale(1.01); transition:transform .8s ease; }
.nm-art .nm-art-promo::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg, rgba(10,10,10,0) 35%, rgba(10,10,10,.78) 100%); pointer-events:none; }
.nm-art .nm-art-promo-text { position:absolute; left:20px; right:20px; bottom:20px; z-index:1; display:flex; flex-direction:column; gap:8px; }
.nm-art .nm-art-promo-kicker { font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:11px !important; line-height:1 !important; letter-spacing:.08em !important; text-transform:uppercase !important; color:rgba(255,255,255,.8) !important; }
.nm-art .nm-art-promo-title { display:flex; align-items:center; justify-content:space-between; gap:12px; font-family:var(--nm-sg, 'Space Grotesk', sans-serif) !important; font-weight:400 !important; font-size:20px !important; line-height:24px !important; letter-spacing:-0.02em !important; color:#fff !important; }
.nm-art .nm-art-promo-arrow { display:flex; align-items:center; justify-content:center; flex:0 0 40px; width:40px; height:40px; border-radius:20px; background:#fff; color:#0a0a0a; font-size:14px; line-height:1; transition:transform .25s ease; }
.nm-art .nm-art-promo:focus-visible { outline:2px solid #00339f; outline-offset:3px; }
@media (hover: hover) and (pointer: fine) {
  .nm-art .nm-art-promo:hover .nm-art-promo-img { transform:scale(1.07); }
  .nm-art .nm-art-promo:hover .nm-art-promo-arrow { transform:translateX(4px); }
  .nm-art .nm-art-recent-img { transform:scale(1.01); transition:transform .8s ease; }
  .nm-art .nm-art-recent-item:hover .nm-art-recent-img { transform:scale(1.07); }
}

/* ---- ≥480 : auteur en ligne ---- */
@media (min-width: 480px) {
  .nm-art .nm-art-author { flex-direction:row; align-items:flex-start; gap:20px; }
  .nm-art .nm-art-meta { gap:10px 20px; }
  .nm-art .nm-art-read { margin-left:auto; }
}
/* ---- ≥600 : précédent / suivant côte à côte (le suivant reste à droite quand il est seul) ---- */
@media (min-width: 600px) {
  .nm-art .nm-art-nav { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:24px; }
  .nm-art .nm-art-nav-link--next { grid-column:2; }
}
/* ---- ≥768 : tablette, gouttière 16 ---- */
@media (min-width: 768px) {
  .nm-art .nm-art-root { padding-left:16px; padding-right:16px; padding-top:calc(var(--nm-art-band) + var(--nm-adm) + 16px); }
  .nm-art .nm-art-grid, .nm-art .nm-art-main, .nm-art .nm-art-side { gap:16px; }
  .nm-art .nm-art-card { padding:32px; gap:28px; }
  .nm-art .nm-art-head { gap:24px; }
  .nm-art .nm-art-figure.nm-post-hero { aspect-ratio:16 / 9; }
  .nm-art .nm-art-title { font-size:48px !important; line-height:52px !important; }
  .nm-art .nm-art-intro { font-size:18px !important; line-height:28px !important; }
  .nm-art .nm-post-content .wp-block-media-text { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:32px; }
  .nm-art .nm-post-content .wp-block-media-text.has-media-on-the-right .wp-block-media-text__media { order:2; }
  .nm-art .nm-art-foot { flex-direction:row; align-items:center; justify-content:space-between; gap:24px; padding-top:24px; }
  .nm-art .nm-art-author { padding:28px 32px; gap:24px; }
  .nm-art .nm-art-author-media { width:96px; height:96px; border-radius:16px; }
  .nm-art .nm-art-author-name { font-size:24px !important; line-height:28px !important; }
  .nm-art .nm-art-nav { padding:0 8px; }
  .nm-art .nm-art-nav-title { font-size:18px !important; line-height:22px !important; }
  .nm-art .nm-art-widget { padding:24px; }
  .nm-art .nm-art-side { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); align-items:start; } /* sous l'article : cartes sur deux colonnes */
}
/* ---- ≥992 : grille article + colonne épinglée, gouttière 20 ---- */
@media (min-width: 992px) {
  .nm-art .nm-art-root { padding-left:20px; padding-right:20px; padding-top:calc(var(--nm-art-band) + var(--nm-adm) + 20px); }
  .nm-art .nm-art-grid { display:grid; grid-template-columns:minmax(0, 1fr) 300px; gap:20px; align-items:start; }
  .nm-art .nm-art-main { gap:20px; }
  .nm-art .nm-art-side { display:flex; flex-direction:column; align-items:stretch; gap:12px; position:sticky; top:var(--nm-pin-top); align-self:start; } /* align-items:stretch : annule le start de la grille 768 */
  .nm-art .nm-art-card { padding:40px; gap:32px; }
  .nm-art .nm-art-head { gap:28px; }
  .nm-art .nm-art-title { font-size:56px !important; line-height:60px !important; }
  /* colonne resserrée pour tenir sous le header sur un écran de 982 px de haut (≈ 920 px : marges 20/24, écart 12, lignes 40, carte 3/2) */
  .nm-art .nm-art-widget { padding:20px 24px; }
  .nm-art .nm-art-recent-item { padding:10px 0 !important; }
  .nm-art .nm-art-cat-row { min-height:40px; padding:4px 0; }
  .nm-art .nm-art-promo { aspect-ratio:3 / 2; }
  .nm-art .nm-art-nav { padding:0 12px; }
}
/* ---- ≥1100 : header pilule fixe (blanc, logo sombre) : plus de bande, la page commence sous la pilule ---- */
@media (min-width: 1100px) {
  .nm-art .nm-art-root { padding-top:var(--nm-pin-top); background-image:none; }
}
/* ---- ≥1201 : grille centrée (colonne de lecture ≈ 676 px), colonne 320 ---- */
@media (min-width: 1201px) {
  .nm-art .nm-art-grid { grid-template-columns:minmax(0, 1fr) 320px; gap:24px; max-width:1100px; margin:0 auto; }
}
@media (min-width: 1601px) {
  .nm-art .nm-art-grid { max-width:1180px; }
}

/* ---- mouvement réduit ---- */
@media (prefers-reduced-motion: reduce) {
  .nm-art .nm-art-cat, .nm-art .nm-art-tag, .nm-art .nm-art-share-btn, .nm-art .nm-art-nav-arrow, .nm-art .nm-art-nav-title, .nm-art .nm-art-search-input, .nm-art .nm-art-search-btn,
  .nm-art .nm-art-recent-title, .nm-art .nm-art-recent-img, .nm-art .nm-art-cat-name, .nm-art .nm-art-cat-dot, .nm-art .nm-art-promo-img, .nm-art .nm-art-promo-arrow { transition:none !important; }
  .nm-art .nm-art-promo-img, .nm-art .nm-art-promo:hover .nm-art-promo-img, .nm-art .nm-art-recent-img, .nm-art .nm-art-recent-item:hover .nm-art-recent-img { transform:none !important; }
  .nm-art .nm-art-nav-link--prev:hover .nm-art-nav-arrow, .nm-art .nm-art-nav-link--next:hover .nm-art-nav-arrow, .nm-art .nm-art-promo:hover .nm-art-promo-arrow { transform:none !important; }
}

/* ============================================================
   NEOVA : ACCUEIL, SECTION CONTACT « PRÊT À DÉMARRER ? » (23/09) : demande Frédéric, maquette « Home Page NEOVA –
   Mobile (v. Claude) », frame Contact 2372:191, appliquée au mobile et au desktop. Formulaire sur carte blanche à 10 %
   (libellés et filets clairs), bouton « S'inscrire » en pilule blanche pleine (libellé bleu, pastille bleue à flèche
   ↗ qui se remet droite au survol) ; carte Destan #1a47a9 texte blanc, sans bouton ; bouton « Pour nous contacter »
   en pilule #f5f5f5 pleine (libellé noir, pastille bleue) sorti de la carte ; coordonnées en texte (A / E / P / H),
   Inter 15/24 blanc. Mobile : titre, formulaire, mention, carte Destan, bouton, coordonnées (écarts 28).
   Desktop : colonne gauche (carte, bouton, coordonnées, 440 px max) / formulaire à droite, inchangé dans son principe.
   Retour arrière : neova-mobile.backup-avant-contact-accueil-23-09.css + meta _nm_bak_20260923_contact_home (page 10959).
   ============================================================ */
/* carte Destan */
.nm-root .nm-contact .nm-contact-card.e-con { width: 100% !important; max-width: 100% !important; padding: 14px !important; background: #1a47a9 !important; border-radius: 20px !important; }
.nm-root .nm-contact .nm-job { color: #fff !important; }
.nm-root .nm-contact .nm-name { color: #fff !important; }
/* coordonnées */
.nm-root .nm-contact .nm-cinfo { margin: 0 !important; font-family: var(--nm-inter) !important; font-size: 15px !important; line-height: 24px !important; color: #fff !important; }
.nm-root .nm-contact .nm-cinfo a { color: #fff !important; text-decoration: none !important; }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-contact .nm-cinfo a:hover { text-decoration: underline !important; text-underline-offset: 3px; text-decoration-thickness: 1px; } }
/* bouton « Pour nous contacter » : pilule #f5f5f5 pleine, pastille bleue, pleine largeur de la colonne */
.nm-root .nm-contact .nm-btn--pill-light { width: 100% !important; }
.nm-root .nm-contact .nm-btn--pill-light .elementor-button-wrapper { display: block !important; }
:root body .nm-contact .nm-btn.nm-btn--pill-light .elementor-button.elementor-button { --fg: #0a0a0a; --on: #fff; width: 100% !important; background: #f5f5f5 !important; border-color: #f5f5f5 !important; color: #0a0a0a !important; }
:root body .nm-contact .nm-btn.nm-btn--pill-light .elementor-button.elementor-button .elementor-button-icon { background: var(--nm-blue, #00339f) !important; color: #fff !important; }
:root body .nm-contact .nm-btn.nm-btn--pill-light .elementor-button.elementor-button .elementor-button-text { font-size: 14px !important; }
/* carte du formulaire : blanc 10 %, textes et filets clairs */
.nm-root .nm-contact .nm-form-card.e-con { background: #1a47a9 !important; border: 1px solid #00339f !important; border-radius: 20px !important; }
.nm-root .nm-contact .nm-form-title .elementor-heading-title { color: #fff !important; }
.nm-root .nm-contact .nm-form .pxl-item--form { border-bottom-color: #e5e5e5 !important; }
.nm-root .nm-contact .nm-form .pxl-item--form input, .nm-root .nm-contact .nm-form .pxl-item--form textarea, .nm-root .nm-contact .nm-form .pxl-item--form select,
.nm-root .nm-contact .nm-form .pxl-item--select .pxl-select-higthlight { color: #fff !important; background: transparent !important; }
.nm-root .nm-contact .nm-form .pxl-item--form ::placeholder { color: #fff !important; opacity: 1 !important; }
.nm-root .nm-contact .nm-form .pxl-item--form i { color: #fff !important; }
.nm-root .nm-contact .nm-form .pxl-item--form input:-webkit-autofill { -webkit-text-fill-color: #fff !important; -webkit-box-shadow: 0 0 0 40px #1a47a9 inset !important; }
.nm-root .nm-contact .nm-form .pxl-item--select .pxl-select-options li { color: #0a0a0a; }
.nm-root .nm-contact .nm-form .pxl-item--select select option { color: #0a0a0a; }
.nm-root .nm-contact .nm-form .wpcf7-not-valid-tip { color: #ffd2d2 !important; }
.nm-root .nm-contact .nm-form .wpcf7-response-output { color: #fff !important; border-color: rgba(255, 255, 255, .5) !important; }
/* bouton « S'inscrire » : pilule blanche pleine 48, libellé bleu Medium 15, pastille bleue 38 calée à 5 px à droite, flèche ↗ */
.nm-root .nm-contact .nm-form .pxl-item--submit { margin-top: 20px !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit p { margin: 0 !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn { position: relative; display: flex !important; align-items: center !important; justify-content: flex-start !important; gap: 0 !important; width: 100% !important; height: 48px !important; min-height: 48px !important; padding: 0 !important; border: 0 !important; border-radius: 999px !important; background: #fff !important; color: var(--nm-blue, #00339f) !important; box-shadow: none !important; font-family: var(--nm-sg) !important; font-weight: 500 !important; font-size: 15px !important; letter-spacing: 0 !important; text-transform: none !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn br { display: none !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn .pxl--btn-text { order: 1; flex: 1 1 auto !important; padding: 0 20px 0 32px !important; text-align: center !important; color: inherit !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn .pxl--btn-icon { order: 2; flex: 0 0 38px !important; width: 38px !important; height: 38px !important; margin: 0 5px 0 0 !important; border-radius: 50% !important; background: var(--nm-blue, #00339f) !important; display: flex !important; align-items: center !important; justify-content: center !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn .pxl--btn-icon svg { display: none !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn .pxl--btn-icon::before { content: ""; display: block; width: 16px; height: 16px; background: #fff; -webkit-mask: var(--nm-bf-arrow) center / contain no-repeat; mask: var(--nm-bf-arrow) center / contain no-repeat; transform: rotate(-45deg); transition: transform .5s var(--nm-bf-ease); }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-contact .nm-form .pxl-item--submit .btn:hover .pxl--btn-icon::before { transform: rotate(0deg); } }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn:focus-visible { outline: 2px solid #fff !important; outline-offset: 3px !important; }
.nm-root .nm-contact .nm-form .pxl-item--submit .btn:focus-visible .pxl--btn-icon::before { transform: rotate(0deg); }
@media (prefers-reduced-motion: reduce) { .nm-root .nm-contact .nm-form .pxl-item--submit .btn .pxl--btn-icon::before { transition: none; } }
/* mobile : ordre de la maquette */
@media (max-width: 767px) {
  .nm-root .nm-contact.e-con { gap: 28px !important; }
  .nm-root .nm-contact > .nm-form-card { order: 1 !important; }
  .nm-root .nm-contact > .nm-disclaimer { order: 2 !important; }
  .nm-root .nm-contact .nm-contact-left > .nm-contact-card { order: 3 !important; }
  .nm-root .nm-contact .nm-contact-left > .nm-btn--pill-light { order: 4 !important; }
  .nm-root .nm-contact .nm-contact-left > .nm-info { order: 5 !important; }
}
/* desktop : colonne gauche resserrée */
@media (min-width: 768px) {
  .nm-root .nm-contact > .nm-contact-left > * { width: 100% !important; max-width: 440px !important; }
  .nm-root .nm-contact > .nm-contact-left { gap: 20px !important; }
  .nm-root .nm-contact > .nm-contact-left > .nm-contact-card.e-con { max-width: 440px !important; }
}

/* ============================================================
   NEOVA : SCÈNE DES ÉTAPES CENTRÉE À L'ÉCRAN (Formations, 24/09) : demande Frédéric, « les sections épinglées avec une
   animation doivent être au milieu de l'écran ». La carte de l'étape ouverte (photo + texte, animation nmCardIn à chaque
   changement) se fige au centre vertical de la fenêtre au lieu de rester sous le header : top = max(--nm-pin-top,
   (100svh - hauteur) / 2), la hauteur étant posée en --nm-self-h par assets/js/neova-buttons.js (ResizeObserver).
   Vérifié à 1512 : haut de la scène à ~290 px pour une carte de 402 px. Les autres épinglages (en-têtes FAQ, photo des
   aides) sont statiques et restent sous le header.
   ============================================================ */
@media (min-width: 768px) {
  .nm-root .nm-steps-sec .nm-steps-stage { top: max(var(--nm-pin-top), calc((100svh - var(--nm-self-h, 400px)) / 2)); }
}

/* ============================================================
   NEOVA : HERO DE L'ACCUEIL, BOUTONS EN BAS À DROITE (24/09, essai) : demande Frédéric. À partir de 1100 px : à gauche
   le H1 et le paragraphe (limité à 560 px, soit 3 lignes), à droite les deux boutons, alignés sur le bas du paragraphe
   et calés sur le bord droit du contenu. En dessous de 1100 px : inchangé (texte puis boutons). Accueil seulement.
   ============================================================ */
@media (min-width: 1100px) {
  .elementor-10959 .nm-root .nm-sec.nm-hero.e-con { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; column-gap: 48px; align-content: end; align-items: end; }
  .elementor-10959 .nm-root .nm-hero > .nm-hero-text { grid-column: 1; grid-row: 1; width: 100% !important; max-width: 760px !important; }
  .elementor-10959 .nm-root .nm-hero > .nm-hero-btns { grid-column: 2; grid-row: 1; width: auto !important; justify-content: flex-end !important; align-self: end; flex-wrap: nowrap !important; margin: 0 !important; }
  .elementor-10959 .nm-root .nm-hero .nm-hero-intro p { max-width: 560px; }
}

/* ============================================================
   NEOVA : HERO, COINS ET BORDS (24/09) : demande Frédéric (« petits bugs aux angles du hero »). Le hero est plein écran
   à angles droits, mais son dégradé sombre ::before gardait le rayon 20 des sections : les coins du bas montraient la
   photo sans dégradé (quart de cercle plus clair). Rayon 0 sur les deux calques. À partir de 768 px, le hero laissait
   aussi 4 px de fond gris en haut et sur les côtés (marge −16 pour un retrait de 20) : il touche désormais les bords.
   ============================================================ */
.nm-root .nm-hero.e-con::before, .nm-root .nm-hero.e-con::after { border-radius: 0 !important; }
@media (min-width: 768px) {
  .nm-root .nm-hero.e-con { margin: calc(-1 * var(--nm-root-pad, 20px)) calc(-1 * var(--nm-root-pad, 20px)) 0 !important; width: calc(100% + 2 * var(--nm-root-pad, 20px)) !important; }
}

/* S'inscrire en double : masqué dans le hero dès que la pilule du header le porte (≥ 1100 px) ; classe posée par neova-buttons.js */
@media (min-width: 1100px) { .nm-root .nm-hero-btns > .nm-btn.nm-dup-inscrire { display: none !important; } }

/* CTA bleu de la pilule du header : marge interne blanche de 4 px (effet de contour blanc), hauteur réduite d'autant */
@media (min-width: 1100px) {
  .nm-pill .nm-pill-cta .pxl-icon-box2 { height: calc(var(--nmp-h, 60px) - 8px) !important; margin: 4px 4px 4px 0 !important; }
  .nm-pill .nm-pill-cta .pxl-item--link { border-radius: 999px !important; }
}

/* ============================================================
   NEOVA : HERO DE L'ACCUEIL, H1 SEO + SLOGAN AGRANDI (24/09) : décision Frédéric (option A). Le vrai H1 est une ligne
   de surtitre au-dessus du slogan : « Auto-école à Noisy-le-Sec · Permis boîte auto et manuelle » (widget b7e41c2,
   classe nm-hero-kicker) ; le slogan « Tout droit, direction permis. » reste en grand mais passe en <p>. Taille du slogan :
   inchangée jusqu'à 1193 px (40 / 48 / 56, Figma), puis progressive de 56 à 80 px en 1512, interligne 1.
   ============================================================ */
.nm-root .nm-hero-kicker .elementor-heading-title { margin: 0 !important; font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 12px !important; line-height: 1.3 !important; letter-spacing: .06em !important; text-transform: uppercase !important; color: #fff !important; }
@media (min-width: 768px) { .nm-root .nm-hero-kicker .elementor-heading-title { font-size: 13px !important; } }
@media (min-width: 1100px) { .nm-root .nm-hero-kicker .elementor-heading-title { font-size: 14px !important; } }
@media (min-width: 1194px) {
  .elementor-10959 .nm-root .nm-hero .nm-h1 .elementor-heading-title { font-size: clamp(56px, calc(7.55vw - 34px), 80px) !important; line-height: 1 !important; }
}

/* HERO : marge du bas (24/09, Frédéric « texte et CTA trop collés au bas ») : à partir de 1100 px, 40 px pour 96 px de
   marges latérales déséquilibrait le bloc ; marge du bas progressive 56 → 80 px (≈ 68 en 1280, 80 en 1512), proche des
   côtés. Tous les heros. Tablette (40 / 40) et mobile (Figma) inchangés. */
@media (min-width: 1100px) { .nm-root .nm-sec.nm-hero.e-con { padding-bottom: clamp(56px, 5.3vw, 80px) !important; } }

/* Titres de cartes à variante courte (24/09, Frédéric : « Automatique ou manuelle : vous choisissez. » sur 2 lignes) :
   sous 768 px le mot long (la phrase tient sur 2 lignes en 280 px), à partir de 768 px le mot court (« Auto »), car
   « Automatique ou manuelle : » dépasse la largeur des cartes en rangée (232 à 286 px). */
.nm-t-short { display: none; }
@media (min-width: 768px) { .nm-t-long { display: none; } .nm-t-short { display: inline; } }

/* ============================================================
   NEOVA : HERO AU DÉFILEMENT (24/09) : demande Frédéric, réf. lanavette.co/permis-accelere + « un joli parallax ».
   assets/js/neova-hero.js pose un calque photo .nm-hero-px (parallaxe 35 %, dézoom 1,08 → 1) et fait reculer le texte
   et les boutons (retiré le 24/09 : texte et boutons défilent normalement). Ici : l'empilement (photo 0, dégradés 1, contenu 2).
   ============================================================ */
.nm-root .nm-sec.nm-hero.nm-hero--px { position: relative; isolation: isolate; }
.nm-root .nm-hero--px > .nm-hero-px { position: absolute; inset: 0; z-index: 0; background-size: cover; background-repeat: no-repeat; transform-origin: 50% 0; will-change: transform; pointer-events: none; }
.nm-root .nm-sec.nm-hero.nm-hero--px::before, .nm-root .nm-sec.nm-hero.nm-hero--px::after { z-index: 1; }
.nm-root .nm-hero--px > .nm-hero-text, .nm-root .nm-hero--px > .nm-hero-btns, .nm-root .nm-hero--px > .e-con, .nm-root .nm-hero--px > .elementor-widget { position: relative; z-index: 2; }

/* Cartes Financement de l'Accueil (24/09, Frédéric « les paragraphes doivent être plus bas ») : à partir de 768 px,
   l'icône reste en haut et le titre + le paragraphe descendent en bas de la carte, séparés de l'icône par un espace
   souple (48 px minimum) ; titres et paragraphes restent alignés d'une carte à l'autre (subgrid, 4 rangées). */
@media (min-width: 768px) {
  .nm-root .nm-fin .nm-cards.e-con { grid-template-rows: auto minmax(48px, 1fr) auto auto; }
  .nm-root .nm-fin .nm-cards > .nm-card.e-con { grid-row: span 4; row-gap: 0 !important; }
  .nm-root .nm-fin .nm-cards > .nm-card > .elementor-widget-html { grid-row: 1; }
  .nm-root .nm-fin .nm-cards > .nm-card > .nm-fin-text.e-con { display: contents !important; }
  .nm-root .nm-fin .nm-cards > .nm-card > .nm-fin-text > .elementor-widget:first-child { grid-row: 3; align-self: end; }
  .nm-root .nm-fin .nm-cards > .nm-card > .nm-fin-text > .elementor-widget:last-child { grid-row: 4; margin-top: 8px !important; }
}

/* ============================================================
   NEOVA : HEROS UNIFORMISÉS (24/09) : demande Frédéric. La mise en page essayée sur l'Accueil s'applique à tous les
   heros à partir de 1100 px : texte à gauche (colonne de 760 px max, paragraphe de 560 px max), boutons à droite,
   alignés sur le bas du texte et calés sur le bord droit du contenu ; slogan/H1 progressif 56 → 80 px dès 1194 px.
   En dessous de 1100 px : inchangé (texte puis boutons).
   ============================================================ */
@media (min-width: 1100px) {
  .nm-root .nm-sec.nm-hero.e-con { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; column-gap: 48px; align-content: end; align-items: end; }
  .nm-root .nm-hero > .nm-hero-text { grid-column: 1; grid-row: 1; width: 100% !important; max-width: 760px !important; }
  .nm-root .nm-hero > .nm-hero-btns { grid-column: 2; grid-row: 1; width: auto !important; justify-content: flex-end !important; align-self: end; flex-wrap: nowrap !important; margin: 0 !important; }
  .nm-root .nm-hero .nm-hero-intro p { max-width: 560px; }
}
/* hiérarchie : slogan de l'Accueil 56 → 80 px (règle .elementor-10959 plus haut) ; H1 des pages intérieures (phrases
   plus longues) 56 → 64 px, interligne 1,05 */
@media (min-width: 1194px) {
  .nm-root .nm-hero .nm-h1 .elementor-heading-title { font-size: clamp(56px, 4.2vw, 64px) !important; line-height: 1.05 !important; }
  .elementor-10959 .nm-root .nm-hero .nm-h1 .elementor-heading-title { font-size: clamp(56px, calc(7.55vw - 34px), 80px) !important; line-height: 1 !important; }
}
@media (min-width: 1100px) { .nm-root .nm-hero .nm-hero-intro p { max-width: 600px; } .elementor-10959 .nm-root .nm-hero .nm-hero-intro p { max-width: 560px; } }
/* deux boutons : empilés à droite (le plus important en haut) entre 1100 et 1439 px, pour laisser la place au texte */
@media (min-width: 1100px) and (max-width: 1439px) {
  .nm-root .nm-hero > .nm-hero-btns { flex-direction: column !important; align-items: flex-end !important; gap: 12px !important; }
  .nm-root .nm-hero > .nm-hero-btns > .nm-btn ~ .nm-btn:not(.nm-btn--ghost) { margin-left: 0 !important; align-self: flex-end !important; }
}

/* ============================================================
   NEOVA : « DE L'INSCRIPTION AU PERMIS » (Formations, 24/09) : demande Frédéric.
   1. plus de cadre bleu au clic (outline de focus retiré ; au clavier, l'étape se signale par le nom en noir et le filet tracé) ;
   2. titre et liste décalés vers la droite (retrait 2 à 64 px selon la largeur, à partir de 768 px) ;
   3. noms d'étapes agrandis (44 → jusqu'à 56 px) et survol : le nom passe du gris au noir en glissant de 8 px ;
   4. filet de séparation animé a minima : au survol, un filet noir le parcourt de gauche à droite (0,6 s) et repart
      par la droite en sortant ; l'étape ouverte garde son filet tracé.
   ============================================================ */
.nm-root .nm-step-label:focus, .nm-root .nm-step-label:focus-visible { outline: none !important; box-shadow: none !important; }
.nm-root .nm-step-name { transition: color .35s ease, transform .45s cubic-bezier(.37, .31, .2, .85); }
.nm-root .nm-step::after { background-color: var(--nm-line) !important; background-image: linear-gradient(#0a0a0a, #0a0a0a) !important; background-repeat: no-repeat !important; background-position: right center; background-size: 0% 100%; transition: background-size .6s cubic-bezier(.37, .31, .2, .85); } /* 26/09 : position et taille sans !important (sinon l'animation de survol est bloquée) */
.nm-root .nm-step-label:focus-visible .nm-step-name { color: #0a0a0a !important; }
.nm-root .nm-step:has(.nm-step-label:focus-visible)::after { background-position: left center !important; background-size: 100% 100% !important; }
@media (hover: hover) and (pointer: fine) {
  .nm-root .nm-step:not(.is-open).nm-hov .nm-step-name { color: #0a0a0a !important; transform: translateX(8px); }
  /* 26/09 (Frédéric) : au survol, le filet noir traverse une seule fois (entre à gauche, sort à droite) puis redevient gris ;
     il ne reste tracé que sur l'étape ouverte. Classe nm-hov posée par neova-buttons.js (Safari gère mal :has(:hover)). */
  .nm-root .nm-step.nm-hov:not(.is-open)::after { animation: nm-step-sweep 1.1s cubic-bezier(.37, .31, .2, .85) 1 both; }
}
@media (min-width: 768px) {
  .nm-root .nm-steps-sec > .nm-h2, .nm-root .nm-steps { padding-left: clamp(24px, 4.2vw, 64px) !important; }
  .nm-root .nm-step.is-open::after { background-position: left center !important; background-size: 100% 100% !important; }
}
@media (min-width: 1100px) { .nm-root .nm-step-name { font-size: clamp(48px, 3.7vw, 56px) !important; } }
@media (prefers-reduced-motion: reduce) { .nm-root .nm-step-name, .nm-root .nm-step::after { transition: none !important; } }
/* v2 (Frédéric 24/09, réf. liste du thème) : à partir de 768 px, noms fermés plus clairs (#888 → #b3b3b3), graisse
   Medium (500), espacement vertical resserré (22 + 20 → 14 + 14 px autour du filet). Mobile : Figma, inchangé. */
@media (min-width: 768px) {
  .nm-root .nm-step-name { font-weight: 500 !important; color: #d6d6d6; } /* 24/09 : #b3b3b3 → #d6d6d6 (Frédéric « gris plus clair ») */
  .nm-root .nm-step.is-open .nm-step-name { color: #0a0a0a; }
  .nm-root .nm-step { padding: 14px 0 !important; }
  .nm-root .nm-step::after { margin-top: 14px !important; }
}


/* ============================================================
   NEOVA : ACCUEIL V2 (24/09) : demandes Frédéric, page par page.
   1. Financement : icônes sans pastille blanche (traits gris #b8b8b8, 36 px), carte « Permis à 1 € » bleue NEOVA avec
      icône cyan (#00a1e1) et textes blancs ; au survol, les cartes grises passent en bleu de la même façon (0,35 s).
   2. Financement : surtitre et titre centrés à partir de 768 px (le filet du surtitre reste pleine largeur).
   3. Formulaire d'inscription : apparition échelonnée des champs (neova-buttons.js) ; filets à 45 % de blanc au repos,
      un filet blanc se trace de gauche à droite sous le champ actif ; le texte d'aide s'estompe au clic.
   4. « Pour nous contacter » : icône téléphone dans le cercle bleu (au lieu de la flèche), petit tintement au survol.
   5. Coordonnées : lettres A / E / P / H en cyan.
   Bandeau CTA « Une formation en tête ? Tout droit ! » ajouté avant le footer (section d86d959, styles nm-cta du kit).
   ============================================================ */
:root .nm-root .nm-fin .nm-fin-icon { width: auto !important; height: auto !important; background: transparent !important; border-radius: 0 !important; justify-content: flex-start !important; align-items: flex-start !important; color: #b8b8b8 !important; transition: color .35s ease; }
:root .nm-root .nm-fin .nm-fin-icon .nm-fin-svg { width: 32px; height: 32px; }
@media (min-width: 768px) { :root .nm-root .nm-fin .nm-fin-icon .nm-fin-svg { width: 36px; height: 36px; } }
:root .nm-root .nm-fin .nm-cards > .nm-fin-card.e-con { transition: background-color .35s ease !important; }
:root .nm-root .nm-fin .nm-fin-card .elementor-heading-title, :root .nm-root .nm-fin .nm-fin-card .nm-card-text p { transition: color .35s ease; }
:root .nm-root .nm-fin .nm-cards > .nm-fin-card.nm-fin-card--blue.e-con { background: var(--nm-blue) !important; }
:root .nm-root .nm-fin .nm-fin-card--blue .nm-fin-icon { color: var(--nm-cyan) !important; }
:root .nm-root .nm-fin .nm-fin-card--blue .elementor-heading-title { color: #fff !important; }
:root .nm-root .nm-fin .nm-fin-card--blue .nm-card-text p { color: rgba(255, 255, 255, .88) !important; }
@media (hover: hover) and (pointer: fine) {
  :root .nm-root .nm-fin .nm-cards > .nm-fin-card.e-con:hover { background: var(--nm-blue) !important; }
  :root .nm-root .nm-fin .nm-fin-card:hover .nm-fin-icon { color: var(--nm-cyan) !important; }
  :root .nm-root .nm-fin .nm-fin-card:hover .elementor-heading-title { color: #fff !important; }
  :root .nm-root .nm-fin .nm-fin-card:hover .nm-card-text p { color: rgba(255, 255, 255, .88) !important; }
}
@media (min-width: 768px) {
  .nm-root .nm-fin > .elementor-widget-html .nm-eyebrow { align-items: center; }
  .nm-root .nm-fin > .elementor-widget-html .nm-eyebrow span { text-align: center !important; }
  .nm-root .nm-fin > .nm-h2 { width: 100% !important; align-self: center !important; }
  .nm-root .nm-fin > .nm-h2 .elementor-heading-title { text-align: center !important; max-width: 640px; margin-left: auto !important; margin-right: auto !important; } /* 2 lignes comme la maquette */
}
/* formulaire (v2, 24/09 : Frédéric « on ne voit presque pas l'animation d'entrée » + « anime les traits au survol ») :
   - entrée : la carte monte et apparaît (0,9 s), puis titre, champs et bouton arrivent l'un après l'autre (32 px, 120 ms
     d'écart) pendant que le filet de chaque champ se trace de gauche à droite ;
   - filets : base à 45 % de blanc ; au survol, un filet blanc se trace de gauche à droite et repart par la droite en
     sortant ; au clic (focus), il reste tracé ; le texte d'aide s'estompe. */
.nm-root .nm-contact .nm-form .pxl-item--form { position: relative; border-bottom-color: transparent !important; }
.nm-root .nm-contact .nm-form .pxl-item--form::before { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: rgba(255, 255, 255, .45); transform-origin: left center; pointer-events: none; }
.nm-root .nm-contact .nm-form .pxl-item--form::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 1px; background: #fff; transform: scaleX(0); transform-origin: right center; transition: transform .55s cubic-bezier(.37, .31, .2, .85); pointer-events: none; }
.nm-root .nm-contact .nm-form .pxl-item--form:focus-within::after { transform: scaleX(1); transform-origin: left center; }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-contact .nm-form .pxl-item--form:hover::after { transform: scaleX(1); transform-origin: left center; } }
.nm-root .nm-contact .nm-form .pxl-item--form ::placeholder { transition: opacity .3s ease; }
.nm-root .nm-contact .nm-form .pxl-item--form :focus::placeholder { opacity: .45 !important; }
.nm-root .nm-contact .nm-form-card.nm-form-anim { opacity: 0; transform: translateY(48px); }
.nm-root .nm-contact .nm-form-card.nm-form-anim.nm-form-in { opacity: 1; transform: none; transition: opacity .9s ease, transform 1s cubic-bezier(.2, .7, .2, 1); }
.nm-root .nm-contact .nm-form-anim .nm-form-title, .nm-root .nm-contact .nm-form-anim .pxl-item--form, .nm-root .nm-contact .nm-form-anim .pxl-item--submit { opacity: 0; transform: translateY(32px); }
.nm-root .nm-contact .nm-form-anim .pxl-item--form::before { transform: scaleX(0); }
.nm-root .nm-contact .nm-form-anim.nm-form-in .nm-form-title, .nm-root .nm-contact .nm-form-anim.nm-form-in .pxl-item--form, .nm-root .nm-contact .nm-form-anim.nm-form-in .pxl-item--submit { opacity: 1; transform: none; transition: opacity .7s ease calc(250ms + var(--i, 0) * 120ms), transform .9s cubic-bezier(.2, .7, .2, 1) calc(250ms + var(--i, 0) * 120ms); }
.nm-root .nm-contact .nm-form-anim.nm-form-in .pxl-item--form::before { transform: scaleX(1); transition: transform 1s cubic-bezier(.37, .31, .2, .85) calc(450ms + var(--i, 0) * 120ms); }
/* « Pour nous contacter » : téléphone */
:root body .nm-contact .nm-btn.nm-btn--pill-light .elementor-button.elementor-button .elementor-button-icon::before { -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z'/%3E%3C/svg%3E") center / 15px 15px no-repeat !important; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3Cpath d='M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z'/%3E%3C/svg%3E") center / 15px 15px no-repeat !important; transform: none !important; transform-origin: 50% 50%; }
@keyframes nm-tinte { 0%, 100% { transform: rotate(0); } 20% { transform: rotate(-14deg); } 40% { transform: rotate(12deg); } 60% { transform: rotate(-8deg); } 80% { transform: rotate(4deg); } }
@media (hover: hover) and (pointer: fine) { :root body .nm-contact .nm-btn.nm-btn--pill-light .elementor-button.elementor-button:hover .elementor-button-icon::before { animation: nm-tinte .6s ease; transform: none !important; } }
/* coordonnées */
.nm-root .nm-contact .nm-cinfo .nm-cinfo-k { color: var(--nm-cyan) !important; }
@media (prefers-reduced-motion: reduce) {
  .nm-root .nm-contact .nm-form .pxl-item--form::after { transition: none; }
  :root body .nm-contact .nm-btn.nm-btn--pill-light .elementor-button:hover .elementor-button-icon::before { animation: none !important; }
}

/* ============================================================
   NEOVA : EFFETS REPRIS DU THÈME FLOKA (24/09) : demande Frédéric, voir assets/js/neova-effects.js.
   1. Titres lettre par lettre (split-in-right du thème) : lettres à 50 px à droite et transparentes, 0,2 s, 10 ms d'écart.
   2. Distorsion des photos au survol : le canevas WebGL du thème recouvre la photo ; le zoom du kit est coupé sur ces photos.
   ============================================================ */
.nm-split .nm-w { display: inline-block; white-space: nowrap; }
.nm-split .nm-c { display: inline-block; opacity: 0; transform: translate3d(50px, 0, 0); transition: opacity .2s ease, transform .2s cubic-bezier(.19, 1, .22, 1); transition-delay: calc(var(--ci, 0) * 10ms); }
.nm-split.nm-split-in .nm-c { opacity: 1; transform: none; }
/* 2. Distorsion des photos : retirée le 24/09 (voir neova-effects.js). */
/* v2 (24/09) : titres de section et des bandeaux CTA : chaque ligne sort d'un masque (mot enveloppé, débord masqué, marges
   négatives = padding pour ne rien changer à l'interligne ni couper accents et jambages). Slogan du hero : lettres (ci-dessus). */
.nm-split--lines .nm-w { overflow: hidden; vertical-align: top; padding: .1em 0 .14em; margin: -.1em 0 -.14em; }
.nm-split--lines .nm-wi { display: inline-block; transform: translate3d(0, 110%, 0); transition: transform .8s cubic-bezier(.2, .7, .2, 1); transition-delay: calc(var(--li, 0) * 90ms); }
.nm-split--lines.nm-split-in .nm-wi { transform: none; }

/* ============================================================
   NEOVA : PHOTO DE PAUSE (24/09) : demande Frédéric, page Formations entre la comparaison des forfaits et « Les formations
   conduite » : une grande photo sans texte pour casser la succession de blocs. Même cadre que les sections (arrondi 20,
   même largeur), hauteur 280 px en mobile (écart Figma assumé), 420 px en tablette, 62 % de l'écran (520 à 640 px) dès
   1100 px. Image PROVISOIRE (NEOVA-Jeune-Conducteur) : la photo définitive sera fournie par le client.
   ============================================================ */
.nm-root .nm-sec.nm-photo-break.e-con { padding: 0 !important; background: transparent !important; border-radius: 20px !important; overflow: hidden !important; height: 280px; gap: 0 !important; }
@media (min-width: 768px) { .nm-root .nm-sec.nm-photo-break.e-con { height: 420px; } }
@media (min-width: 1100px) { .nm-root .nm-sec.nm-photo-break.e-con { height: clamp(520px, 62vh, 640px); } }
.nm-root .nm-photo-break > .nm-photo-break-img, .nm-root .nm-photo-break > .nm-photo-break-img .elementor-widget-container { width: 100% !important; height: 100% !important; margin: 0 !important; }
.nm-root .nm-photo-break .nm-photo-break-img img { display: block; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover !important; border-radius: 20px !important; }

/* ============================================================
   NEOVA : ENTRÉE DES CARTES (24/09) : validé par Frédéric, voir assets/js/neova-effects.js (bloc « entrée des cartes »).
   Sur chaque grille de cartes (.nm-cards, .nm-stack, fiches équipe, .nm-grid2, .nm-mini-grid, .nm-stat-grid), les cartes
   montent de 20 px en fondu (0,6 s, courbe .2/.7/.2/1, 80 ms d'écart), une seule fois, quand la grille arrive à l'écran.
   Écrans ≥ 768 px seulement : en mobile, les piles .nm-stack sont épinglées au scroll, rien ne change. Les classes .nm-rise
   (carte masquée) et .nm-rise-in (animation) sont posées par le script : sans JavaScript, rien n'est masqué. Animation et non
   transition : les transitions de survol des cartes restent intactes ; les classes sont retirées à la fin de l'animation.
   ============================================================ */
@media screen and (min-width: 768px) {
  .nm-root .nm-rise { opacity: 0; transform: translate3d(0, 20px, 0); transition: none; }
  .nm-root .nm-rise.nm-rise-in { animation: nm-rise .6s cubic-bezier(.2, .7, .2, 1) both; animation-delay: calc(var(--ri, 0) * 80ms); }
  @keyframes nm-rise { from { opacity: 0; transform: translate3d(0, 20px, 0); } to { opacity: 1; transform: none; } }
}
@media (prefers-reduced-motion: reduce) { .nm-root .nm-rise { opacity: 1; transform: none; animation: none; } }

/* ============================================================
   NEOVA : ICÔNES FIGMA (24/09) : demande Frédéric (« mets de beaux icônes comme ceux-là qui sont dans Figma »). Les 11 pictos
   du cadre Figma 2646:1131 (fichiers : dossier projet « Icones Figma ») remplacent Font Awesome dans les tuiles de prix
   (nm-grid2), les chiffres clés (nm-stat) et les listes (nm-list) : classes nm-ico nm-ico-<nom> posées dans le HTML des
   7 pages concernées, masque CSS coloré par currentColor. Les coches des listes d'inclusions (fa-check-circle) prennent la
   coche Figma sans changer le HTML. Tailles adaptées : 28 px dans les tuiles et chiffres clés (32 dès 768), 26 px dans les
   listes, 18 px pour les coches. Tuiles de prix : icône, prix et libellé centrés (Frédéric « texte au centre »).
   Conservés en Font Awesome : + / − des accordéons, flèches, réseaux sociaux, liste d'adresse de Contact (pas d'équivalent).
   ============================================================ */
.nm-root { --nm-ico-coche: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 183 184%22 fill=%22%23000%22%3E%3Cpath d=%22M164.535 91.7201L182.994 91.6001C183.434 127.31 162.114 159.16 131.634 173.91C97.8345 190.27 58.1545 184.58 30.7745 160.19C9.09449 140.87 -1.64546 114.15 0.204542 85.2701C3.26454 37.4301 43.2045 -0.0798723 91.5245 0.000127726L91.4946 18.5101C50.7546 18.8901 18.8346 51.4101 18.4746 90.9301C18.1046 130.84 50.3445 163.86 89.9145 164.58C130.285 165.32 163.954 133.5 164.524 91.7201H164.535Z%22/%3E%3Cpath d=%22M43.2646 89.1311L56.3247 75.8311L72.2347 91.3111C79.0347 97.9311 89.3747 94.7911 95.6047 88.5511L151.395 32.6211L164.775 45.8311L82.4347 128.141L43.2646 89.1311Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico { display: inline-block; width: 1em; height: 1em; background-color: currentColor; -webkit-mask: var(--nm-ico) center / contain no-repeat; mask: var(--nm-ico) center / contain no-repeat; vertical-align: middle; }
.nm-root .nm-ico::before { content: none !important; }
.nm-root .nm-ico-hexagone { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 165%22 fill=%22%23000%22%3E%3Cpath d=%22M139.76 164.07C133.46 165.34 127.51 164.62 120.98 164.61L43.82 164.45L0 82.42L43.96 0.0900002L139.28 0L183.26 82.4L139.76 164.08V164.07ZM118.52 146.18C126.09 146.15 131.34 140.35 134.33 134.72L158.3 89.57C160.47 85.48 160.41 79.28 158.22 75.18L132.46 26.91C129.79 21.9 123.52 18.57 117.89 18.57L65.19 18.54C59.03 18.54 53.23 22.5 50.41 27.76L25.64 73.96C22.43 79.94 23.13 86.29 26.25 92.11L51.06 138.28C54.28 144.27 61.63 146.41 67.94 146.38L118.53 146.18H118.52Z%22/%3E%3Cpath d=%22M91.6799 105.401C104.388 105.401 114.69 95.0989 114.69 82.3909C114.69 69.6828 104.388 59.3809 91.6799 59.3809C78.9719 59.3809 68.6699 69.6828 68.6699 82.3909C68.6699 95.0989 78.9719 105.401 91.6799 105.401Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-plus { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22%23000%22%3E%3Cpath d=%22M183.24 91.62C183.24 142.22 142.22 183.24 91.62 183.24C41.02 183.24 0 142.22 0 91.62C0 41.02 41.02 0 91.62 0C142.22 0 183.24 41.02 183.24 91.62ZM164.6 91.59C164.6 51.28 131.92 18.6 91.61 18.6C51.3 18.6 18.62 51.28 18.62 91.59C18.62 131.9 51.3 164.58 91.61 164.58C131.92 164.58 164.6 131.9 164.6 91.59Z%22/%3E%3Cpath d=%22M101.02 146.641L82.2898 146.491V118.211C82.2898 108.461 74.1598 100.881 64.5198 100.881H36.6498L36.5498 82.2407L62.4698 82.4507C73.3198 82.5407 82.4098 75.6707 82.4198 64.1807L82.4398 36.5207L100.79 36.4707L101.26 67.2207C101.41 77.2507 111.56 82.4807 120.26 82.4207L146.53 82.2507L146.48 100.901H118.35C108.78 100.901 101.07 108.671 101.05 118.171L100.99 146.631L101.02 146.641Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-marque-page { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 147 183%22 fill=%22%23000%22%3E%3Cpath d=%22M82.4 137.12C75.83 133.47 69.76 133.82 63.58 137.18L0 182.71L0.200012 0.03L146.29 0L146.31 182.74L82.41 137.12H82.4ZM127.91 146.56L127.93 36.02C127.93 27.09 119.73 18.69 111.27 18.71L33.13 18.88C26.07 18.9 18.5 27.9 18.5 34.78L18.47 146.49L73.11 107.55L127.92 146.55L127.91 146.56Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-compteur { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22%23000%22%3E%3Cpath d=%22M100.811 83.34L82.2108 83.5L82.1709 56.8C62.3309 59.72 45.4208 69.63 33.4608 84.89L56.8609 98.36L47.5208 114.51L24.2608 101.04C16.9308 118.73 16.4909 137.83 24.1209 157.16L47.5609 144.03L56.8109 159.97L17.0009 183.11L6.01082 161.8C-4.14918 134.46 -1.61914 104.47 15.0509 78.82C29.1309 57.15 53.7208 41.07 82.0208 38.25L82.2909 28.06C82.4209 23.23 78.7808 18.53 73.8208 18.52L45.7008 18.43L45.7608 0H137.431L137.621 18.46L110.731 18.39C106.151 18.38 101.081 21.22 101.061 26.4L101.011 38.07C134.471 41.4 162.621 62.34 175.791 93.19C188.441 122.82 184.691 156.26 166.181 182.95L81.6609 134.24L91.0009 118.1L158.951 157.35C166.691 139.32 166.391 119.11 158.891 101.15L135.711 114.44L126.411 98.53L149.491 84.86C137.781 69.36 121.311 59.61 101.021 56.7L100.811 83.34Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-livre { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 165 184%22 fill=%22%23000%22%3E%3Cpath d=%22M164.76 164.6L164.83 183.17L29.61 182.95C14.4 182.93 0.319968 168.94 0.279968 153.71L0 34.58C1.37 15.3 16.8 0.0700001 36.42 0.0600001L164.88 0L164.84 137.45L146.56 137.51L146.53 164.65L164.75 164.6H164.76ZM146.28 118.97V18.6L35.33 18.63C25.24 19.7 18.54 27.68 18.45 37.7L18.38 119.03L146.28 118.97ZM128.11 164.68V137.54H31.31C23.78 138.33 18.55 144.1 18.57 151.11C18.59 157.46 23.77 164.57 31.3 164.58L128.12 164.68H128.11Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-groupe { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22%23000%22%3E%3Cpath d=%22M183.26 91.63C183.26 142.23 142.24 183.26 91.63 183.26C41.02 183.26 0 142.24 0 91.63C0 41.02 41.03 0 91.63 0C142.23 0 183.26 41.02 183.26 91.63ZM106.96 97.24C125.04 86.65 147.25 88.09 164.07 101.06C168.13 70.26 151.97 41.42 126.75 27.62C99.42 12.67 66.58 16.84 44.08 36.33C20.8 56.49 12.33 88.36 23.47 117.88C29.59 109.1 37.42 102.27 47.45 97.78C66.5099 89.58 87.7999 89.28 106.95 97.24H106.96ZM152.25 130.23C156.66 125.69 156.37 119.59 151.87 115.58C144.98 109.42 135.4 107.56 125.67 109.6C133.08 117.32 137.18 126.28 137.55 136.88C143.46 135.81 148.1 133.82 152.24 130.24L152.25 130.23ZM114.4 149.49C121.66 140.6 119.64 129.92 111.96 122.45C96.1 107.01 65.9299 105.99 47.0699 119.38C37.9599 125.85 36.29 137.41 43.48 146.32C63.67 164.87 96.47 171.46 114.4 149.48V149.49Z%22/%3E%3Cpath d=%22M77.9097 82.6103C90.6233 82.6103 100.93 72.3039 100.93 59.5903C100.93 46.8767 90.6233 36.5703 77.9097 36.5703C65.1961 36.5703 54.8896 46.8767 54.8896 59.5903C54.8896 72.3039 65.1961 82.6103 77.9097 82.6103Z%22/%3E%3Cpath d=%22M132.78 82.6306C140.44 82.6306 146.65 76.4208 146.65 68.7606C146.65 61.1004 140.44 54.8906 132.78 54.8906C125.12 54.8906 118.91 61.1004 118.91 68.7606C118.91 76.4208 125.12 82.6306 132.78 82.6306Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-calendrier { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 166 184%22 fill=%22%23000%22%3E%3Cpath d=%22M119.4 18.33L165.1 18.35V183.06L0 183.03V18.32L45.9301 18.36L45.95 0.18L64.39 0L64.49 18.34H100.83L100.78 0.12L119.31 0.09L119.4 18.33ZM119.36 37.1L119.34 55.09L100.78 55.05L100.76 36.61H64.53L64.47 55.17L46.03 55.04L45.8101 36.72L35.25 37C27.4 37.21 18.86 44.35 18.85 53.54L18.78 147.26C18.78 155.47 26.14 164.22 34.64 164.25L126.61 164.58C137.38 164.62 146.55 157.75 146.55 146.25V54.38C146.55 42.04 132.93 33.54 119.34 37.1H119.36Z%22/%3E%3Cpath d=%22M36.7197 109.97L49.7498 96.8202L61.0797 108.09C67.0697 114.05 78.0198 115.6 84.4398 109.12L119.46 73.7402L132.57 86.9402L73.6498 146.88L36.7197 109.96V109.97Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-horloge { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22%23000%22%3E%3Cpath d=%22M183.24 91.62C183.24 142.22 142.22 183.24 91.62 183.24C41.02 183.24 0 142.22 0 91.62C0 41.02 41.02 0 91.62 0C142.22 0 183.24 41.02 183.24 91.62ZM164.62 91.63C164.62 51.32 131.94 18.64 91.63 18.64C51.32 18.64 18.64 51.32 18.64 91.63C18.64 131.94 51.32 164.62 91.63 164.62C131.94 164.62 164.62 131.94 164.62 91.63Z%22/%3E%3Cpath d=%22M116.29 82.0101L146.66 82.2301L146.59 100.84L82.2305 100.98L82.2804 27.2801L100.73 27.0801L100.87 65.1001C100.9 73.0701 107.5 81.9401 116.27 82.0101H116.29Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-coche { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 183 184%22 fill=%22%23000%22%3E%3Cpath d=%22M164.535 91.7201L182.994 91.6001C183.434 127.31 162.114 159.16 131.634 173.91C97.8345 190.27 58.1545 184.58 30.7745 160.19C9.09449 140.87 -1.64546 114.15 0.204542 85.2701C3.26454 37.4301 43.2045 -0.0798723 91.5245 0.000127726L91.4946 18.5101C50.7546 18.8901 18.8346 51.4101 18.4746 90.9301C18.1046 130.84 50.3445 163.86 89.9145 164.58C130.285 165.32 163.954 133.5 164.524 91.7201H164.535Z%22/%3E%3Cpath d=%22M43.2646 89.1311L56.3247 75.8311L72.2347 91.3111C79.0347 97.9311 89.3747 94.7911 95.6047 88.5511L151.395 32.6211L164.775 45.8311L82.4347 128.141L43.2646 89.1311Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-profil { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 185 185%22 fill=%22%23000%22%3E%3Cpath d=%22M184.48 92.24C184.48 143.18 143.18 184.48 92.24 184.48C41.3 184.48 0 143.18 0 92.24C0 41.3 41.3 0 92.25 0C143.2 0 184.49 41.3 184.49 92.24H184.48ZM156.8 127.39C171.79 99.09 167.59 66.83 147.39 43.78C127.9 21.54 96.4699 12.43 66.6499 23.35C25.3599 38.47 6.31997 87.26 27.72 127.56C63.82 92.63 120.31 92.53 156.8 127.4V127.39ZM133.15 152.98C137.15 150.2 138.15 144.64 137.74 141.21C137.3 137.55 135.21 133.79 131.64 131.52C107.11 115.89 75.66 115.91 51.51 132.65C45.11 137.09 44.8898 148.38 51.3298 152.94C75.6598 170.16 108.54 170.06 133.15 152.98Z%22/%3E%3Cpath d=%22M92.2505 83.1901C105.052 83.1901 115.43 72.812 115.43 60.0101C115.43 47.2081 105.052 36.8301 92.2505 36.8301C79.4485 36.8301 69.0703 47.2081 69.0703 60.0101C69.0703 72.812 79.4485 83.1901 92.2505 83.1901Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-envoi { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 165 184%22 fill=%22%23000%22%3E%3Cpath d=%22M146.38 146.991L146.53 101.061L164.97 101.111V183.721L0 183.751V101.161L18.5901 101.181L18.8 148.011C18.84 157.641 27.3801 165.191 36.8501 165.191H127.88C137.85 165.201 146.34 157.481 146.38 147.001V146.991Z%22/%3E%3Cpath d=%22M91.6902 147.03L73.1304 147.17L73.1902 57.95C73.1902 54 71.2402 50.86 68.0002 49.23C65.3802 47.91 60.9603 48.11 58.5403 50.53L30.8804 78.2L17.5703 64.87L82.4702 0L147.33 64.87L134.35 78.12L107.48 51.33C104.71 48.57 100.62 47.71 97.5403 49.01C94.0203 50.49 91.6604 53.72 91.6604 57.95L91.6802 147.03H91.6902Z%22/%3E%3C/svg%3E"); }.nm-root .nm-grid2-icon.nm-ico, .nm-root .nm-stat-icon.nm-ico { display: block; width: 28px; height: 28px; font-size: 28px; }
.nm-root .nm-list-icon.nm-ico { width: 26px; height: 26px; font-size: 26px; flex-basis: 28px; }
@media (min-width: 768px) { .nm-root .nm-grid2-icon.nm-ico, .nm-root .nm-stat-icon.nm-ico { width: 32px; height: 32px; font-size: 32px; } }
/* tuiles de prix : contenu centré */
.nm-root .nm-grid2-cell { align-items: center; text-align: center; }
.nm-root .nm-grid2-icon.nm-ico { margin: 0 auto; }
/* coches des listes d'inclusions : coche Figma */
.nm-root i.fa-check-circle::before { content: "" !important; display: inline-block; width: 1em; height: 1em; vertical-align: -0.12em; background-color: currentColor; -webkit-mask: var(--nm-ico-coche) center / contain no-repeat; mask: var(--nm-ico-coche) center / contain no-repeat; }
.nm-root .nm-features li i.fa-check-circle { flex-basis: 18px !important; font-size: 18px !important; line-height: 20px !important; }
/* « 30 €/mois » (Permis à 1 €, mobile) ne se coupe plus n'importe où : une valeur ne se coupe que si elle ne tient pas seule sur sa ligne */
.nm-root .nm-stat-value { overflow-wrap: break-word !important; }

/* ============================================================
   NEOVA : CHRONOLOGIE PRÉFECTURE EN CARTES EMPILÉES (Annulation, 24/09, essai simple) : demande Frédéric, « refais cette
   section comme dans le thème ». À partir de 768 px, l'accordéon des 6 étapes devient une pile de cartes blanches qui se
   figent sous le header et se recouvrent au défilement (décalage 12 px, ombre douce), toutes ouvertes : grand numéro en
   contour à gauche (Space Grotesk 72, trait 1 px), titre 24, texte, délai en bleu et photo en dessous. Plus de pastilles
   + / −. En dessous de 768 px : accordéon Figma inchangé.
   ============================================================ */
@media (min-width: 768px) {
  .nm-root .nm-ann-tl-sec .nm-tl { gap: 16px; }
  .nm-root .nm-ann-tl-sec .nm-tl-item { display: grid; grid-template-columns: 112px minmax(0, 1fr); column-gap: 24px; align-items: start; position: sticky; top: calc(var(--nm-pin-top) + var(--nm-k, 0) * 12px); background: #fff !important; border: 1px solid var(--nm-line); border-radius: 20px; padding: 28px 32px 32px !important; box-shadow: 0 -6px 20px rgba(10, 10, 10, .06); }
  .nm-root .nm-ann-tl-sec .nm-tl-item:nth-child(2) { --nm-k: 1; z-index: 2; } .nm-root .nm-ann-tl-sec .nm-tl-item:nth-child(3) { --nm-k: 2; z-index: 3; } .nm-root .nm-ann-tl-sec .nm-tl-item:nth-child(4) { --nm-k: 3; z-index: 4; } .nm-root .nm-ann-tl-sec .nm-tl-item:nth-child(5) { --nm-k: 4; z-index: 5; } .nm-root .nm-ann-tl-sec .nm-tl-item:nth-child(6) { --nm-k: 5; z-index: 6; } .nm-root .nm-ann-tl-sec .nm-tl-item:nth-child(1) { z-index: 1; }
  .nm-root .nm-ann-tl-sec .nm-tl-h, .nm-root .nm-ann-tl-sec .nm-tl-btn { display: contents !important; }
  .nm-root .nm-ann-tl-sec .nm-tl-num { grid-column: 1; grid-row: 1 / span 2; font-size: 72px !important; line-height: 1 !important; letter-spacing: -0.03em !important; color: transparent !important; -webkit-text-stroke: 1px #0a0a0a; margin-top: -4px; }
  .nm-root .nm-ann-tl-sec .nm-tl-title { grid-column: 2; grid-row: 1; font-size: 24px !important; line-height: 30px !important; }
  .nm-root .nm-ann-tl-sec .nm-tl-toggle { display: none !important; }
  .nm-root .nm-ann-tl-sec .nm-tl-panel { grid-column: 2; grid-row: 2; grid-template-rows: 1fr !important; visibility: visible !important; transition: none !important; }
  .nm-root .nm-ann-tl-sec .nm-tl-body { flex-direction: column; gap: 20px; margin-top: 12px; opacity: 1 !important; transform: none !important; transition: none !important; }
  .nm-root .nm-ann-tl-sec .nm-tl-copy { gap: 6px; }
  .nm-root .nm-ann-tl-sec .nm-tl-img { width: 100% !important; flex: none; height: auto !important; aspect-ratio: 16 / 9; border-radius: 16px !important; }
}
@media (min-width: 1100px) { .nm-root .nm-ann-tl-sec .nm-tl-item { grid-template-columns: 140px minmax(0, 1fr); column-gap: 32px; padding: 32px 36px 36px !important; } .nm-root .nm-ann-tl-sec .nm-tl-num { font-size: 88px !important; } }

/* ============================================================
   NEOVA : BANDEAUX CTA EN GRAND (24/09, essai) : demande Frédéric, réf. bloc « Work seamlessly… » : texte très grand,
   centré, en dégradé vertical du noir vers un gris très clair (la 2e ligne, déjà atténuée, prolonge le dégradé), bouton
   à avatar en dessous avec plus d'air. À partir de 1100 px : 64 → 80 px (interligne 1,05, largeur max 1180) ; tablette :
   48 px ; mobile : inchangé (Figma). Tous les bandeaux .nm-cta du site.
   ============================================================ */
@media (min-width: 768px) {
  .nm-root .nm-cta-title .elementor-heading-title { font-size: 48px !important; line-height: 1.08 !important; }
  .nm-root .nm-cta-title .elementor-heading-title, .nm-root .nm-cta-title--muted .elementor-heading-title { background: linear-gradient(180deg, #0a0a0a 0%, #3a3a3a 100%); -webkit-background-clip: text; background-clip: text; color: transparent !important; -webkit-text-fill-color: transparent; }
  .nm-root .nm-cta-title--muted .elementor-heading-title { background-image: linear-gradient(180deg, #7a7a7a 0%, #cfcfcf 100%); }
  .nm-root .nm-cta-tagline.e-con { gap: 0 !important; max-width: 1180px; }
  .nm-root .nm-cta.e-con { gap: 40px !important; padding: 72px 40px 80px !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-cta-title .elementor-heading-title { font-size: clamp(64px, 5.3vw, 80px) !important; line-height: 1.05 !important; }
  .nm-root .nm-cta.e-con { gap: 48px !important; padding: 96px 40px 104px !important; }
}
/* bouton à avatar des bandeaux, agrandi avec le titre (≥ 1100 px) : 72 px de haut, avatar 56, libellé 20 / sous-titre 14 */
@media (min-width: 1100px) {
  .nm-root .nm-cta-btn { min-height: 72px; gap: 16px; padding: 8px 36px 8px 8px; }
  .nm-root .nm-cta-avatar { width: 56px !important; height: 56px !important; }
  .nm-root .nm-cta-btn-text { gap: 5px; }
  .nm-root .nm-cta-btn-text strong { font-size: 20px !important; }
  .nm-root .nm-cta-btn-text small { font-size: 14px !important; }
}

/* ============================================================
   NEOVA : RETOURS DU CONTRÔLE MOBILE (24/09), décisions Frédéric.
   1. Accueil, Conseils : sous 768 px les 3 cartes d'articles s'empilent (Figma) au lieu du carrousel ; tablette : carrousel.
   5. L'auto-école : noms d'équipe 22/26 (échelle mobile), « Lire la suite » plus rogné (le bouton coupait le chevron).
   CTA : 2e ligne du dégradé un peu plus lisible (Frédéric « essaye un peu plus lisible ») : #6a6a6a → #b8b8b8.
   ============================================================ */
@media (max-width: 767px) {
  .nm-root .nm-slider { flex-direction: column; gap: 12px; overflow: visible; margin: 0; padding: 0; scroll-snap-type: none; }
  .nm-root .nm-slide { flex: 0 0 auto; width: 100%; }
}
.nm-root .nm-team-card .nm-team-name { font-size: 22px !important; line-height: 26px !important; }
.nm-root .nm-team-toggle { overflow: visible !important; height: auto !important; line-height: 22px !important; padding-bottom: 2px !important; }
@media (min-width: 768px) { .nm-root .nm-cta-title--muted .elementor-heading-title { background-image: linear-gradient(180deg, #6a6a6a 0%, #b8b8b8 100%); } }

/* Logos d'agrément (Accueil, 24/09, décision UX) : 3 certifications fixes et centrées (Préfet, Qualiopi, Mon Compte Formation)
   à la place du défilement à 5 logos ; ENPC/EDISER et Klaxo sont des outils, présentés dans « Notre équipement » (Méthode). */
.nm-root .nm-logos { list-style: none !important; margin: 0 !important; padding: 0 20px !important; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 20px 32px; }
.nm-root .nm-logos li { margin: 0 !important; padding: 0 !important; }
.nm-root .nm-logos img { display: block; height: 36px; width: auto; max-width: 160px; object-fit: contain; }
@media (min-width: 768px) { .nm-root .nm-logos { gap: 24px 56px; } .nm-root .nm-logos img { height: 44px; max-width: 200px; } }
/* Annulation : carte de Destan moins grosse (Frédéric 24/09) : colonne 340 px, photo 240 px */
@media (min-width: 768px) { .nm-root .nm-sec.nm-ann-expert-sec.e-con { grid-template-columns: 1fr 340px !important; } .nm-root .nm-ann-expert-card .nm-photo img, .nm-root .nm-ann-expert-photo img { height: 240px !important; width: 100% !important; } }
/* Chronologie empilée : sans ombre, cartes gris très pâle #fafafa (Frédéric 25/09) */
@media (min-width: 768px) { .nm-root .nm-ann-tl-sec .nm-tl-item { box-shadow: none !important; background: #fafafa !important; border-color: #ececec; } }
/* Bandeaux CTA : bouton ramené à 56 px (« trop gros »), noir du footer #1e1e1e (Frédéric 25/09) */
@media (min-width: 1100px) { .nm-root .nm-cta-btn { min-height: 56px; gap: 14px; padding: 6px 28px 6px 6px; } .nm-root .nm-cta-avatar { width: 44px !important; height: 44px !important; } .nm-root .nm-cta-btn-text { gap: 3px; } .nm-root .nm-cta-btn-text strong { font-size: 18px !important; } .nm-root .nm-cta-btn-text small { font-size: 12px !important; } }
.nm-root .nm-cta-btn { background: #1e1e1e !important; }
/* Chronologie : délai en noir, plus de texte bleu (Frédéric 25/09) */
.nm-root .nm-tl-delay { color: #0a0a0a !important; }
/* Chronologie : numéros pleins en gris très pâle (Frédéric 25/09), plus de contour */
@media (min-width: 768px) { .nm-root .nm-ann-tl-sec .nm-tl-num { color: #d9d9d9 !important; -webkit-text-stroke: 0; } }

/* ============================================================
   NEOVA : ANNULATION, SECTION « L'EXPERT QUI PILOTE VOTRE DOSSIER » (25/09) : refonte à partir de 768 px (Frédéric « pas
   belle, refais-la comme un UX/UI designer senior »). Deux colonnes calées en haut : à gauche le titre, l'intro puis les
   deux paragraphes posés sous un filet, comme des notes ; à droite le portrait plein cadre (4/5, arrondi 20) sans carte
   grise, nom et fonction dessous, puis le lien « Qui je suis ». La grande photo d'enseigne sous la section est masquée :
   elle doublonnait le portrait et alourdissait la page (widget conservé, réactivable). Mobile : Figma, inchangé.
   ============================================================ */
@media (min-width: 768px) {
  .nm-root .nm-sec.nm-ann-expert-sec.e-con { grid-template-columns: minmax(0, 1fr) 360px !important; grid-template-rows: auto auto auto !important; column-gap: 56px !important; row-gap: 28px !important; align-items: start !important; }
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-card { grid-row: 2 / span 2 !important; background: transparent !important; padding: 0 !important; gap: 18px !important; width: 100% !important; max-width: none !important; }
  .nm-root .nm-ann-expert-card .nm-photo, .nm-root .nm-ann-expert-card .elementor-widget-image { width: 100% !important; }
  .nm-root .nm-ann-expert-card .nm-photo img, .nm-root .nm-ann-expert-photo img { width: 100% !important; height: auto !important; aspect-ratio: 4 / 5; object-fit: cover !important; border-radius: 20px !important; }
  .nm-root .nm-ann-expert-card .nm-photo-card-text.e-con { padding: 0 !important; gap: 6px !important; }
  .nm-root .nm-ann-expert-name .elementor-heading-title { font-size: 26px !important; line-height: 30px !important; letter-spacing: -0.02em !important; }
  .nm-root .nm-ann-expert-job p { font-size: 15px !important; line-height: 22px !important; }
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-paras { border-top: 1px solid var(--nm-line); padding-top: 24px !important; gap: 18px !important; max-width: 640px; }
  .nm-root .nm-ann-expert-paras p { font-size: 17px !important; line-height: 27px !important; }
  .nm-root .nm-ann-expert-sec > .elementor-widget-image { display: none !important; }
}
@media (min-width: 1100px) { .nm-root .nm-sec.nm-ann-expert-sec.e-con { grid-template-columns: minmax(0, 1fr) 400px !important; column-gap: 80px !important; } }
/* expert (25/09) : les paragraphes suivent l'intro sans trou (l'espace libre va en bas de la colonne) ; photo d'enseigne
   déplacée en section de pause .nm-photo-break après la section (Frédéric). */
@media (min-width: 768px) { .nm-root .nm-sec.nm-ann-expert-sec.e-con { grid-template-rows: auto auto 1fr !important; } .nm-root .nm-ann-expert-sec > .nm-ann-expert-paras { align-self: start; } }

/* Titres de section et intros : largeur bornée (Frédéric 25/09, « je ne veux pas que les titres s'étalent ») : dès 768 px,
   les H2 de section et le texte d'intro qui les suit ne dépassent pas 760 px (titre) / 640 px (texte) quand ils occupent
   toute la largeur, comme les en-têtes des sections en deux colonnes. Les titres centrés (Financement Accueil, CTA) gardent
   leur propre largeur. */
@media (min-width: 768px) {
  .nm-root .nm-sec > .nm-h2 .elementor-heading-title { max-width: 760px; }
  .nm-root .nm-sec > .nm-text .elementor-widget-container, .nm-root .nm-sec > .nm-text p { max-width: 640px; }
  .nm-root .nm-fin > .nm-h2 .elementor-heading-title { max-width: 640px; }
}
/* expert v3 (Frédéric 25/09) : carte de Destan plus petite (300 px, photo 4/5) et le bouton « Qui je suis » sous le texte de
   gauche, sous les paragraphes (pas dans la carte). Réf. thème « Meet our team » : en-tête à gauche, portrait à droite. */
@media (min-width: 768px) {
  .nm-root .nm-sec.nm-ann-expert-sec.e-con { grid-template-columns: minmax(0, 1fr) 300px !important; }
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-card { grid-row: 2 / span 3 !important; }
  .nm-root .nm-sec.nm-ann-expert-sec.e-con { grid-template-rows: auto auto auto 1fr !important; }
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-btn { grid-column: 1 !important; grid-row: 4 !important; align-self: start !important; width: auto !important; margin-top: 4px; }
}
@media (min-width: 1100px) { .nm-root .nm-sec.nm-ann-expert-sec.e-con { grid-template-columns: minmax(0, 1fr) 320px !important; } }
@media (min-width: 768px) { .nm-root .nm-ann-expert-sec > .nm-ann-expert-btn { justify-self: start; width: fit-content !important; } .nm-root .nm-ann-expert-btn .elementor-button-wrapper { display: inline-block !important; } .nm-root .nm-ann-expert-btn .elementor-button { width: auto !important; } }
/* expert v4 (Frédéric 25/09, réf. thème « Meet our team ») : carte portrait grise à droite (tuile #eeeeee, marge 10, photo 4/5
   arrondie 14, nom 20, fonction 13 grise) ; à gauche, sous le texte, le lien à pastille « + Qui je suis ». */
@media (min-width: 768px) {
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-card { background: #eeeeee !important; border-radius: 20px !important; padding: 10px 10px 18px !important; gap: 14px !important; }
  .nm-root .nm-ann-expert-card .nm-photo img, .nm-root .nm-ann-expert-photo img { border-radius: 14px !important; }
  .nm-root .nm-ann-expert-card .nm-photo-card-text.e-con { padding: 0 8px !important; gap: 4px !important; }
  .nm-root .nm-ann-expert-name .elementor-heading-title { font-size: 20px !important; line-height: 24px !important; letter-spacing: 0 !important; }
  .nm-root .nm-ann-expert-job p { font-size: 13px !important; line-height: 18px !important; }
  .nm-root .nm-ann-expert-sec > .nm-ann-expert-btn { margin-top: 8px; }
}
/* Encart de note sous les tuiles de prix (Frédéric 25/09, « trop gros ») : à partir de 768 px, texte 15/22, marges 18/24,
   lien à pastille 32 px et libellé 14 */
@media (min-width: 768px) {
  .nm-root .nm-grid2-note.e-con { padding: 18px 24px !important; gap: 24px !important; }
  .nm-root .nm-grid2-note p { font-size: 15px !important; line-height: 22px !important; }
  .nm-root .nm-grid2-note .nm-btn .elementor-button-icon { flex-basis: 32px !important; width: 32px !important; height: 32px !important; margin-right: 12px !important; }
  .nm-root .nm-grid2-note .nm-btn .elementor-button-icon::before { width: 10px !important; height: 10px !important; }
  .nm-root .nm-grid2-note .nm-btn .elementor-button-text { font-size: 14px !important; }
}
@media (min-width: 768px) { :root body .nm-root .nm-grid2-note .nm-btn .elementor-button.elementor-button .elementor-button-icon { flex-basis: 32px !important; width: 32px !important; height: 32px !important; margin-right: 12px !important; } :root body .nm-root .nm-grid2-note .nm-btn .elementor-button.elementor-button .elementor-button-icon::before { width: 10px !important; height: 10px !important; } :root body .nm-root .nm-grid2-note .nm-btn .elementor-button.elementor-button .elementor-button-text { font-size: 14px !important; } }
/* En-tête de la section « Deux cas, deux parcours » (Annulation, Frédéric 25/09) : centré, titre borné à 760 px et
   paragraphe à 820 px (2 lignes). Réglage limité à cette section (un réglage général cassait les en-têtes posés à côté
   d'une photo). */
@media (min-width: 768px) {
  .nm-root .nm-ann-cas > .nm-header { width: 100% !important; max-width: none !important; align-self: stretch !important; align-items: center !important; text-align: center; }
  .nm-root .nm-ann-cas > .nm-header > .elementor-widget { width: 100%; }
  .nm-root .nm-ann-cas > .nm-header .nm-h2 .elementor-heading-title { max-width: 760px; margin-left: auto !important; margin-right: auto !important; text-align: center !important; }
  .nm-root .nm-ann-cas > .nm-header .nm-text p { max-width: 680px; margin-left: auto !important; margin-right: auto !important; text-align: center !important; }
}

/* Réseaux sous le nom dans la carte expert (Frédéric 25/09, réf. thème) : pastilles blanches 36 px, icône noire ; survol : inversé */
.nm-root .nm-social { list-style: none !important; margin: 4px 0 0 !important; padding: 0 8px !important; display: flex; gap: 8px; }
.nm-root .nm-social li { margin: 0 !important; padding: 0 !important; }
.nm-root .nm-social a { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 50%; background: #fff; color: #0a0a0a !important; font-size: 14px; text-decoration: none !important; transition: background-color .25s ease, color .25s ease; }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-social a:hover { background: #0a0a0a; color: #fff !important; } }
/* Liens courts dans les textes : jamais coupés au trait d'union (« écrivez-nous ») */
.nm-root .nm-text a, .nm-root .nm-card-text a, .nm-root .nm-hero-intro a { white-space: nowrap; }
/* Titres en lignes masquées : apparition plus rapide (Frédéric 25/09) : 0,5 s, 60 ms entre lignes */
.nm-split--lines .nm-wi { transition-duration: .5s; transition-delay: calc(var(--li, 0) * 60ms); }
/* Bandeaux CTA réduits (Frédéric 25/09 « trop gros partout ») : titre 40 (tablette) → 48-56 (≥ 1100), moins d'air */
@media (min-width: 768px) {
  .nm-root .nm-cta-title .elementor-heading-title { font-size: 40px !important; line-height: 1.1 !important; }
  .nm-root .nm-cta.e-con { gap: 32px !important; padding: 64px 40px 72px !important; }
  .nm-root .nm-cta-tagline.e-con { max-width: 900px; }
}
@media (min-width: 1100px) {
  .nm-root .nm-cta-title .elementor-heading-title { font-size: clamp(48px, 3.7vw, 56px) !important; line-height: 1.08 !important; }
  .nm-root .nm-cta.e-con { gap: 36px !important; padding: 80px 40px 88px !important; }
}
/* « Deux cas » : eyebrow centré (Frédéric 25/09), paragraphe contenu à 680 px */
@media (min-width: 768px) { .nm-root .nm-ann-cas .nm-eyebrow { text-align: center; justify-content: center; } }
/* Coupures de lignes (Frédéric 25/09) : paragraphes sans mot orphelin ; retours voulus <br class="nm-br-d"> seulement ≥ 1100 */
.nm-root p, .nm-root li { text-wrap: pretty; }
.nm-root br.nm-br-d { display: none; }
@media (min-width: 1100px) {
  .nm-root br.nm-br-d { display: inline; }
  .nm-root .nm-ann-cas > .nm-header .nm-text p { max-width: 780px; }
}
/* Note sous les tarifs (Frédéric 25/09 « trop long ») : carte à la largeur du contenu, centrée, texte sur 2 lignes équilibrées */
@media (min-width: 768px) {
  .nm-root .nm-grid2-note.e-con { width: fit-content !important; max-width: 100% !important; margin-left: auto !important; margin-right: auto !important; align-self: center !important; }
  .nm-root .nm-grid2-note p { max-width: 560px; text-wrap: balance; }
}
/* Tarifs à l'unité (Frédéric 25/09) : plus de carte blanche ; le texte passe en haut à droite, au-dessus des dernières
   cases (aligné sur la grille), le lien à pastille se centre sous les cases. Desktop seulement (≥ 1100). */
@media (min-width: 1100px) {
  .nm-root .nm-grid2-sec.e-con { display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 16px !important; row-gap: 32px !important; }
  .nm-root .nm-grid2-sec.e-con > * { grid-column: 1 / -1; min-width: 0; margin: 0 !important; }
  .nm-root .nm-grid2-sec.e-con > .nm-h2 { grid-row: 2; grid-column: 1 / 3; align-self: end; }
  .nm-root .nm-grid2-sec.e-con > .nm-grid2-w { grid-row: 3; }
  .nm-root .nm-grid2-sec.e-con > .nm-grid2-note.e-con { display: contents !important; }
  .nm-root .nm-grid2-sec .nm-grid2-note > .nm-card-text { grid-row: 2; grid-column: 3 / 5; align-self: end; margin: 0 !important; }
  .nm-root .nm-grid2-sec .nm-grid2-note > .nm-card-text p { max-width: none; margin: 0 !important; color: rgba(255, 255, 255, .82) !important; font-size: 15px !important; line-height: 22px !important; text-wrap: pretty; }
  .nm-root .nm-grid2-sec .nm-grid2-note > .nm-btn { grid-row: 4; grid-column: 1 / -1; justify-self: center !important; align-self: center !important; width: auto !important; }
  :root body .nm-root .nm-grid2-sec .nm-grid2-note .nm-btn .elementor-button.elementor-button { --fg: #fff; --on: #0a0a0a; }
}
/* FAQ : pas de cadre au clic (souris), cadre gardé pour la navigation clavier */
.nm-root .nm-faq-q:focus:not(:focus-visible) { outline: none !important; box-shadow: none !important; }
/* Icônes 25/09 PROVISOIRES (à redessiner par Frédéric dans Figma) dans le style du jeu Figma (trait 18,5 / 184, angles francs) : Accéléré, « Un mois type » */
.nm-root .nm-ico-loupe { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22%23000%22%3E%3Cpath fill-rule=%22evenodd%22 d=%22M6 76a70 70 0 1 0 140 0a70 70 0 1 0-140 0ZM24.5 76a51.5 51.5 0 1 0 103 0a51.5 51.5 0 1 0-103 0Z%22/%3E%3Cpath d=%22M113.3 126.4L126.4 113.3L182 168.9L168.9 182Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-progression { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22%3E%3Cpath d=%22M6 164L66 104L104 142L170 76%22/%3E%3Cpath d=%22M104 44.5H174.5V115%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-examen { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M14 0H170V184H14ZM48.5 18.5H135.5A16 16 0 0 1 151.5 34.5V149.5A16 16 0 0 1 135.5 165.5H48.5A16 16 0 0 1 32.5 149.5V34.5A16 16 0 0 1 48.5 18.5Z%22/%3E%3Cpath fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22 d=%22M54 94L80 120L131 69%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-volant { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22%23000%22%3E%3Cpath fill-rule=%22evenodd%22 d=%22M0 92a92 92 0 1 0 184 0a92 92 0 1 0-184 0ZM18.5 92a73.5 73.5 0 1 0 147 0a73.5 73.5 0 1 0-147 0Z%22/%3E%3Cpath d=%22M12 82.75H172V101.25H12Z%22/%3E%3Cpath d=%22M82.75 92H101.25V172H82.75Z%22/%3E%3Ccircle cx=%2292%22 cy=%2292%22 r=%2224%22/%3E%3C/svg%3E"); }
/* Bleu NEOVA aligné sur la charte graphique 2025 (Frédéric 25/09) : l'ancien bleu Figma (R22 V65 B148) devient #00339f
   (Pantone 286 C) partout ; carte claire sur fond bleu : #1a47a9 (même éclaircissement de 10 %). Le cyan #00a1e1 ne change pas. */
/* Mots composés (Noisy-le-Sec, auto-école, Île-de-France…) jamais coupés au trait d'union (Frédéric 25/09) : bloc posé par neova-site.php */
.nm-nw { white-space: nowrap; }
@keyframes nm-step-sweep {
  0% { background-position: left center; background-size: 0% 100%; }
  50% { background-position: left center; background-size: 100% 100%; }
  50.01% { background-position: right center; background-size: 100% 100%; }
  100% { background-position: right center; background-size: 0% 100%; }
}
/* Bloc contact (Frédéric 26/09) : à partir de 768 px, carte de Destan, « Pour nous contacter » et « S'inscrire » à la
   largeur de leur contenu, calés à gauche (plus de pleine largeur). Mobile : Figma, inchangé. */
@media (min-width: 768px) {
  .nm-root .nm-contact > .nm-contact-left > .nm-contact-card.e-con, .nm-root .nm-contact .nm-contact-card.e-con { width: fit-content !important; max-width: 100% !important; align-self: flex-start !important; padding-right: 40px !important; }
  .nm-root .nm-contact .nm-btn--pill-light, .nm-root .nm-contact > .nm-contact-left > .nm-btn--pill-light { width: auto !important; align-self: flex-start !important; }
  :root body .nm-contact .nm-btn.nm-btn--pill-light .elementor-button.elementor-button { width: auto !important; }
  .nm-root .nm-contact .nm-form .pxl-item--submit { display: flex; justify-content: flex-start; }
  .nm-root .nm-contact .nm-form .pxl-item--submit .btn { width: auto !important; }
}
/* Icônes des listes (semaines, rythmes…) : gris clair et un peu plus petites (Frédéric 26/09) : 26 → 22 px, #c6c6c6 (gris clair de la charte) */
.nm-root .nm-list-icon.nm-ico { width: 22px !important; height: 22px !important; font-size: 22px !important; flex-basis: 24px !important; color: #c6c6c6 !important; background-color: #c6c6c6 !important; }
/* Avatar de l'auteur dans les cartes d'articles (Frédéric 26/09) : cadre parfois écrasé à 50 × 40 → ovale ; toujours un cercle de 50 px */
.nm-root .pxl-post-blog .pxl-item--avatar { flex: 0 0 50px !important; width: 50px !important; height: 50px !important; aspect-ratio: 1 / 1; border-radius: 50% !important; overflow: hidden !important; }
.nm-root .pxl-post-blog .pxl-item--avatar img { width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover !important; border-radius: 50% !important; display: block; }
:root body .nm-root .nm-conseils-carousel .pxl-post--inner.active .pxl-item--avatar { flex: 0 0 40px !important; width: 40px !important; min-width: 40px !important; max-width: 40px !important; height: 40px !important; }
/* Paragraphe d'introduction sous un titre de section (Frédéric 26/09 « phrase trop longue ») : 760 px au plus à partir de
   768 px, calé comme le titre ; les en-têtes centrés gardent leur réglage (ex. « Deux cas » : centré, 780). Titres inchangés. */
@media (min-width: 768px) { .nm-root .nm-header > .nm-text p { max-width: 760px; } }
/* Tableaux gris (Frédéric 26/09, réf. liste du thème) : au survol, la ligne passe en blanc et les deux textes glissent
   de 12 px vers l'intérieur (libellé vers la droite, valeur vers la gauche). Souris seulement ; pas de mouvement si réduit. */
@media (hover: hover) and (pointer: fine) {
  .nm-root .nm-table-label, .nm-root .nm-table-value { transition: color .3s linear, transform .45s cubic-bezier(.37, .31, .2, .85) !important; }
  .nm-root .nm-table-row:hover .nm-table-label { transform: translateX(12px); }
  .nm-root .nm-table-row:hover .nm-table-value { transform: translateX(-12px); }
}
@media (prefers-reduced-motion: reduce) { .nm-root .nm-table-row:hover .nm-table-label, .nm-root .nm-table-row:hover .nm-table-value { transform: none; } }
/* Séries de 5 cartes (profils CPF, profils Code) : à partir de 768 px, 3 cartes puis 2 cartes CENTRÉES (Frédéric 26/09).
   Grille à 6 colonnes (grille de la charte), chaque carte sur 2 colonnes ; 4ᵉ et 5ᵉ décalées d'une colonne. */
@media (min-width: 768px) {
  .nm-root .nm-stack-sec .nm-stack.e-con:has(> .nm-card:nth-child(5):last-child) { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; }
  .nm-root .nm-stack-sec .nm-stack.e-con:has(> .nm-card:nth-child(5):last-child) > .nm-card { grid-column: span 2; }
  .nm-root .nm-stack-sec .nm-stack.e-con:has(> .nm-card:nth-child(5):last-child) > .nm-card:nth-child(4) { grid-column: 2 / span 2; }
  .nm-root .nm-stack-sec .nm-stack.e-con:has(> .nm-card:nth-child(5):last-child) > .nm-card:nth-child(5) { grid-column: 4 / span 2; }
}
/* Photos sous chaque étape d'une liste numérotée (Code, « Le jour J », Frédéric 26/09), même style que les photos de la FAQ.
   PROVISOIRES : photos existantes du site en attendant celles du client. */
.nm-root .nm-list-img { display: block; width: 100% !important; max-width: none !important; height: auto !important; aspect-ratio: 296 / 160; object-fit: cover; border-radius: 12px !important; margin: 16px 0 0 !important; }
@media (min-width: 768px) { .nm-root .nm-list-img { max-height: 240px; margin-top: 20px !important; } }
/* ============================================================
   NEOVA : FINANCEMENT, « AIDE AU CHOIX » EN CARROUSEL (Frédéric 26/09, Figma + thème Floka Home 8, widget pxl_box_carousel).
   À partir de 768 px : en-tête en deux colonnes (petite image + surtitre à gauche, titre + texte à droite), puis
   carrousel de cartes horizontales (photo à gauche, texte à droite, lien à pastille) qui déborde à droite jusqu'au bord
   de la section, règle graduée décorative dessous. Mobile : carrousel masqué, les 4 cartes empilées restent (Figma).
   Photos : PROVISOIRES (clés NEOVA), en attendant celles du client.
   ============================================================ */
.nm-root .nm-fin-choix .nm-fin-choix-img, .nm-root .nm-fin-choix .nm-fin-carousel { display: none; }
@media (min-width: 768px) {
  .nm-root .nm-sec.nm-fin-choix.e-con { display: grid !important; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: 48px !important; row-gap: 16px !important; align-items: start; overflow: clip; }
  .nm-root .nm-fin-choix > .nm-fin-choix-img { display: block; grid-column: 1; grid-row: 1; margin: 0 !important; }
  .nm-root .nm-fin-choix > .nm-fin-choix-img img { width: 200px !important; height: 120px !important; object-fit: cover; border-radius: 12px !important; display: block; }
  .nm-root .nm-fin-choix > .elementor-widget-html:has(.nm-eyebrow) { grid-column: 1; grid-row: 2; margin: 0 !important; }
  .nm-root .nm-fin-choix .nm-eyebrow::after { display: none; }
  .nm-root .nm-fin-choix > .nm-header { grid-column: 2; grid-row: 1 / span 2; margin: 0 !important; max-width: none !important; width: auto !important; }
  .nm-root .nm-fin-choix > .nm-fin-profils { display: none !important; }
  .nm-root .nm-fin-choix > .nm-fin-carousel { display: block; grid-column: 1 / -1; grid-row: 3; margin: 48px calc((100% - (100vw - 40px)) / 2) 0 !important; padding-bottom: 0; position: relative; min-width: 0; }
  .nm-root .nm-fin-carousel .pxl-swiper-container { overflow: visible; }
  .nm-root .nm-fin-carousel .pxl-item--inner { gap: 24px !important; padding: 10px 28px 10px 10px !important; background: #f5f5f5 !important; border-radius: 20px !important; height: 100%; align-items: stretch !important; }
  .nm-root .nm-fin-carousel .pxl-swiper-slide { height: auto; }
  .nm-root .nm-fin-carousel .pxl-item--image { width: 42% !important; min-width: 0 !important; flex: 0 0 42%; border-radius: 14px !important; aspect-ratio: 1 / 1; }
  .nm-root .nm-fin-carousel .pxl-item--image img { width: 100% !important; height: 100% !important; object-fit: cover; }
  .nm-root .nm-fin-carousel .pxl-item--content { display: flex; flex-direction: column; padding: 22px 0 14px; min-width: 0; }
  .nm-root .nm-fin-carousel .pxl-item--title { font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 22px !important; line-height: 26px !important; letter-spacing: -0.03em !important; color: #0a0a0a !important; margin: 0 !important; text-wrap: balance; }
  .nm-root .nm-fin-carousel .pxl-item--desc { font-family: var(--nm-inter, 'Inter', sans-serif) !important; font-size: 15px !important; line-height: 22px !important; color: #666 !important; margin-top: 12px !important; text-wrap: pretty; }
  .nm-root .nm-fin-carousel .btn-readmore { margin-top: auto !important; padding: 20px 0 0 !important; display: inline-flex !important; align-items: center; gap: 14px; background: none !important; border: 0 !important; height: auto !important; min-height: 0 !important; color: #0a0a0a !important; text-transform: none !important; font-family: var(--nm-sg) !important; font-weight: 500 !important; font-size: 15px !important; letter-spacing: 0 !important; box-shadow: none !important; }
  .nm-root .nm-fin-carousel .btn-readmore .pxl--btn-icon { flex: 0 0 40px; width: 40px; height: 40px; border-radius: 50%; background: #0a0a0a; display: flex; align-items: center; justify-content: center; transition: transform .5s cubic-bezier(.37, .31, .2, .85); }
  .nm-root .nm-fin-carousel .btn-readmore:hover .pxl--btn-icon { transform: rotate(90deg); }
}
@media (min-width: 768px) { :root body .nm-root .nm-fin-choix > .elementor-widget.nm-fin-carousel { width: auto !important; max-width: none !important; justify-self: stretch; } }
@media (min-width: 768px) { :root body .nm-root .nm-sec.nm-fin-choix > .e-con.nm-fin-profils { display: none !important; } }
@media (min-width: 768px) {
  .nm-root .nm-sec.nm-fin-choix.e-con { grid-template-rows: auto 1fr auto; }
  .nm-root .nm-fin-choix > .elementor-widget-html:has(.nm-eyebrow) { align-self: start; margin-top: 2px !important; }
  .nm-root .nm-fin-carousel .btn-readmore { align-self: flex-start; }
}
/* Aide au choix (26/09, retours) : titre et texte fixes (pas épinglés au défilement) ; carrousel d'un bord à l'autre de la
   section, en défilement continu (réglages Home 8 : autoplay 1 ms, vitesse 5 s, boucle ; pause au survol) ; règle graduée retirée. */
@media (min-width: 768px) {
  :root body .nm-root .nm-fin-choix > .nm-header { position: static !important; top: auto !important; }
  .nm-root .nm-fin-carousel .pxl-swiper-wrapper { transition-timing-function: linear !important; }
}
/* Financement, « Besoin d'aide pour votre dossier ? » (26/09) : même carte que « Besoin du code uniquement ? » (Formations) ;
   la photo carrée de Destan est recadrée au même format (≈ 3:2, visage centré) pour que les deux cartes aient la même hauteur. */
@media (min-width: 768px) { .nm-root .nm-sec.nm-code .nm-code-card img[src*="Destan"] { height: auto !important; aspect-ratio: 425 / 280; object-fit: cover !important; object-position: 50% 12%; } }
/* Financement « La démarche » (26/09) : entrée des cartes par la droite pendant que la section est figée (neova-hscroll.js v8,
   classe nm-hfx-on posée à partir de 768 px). La section coupe ce qui dépasse pour que les cartes en attente ne créent
   pas de défilement horizontal. */
.nm-root .nm-hfx-on.e-con { overflow: clip !important; }
.nm-root .nm-hfx-on .nm-stack > .e-con { will-change: transform; }
/* CPF « 5 étapes » façon « Notre équipement » (26/09) : sous-titre « Étape n · … » équilibré ; adresses longues jamais hors cadre */
.nm-root .nm-cpf-tools .nm-met-tool-sub { text-wrap: balance; }
.nm-root .nm-met-tool-desc { overflow-wrap: break-word; }
.nm-root .nm-cpf-tools .nm-cpf-step-n { display: block; margin-bottom: 6px; font-family: var(--nm-sg) !important; font-size: 12px; line-height: 1; letter-spacing: .06em; text-transform: uppercase; color: #8a8a8a; }
/* Icônes 26/09 PROVISOIRES (à redessiner par Frédéric dans Figma), style du jeu NEOVA : Permis à 1 €, chiffres clés */
.nm-root .nm-ico-euro { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22%3E%3Cpath d=%22M152 38A68 68 0 1 0 152 146%22/%3E%3Cpath d=%22M8 76H112M8 108H112%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-pourcent { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22%3E%3Ccircle cx=%2244%22 cy=%2244%22 r=%2227%22/%3E%3Ccircle cx=%22140%22 cy=%22140%22 r=%2227%22/%3E%3Cpath d=%22M162 22L22 162%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-dossier { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22 fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22 stroke-linejoin=%22miter%22%3E%3Cpath d=%22M10 30H72L90 50H174V162H10Z%22/%3E%3Cpath d=%22M10 80H174%22/%3E%3C/svg%3E"); }
/* Valeur avec unité (« 30 €/mois ») : unité réduite pour tenir dans les 5 cartes */
.nm-root .nm-stat-unit { font-size: .5em; letter-spacing: 0; margin-left: 2px; }
/* Permis à 1 €, chiffres clés sur fond bleu (Frédéric 26/09) : icônes en cyan et plus d'air entre l'icône et le chiffre */
.nm-root .nm-stat-block .nm-stat-icon.nm-ico { color: var(--nm-cyan, #00a1e1) !important; background-color: var(--nm-cyan, #00a1e1) !important; margin-bottom: 14px !important; }
@media (min-width: 768px) { .nm-root .nm-stat-block .nm-stat-icon.nm-ico { margin-bottom: 22px !important; } }
/* Accordéons noirs « étapes » (CPF, Permis à 1 €, Annulation) : ligne « Délai » en blanc, séparée du texte (Annulation, 26/09) */
.nm-root .nm-met-tool-delay { font-family: var(--nm-inter, 'Inter', sans-serif) !important; font-size: 14px !important; line-height: 20px !important; font-weight: 500 !important; color: #fff !important; margin: 4px 0 0 !important; }
/* ============================================================
   NEOVA : AIDES ET DISPOSITIFS, « POUR VOUS REPÉRER EN UN TABLEAU » (Frédéric 26/09, Figma desktop) : à partir de 1 100 px, un seul
   tableau comparatif (aides en lignes, 4 critères en colonnes, une ligne sur deux teintée, coins arrondis, « Pour qui »
   en noir) à la place des 4 fiches ; en dessous (mobile et tablette), les 4 fiches restent (à 5 colonnes, le tableau est trop serré).
   Au survol (souris) : ligne teintée et textes des deux bords décalés vers l'intérieur, comme les autres tableaux.
   ============================================================ */
.nm-root .nm-compare-w { display: none; }
.nm-root .nm-compare .nm-vh, .nm-root .nm-compare-w .nm-vh { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
@media (min-width: 1100px) {
  :root body .nm-root .nm-sec > .elementor-widget.nm-compare-w { display: block; width: 100% !important; max-width: none !important; }
  .nm-root .nm-sec > .nm-tables-w:has(+ .nm-compare-w) { display: none !important; }
  .nm-root .nm-compare { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; margin: 8px 0 0; background: none !important; border: 0 !important; }
  .nm-root .nm-compare col, .nm-root .nm-compare th, .nm-root .nm-compare td { border: 0 !important; background: none; }
  .nm-root .nm-compare thead th { padding: 0 20px 14px !important; text-align: left; vertical-align: bottom; font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 12px !important; line-height: 1.2 !important; letter-spacing: .04em !important; text-transform: uppercase; color: #999 !important; }
  .nm-root .nm-compare thead th:first-child { width: 24%; } .nm-root .nm-compare thead th:nth-child(2) { width: 28%; }
  .nm-root .nm-compare thead th:nth-child(3), .nm-root .nm-compare thead th:nth-child(4) { width: 15%; }
  .nm-root .nm-compare tbody th, .nm-root .nm-compare tbody td { padding: 26px 20px !important; text-align: left; vertical-align: middle; font-family: var(--nm-inter, 'Inter', sans-serif) !important; font-weight: 400 !important; font-size: 15px !important; line-height: 22px !important; color: #666 !important; transition: background-color .3s linear, transform .45s cubic-bezier(.37, .31, .2, .85); }
  .nm-root .nm-compare tbody .nm-compare-key { color: #0a0a0a !important; }
  .nm-root .nm-compare tbody tr:nth-child(odd) > * { background: #f5f5f5; }
  .nm-root .nm-compare tbody tr > :first-child { border-radius: 16px 0 0 16px; padding-left: 40px !important; }
  .nm-root .nm-compare tbody tr > :last-child { border-radius: 0 16px 16px 0; }
  .nm-root .nm-compare thead th:first-child { padding-left: 40px !important; }
}
@media (min-width: 1100px) and (hover: hover) and (pointer: fine) {
  .nm-root .nm-compare tbody tr:hover > * { background: #eeeeee; }
  .nm-root .nm-compare tbody tr:hover > :first-child { transform: translateX(12px); }
  .nm-root .nm-compare tbody tr:hover > :last-child { transform: translateX(-12px); }
}
/* ============================================================
   NEOVA : PAS DE TEXTE EN BLEU (Frédéric 26/09 « pas de bleu pour les écritures »). Le bleu reste pour les fonds, les
   pastilles et les icônes ; tout texte passe en noir. Liens et titres cliquables : au survol, soulignés (au lieu de
   bleus). Numéros d'étapes de liste : gris clair (#c6c6c6), comme les autres numéros d'étapes du site.
   ============================================================ */
:root body .nm-root .nm-aid-amount .elementor-heading-title,
:root body .nm-root .nm-ae-date:last-child .nm-ae-year,
:root body .nm-root .nm-team-toggle, :root body .nm-root .nm-team-toggle-text,
:root body .nm-root .nm-step.is-open .nm-step-idx,
:root body .nm-root .nm-tl-item.is-open .nm-tl-num, :root body .nm-root .nm-tl-delay,
:root body .nm-root .nm-contact .nm-form .pxl-item--submit .btn, :root body .nm-root .nm-contact .nm-form .pxl-item--submit .btn .pxl--btn-text { color: #0a0a0a !important; }
:root body .nm-root .nm-list-num { color: #c6c6c6 !important; }
/* blog et articles */
:root body .nm-blog-sec .nm-blog-filter a, :root body .nm-root .nm-blog-filter a, :root body .nm-search-sec .nm-blog-filter a, :root body .nm-search-sec .nm-blog-empty a,
:root body .nm-post-content a, :root body .nm-post-content figcaption a, :root body .nm-post-content .wp-block-file a:not(.wp-block-file__button) { color: #0a0a0a !important; }
:root body .nm-post-content li::marker { color: #0a0a0a; }
:root body .nm-post-content .wp-block-button.is-style-outline .wp-block-button__link { color: #0a0a0a !important; box-shadow: inset 0 0 0 2px #0a0a0a; }
:root body .nm-blog-sec .nm-blog-cat:hover, :root body .nm-blog-sec .nm-blog-cat:focus-visible,
:root body .nm-blog-sec .nm-blog-card:hover .nm-blog-title a, :root body .nm-blog-sec .nm-blog-title a:focus-visible,
:root body .nm-post-back a:hover, :root body .nm-post-back a:focus-visible,
:root body .nm-blog--v2 .nm-blog-view:hover,
:root body .nm-blog--v2 .nm-blog-item:hover .nm-blog-item-title a, :root body .nm-blog--v2 .nm-blog-item-title a:focus-visible,
:root body .nm-blog--v2 .nm-blog-recent-item:hover .nm-blog-recent-title, :root body .nm-blog--v2 .nm-blog-recent-title:focus-visible,
:root body .nm-art .nm-art-cat:hover, :root body .nm-art .nm-art-cat:focus-visible,
:root body .nm-art .nm-art-nav-link:hover .nm-art-nav-title, :root body .nm-art .nm-art-nav-link:focus-visible .nm-art-nav-title,
:root body .nm-art .nm-art-recent-item:hover .nm-art-recent-title, :root body .nm-art .nm-art-recent-title:focus-visible,
:root body .nm-art .nm-art-cat-row:hover .nm-art-cat-name, :root body .nm-art .nm-art-cat-row:focus-visible .nm-art-cat-name { color: #0a0a0a !important; text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
:root body .nm-blog--v2 .nm-blog-item a.nm-blog-pill:hover, :root body .nm-blog--v2 .nm-blog-item a.nm-blog-pill:focus-visible { background: #eeeeee !important; color: #0a0a0a !important; }
:root body .nm-art .nm-art-share-btn:hover, :root body .nm-art .nm-art-share-btn:focus-visible { border-color: #0a0a0a !important; color: #0a0a0a !important; }
/* Cartes tarifs sur fond bleu (Accéléré, BVA, BVM, Annulation, Code) : icônes en cyan (Frédéric 26/09), comme les chiffres clés du Permis à 1 € */
:root body .nm-root .nm-grid2-sec .nm-grid2-icon.nm-ico { color: var(--nm-cyan, #00a1e1) !important; background-color: var(--nm-cyan, #00a1e1) !important; }
/* Icônes « mois type » v2 (26/09, Frédéric « refais les icônes bien faits et en rapport avec le texte ») : drapeau (évaluation de départ),
   route (montée en compétence, circulation), porte-bloc coché (examen blanc), carte de permis (obtention du permis). PROVISOIRES. */
.nm-root .nm-ico-drapeau { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22%3E%3Cpath fill=%22%23000%22 d=%22M22 4H40.5V182H22Z%22/%3E%3Cpath fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22 stroke-linejoin=%22miter%22 stroke-miterlimit=%226%22 d=%22M38 14.25H160L132 57L160 99.75H38%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-route { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22%3E%3Cpath fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22 d=%22M60 4L22 180M124 4L162 180%22/%3E%3Cpath fill=%22%23000%22 d=%22M82.75 14H101.25V40H82.75ZM82.75 68H101.25V100H82.75ZM82.75 128H101.25V172H82.75Z%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-examen { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M20 20H164V182H20ZM52.5 38.5H131.5A14 14 0 0 1 145.5 52.5V149.5A14 14 0 0 1 131.5 163.5H52.5A14 14 0 0 1 38.5 149.5V52.5A14 14 0 0 1 52.5 38.5Z%22/%3E%3Cpath fill=%22%23000%22 d=%22M58 2H126V36A10 10 0 0 1 116 46H68A10 10 0 0 1 58 36Z%22/%3E%3Cpath fill=%22none%22 stroke=%22%23000%22 stroke-width=%2218.5%22 d=%22M58 110L82 134L128 88%22/%3E%3C/svg%3E"); }
.nm-root .nm-ico-permis { --nm-ico: url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 184 184%22%3E%3Cpath fill=%22%23000%22 fill-rule=%22evenodd%22 d=%22M2 24H182V160H2ZM30.5 42.5H153.5A10 10 0 0 1 163.5 52.5V131.5A10 10 0 0 1 153.5 141.5H30.5A10 10 0 0 1 20.5 131.5V52.5A10 10 0 0 1 30.5 42.5Z%22/%3E%3Ccircle cx=%2258%22 cy=%2274%22 r=%2216%22 fill=%22%23000%22/%3E%3Cpath fill=%22%23000%22 d=%22M32 124A26 26 0 0 1 84 124Z%22/%3E%3Cpath fill=%22%23000%22 d=%22M100 66H154V81H100ZM100 96H142V111H100Z%22/%3E%3C/svg%3E"); }
/* Accordéons noirs « étapes » : petite photo sous le texte de l'en-tête (Permis à 1 €, Frédéric 26/09). PROVISOIRE (photos du client à venir).
   Mobile : pleine largeur 16/9 entre le texte et les étapes ; à partir de 768 px : 360 px au plus, 3/2, dans la colonne épinglée. */
.nm-root .nm-met-equip .nm-equip-photo { margin: 24px 0 0 !important; width: 100%; }
.nm-root .nm-met-equip .nm-equip-photo img { display: block; width: 100% !important; height: auto !important; max-width: none !important; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 16px !important; }
@media (min-width: 768px) {
  .nm-root .nm-met-equip .nm-equip-photo { margin-top: 32px !important; }
  .nm-root .nm-met-equip .nm-equip-photo img { max-width: 360px !important; aspect-ratio: 3 / 2; }
}
/* Permis à 1 €, carte « La caution s'engage… » (Frédéric 26/09 « photo en paysage au niveau du texte ») : à partir de 768 px,
   la hauteur de la carte est celle du texte ; la photo la remplit en paysage (recadrée), 240 px de haut au moins. */
@media (min-width: 768px) {
  .nm-root .nm-p1e-caution-card > .elementor-widget-image { position: relative; align-self: stretch !important; min-height: 240px; height: auto !important; }
  .nm-root .nm-p1e-caution-card > .elementor-widget-image img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; aspect-ratio: auto !important; object-fit: cover; object-position: 50% 45%; }
}
/* Aides et dispositifs, carte « Vous hésitez entre plusieurs aides ? » (Frédéric 26/09) : même traitement que la carte caution
   du Permis à 1 € : à partir de 768 px la carte prend la hauteur du texte, la photo de Destan est recadrée en paysage (visage en haut). */
@media (min-width: 768px) {
  .nm-root .nm-aid-rdv-card > .elementor-widget-image { position: relative; align-self: stretch !important; min-height: 330px; height: auto !important; }
  .nm-root .nm-aid-rdv-card > .elementor-widget-image img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; aspect-ratio: auto !important; object-fit: cover; object-position: 50% 18%; }
}
/* QA 2026-09-26 : espaces perdus autour des blocs .nm-nw (posés par neova-site.php)
   - dans un conteneur flex (texte des boutons, libellés « Nous appeler / Par e-mail » de Contact), le span devient un
     item flex et l'espace qui le précède est avalé (« Prendrerendez-vous », « Par   e-mail ») : display: contents rend
     son texte au flux du parent, le nowrap reste hérité ;
   - dans l'adresse du pied de page mobile, la règle « address span { display:block } » l'attrapait aussi et renvoyait
     « Noisy-le-Sec » à la ligne malgré l'insécable après « 93130 ». */
:root body .nm-btn .elementor-button-text > .nm-nw, :root body .nm-hbtn-text > .nm-nw, :root body .nm-git-label > .nm-nw { display: contents; }
:root body .nm-fcontact address span.nm-nw { display: inline; }
/* QA 2026-09-26 : bouton « retour en haut » du thème (a.pxl-scroll-top, 46 px, à 25 px du bord en mobile et 40 px en desktop)
   recouvert par le bouton du widget d'accessibilité (44 px, à 24 px du bord, z-index maximal) : la flèche n'était plus cliquable.
   Le bouton du thème passe au-dessus du widget, centré sur la même verticale (46 px contre 44 : 23 px du bord). */
:root body a.pxl-scroll-top { bottom: 84px !important; right: 23px !important; }
/* QA 2026-09-26 : ligne légale du pied de page entre 768 et 1099 px : les trois mentions (inline, nowrap, séparées par « · »)
   se repliaient sur deux lignes avec un « · » orphelin en fin de première ligne. Une mention par ligne, alignées à droite,
   comme en mobile ; sur une seule ligne à partir de 1100 px (inchangé). */
@media (min-width: 768px) and (max-width: 1099px) {
  .nm-root .nm-flegal span { display: block; }
  .nm-root .nm-flegal span + span::before { content: none; }
}
/* QA 2026-09-26 : en-têtes des sections empilées (.nm-stack-head / .nm-met-values-head : « Nos valeurs », « La démarche »,
   « À qui s'adresse le code », « Trois choses à savoir »…) : l'en-tête avait 8 px de marge interne et 640/760 px de large,
   donc un surtitre décalé de 8 px et un filet plus court que dans les autres sections (744 px au lieu de la largeur du
   contenu). L'en-tête prend la largeur du contenu (surtitre et filet alignés) ; le H2 et le texte gardent leur largeur
   de texte d'avant (624 px, puis 744 px à partir de 1024) pour que rien ne se recompose. */
@media (min-width: 768px) {
  .nm-root .nm-stack-sec > .nm-stack-head.e-con, .nm-root .nm-met-values-head.e-con { padding-left: 0 !important; padding-right: 0 !important; max-width: 100% !important; }
  .nm-root .nm-stack-sec > .nm-stack-head > .nm-h2, .nm-root .nm-stack-sec > .nm-stack-head > .nm-text, .nm-root .nm-stack-sec > .nm-stack-head > .nm-card-text,
  .nm-root .nm-met-values-head > .nm-h2, .nm-root .nm-met-values-head > .nm-text, .nm-root .nm-met-values-head > .nm-card-text { max-width: 624px; }
}
@media (min-width: 1024px) {
  .nm-root .nm-stack-sec > .nm-stack-head > .nm-h2, .nm-root .nm-stack-sec > .nm-stack-head > .nm-text, .nm-root .nm-stack-sec > .nm-stack-head > .nm-card-text,
  .nm-root .nm-met-values-head > .nm-h2, .nm-root .nm-met-values-head > .nm-text, .nm-root .nm-met-values-head > .nm-card-text { max-width: 744px; }
}
/* QA 2026-09-26 (complément) : même largeur de texte pour l'en-tête « Nos valeurs » de Méthode (.nm-met-values-head, qui n'est pas
   dans une .nm-stack-sec) : la règle Elementor « .elementor.elementor .e-con > .elementor-widget { max-width:100% } » (0,4,0)
   l'emportait sur la règle précédente (0,3,0) et le H2 passait sur une ligne. */
@media (min-width: 768px) {
  :root body .nm-root .nm-met-values-head > .nm-h2, :root body .nm-root .nm-met-values-head > .nm-text, :root body .nm-root .nm-met-values-head > .nm-card-text { max-width: 624px; }
}
@media (min-width: 1024px) {
  :root body .nm-root .nm-met-values-head > .nm-h2, :root body .nm-root .nm-met-values-head > .nm-text, :root body .nm-root .nm-met-values-head > .nm-card-text { max-width: 744px; }
}
/* QA 2026-09-26 : mosaïque du blog entre 768 et 991 px : colonnes de 216 px (176 px de texte), les titres de 22 px limités
   à 4 lignes étaient tronqués (« comment choisi… en 2026 »). Six lignes possibles (la rangée s'étire, minmax(300px, auto)).
   Titres des tuiles : text-wrap: pretty, pas de mot seul sur la dernière ligne (« …mode / d'emploi »). */
@media (min-width: 768px) and (max-width: 991px) {
  .nm-blog--v2 .nm-blog-tile-title { -webkit-line-clamp: 6; }
}
.nm-blog--v2 .nm-blog-tile-title { text-wrap: pretty; }

/* ---- Boutons d'action posés en fin de section (29/09) : .nm-sec-cta ----
   téléphone : pleine largeur comme les autres boutons ; tablette et desktop : largeur du texte, centré sous le contenu */
@media (min-width: 768px) {
  .nm-root .nm-sec > .nm-sec-cta { width: auto !important; align-self: center !important; justify-self: center; }
  .nm-root .nm-sec > .nm-sec-cta .elementor-button { width: auto !important; padding-right: 24px !important; }
}

/* ---- Ancres (29/09) : la section visée s'arrête juste sous le header flottant (bas du header à 75 px) ---- */
.nm-root [id] { scroll-margin-top: 88px; }

/* ---- Bouton « Financer mon permis » sous le tableau récapitulatif des forfaits (29/09) : pleine largeur de la grille, centré ---- */
.nm-root .nm-recap > .nm-sec-cta { grid-column: 1 / -1; }

/* ---- Exposants (4ᵉ semaine…) sans décaler l'interligne (29/09) ---- */
.nm-root sup { font-size: .7em; line-height: 0; vertical-align: super; }

/* ---- « Financer mon permis » sous les 6 cartes des forfaits (29/09) : de l'air entre les cartes et le bouton ---- */
.nm-root .nm-stack-sec > .nm-sec-cta { margin-top: 14px !important; }
@media (min-width: 768px) { .nm-root .nm-stack-sec > .nm-sec-cta { margin-top: 28px !important; } }

/* ---- « Le détail du forfait » (forfaits, .nm-inclus) : intitulé et titre centrés à partir de 768 px (Frédéric 29/09) ; mobile aligné à gauche comme le Figma ---- */
@media (min-width: 768px) {
  .nm-root .nm-inclus .nm-stack-head { align-items: center !important; text-align: center; }
  .nm-root .nm-inclus .nm-stack-head > .elementor-widget { width: 100%; }
  .nm-root .nm-inclus .nm-eyebrow { align-items: center; }
  .nm-root .nm-inclus .nm-stack-head .nm-h2 .elementor-heading-title { text-align: center !important; }
}

/* ---- Retour à la ligne visible à partir de 768 px (br.nm-br-t) ; en mobile le titre se coupe tout seul (29/09) ---- */
.nm-root br.nm-br-t { display: none; }
@media (min-width: 768px) { .nm-root br.nm-br-t { display: inline; } }

/* ==== RYTHME VERTICAL DES EN-TÊTES (29/09, Frédéric : « les espaces doivent être cohérents selon leur fonction ») ====
   surtitre → titre = bloc titre → contenu = 28 px (mobile, tablette) / 32 px (≥ 1100) ; titre → intro = 12 / 14.
   Référence : sections standard (surtitre, titre et contenu séparés par l'écart de section 28 / 32).
   Ramène au même rythme les familles construites autrement : en-têtes groupés (surtitre dans .nm-header à 16 px),
   cartes empilées (section à 10 / 20 px), sections à 24 px, PDF et Contact (20 px). */
.nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header.e-con { gap: 12px !important; }
.nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 16px !important; }
.nm-root .nm-stack-head.e-con, .nm-root .nm-met-values-head.e-con { padding-bottom: 0 !important; margin-bottom: 18px !important; }
.nm-root .nm-sec--24 > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-sec--24 > .nm-h2, .nm-root .nm-sec--24 > .nm-header { margin-bottom: 4px !important; }
.nm-root .nm-pdf-sec > .nm-header { margin-bottom: 8px !important; }
.nm-root .nm-git > .nm-git-eb, .nm-root .nm-git > .nm-git-title { margin-bottom: 8px !important; }
@media (min-width: 768px) and (max-width: 1099px) {
  .nm-root .nm-sec.nm-split.e-con { row-gap: 28px !important; }
  .nm-root .nm-stack-head.e-con, .nm-root .nm-met-values-head.e-con { margin-bottom: 12px !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header.e-con { gap: 14px !important; }
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 18px !important; }
  .nm-root .nm-stack-head.e-con, .nm-root .nm-met-values-head.e-con { margin-bottom: 12px !important; }
  .nm-root .nm-sec--24 > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-sec--24 > .nm-h2, .nm-root .nm-sec--24 > .nm-header { margin-bottom: 0 !important; }
  .nm-root .nm-pdf-sec > .nm-header { margin-bottom: 12px !important; }
  .nm-root .nm-git > .nm-git-eb, .nm-root .nm-git > .nm-git-title { margin-bottom: 12px !important; }
}

/* ==== RYTHME VERTICAL v2 (29/09) : un seul écart entre les éléments d'une section de contenu = 28 px (mobile, tablette) / 32 px (≥ 1100)
   (surtitre → titre, bloc titre → contenu, contenu → contenu, contenu → bouton). Remplace les compensations ponctuelles de la v1. ==== */
.nm-root > .nm-sec.e-con:not(.nm-hero):not(.nm-cta):not(.nm-footer):not(.nm-photo-break):not(.nm-partners):not(.nm-video-sec) { row-gap: 28px !important; }
@media (min-width: 1100px) {
  .nm-root > .nm-sec.e-con:not(.nm-hero):not(.nm-cta):not(.nm-footer):not(.nm-photo-break):not(.nm-partners):not(.nm-video-sec) { row-gap: 32px !important; }
}
.nm-root .nm-stack-head.e-con, .nm-root .nm-met-values-head.e-con { margin-bottom: 0 !important; }
.nm-root .nm-sec--24 > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-sec--24 > .nm-h2, .nm-root .nm-sec--24 > .nm-header { margin-bottom: 0 !important; }
.nm-root .nm-pdf-sec > .nm-header { margin-bottom: 0 !important; }
.nm-root .nm-git > .nm-git-eb, .nm-root .nm-git > .nm-git-title { margin-bottom: 0 !important; }
.nm-root .nm-stack-sec > .nm-sec-cta { margin-top: 0 !important; }

/* ---- Accueil « Cinq engagements » (29/09) : surtitre comme partout (trait pleine largeur, texte noir), titre centré limité à 760 px ---- */
.nm-root .nm-eng > .nm-header.e-con { max-width: none !important; width: 100% !important; align-self: stretch !important; margin: 0 !important; }
.nm-root .nm-eng > .nm-header > .elementor-widget { width: 100%; }
.nm-root .nm-eng .nm-eyebrow--center span { color: var(--nm-black) !important; }
.nm-root .nm-eng > .nm-header .nm-h2 .elementor-heading-title { max-width: 640px; margin-left: auto !important; margin-right: auto !important; text-align: center !important; }
@media (min-width: 1100px) { .nm-root .nm-eng > .nm-header .nm-h2 .elementor-heading-title { max-width: 760px; } }

/* ---- Rythme v2, derniers écarts (29/09) : Contact (bloc infos), tableau comparatif Aides, « Nos compétences » Méthode (titre calé en haut, plus centré verticalement) ---- */
.nm-root .nm-git-info { margin-top: 3px !important; }
.nm-root .nm-compare { margin-top: 0 !important; }
.nm-root .nm-stackfx-on > .nm-header { align-self: start !important; }

/* ---- Rythme v2, mobile (29/09) : listes des sections titre + liste (accordéons noirs, « Un mois type ») sans marge propre au-dessus du premier trait ---- */
@media (max-width: 767px) {
  .nm-root .nm-split > .nm-split-body .nm-met-tools, .nm-root .nm-split > .nm-split-body > .nm-list, .nm-root .nm-split > .nm-split-body .nm-list { margin-top: 0 !important; }
}

/* ==== SURTITRE CENTRÉ = SANS TRAIT (règle Frédéric 29/09) ; écart surtitre → titre réduit à 20 px (mobile, tablette) / 24 px (≥ 1100) ==== */
.nm-root .nm-eyebrow--center::after { display: none !important; }
.nm-root .nm-header > .elementor-widget-html:has(.nm-eyebrow--center) { margin-bottom: 8px !important; }
@media (min-width: 768px) {
  .nm-root .nm-fin > .elementor-widget-html .nm-eyebrow::after, .nm-root .nm-ann-cas .nm-eyebrow::after, .nm-root .nm-inclus .nm-eyebrow::after { display: none !important; }
  .nm-root .nm-fin > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-ann-cas > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: -8px !important; }
  .nm-root .nm-inclus .nm-header > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-ann-cas .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 8px !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-header > .elementor-widget-html:has(.nm-eyebrow--center), .nm-root .nm-inclus .nm-header > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-ann-cas .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 10px !important; }
}
/* réglage fin (mesuré texte → texte) : 20 px mobile / tablette, 24 px desktop */
.nm-root .nm-header > .elementor-widget-html:has(.nm-eyebrow--center) { margin-bottom: 3px !important; }
@media (min-width: 768px) {
  .nm-root .nm-header > .elementor-widget-html:has(.nm-eyebrow--center), .nm-root .nm-inclus .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 4px !important; }
  .nm-root .nm-fin > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-ann-cas > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: -4px !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-header > .elementor-widget-html:has(.nm-eyebrow--center), .nm-root .nm-inclus .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 7px !important; }
  .nm-root .nm-fin > .elementor-widget-html:has(.nm-eyebrow), .nm-root .nm-ann-cas > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: -3px !important; }
}
/* priorité suffisante face à la règle générale des en-têtes (même préfixe :not…) */
.nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center) { margin-bottom: 11px !important; }
@media (min-width: 768px) {
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center),
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 11px !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center),
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 15px !important; }
}

/* ==== TITRES CENTRÉS (règle Frédéric 29/09) : surtitre → titre 20 px mobile / 30 px dès 768 ; titre → contenu 40 px mobile / 60 px dès 768
   (mesuré texte → texte et texte → haut du contenu). Sections : Accueil « Cinq engagements » (toutes largeurs), puis dès 768 Accueil « Financement »,
   Annulation « Deux cas », « Le détail du forfait ». Les titres alignés à gauche gardent 28 / 32. ==== */
.nm-root .nm-sec.nm-eng:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 13px !important; }
@media (min-width: 768px) {
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center),
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 22px !important; }
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow),
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 6px !important; }
  .nm-root .nm-sec.nm-eng:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header,
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-h2,
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-stack-head { margin-bottom: 33px !important; }
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 32px !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center),
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 21px !important; }
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow),
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 3px !important; }
  .nm-root .nm-sec.nm-eng:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header,
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-h2,
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-stack-head { margin-bottom: 30px !important; }
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 28px !important; }
}
/* TITRES CENTRÉS — réglage sur les écarts visibles (29/09, mesure « Figma rognée ») : ligne de base du surtitre → haut des capitales du titre = 30 px,
   ligne de base de la dernière ligne du bloc titre → bord du contenu = 60 px (tablette, desktop) ; mobile 20 / 40. Contrôle : scratchpad/capbase.js <largeur> */
.nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center) { margin-bottom: -1px !important; }
.nm-root .nm-sec.nm-eng:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 5px !important; }
@media (min-width: 768px) {
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center),
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 9px !important; }
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow),
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: -7px !important; }
  .nm-root .nm-sec.nm-eng:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header,
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-h2,
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-stack-head { margin-bottom: 23px !important; }
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 27px !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-sec:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow--center),
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: 6px !important; }
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow),
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .elementor-widget-html:has(.nm-eyebrow) { margin-bottom: -12px !important; }
  .nm-root .nm-sec.nm-eng:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header,
  .nm-root .nm-sec.nm-fin:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-h2,
  .nm-root .nm-sec.nm-inclus:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-stack-head { margin-bottom: 18px !important; }
  .nm-root .nm-sec.nm-ann-cas:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 21px !important; }
}

/* ---- Accueil « Cinq engagements » : 5 cartes (29/09) — dès 768 px, 3 cartes puis 2 centrées (grille de 6 colonnes, chaque carte sur 2),
   textes toujours alignés rangée par rangée (subgrid) ; en mobile, les 5 cartes s'empilent ---- */
@media (min-width: 768px) {
  .nm-root .nm-eng .nm-cards.e-con { grid-auto-flow: row !important; grid-template-columns: repeat(6, minmax(0, 1fr)) !important; grid-auto-columns: auto !important; grid-template-rows: auto auto 1fr auto auto 1fr !important; }
  .nm-root .nm-eng .nm-cards > .nm-card.e-con:nth-child(1) { grid-column: 1 / span 2 !important; grid-row: 1 / span 3 !important; }
  .nm-root .nm-eng .nm-cards > .nm-card.e-con:nth-child(2) { grid-column: 3 / span 2 !important; grid-row: 1 / span 3 !important; }
  .nm-root .nm-eng .nm-cards > .nm-card.e-con:nth-child(3) { grid-column: 5 / span 2 !important; grid-row: 1 / span 3 !important; }
  .nm-root .nm-eng .nm-cards > .nm-card.e-con:nth-child(4) { grid-column: 2 / span 2 !important; grid-row: 4 / span 3 !important; }
  .nm-root .nm-eng .nm-cards > .nm-card.e-con:nth-child(5) { grid-column: 4 / span 2 !important; grid-row: 4 / span 3 !important; }
}

/* ---- Financement « Tous les financements possibles » : 5 dispositifs depuis le retrait de France Travail (29/09) ; dernière rangée centrée,
   comme les autres séries de 5 (desktop 3 + 2 sur une grille de 6 colonnes ; tablette 2 + 2 + 1, la dernière carte centrée) ---- */
@media (min-width: 1100px) {
  .nm-root .nm-fin-disp.e-con { grid-template-columns: repeat(6, minmax(0, 1fr)) !important; }
  .nm-root .nm-fin-disp.e-con > .nm-disp-card { grid-column: span 2 !important; }
  .nm-root .nm-fin-disp.e-con > .nm-disp-card:nth-child(4):nth-last-child(2) { grid-column: 2 / span 2 !important; }
  .nm-root .nm-fin-disp.e-con > .nm-disp-card:nth-child(5):last-child { grid-column: 4 / span 2 !important; }
}
@media (min-width: 768px) and (max-width: 1099px) {
  .nm-root .nm-fin-disp.e-con > .nm-disp-card:nth-child(5):last-child { grid-column: 1 / -1 !important; justify-self: center; width: calc(50% - 5px) !important; }
}

/* ---- « Cinq engagements » (29/09, Frédéric : « cartes trop grandes dans la hauteur ») : chaque rangée prend la hauteur de son propre contenu
   (plus de rangée de texte en 1fr qui aligne les deux rangées sur la carte la plus longue) ---- */
@media (min-width: 768px) {
  .nm-root .nm-eng .nm-cards.e-con { grid-template-rows: repeat(6, auto) !important; align-content: start !important; }
}

/* ============================================================================================================
   ENGAGEMENTS EN CARROUSEL (Accueil « Ce qui distingue NEOVA », 02/10/2026, validé par Frédéric)
   Section avec la classe .nm-eng--carousel, script assets/js/neova-eng-carousel.js (Swiper du thème, Accueil seulement).
   ≥ 768 px : cartes larges (case photo + titre + texte) qui défilent en boucle et débordent des deux côtés ; la carte du
   centre est bleue, le bleu passe à celle qui prend sa place. Pas de flèches. Photos : fond d'image du widget numéro.
   < 768 px : inchangé (cartes empilées, décision du 16/09 confirmée le 02/10), photos masquées.
   ============================================================================================================ */
@media (max-width: 767px) { .nm-root .nm-eng--carousel .nm-cards > .nm-card > .nm-num { background-image: none !important; } }
@media (min-width: 768px) {
  .nm-root .nm-eng.nm-eng--carousel.e-con { --nm-eng-w: 560px; --nm-eng-tile: 200px; --nm-eng-num: 60px; --nm-eng-gap: 16px;
    background: #fff !important; overflow: clip !important; }
  .nm-eng--carousel .nm-eng-swiper { position: relative; width: 100%; overflow: visible !important; z-index: 1; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards.e-con { display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important;
    gap: 0 !important; grid-template-rows: none !important; align-items: stretch !important; width: 100% !important; height: auto !important;
    padding: 0 !important; margin: 0 !important; box-sizing: content-box !important; transition-property: transform; overflow: visible !important; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.e-con { flex: 0 0 auto !important; width: var(--nm-eng-w) !important; max-width: none !important;
    height: auto !important; display: grid !important; grid-template-columns: var(--nm-eng-tile) minmax(0, 1fr) !important;
    grid-template-rows: auto auto 1fr !important; grid-row: auto !important; align-content: stretch !important; column-gap: 32px; row-gap: 0;
    padding: 8px 28px 8px 8px !important; border-radius: 24px !important; box-shadow: none !important; position: relative !important; top: auto !important;
    user-select: none; -webkit-user-select: none; }
  /* carte au centre = bleue (02/10) : toutes du gris des cartes du site #eeeeee sur fond de section blanc (02/10, homogénéisé 04/10), la carte active (centrée) passe en bleu, le bleu suit le défilement */
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.e-con { background-color: #eeeeee !important; transition: background-color .45s ease !important; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card .nm-card-title .elementor-heading-title { color: var(--nm-black, #0a0a0a) !important; transition: color .45s ease; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card .nm-card-text, .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card .nm-card-text p { color: #666 !important; transition: color .45s ease; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.e-con.swiper-slide-active { background-color: var(--nm-blue, #00339f) !important; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.swiper-slide-active .nm-card-title .elementor-heading-title,
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.swiper-slide-active .nm-card-text,
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.swiper-slide-active .nm-card-text p { color: #fff !important; }
  .nm-eng--carousel .nm-card > .nm-num { grid-column: 1; grid-row: 1 / span 3; align-self: stretch; margin: 0 !important;
    min-height: var(--nm-eng-tile); display: flex !important; align-items: flex-end; padding: 20px 22px !important;
    border-radius: 16px; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card > .nm-num { align-self: stretch !important; } /* le kit met align-self:start (0,5,0) */
  .nm-eng--carousel .nm-card > .nm-num .elementor-heading-title { font-size: var(--nm-eng-num) !important; line-height: .8 !important; }

  /* case photo : l'image est le fond du widget numéro (Elementor, Avancé → Arrière-plan, couvrir) ; voile en bas pour lire le numéro */
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card > .nm-num { position: relative !important; overflow: hidden; isolation: isolate; background-color: #ddd; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card > .nm-num::before { content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: linear-gradient(to top, rgba(10, 10, 10, .5), rgba(10, 10, 10, 0) 55%); }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card > .nm-num .elementor-heading-title { position: relative; z-index: 1; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card > .nm-num .elementor-heading-title { color: #fff !important; opacity: 1 !important; text-shadow: 0 2px 16px rgba(0,0,0,.25); }
  .nm-eng--carousel .nm-card > .nm-card-title { grid-column: 2; grid-row: 1; margin: 28px 0 0 !important; }
  .nm-eng--carousel .nm-card > .nm-card-text { grid-column: 2; grid-row: 2; margin: 12px 0 24px !important; }
  .nm-eng--carousel .nm-card > .nm-card-text br { display: none; }
  .nm-eng--carousel .swiper-slide { flex-shrink: 0; }
  .nm-eng--carousel .nm-eng-swiper.swiper-grab, .nm-eng--carousel .nm-eng-swiper .swiper-slide { cursor: grab; }
}
@media (min-width: 1100px) {
  .nm-root .nm-eng.nm-eng--carousel.e-con { --nm-eng-w: 720px; --nm-eng-tile: 280px; --nm-eng-num: 72px; --nm-eng-gap: 24px; }
  .nm-eng--carousel .nm-card > .nm-num { padding: 24px 28px !important; }
  .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.e-con { column-gap: 40px; padding-right: 36px !important; }
  .nm-eng--carousel .nm-card > .nm-card-title { margin-top: 40px !important; }
}
@media (prefers-reduced-motion: reduce) { .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card.e-con, .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card .elementor-heading-title, .nm-root .nm-eng.nm-eng--carousel .nm-cards > .nm-card .nm-card-text p { transition: none !important; } }
/* vidéo sous le carrousel étendue jusqu'aux bords du panneau (02/10), réduite vers le centre au défilement par neova-eng-carousel.js : marges négatives = marges intérieures de la section
   du kit (32 px ≥ 768, 40 px ≥ 992, 14,8 % de la page ≥ 1201 soit 21,0227 % de la zone de contenu, 224 px ≥ 1601) */
@media (min-width: 768px) {
  .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player { align-self: stretch !important; width: auto !important; max-width: none !important;
    margin-left: -32px !important; margin-right: -32px !important; margin-top: 20px !important; } /* écart cartes → vidéo : 28 + 20 = 48 px */
  .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player .pxl-video--inner { border-radius: 0 !important; }
}
@media (min-width: 992px) { .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player { margin-left: -40px !important; margin-right: -40px !important; } }
@media (min-width: 1100px) { .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player { margin-top: 28px !important; } } /* 32 + 28 = 60 px */
@media (min-width: 1201px) { .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player { margin-left: -21.0227% !important; margin-right: -21.0227% !important; } }
@media (min-width: 1601px) { .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player { margin-left: -224px !important; margin-right: -224px !important; } }
/* fin ENGAGEMENTS EN CARROUSEL */


/* ============================================================================================================
   PHOTO À CÔTÉ DU TEXTE (Accueil « Choisissez votre parcours » et « Notre méthode », 02/10/2026, demande Frédéric)
   Même fonction, même écart photo → texte : 56 px (≥ 1100), 40 px (768–1099). La règle de rythme des en-têtes
   (titre → intro 12 / 14 px) touchait aussi l'en-tête en ligne photo + texte des formules : écart ramené ici.
   Notre méthode : bouton « Découvrir la méthode » dans la colonne du texte, aligné à gauche, 32 px sous la dernière ligne
   (écart contenu → bouton de la section), groupe texte + bouton centré en hauteur face à la photo. Mobile inchangé.
   ============================================================================================================ */
@media (min-width: 768px) {
  .nm-root .nm-sec.nm-pricing:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header.e-con { column-gap: 40px !important; }
  .nm-root .nm-sec.nm-methode.e-con { column-gap: 40px !important; grid-template-rows: auto 1fr auto auto 1fr !important; }
  .nm-root .nm-sec.nm-methode > .elementor-widget-image { grid-column: 1 !important; grid-row: 2 / span 4 !important; }
  .nm-root .nm-sec.nm-methode > .nm-header { grid-column: 2 !important; grid-row: 3 !important; }
  .nm-root .nm-sec.nm-methode > .nm-btn { grid-column: 2 !important; grid-row: 4 !important; justify-self: start !important; align-self: start !important; }
}
@media (min-width: 1100px) {
  .nm-root .nm-sec.nm-pricing:not(.nm-hero):not(.nm-footer):not(.nm-cta) .nm-header.e-con { column-gap: 56px !important; }
  .nm-root .nm-sec.nm-methode.e-con { column-gap: 56px !important; }
}
/* fin PHOTO À CÔTÉ DU TEXTE */

/* ============================================================================================================
   CARTE QUI SE RESSERRE AU DÉFILEMENT (Contact, plan d'accès #plan, 03/10/2026, demande Frédéric)
   Même principe que la vidéo de l'Accueil, en préservant les espaces : seule la largeur varie (hauteur fixe 380 / 420 px).
   Le widget .nm-map-w s'étend aux bords de la section ; la carte .nm-map reçoit des marges latérales = marges intérieures
   de la section (état final = taille d'origine). neova-map-shrink.js fait varier --nm-map-x de 0 (largeur des panneaux,
   à l'entrée dans l'écran) jusqu'à ces marges (carte au milieu de l'écran). Mobile et prefers-reduced-motion : inchangés.
   ============================================================================================================ */
@media (min-width: 768px) {
  .nm-root .nm-map-sec.e-con > .nm-map-w { align-self: stretch !important; width: auto !important; max-width: none !important;
    margin-left: -32px !important; margin-right: -32px !important; }
  .nm-root .nm-map-sec > .nm-map-w .nm-map { margin-left: var(--nm-map-x, 32px); margin-right: var(--nm-map-x, 32px); }
}
@media (min-width: 992px) {
  .nm-root .nm-map-sec.e-con > .nm-map-w { margin-left: -40px !important; margin-right: -40px !important; }
  .nm-root .nm-map-sec > .nm-map-w .nm-map { margin-left: var(--nm-map-x, 40px); margin-right: var(--nm-map-x, 40px); }
}
@media (min-width: 1201px) { /* 14,8 % de la page = 21,0227 % de la zone de contenu ; pour la carte, 14,8 % du widget pleine largeur */
  .nm-root .nm-map-sec.e-con > .nm-map-w { margin-left: -21.0227% !important; margin-right: -21.0227% !important; }
  .nm-root .nm-map-sec > .nm-map-w .nm-map { margin-left: var(--nm-map-x, 14.8%); margin-right: var(--nm-map-x, 14.8%); }
}
@media (min-width: 1601px) {
  .nm-root .nm-map-sec.e-con > .nm-map-w { margin-left: -224px !important; margin-right: -224px !important; }
  .nm-root .nm-map-sec > .nm-map-w .nm-map { margin-left: var(--nm-map-x, 224px); margin-right: var(--nm-map-x, 224px); }
}
/* fin CARTE QUI SE RESSERRE AU DÉFILEMENT */

/* ============================================================================================================
   TARIFS ANNEXES CENTRÉS (Nos formations, comparatif : « Heure supplémentaire » et « Accompagnement examen »,
   03/10/2026, demande Frédéric) : centrés au-dessus du bouton « On vous aide à choisir » à partir de 768 px
   (le bouton y est centré). Mobile inchangé : liste à gauche, bouton pleine largeur.
   ============================================================================================================ */
@media (min-width: 768px) { .nm-root .nm-cmp .nm-extras { justify-content: center !important; } }
/* fin TARIFS ANNEXES CENTRÉS */

/* ============================================================================================================
   HOMOGÉNÉISATION ACCUEIL (04/10/2026, suite à la relecture de l'Accueil, validé par Frédéric : points 4, 7 et 8)
   4. Empilements en mobile : un filet de 1 px sur chaque carte pour que les cartes empilées ne se fondent plus en une seule
      (pas d'ombre : « les ombres font sale », 23/09). Tous les empilements du site (.nm-stack), < 768 px seulement.
   7. Un seul gris de carte, #eeeeee (choix du 23/09) : les cartes prix passent de #e5e5e5 à #eeeeee dans leur cadre plus
      pâle (double fond validé) ; « Quatre formules » reprend la taille des H2 du kit (règle locale 36 px retirée du bloc « prix », ≥ 992 px).
   8. Cartes Financement de l'Accueil cliquables (lien posé sur le conteneur dans Elementor) avec flèche ↗ ;
      bouton « Lire tous les conseils » sous le carrousel du blog, au format de « Voir tous les financements ».
   ============================================================================================================ */
@media (max-width: 767px) {
  .nm-root .nm-stack > .e-con { border: 1px solid rgba(10, 10, 10, .08) !important; }
}
.nm-root .nm-price-outer > .nm-price-inner.e-con:not(.nm-price-inner--blue):not(.nm-price-inner--light) { background-color: #eeeeee !important; }
.nm-root .nm-fin a.nm-fin-card { position: relative; text-decoration: none !important; color: inherit; }
.nm-root .nm-fin a.nm-fin-card::after { content: ''; position: absolute; top: 20px; right: 20px; width: 18px; height: 18px; background-color: currentColor;
  color: #222; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M5 13 13 5M6.5 5H13v6.5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'%3E%3Cpath d='M5 13 13 5M6.5 5H13v6.5' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: background-color .35s ease; }
.nm-root .nm-fin a.nm-fin-card.nm-fin-card--blue::after { background-color: #fff; }
@media (hover: hover) { .nm-root .nm-fin a.nm-fin-card:hover::after { background-color: #fff; } }
.nm-root .nm-fin a.nm-fin-card:focus-visible { outline: 2px solid var(--nm-cyan, #00a1e1); outline-offset: 3px; }
@media (min-width: 768px) {
  .nm-root .nm-conseils > .nm-btn--light { width: auto !important; align-self: center; justify-self: center; }
  .nm-root .nm-conseils > .nm-btn--light .elementor-button { width: auto; padding-right: 24px !important; }
}
/* 9. (04/10) Cartes du blog sur l'Accueil : nom et fonction de l'auteur sans portrait (le visage de Destan reste dans le bloc
   contact et le bandeau final ; il revenait jusqu'à cinq fois en mobile). Desktop : carrousel du thème ; mobile : cartes NEOVA. */
.nm-root .nm-conseils .pxl-item--avatar, .nm-root .nm-conseils .nm-author img.avatar { display: none !important; }
/* fin HOMOGÉNÉISATION ACCUEIL */

/* ============================================================================================================
   PARALLAXE DES GRANDES PHOTOS (.nm-photo-break : Nos formations, Annulation, Méthode, Financement, Forfait boîte
   automatique ; 04/10/2026, demande Frédéric) : l'image dépasse son cadre de --nm-px-max en haut et en bas, et
   neova-parallax.js la fait glisser de -max à +max pendant la traversée de l'écran. Cadre, hauteur et espacements inchangés ;
   la section garde son rayon et son débordement masqué. prefers-reduced-motion : image fixe, à la taille du cadre.
   ============================================================================================================ */
.nm-root .nm-sec.nm-photo-break.e-con { --nm-px-max: 32px; }
@media (min-width: 768px) { .nm-root .nm-sec.nm-photo-break.e-con { --nm-px-max: 56px; } }
@media (min-width: 1100px) { .nm-root .nm-sec.nm-photo-break.e-con { --nm-px-max: 80px; } }
.nm-root .nm-sec.nm-photo-break .nm-photo-break-img img { height: calc(100% + 2 * var(--nm-px-max)) !important;
  margin-top: calc(-1 * var(--nm-px-max)) !important; border-radius: 0 !important; will-change: transform; }
@media (prefers-reduced-motion: reduce) {
  .nm-root .nm-sec.nm-photo-break .nm-photo-break-img img { height: 100% !important; margin-top: 0 !important; transform: none !important; }
}
/* Safari (06/10, capture de Frédéric) : une image déplacée par transform dans un cadre arrondi n'est rognée qu'au rectangle,
   l'arrondi saute. Le clip-path force le rognage arrondi (sans effet visible ailleurs) ; vaut aussi pour la photo de la vidéo de L'auto-école. */
.nm-root .nm-sec.nm-photo-break.e-con, .nm-root .nm-video-sec .nm-video { isolation: isolate; clip-path: inset(0 round 20px); }
/* fin PARALLAXE DES GRANDES PHOTOS */



/* ============================================================================================================
   L'AUTO-ÉCOLE : REFONTE DE CINQ SECTIONS (05/10/2026, demande Frédéric, modèles Floka « About company », « Our avengers »,
   « Case Study », « User feedbacks »). Page #11073, script outils/refonte_auto_ecole.php, JS floka-child/assets/js/neova-auto-ecole.js.
   1. « Qui nous sommes » (.nm-ae-about), allégée le 05/10 (Frédéric : « grossier ») : petite photo, titre sur 2 lignes,
      onglets Mission / Vision sans fond ni bouton, sans chiffres.
   2. Vidéo (.nm-video-sec) : toute la largeur de la section dès 1201 px, même hauteur que les grandes photos de transition.
   3. Équipe (.nm-ae-equipe, ancre #equipe) : onglets par personne (bio à gauche) et deux cartes portrait à droite.
   4. « Chez NEOVA » (.nm-ae-xp) : panneau noir, galerie à panneaux qui s'élargissent (3 visibles, en boucle) dès 768 px ;
      en mobile, grille sans carrousel (règle du 16/09).
   5. Témoignages (.nm-ae-avis) : titre à vignettes, 3 colonnes décalées ; emplacements provisoires signalés tant que le client
      n'a pas fourni de vrais avis (jamais de faux avis, ni de visages de banque d'images).
   v2 (relecture du 05/10) : gouttières de la galerie, contrastes (#666 sous 24 px), focus clavier visible sans cadre noir,
   comportement sans JavaScript (onglets, bios, bouton sur fond noir), cartes équipe immobiles, vidéo non zoomée.
   Cartes en #eeeeee (gris unique des cartes depuis le 04/10), aucun texte bleu, écarts 28 / 32 du rythme vertical.
   prefers-reduced-motion : aucune transition.
   ============================================================================================================ */

/* ---------- commun : onglets (boutons role="tab") ; une fois le JS prêt, seul le panneau actif donne la hauteur ---------- */
.nm-root .nm-ae-tablist { display: flex; flex-wrap: wrap; gap: 8px 24px; margin: 0 0 18px; }
.nm-root .nm-ae-tab { position: relative; appearance: none; background: none !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; margin: 0 !important; padding: 0 !important; min-height: 0 !important; height: auto !important; cursor: pointer; font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 20px !important; line-height: 24px !important; letter-spacing: -0.03em !important; text-transform: none !important; color: var(--nm-grey) !important; transition: color .3s ease; }
.nm-root .nm-ae-tab.is-active, .nm-root .nm-ae-tab[aria-selected="true"] { color: var(--nm-black) !important; }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-ae-tab:hover { color: var(--nm-black) !important; } }
.nm-root .nm-ae-tab:focus, .nm-root .nm-ae-tab:focus-visible { outline: none !important; box-shadow: none !important; }
.nm-root .nm-ae-tab:focus-visible { color: var(--nm-black) !important; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 6px; }
.nm-root .nm-ae-tabs--team .nm-ae-tab:focus-visible { text-decoration: none; }
.nm-root .nm-ae-tabs:not(.is-ready) .nm-ae-tab { color: var(--nm-black) !important; cursor: default; }
.nm-root .nm-ae-tabs:not(.is-ready) .nm-ae-panel + .nm-ae-panel { margin-top: 28px; }
.nm-root .nm-ae-panel { min-width: 0; }
.nm-root .nm-ae-panel:focus, .nm-root .nm-ae-panel:focus-visible { outline: none !important; }
.nm-root .nm-ae-tabs.is-ready .nm-ae-panels { position: relative; }
.nm-root .nm-ae-tabs.is-ready .nm-ae-panel { transition: opacity .5s cubic-bezier(.645, .045, .355, 1), transform .5s cubic-bezier(.645, .045, .355, 1), visibility .5s; }
.nm-root .nm-ae-tabs.is-ready .nm-ae-panel:not(.is-active) { position: absolute; top: 0; left: 0; right: 0; opacity: 0; visibility: hidden; transform: translateY(30px); pointer-events: none; }
.nm-root .nm-ae-panel p { font-family: var(--nm-inter) !important; font-size: 16px !important; line-height: 22px !important; color: var(--nm-grey) !important; margin: 0 !important; text-wrap: pretty; }
@media (min-width: 768px) {
  .nm-root .nm-ae-tablist { gap: 8px 40px; margin-bottom: 24px; }
  .nm-root .nm-ae-tab { font-size: 24px !important; line-height: 28px !important; }
  .nm-root .nm-ae-about-tabs.is-ready .nm-ae-tab:not(.is-active) { color: #888 !important; }   /* #888 réservé aux textes ≥ 24 px */
}
@media (min-width: 768px) and (hover: hover) and (pointer: fine) { .nm-root .nm-ae-about-tabs.is-ready .nm-ae-tab:not(.is-active):hover { color: var(--nm-black) !important; } }
@media (min-width: 992px) { .nm-root .nm-ae-panel p { line-height: 24px !important; } }
@media (min-width: 1100px) { .nm-root .nm-ae-tabs:not(.is-ready) .nm-ae-panel + .nm-ae-panel { margin-top: 32px; } }
@media (min-width: 1201px) { .nm-root .nm-ae-panel p { font-size: 17px !important; line-height: 26px !important; } }

/* ---------- 1. Qui nous sommes ---------- */
.nm-root .nm-ae-about-grid.e-con { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; gap: 28px !important; align-items: start !important; }
.nm-root .nm-ae-about-grid > .nm-ae-about-title { order: -1; }
.nm-root .nm-ae-about-img img { display: block; width: 100% !important; height: auto !important; max-width: none !important; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 20px !important; margin: 0 !important; }
@media (min-width: 768px) {
  .nm-root .nm-ae-about-grid.e-con { grid-template-columns: minmax(0, 32%) minmax(0, 1fr) !important; grid-template-rows: auto 1fr !important; column-gap: 40px !important; row-gap: 28px !important; }
  .nm-root .nm-ae-about-grid > .nm-ae-about-img { grid-column: 1; grid-row: 1 / span 2; }
  .nm-root .nm-ae-about-grid > .nm-ae-about-title { grid-column: 2; grid-row: 1; order: 0; }
  .nm-root .nm-ae-about-grid > .nm-ae-about-tabs-w { grid-column: 2; grid-row: 2; }
  .nm-root .nm-ae-about-img img { aspect-ratio: 1 / 1; }
}
@media (min-width: 992px) {
  .nm-root .nm-ae-about-grid.e-con { grid-template-columns: minmax(0, 22%) minmax(0, 1fr) !important; column-gap: 40px !important; }
}
@media (min-width: 1100px) {
  /* photo → texte 56 px comme les autres sections photo + texte (Frédéric 05/10 : « écarte le texte de la photo ») ;
     titre sur 2 lignes (Frédéric 05/10) : retour voulu après « plus vite, » (br nm-br-d), taille ajustée à la colonne (40 px au plus) */
  .nm-root .nm-ae-about-grid.e-con { grid-template-columns: minmax(0, 20%) minmax(0, 1fr) !important; column-gap: 56px !important; row-gap: 32px !important; }
  .nm-root .nm-ae-about-grid > .nm-ae-about-title.elementor-widget { container-type: inline-size; }
  .nm-root .nm-ae-about-title .elementor-heading-title { white-space: nowrap; font-size: min(40px, 5.4cqi) !important; line-height: 1.15 !important; }
}

/* ---------- 2. Vidéo : toute la largeur de la section (dès 1201 px, les marges de 14,8 % / 224 px ne s'y appliquent plus) ---------- */
/* pas de vraie vidéo : la photo n'est pas cliquable, donc pas de zoom au survol (règle du 24/09).
   Parallaxe (06/10, demande Frédéric) comme les grandes photos de transition : le cadre .nm-video garde la hauteur,
   la photo le dépasse de --nm-px-max en haut et en bas et neova-parallax.js la fait glisser (transform inline prioritaire). */
.nm-root .nm-video--pending .nm-video-img, .nm-root .nm-video--pending:hover .nm-video-img { transform: none !important; }
.nm-root .nm-video-sec .nm-video { --nm-px-max: 32px; height: 280px; }
.nm-root .nm-video-sec .nm-video .nm-video-img { height: calc(100% + 2 * var(--nm-px-max)) !important; margin-top: calc(-1 * var(--nm-px-max)) !important; border-radius: 0 !important; transition: none !important; will-change: transform; }
@media (min-width: 768px) { .nm-root .nm-video-sec .nm-video { --nm-px-max: 56px; height: 420px; } }
@media (min-width: 992px) { .nm-root .nm-video-sec .nm-video { height: 480px; } }
@media (min-width: 1100px) { .nm-root .nm-video-sec .nm-video { --nm-px-max: 80px; height: clamp(520px, 62vh, 640px); } }
@media (min-width: 1201px) {
  .nm-root .nm-sec.nm-video-sec.e-con { padding-left: 0 !important; padding-right: 0 !important; }
}
@media (prefers-reduced-motion: reduce) {
  .nm-root .nm-video-sec .nm-video .nm-video-img { height: 100% !important; margin-top: 0 !important; transform: none !important; }
}

/* ---------- 3. Équipe ---------- */
.nm-root .nm-ae-eq-grid.e-con { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; gap: 28px !important; align-items: start !important; }
.nm-root .nm-ae-eq-left.e-con { display: flex !important; flex-direction: column !important; gap: 28px !important; align-items: stretch !important; }
.nm-root .nm-ae-eq-left > .nm-btn { width: auto !important; align-self: flex-start !important; }
/* onglets « style 2 » : petites capitales, trait qui s'étire sous l'onglet actif */
.nm-root .nm-ae-tabs--team .nm-ae-tablist { gap: 8px 28px; margin-bottom: 20px; }
.nm-root .nm-ae-tabs--team .nm-ae-tab { font-size: 13px !important; line-height: 1 !important; font-weight: 500 !important; letter-spacing: .06em !important; text-transform: uppercase !important; padding: 0 0 8px !important; }
.nm-root .nm-ae-tabs--team .nm-ae-tab::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: currentColor; transform: scaleX(0); transition: transform .3s linear; }
.nm-root .nm-ae-tabs--team.is-ready .nm-ae-tab.is-active::after { transform: scaleX(1); }
.nm-root .nm-ae-tabs--team .nm-team-bio { padding: 0; }
.nm-root .nm-ae-tabs--team .nm-team-p { font-size: 16px !important; line-height: 22px !important; }
.nm-root .nm-ae-tabs--team .nm-team-more-in .nm-team-p { margin-top: 12px !important; }
.nm-root .nm-ae-tabs--team .nm-team-toggle { margin-top: 14px !important; }
/* sans JavaScript : bio entière, sans « Lire la suite » */
.nm-root .nm-ae-tabs--team .nm-team-bio:not([data-nm-more-ready]) .nm-team-more { grid-template-rows: 1fr; visibility: visible; }
.nm-root .nm-ae-tabs--team .nm-team-bio:not([data-nm-more-ready]) .nm-team-toggle { display: none !important; }
/* cartes portrait : seule la photo de la carte inactive est atténuée (texte toujours lisible) */
.nm-root .nm-ae-eq-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.nm-root .nm-ae-eq-card { margin: 0; padding: 10px; background: #eeeeee; border-radius: 20px; }
.nm-root .nm-ae-equipe:has(.nm-ae-tabs.is-ready) .nm-ae-eq-card { cursor: pointer; }
.nm-root .nm-ae-equipe:has(.nm-ae-tabs.is-ready) .nm-ae-eq-card.is-active { cursor: default; }
.nm-root .nm-ae-eq-photo { transition: opacity .3s ease; }
.nm-root .nm-ae-equipe:has(.nm-ae-tabs.is-ready) .nm-ae-eq-card:not(.is-active) .nm-ae-eq-photo { opacity: .55; }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-ae-equipe:has(.nm-ae-tabs.is-ready) .nm-ae-eq-card:not(.is-active):hover .nm-ae-eq-photo { opacity: .85; } }
.nm-root .nm-ae-eq-card figure { margin: 0 !important; }
.nm-root .nm-ae-eq-photo { position: relative; aspect-ratio: 4 / 5; border-radius: 14px; overflow: hidden; background: #fff; }
.nm-root .nm-ae-eq-photo img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; border-radius: 0 !important; margin: 0 !important; }
.nm-root .nm-ae-eq-photo--todo { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; }
.nm-root .nm-ae-eq-initials { font-family: var(--nm-sg) !important; font-weight: 400; font-size: 48px; line-height: 1; letter-spacing: -0.03em; color: #c6c6c6; }
.nm-root .nm-ae-eq-todo { font-family: var(--nm-sg) !important; font-size: 11px; line-height: 1; letter-spacing: .06em; text-transform: uppercase; color: var(--nm-grey); }
.nm-root .nm-ae-eq-card figcaption { padding: 18px 8px 8px; }
.nm-root .nm-ae-eq-name { font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 18px !important; line-height: 22px !important; letter-spacing: -0.03em !important; color: var(--nm-black) !important; margin: 0 !important; }
.nm-root .nm-ae-eq-role { font-family: var(--nm-sg) !important; font-size: 11px !important; line-height: 14px !important; letter-spacing: .06em !important; text-transform: uppercase !important; color: var(--nm-grey) !important; margin: 8px 0 0 !important; }
@media (min-width: 768px) {
  .nm-root .nm-ae-eq-cards { gap: 20px; }
  .nm-root .nm-ae-eq-card figcaption { padding: 22px 12px 12px; }
  .nm-root .nm-ae-eq-name { font-size: 20px !important; line-height: 24px !important; }
  .nm-root .nm-ae-eq-role { font-size: 12px !important; }
  .nm-root .nm-ae-eq-initials { font-size: 64px; }
}
@media (min-width: 768px) and (max-width: 1099px) { .nm-root .nm-ae-eq-photo { aspect-ratio: 1 / 1; } }
@media (min-width: 992px) { .nm-root .nm-ae-tabs--team .nm-team-p { line-height: 24px !important; } }
@media (min-width: 1100px) {
  /* cartes calées en haut : elles ne bougent plus quand on déplie une bio */
  .nm-root .nm-ae-eq-grid.e-con { grid-template-columns: minmax(0, 1fr) minmax(0, 48%) !important; column-gap: 56px !important; }
  .nm-root .nm-ae-eq-left.e-con { gap: 32px !important; }
}
@media (min-width: 1201px) { .nm-root .nm-ae-tabs--team .nm-team-p { font-size: 17px !important; line-height: 26px !important; } }

/* ---------- 4. Chez NEOVA : panneau noir, galerie à panneaux qui s'élargissent ---------- */
.nm-root .nm-sec.nm-ae-xp.e-con { background: var(--nm-black) !important; }
.nm-root .nm-ae-xp > .nm-btn { width: auto !important; align-self: center !important; }
/* bouton sur fond noir : couleurs claires même sans JavaScript (neova-buttons.js ne fait que les confirmer) */
:root body .nm-root .nm-ae-xp .nm-btn .elementor-button { --fg: #fff; --on: #0a0a0a; }
.nm-root .nm-sec.nm-ae-xp:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 5px !important; }
.nm-root .nm-xp-track { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.nm-root .nm-xp-track > figure.nm-xp-item { position: relative; margin: 0; height: 160px; border-radius: 16px; overflow: hidden; background: #1e1e1e; isolation: isolate; }
.nm-root .nm-xp-track > figure.nm-xp-item:first-child { grid-column: 1 / -1; height: 220px; }
.nm-root .nm-xp-img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; border-radius: 0 !important; margin: 0 !important; }
.nm-root .nm-xp-item::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(10, 10, 10, 0) 35%, #0a0a0a 100%); opacity: .7; pointer-events: none; }
.nm-root .nm-xp-cap { position: absolute; left: 14px; right: 14px; bottom: 14px; z-index: 2; display: flex; flex-direction: column; gap: 6px; margin: 0; pointer-events: none; }
.nm-root .nm-xp-label { font-family: var(--nm-sg) !important; font-size: 12px !important; line-height: 1 !important; letter-spacing: .06em !important; text-transform: uppercase !important; color: #fff !important; text-shadow: 0 0 12px rgba(10, 10, 10, .45); }
.nm-root .nm-xp-title { font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 20px !important; line-height: 24px !important; letter-spacing: -0.03em !important; color: #fff !important; margin: 0 !important; text-wrap: balance; }
.nm-root .nm-xp-track > .nm-xp-item:not(:first-child) .nm-xp-title { display: none; }
.nm-root .nm-xp-go { position: absolute; inset: 0; z-index: 3; display: block; border-radius: inherit; text-decoration: none !important; }
.nm-root .nm-xp-go::before { content: ""; position: absolute; top: 12px; right: 12px; width: 36px; height: 36px; border-radius: 50%; background: #fff; }
.nm-root .nm-xp-go::after { content: ""; position: absolute; top: 22px; right: 22px; width: 16px; height: 16px; background: var(--nm-black); -webkit-mask: var(--nm-bf-arrow) center / contain no-repeat; mask: var(--nm-bf-arrow) center / contain no-repeat; transform: rotate(-45deg); transition: transform .5s var(--nm-bf-ease, ease); }
.nm-root .nm-xp-go:focus { outline: none !important; }
.nm-root .nm-xp-go:focus-visible { outline: 2px solid #fff !important; outline-offset: -4px; }
.nm-root .nm-xp-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; margin: 0 !important; padding: 0 !important; }
@media (hover: hover) and (pointer: fine) { .nm-root .nm-xp-go:hover::after { transform: rotate(0deg); } }
.nm-root .nm-xp-go:focus-visible::after { transform: rotate(0deg); }
.nm-root .nm-xp-pick { display: none !important; }
/* dès 768 px, monté par le JS (.is-xp) : 3 panneaux visibles (voisin / actif / voisin), les autres à largeur nulle, en boucle */
@media (min-width: 768px) {
  .nm-root .nm-xp.is-xp { overflow: hidden; border-radius: 20px; }
  .nm-root .nm-xp.is-xp .nm-xp-track { display: flex; height: 400px; margin: 0 -5px; gap: 0; touch-action: pan-y; user-select: none; -webkit-user-select: none; }
  .nm-root .nm-xp.is-xp .nm-xp-track > figure.nm-xp-item { height: auto; flex: 1 1 0; min-width: 0; margin: 0 5px; border-radius: 20px; cursor: pointer; transition: flex-grow .6s var(--nm-bf-ease, ease), margin .6s var(--nm-bf-ease, ease); }
  .nm-root .nm-xp.is-xp .nm-xp-track > figure.nm-xp-item.is-active { flex-grow: 5.1; cursor: default; }
  .nm-root .nm-xp.is-xp .nm-xp-track > figure.nm-xp-item.is-off { flex-grow: 0.0001; margin: 0; }
  .nm-root .nm-xp.is-xp .nm-xp-track > figure.nm-xp-item:first-child { grid-column: auto; height: auto; }
  .nm-root .nm-xp.is-xp .nm-xp-img { -webkit-user-drag: none; }
  /* dégradés : haut (lisibilité du libellé) et bas (titre), seulement sur le panneau actif */
  .nm-root .nm-xp.is-xp .nm-xp-item::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(10, 10, 10, .6) 0%, rgba(10, 10, 10, 0) 30%); opacity: 0; transition: opacity .3s linear; pointer-events: none; }
  .nm-root .nm-xp.is-xp .nm-xp-item::after { background: linear-gradient(180deg, rgba(10, 10, 10, 0) 40%, #0a0a0a 100%); opacity: 0; transition: opacity .3s linear; }
  .nm-root .nm-xp.is-xp .nm-xp-item.is-active::before { opacity: 1; transition-delay: .3s; }
  .nm-root .nm-xp.is-xp .nm-xp-item.is-active::after { opacity: .7; transition-delay: .3s; }
  .nm-root .nm-xp.is-xp .nm-xp-cap { inset: 24px; left: 24px; right: 24px; bottom: 24px; justify-content: space-between; gap: 16px; min-width: 260px; }
  .nm-root .nm-xp.is-xp .nm-xp-label, .nm-root .nm-xp.is-xp .nm-xp-title { opacity: 0; transition: opacity .3s linear, transform .3s linear; }
  .nm-root .nm-xp.is-xp .nm-xp-label { transform: translateY(20px); padding-right: 76px; font-size: 13px !important; }
  .nm-root .nm-xp.is-xp .nm-xp-title { display: block; transform: translateY(-20px); font-size: 28px !important; line-height: 34px !important; max-width: 560px; }
  .nm-root .nm-xp.is-xp .nm-xp-item.is-active .nm-xp-label, .nm-root .nm-xp.is-xp .nm-xp-item.is-active .nm-xp-title { opacity: 1; transform: none; transition-delay: .5s; }
  /* rond ↗ : seulement sur le panneau actif (masqué = hors tabulation et hors arbre d'accessibilité) */
  .nm-root .nm-xp.is-xp .nm-xp-go { inset: auto; top: 24px; right: 24px; width: 56px; height: 56px; border-radius: 50%; opacity: 0; visibility: hidden; transform: scale(.6); transition: opacity .3s linear, transform .3s linear, visibility 0s linear .3s; }
  .nm-root .nm-xp.is-xp .nm-xp-go::before { inset: 0; top: 0; right: 0; width: 100%; height: 100%; }
  .nm-root .nm-xp.is-xp .nm-xp-go::after { top: 20px; right: 20px; }
  .nm-root .nm-xp.is-xp .nm-xp-item.is-active .nm-xp-go { opacity: 1; visibility: visible; transform: none; transition-delay: .5s, .5s, 0s; }
  .nm-root .nm-xp.is-xp .nm-xp-go:focus-visible { outline: none !important; }
  .nm-root .nm-xp.is-xp .nm-xp-go:focus-visible::before { box-shadow: inset 0 0 0 2px var(--nm-black); }
  /* voisins : un bouton couvre tout le panneau (pas de contrôle imbriqué) ; focus clavier = anneau blanc intérieur */
  .nm-root .nm-xp.is-xp .nm-xp-pick:not([hidden]) { display: block !important; position: absolute; inset: 0; z-index: 4; width: 100%; height: 100%; min-height: 0 !important; margin: 0 !important; padding: 0 !important; border: 0 !important; border-radius: inherit !important; background: transparent !important; box-shadow: none !important; cursor: pointer; appearance: none; }
  .nm-root .nm-xp.is-xp .nm-xp-pick:focus { outline: none !important; }
  .nm-root .nm-xp.is-xp .nm-xp-pick:focus-visible::before { content: ""; position: absolute; inset: 4px; border: 2px solid #fff; border-radius: 16px; pointer-events: none; }
  .nm-root .nm-sec.nm-ae-xp:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 23px !important; }
}
@media (min-width: 992px) {
  .nm-root .nm-xp.is-xp .nm-xp-track { height: 480px; }
  .nm-root .nm-xp.is-xp .nm-xp-cap { inset: 32px; left: 32px; right: 32px; bottom: 32px; }
  .nm-root .nm-xp.is-xp .nm-xp-go { top: 32px; right: 32px; }
}
@media (min-width: 1100px) {
  .nm-root .nm-sec.nm-ae-xp:not(.nm-hero):not(.nm-footer):not(.nm-cta) > .nm-header { margin-bottom: 18px !important; }
  .nm-root .nm-xp.is-xp .nm-xp-title { font-size: 32px !important; line-height: 38px !important; }
}
@media (min-width: 1201px) {
  /* la galerie déborde dans les marges de 14,8 % : 40 px du bord du panneau, comme la démo (≈ 1320 px à 1440) */
  .nm-root .nm-sec.nm-ae-xp > .elementor-widget-html.nm-xp-w { margin-left: calc(-21.0227% + 40px) !important; margin-right: calc(-21.0227% + 40px) !important; width: calc(100% + 42.0454% - 80px) !important; max-width: none !important; align-self: stretch !important; }
  .nm-root .nm-xp.is-xp .nm-xp-track { height: 560px; }
}
@media (min-width: 1601px) {
  .nm-root .nm-sec.nm-ae-xp > .elementor-widget-html.nm-xp-w { margin-left: -184px !important; margin-right: -184px !important; width: calc(100% + 368px) !important; }
}

/* ---------- 5. Témoignages ---------- */
.nm-root .nm-ae-avis-title .elementor-heading-title { text-wrap: pretty; }
/* vignettes : ronds neutres en pointillé tant qu'il n'y a pas de vrais avis (jamais de visages de banque d'images) */
.nm-root .nm-avis-faces { display: inline-flex; align-items: center; gap: 4px; margin: 0 4px; vertical-align: -6px; }
.nm-root .nm-avis-faces i { display: block; width: 32px; height: 32px; border-radius: 50%; border: 1px dashed #c6c6c6; background: var(--nm-light); }
.nm-root .nm-avis-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.nm-root .nm-avis { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; }
.nm-root .nm-avis-who { background: #eeeeee; border-radius: 20px; padding: 18px 20px; }
.nm-root .nm-avis-name { font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 20px !important; line-height: 24px !important; letter-spacing: -0.03em !important; color: var(--nm-black) !important; margin: 0 !important; }
.nm-root .nm-avis-meta { font-family: var(--nm-inter) !important; font-size: 14px !important; line-height: 20px !important; color: var(--nm-grey) !important; margin: 6px 0 0 !important; }
.nm-root .nm-avis-quote { display: flex; flex-direction: column; justify-content: space-between; gap: 28px; min-height: 260px; margin: 0 !important; background: #eeeeee; border-radius: 20px; padding: 24px 20px; }
.nm-root .nm-avis-body { display: flex; flex-direction: column; align-items: flex-start; gap: 16px; }
.nm-root .nm-avis-flag { display: inline-block; font-family: var(--nm-sg) !important; font-size: 11px; line-height: 1; letter-spacing: .06em; text-transform: uppercase; color: var(--nm-grey); border: 1px dashed #c6c6c6; border-radius: 999px; padding: 7px 12px; }
.nm-root .nm-avis-text, .nm-root .nm-avis-text p { margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; box-shadow: none !important; }
.nm-root .nm-avis-text::before, .nm-root .nm-avis-text::after { content: none !important; display: none !important; }
.nm-root .nm-avis-text p { font-family: var(--nm-sg) !important; font-weight: 400 !important; font-size: 20px !important; line-height: 28px !important; letter-spacing: -0.02em !important; color: var(--nm-black) !important; margin: 0 !important; text-wrap: pretty; }
.nm-root .nm-avis--provisoire .nm-avis-text p, .nm-root .nm-avis--provisoire .nm-avis-name { color: var(--nm-grey) !important; }
.nm-root .nm-avis-tag { font-family: var(--nm-sg) !important; font-size: 12px !important; line-height: 1 !important; letter-spacing: .06em !important; text-transform: uppercase !important; color: var(--nm-grey) !important; }
@media (min-width: 768px) {
  .nm-root .nm-avis-faces { gap: 6px; margin: 0 6px; vertical-align: -8px; }
  .nm-root .nm-avis-faces i { width: 40px; height: 40px; }
  .nm-root .nm-avis { display: grid; grid-template-columns: minmax(0, 34%) minmax(0, 1fr); gap: 6px; }
  .nm-root .nm-avis-who { display: flex; flex-direction: column; justify-content: flex-start; padding: 20px 24px; }
  .nm-root .nm-avis-quote { padding: 28px 24px; min-height: 240px; }
}
@media (min-width: 1100px) {
  /* titre calé à droite sur 760 px, comme le modèle, en 2 lignes (retour voulu après les vignettes, br nm-br-d) */
  .nm-root .nm-sec.nm-ae-avis > .elementor-widget.nm-ae-avis-title { width: min(100%, 760px) !important; margin-left: auto !important; }
  .nm-root .nm-avis-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; align-items: start; }
  .nm-root .nm-avis { display: flex; flex-direction: column; gap: 6px; }
  .nm-root .nm-avis:nth-child(3n+2) .nm-avis-quote { order: -1; }
  .nm-root .nm-avis-quote { padding: 30px; min-height: 350px; }
}

@media (prefers-reduced-motion: reduce) {
  .nm-root .nm-ae-tab, .nm-root .nm-ae-tabs.is-ready .nm-ae-panel, .nm-root .nm-ae-tabs--team .nm-ae-tab::after, .nm-root .nm-ae-eq-photo,
  .nm-root .nm-xp.is-xp .nm-xp-track > figure.nm-xp-item, .nm-root .nm-xp.is-xp .nm-xp-item::before, .nm-root .nm-xp.is-xp .nm-xp-item::after,
  .nm-root .nm-xp.is-xp .nm-xp-label, .nm-root .nm-xp.is-xp .nm-xp-title, .nm-root .nm-xp.is-xp .nm-xp-go, .nm-root .nm-xp-go::after { transition: none !important; }
  .nm-root .nm-ae-tabs.is-ready .nm-ae-panel:not(.is-active) { transform: none; }
}
/* fin L'AUTO-ÉCOLE : REFONTE DE CINQ SECTIONS */

/* ============================================================================================================
   VIDÉO DE L'ACCUEIL : COINS ARRONDIS ET PARALLAXE (06/10/2026, demande Frédéric) — section .nm-eng--carousel, widget pxl_video_player.
   Coins de 20 px visibles en permanence (pleine largeur comme réduite ; neova-eng-carousel.js pose 20 / échelle en ligne pendant
   la réduction). Rognage par clip-path en plus du border-radius : Safari ignore l'arrondi quand l'image bouge (transform).
   Parallaxe : le cadre .pxl-video--holder garde le format de la photo (1430 × 636), l'image le dépasse de --nm-px-max en haut et
   en bas et neova-parallax.js la fait glisser. prefers-reduced-motion : image fixe à la taille du cadre.
   ============================================================================================================ */
.nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player .pxl-video--inner { --nm-px-max: 32px; position: relative; overflow: hidden; border-radius: 20px !important; clip-path: inset(0 round 20px); isolation: isolate; }
.nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player .pxl-video--holder { position: relative; overflow: hidden; aspect-ratio: 1430 / 636; }
.nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player .pxl-video--holder img { position: absolute; left: 0; top: calc(-1 * var(--nm-px-max)); width: 100% !important; height: calc(100% + 2 * var(--nm-px-max)) !important; max-width: none !important; object-fit: cover; border-radius: 0 !important; margin: 0 !important; will-change: transform; }
@media (min-width: 768px) { .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player .pxl-video--inner { --nm-px-max: 56px; } }
@media (min-width: 1100px) { .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player .pxl-video--inner { --nm-px-max: 80px; } }
@media (prefers-reduced-motion: reduce) {
  .nm-root .nm-eng.nm-eng--carousel > .elementor-widget-pxl_video_player .pxl-video--holder img { top: 0; height: 100% !important; transform: none !important; }
}
/* fin VIDÉO DE L'ACCUEIL : COINS ARRONDIS ET PARALLAXE */

/* ============================================================================================================
   ACCUEIL : CARROUSEL D'ARTICLES ÉLARGI (06/10/2026, demande Frédéric « élargi ce module », puis « un peu moins ») — section
   .nm-conseils, widget pxl_post_carousel .nm-conseils-carousel (visible dès 1024 px). v2 : le carrousel déborde dans les marges de la
   section jusqu'à 40 px de son bord, comme la galerie « Chez NEOVA » de L'auto-école (≈ 1320 px à 1440 ; v1 = pleine largeur, 1400).
   Entre 1024 et 1200 la marge de la section vaut déjà 40 px : le carrousel reste dans la colonne. Hauteur 440 inchangée.
   ============================================================================================================ */
@media (min-width: 1201px) { .nm-root .nm-sec.nm-conseils > .nm-conseils-carousel { align-self: stretch !important; width: auto !important; max-width: none !important; margin-left: calc(-21.0227% + 40px) !important; margin-right: calc(-21.0227% + 40px) !important; } }
@media (min-width: 1601px) { .nm-root .nm-sec.nm-conseils > .nm-conseils-carousel { margin-left: -184px !important; margin-right: -184px !important; } }
/* fin CARROUSEL D'ARTICLES ÉLARGI */

/* ============================================================================================================
   ANNULATION : EXPERT SANS TRAIT (06/10/2026, demande Frédéric « supprime le trait ») — section .nm-ann-expert-sec de la page
   Annulation / Invalidation (#11053). Le trait gris au-dessus des paragraphes de Destan (border-top + 24 px, dès 768 px) est retiré ;
   les paragraphes suivent l'intro à l'écart de la section (32 px ≥ 992, 28 px en dessous). Le trait du surtitre est gardé.
   ============================================================================================================ */
@media (min-width: 768px) { .nm-root .nm-sec.nm-ann-expert-sec > .nm-ann-expert-paras { border-top: 0 !important; padding-top: 0 !important; } }
/* fin ANNULATION : EXPERT SANS TRAIT */

/* ============================================================================================================
   CODE DE LA ROUTE : « LE JOUR J » EN CARTES EMPILÉES (06/10/2026, demande Frédéric « les cartes doivent s'empiler ») — section
   .nm-cod-day-sec (#11054), liste ol.nm-list (4 étapes : numéro, titre, texte, photo). La liste à séparateurs devient une pile de
   cartes blanches qui se figent et se recouvrent au défilement, avec les réglages déjà en place sur le site :
   · dès 768 px, ceux de la chronologie d'Annulation (sous le header : --nm-pin-top + 12 px par carte, liseré #e5e5e5, rayon 20,
     marges 28/32/32 puis 32/36/36 dès 1100, ombre 0 −6 20 à 6 %, 16 px entre cartes) ;
   · en mobile, ceux du sticky stack mobile (.nm-stack : 12 px du haut + 10 px par carte, ombre 0 −8 24 à 8 %, 12 px entre cartes).
   Dernière carte libre (elle finit la pile). Réduction des animations : rien ne bouge de plus (sticky n'anime rien).
   Portée limitée à cette section : les autres .nm-list (semaines, rythmes) gardent leurs séparateurs.
   ============================================================================================================ */
.nm-root .nm-sec.nm-cod-day-sec .nm-list { border-top: 0 !important; border-bottom: 0 !important; gap: 12px; }
.nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item { position: -webkit-sticky; position: sticky; top: calc(12px + var(--nm-k, 0) * 10px); background: #fff !important; border: 1px solid var(--nm-line, #e5e5e5) !important; border-radius: 20px; padding: 20px !important; box-shadow: 0 -8px 24px rgba(10, 10, 10, .08); }
.nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item:nth-child(1) { z-index: 1; }
.nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item:nth-child(2) { --nm-k: 1; z-index: 2; }
.nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item:nth-child(3) { --nm-k: 2; z-index: 3; }
.nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item:nth-child(4) { --nm-k: 3; z-index: 4; }
.nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item:nth-child(5) { --nm-k: 4; z-index: 5; }
.nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item:nth-child(6) { --nm-k: 5; z-index: 6; }
@media (min-width: 768px) {
  .nm-root .nm-sec.nm-cod-day-sec .nm-list { gap: 16px; }
  .nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item { top: calc(var(--nm-pin-top) + var(--nm-k, 0) * 12px); padding: 28px 32px 32px !important; box-shadow: 0 -6px 20px rgba(10, 10, 10, .06); }
}
@media (min-width: 1100px) { .nm-root .nm-sec.nm-cod-day-sec .nm-list > .nm-list-item { padding: 32px 36px 36px !important; } }
/* fin CODE DE LA ROUTE : « LE JOUR J » EN CARTES EMPILÉES */

/* ============================================================================================================
   CARROUSELS MOBILES (15/10/2026, demande NEOVA « Correction mobile », mail de Hakan Karali)
   Point 1 : plus de bouton « retour en haut » du thème (.pxl-scroll-top) sur la version mobile/tablette (≤ 1200 px, plage de .nm-root).
   Point 3 : sous 768 px, les séries de cartes « services » (formules de l'Accueil .nm-pricing .nm-cards--4, comparatif
   .nm-cmp-cards et détails .nm-det-cards de Nos formations, « Les autres forfaits » .nm-other-sec > .nm-cards des
   sous-pages) et les 3 articles « Nos conseils » de l'Accueil (.nm-conseils .nm-slider) défilent horizontalement :
   défilement natif avec accrochage, carte à 84 % de la largeur (un bout de la carte suivante visible à droite),
   points de navigation en dessous (script assets/js/neova-mobile-carousel.js). Remplace la décision du 24/09
   (articles empilés sous 768 px). ≥ 768 px : inchangé (grilles 2 × 2, carrousel d'articles du thème dès 1024).
   16/10/2026 (recette, Frédéric, « faire un carrousel en mobile ») : les 4 profils « Aide au choix » de Financement
   (.nm-cards.nm-fin-profils, empilés sous 768 ; carrousel du thème dès 768) rejoignent la série, mêmes réglages.
   ============================================================================================================ */
@media (max-width: 1200px) { .pxl-scroll-top { display: none !important; } }
@media (max-width: 767px) {
  .nm-root .nm-pricing .nm-cards--4.e-con, .nm-root .nm-cmp-cards.e-con, .nm-root .nm-det-cards.e-con, .nm-root .nm-other-sec > .nm-cards.e-con,
  .nm-root .nm-conseils .nm-slider, .nm-root .nm-cards.nm-fin-profils.e-con {
    display: flex !important; flex-direction: row !important; flex-wrap: nowrap !important; align-items: stretch !important;
    gap: 10px !important; overflow-x: auto !important; overflow-y: hidden !important; scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch; scrollbar-width: none; overscroll-behavior-x: contain;
    width: calc(100% + 40px) !important; max-width: none !important; margin: 0 -20px !important; padding: 0 20px !important;
    scroll-padding-left: 20px; scroll-padding-right: 20px; grid-template-columns: none !important; grid-template-rows: none !important;
  }
  .nm-root .nm-pricing .nm-cards--4::-webkit-scrollbar, .nm-root .nm-cmp-cards::-webkit-scrollbar, .nm-root .nm-det-cards::-webkit-scrollbar,
  .nm-root .nm-other-sec > .nm-cards::-webkit-scrollbar, .nm-root .nm-conseils .nm-slider::-webkit-scrollbar,
  .nm-root .nm-cards.nm-fin-profils::-webkit-scrollbar { display: none; }
  .nm-root .nm-pricing .nm-cards--4.e-con > .e-con, .nm-root .nm-cmp-cards.e-con > .e-con, .nm-root .nm-det-cards.e-con > .e-con,
  .nm-root .nm-other-sec > .nm-cards.e-con > .e-con, .nm-root .nm-conseils .nm-slider > .nm-slide,
  .nm-root .nm-cards.nm-fin-profils.e-con > .e-con {
    flex: 0 0 84% !important; width: 84% !important; max-width: 84% !important; min-width: 0 !important;
    scroll-snap-align: start; position: relative !important; top: auto !important;
  }
  /* profils Financement : cartes à hauteur égale dans la piste, bouton « + » calé en bas de chaque carte (alignés d'une carte à l'autre) */
  .nm-root .nm-cards.nm-fin-profils.e-con > .e-con > .nm-btn { margin-top: auto !important; }
  /* comparatif de Nos formations : la section .nm-cmp n'a que 10 px de retrait (section transparente, cartes bordées) → débord de 10, pas 20 */
  .nm-root .nm-cmp-cards.e-con { width: calc(100% + 20px) !important; margin: 0 -10px !important; padding: 0 10px !important; scroll-padding-left: 10px; scroll-padding-right: 10px; }
  .nm-root .nm-mcar-dots { display: flex; justify-content: center; align-items: center; gap: 8px; margin-top: -10px; }
  .nm-root .nm-mcar-dot { width: 8px; height: 8px; padding: 0; margin: 0; border: 0; border-radius: 4px; background: var(--nm-line, #e5e5e5);
    cursor: pointer; transition: background-color .3s ease, width .3s ease; -webkit-appearance: none; appearance: none; }
  .nm-root .nm-mcar-dot.is-active { width: 20px; background: var(--nm-blue, #00339f); }
  .nm-root .nm-mcar-dot:focus-visible { outline: 2px solid var(--nm-blue, #00339f); outline-offset: 3px; }
  @media (prefers-reduced-motion: reduce) { .nm-root .nm-mcar-dot { transition: none; } }
}
@media (min-width: 768px) { .nm-root .nm-mcar-dots { display: none !important; } }
/* fin CARROUSELS MOBILES */


/* ============================================================
   RECETTE 15/10/2026 (Frédéric) : pied de page tablette + tableaux des pages légales en mobile
   1. Tablette (≥ 768) : ligne « Écrivez-nous » du pied de page : e-mail, formulaire et téléphone restent chacun sur une
      ligne (le téléphone se cassait en 5 lignes à 820 px) ; l'adresse passe à la ligne, toujours alignée à droite.
   2. Mobile (≤ 767) : les tableaux des pages légales (CGV : prix ; confidentialité : finalités, durées) ne débordent plus
      à droite : chaque ligne devient une fiche (libellé, détail, valeur à droite).
   ============================================================ */
@media (min-width: 768px) {
  .nm-root .nm-fcontact { flex-wrap: wrap; }
  .nm-root .nm-fcontact .nm-femail, .nm-root .nm-fcontact .nm-flabel { white-space: nowrap; flex: none; }
}
@media (max-width: 767px) {
  .nm-legal .nm-legal-content .nm-legal-table { overflow: visible; }
  .nm-legal .nm-legal-content .nm-legal-table table, .nm-legal .nm-legal-content .nm-legal-table tbody { display: block; width: 100%; min-width: 0 !important; border: 0; }
  .nm-legal .nm-legal-content .nm-legal-table thead { display: none; }
  .nm-legal .nm-legal-content .nm-legal-table tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 16px; padding: 12px 0; border-bottom: 1px solid #e5e5e5; }
  .nm-legal .nm-legal-content .nm-legal-table tr:first-child { border-top: 1px solid #e5e5e5; }
  .nm-legal .nm-legal-content .nm-legal-table td { display: block; padding: 0 !important; border: 0 !important; grid-column: 1; min-width: 0; }
  .nm-legal .nm-legal-content .nm-legal-table td:first-child { font-weight: 500; color: #222; }
  .nm-legal .nm-legal-content .nm-legal-table td + td { color: #888; font-size: 14px; line-height: 20px; }
  /* CGV, tableau des prix (3 colonnes) : prix à droite, sur toute la hauteur de la fiche */
  .page-id-11663 .nm-legal .nm-legal-content .nm-legal-table[data-cols="3"] td:nth-child(3) { grid-column: 2; grid-row: 1 / 3; align-self: center; text-align: right; white-space: nowrap; color: #222; font-size: 16px; font-weight: 500; }
  /* confidentialité : libellés devant les détails */
  .page-id-11662 .nm-legal .nm-legal-content .nm-legal-table[data-cols="3"] td:nth-child(2)::before { content: 'Données : '; color: #222; }
  .page-id-11662 .nm-legal .nm-legal-content .nm-legal-table[data-cols="3"] td:nth-child(3)::before { content: 'Base légale : '; color: #222; }
  .page-id-11662 .nm-legal .nm-legal-content .nm-legal-table[data-cols="2"] td:nth-child(2) { grid-column: 2; grid-row: 1; align-self: center; text-align: right; color: #222; font-size: 15px; }
}
/* fin RECETTE 15/10/2026 */
/* ============================================================
   TRANSITION DE PAGE (15/10/2026, recette, Frédéric) : rideau noir entre les pages. Réutilise les deux volets de
   l'ouverture (#pxl-loadding.style-2 .split top/bottom, bloc « OUVERTURE DU SITE ») ; piloté par
   floka-child/assets/js/neova-page-transition.js et le script inline de tête (functions.php, neova_opening_once) :
   html.nm-cur = rideau engagé (volets visibles, trait masqué) ; html.nm-cur-closed = volets fermés (translateY(0)).
   Fermeture 0,3 s au clic sur un lien interne, ouverture 0,35 s à l'arrivée (15/10 : 0,45/0,6 ; 16/10 : 0,35/0,45 ;
   18/10 : 0,3/0,35, Frédéric en ligne : « trop lente »), courbe cubic-bezier(.77,0,.18,1).
   Les !important sont nécessaires : les états is-loading / is-loaded du thème (et html.nm-opened { display:none })
   s'appliquent en même temps. prefers-reduced-motion : tout est instantané (le script ne s'active pas).
   v3 (16/10) : will-change + translate3d sur les volets : sans cela, Chrome animait le volet du bas sur le fil principal,
   occupé par le chargement de la page (volet du haut ouvert avant celui du bas, fermeture invisible).
   v4 (18/10, relecture en ligne : « un flash pendant la transition ») : transition de vue entre documents
   (@view-transition, Chrome 126+, Safari 18.2+). Le navigateur garde l'image de l'ancienne page (volets fermés, noir)
   jusqu'au premier rendu de la suivante, qui arrive elle aussi volets fermés : plus d'écran blanc entre les deux,
   là où Safari affichait du blanc dès la réponse du serveur (Chrome le faisait déjà de lui-même). Le fondu par défaut
   de la transition de vue est retiré (animation: none) : c'est le rideau qui fait l'animation. Navigateurs sans
   transition de vue (Firefox) : comportement inchangé.
   ============================================================ */
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation: none !important; mix-blend-mode: normal; }
html.nm-cur #pxl-loadding.pxl-loader.style-2, html.nm-opened.nm-cur #pxl-loadding.pxl-loader { display: block !important; opacity: 1 !important; visibility: visible !important; transition: none !important; background: transparent !important; pointer-events: none; }
html.nm-cur #pxl-loadding.pxl-loader.style-2 .line { opacity: 0 !important; transition: none !important; }
html.nm-cur #pxl-loadding.pxl-loader.style-2 .split { transition: transform .35s cubic-bezier(.77, 0, .18, 1) 0s !important; will-change: transform; backface-visibility: hidden; }
html.nm-cur #pxl-loadding.pxl-loader.style-2 .split.top { transform: translate3d(0, -100%, 0) !important; }
html.nm-cur #pxl-loadding.pxl-loader.style-2 .split.bottom { transform: translate3d(0, 100%, 0) !important; }
html.nm-cur.nm-cur-closed #pxl-loadding.pxl-loader.style-2 .split { transition-duration: .3s !important; }
html.nm-cur.nm-cur-closed #pxl-loadding.pxl-loader.style-2 .split.top, html.nm-cur.nm-cur-closed #pxl-loadding.pxl-loader.style-2 .split.bottom { transform: translate3d(0, 0, 0) !important; }
@media (prefers-reduced-motion: reduce) { html.nm-cur #pxl-loadding.pxl-loader.style-2 .split { transition: none !important; } }
/* fin TRANSITION DE PAGE */

/* ============================================================
   RECETTE 16/10/2026 (Frédéric) : formulaire bleu de l'Accueil — « l'animation des traits est trop rapide ».
   Le trait sous chaque champ (.pxl-item--form::before, bloc « ACCUEIL V2 ») se traçait en 1 s à partir de 450 ms :
   il se trace désormais en 1,8 s, départ à 500 ms, 160 ms d'écart entre les champs (déclenchement avancé le même jour
   dans neova-buttons.js : seuil 0,15 et marge basse −4 %).
   2. « Les deux phrases doivent arriver plus smooth » (bandeau CTA « Une formation en tête ? Tout droit ! ») : les lignes des
   titres de section et des bandeaux (.nm-split--lines, neova-effects.js) sortaient du masque en 0,8 s (courbe .2,.7,.2,1,
   90 ms entre lignes) ; elles montent désormais en 1,2 s sur une courbe très décélérée (.16,1,.3,1) avec un fondu de 0,8 s,
   140 ms entre lignes. Même réglage pour tous les titres (cohérence). Cause réelle du saccadé : voir la note ci-dessous.
   ============================================================ */
.nm-root .nm-contact .nm-form-anim.nm-form-in .pxl-item--form::before { transition: transform 1.8s cubic-bezier(.37, .31, .2, .85) calc(500ms + var(--i, 0) * 160ms); }
.nm-split--lines .nm-wi { opacity: 0; transform: translate3d(0, 110%, 0); transition: transform 1.2s cubic-bezier(.16, 1, .3, 1), opacity .8s ease; transition-delay: calc(var(--li, 0) * 140ms); }
.nm-split--lines.nm-split-in .nm-wi { opacity: 1; transform: none; }
/* Bandeaux CTA (≥ 768) : le titre est peint en dégradé découpé sur le texte (background-clip: text, bloc « BANDEAUX CTA EN
   GRAND »). Un mot qui s'anime passe sur son propre calque et sort de cette découpe : il était INVISIBLE pendant toute sa
   montée puis apparaissait d'un coup à la fin (= « les phrases apparaissent en saccadé »). Chaque mot porte désormais son
   propre dégradé découpé ; le titre et l'enveloppe du mot gardent l'image (transmise par inherit) sans la peindre. */
@media (min-width: 768px) {
  .nm-root .nm-cta-title .elementor-heading-title.nm-split--lines, .nm-root .nm-cta-title--muted .elementor-heading-title.nm-split--lines,
  .nm-root .nm-cta-title .nm-split--lines .nm-w, .nm-root .nm-cta-title--muted .nm-split--lines .nm-w { background-size: 0 0 !important; background-repeat: no-repeat !important; }
  .nm-root .nm-cta-title .nm-split--lines .nm-w, .nm-root .nm-cta-title--muted .nm-split--lines .nm-w { background-image: inherit; }
  .nm-root .nm-cta-title .nm-split--lines .nm-wi, .nm-root .nm-cta-title--muted .nm-split--lines .nm-wi { background-image: inherit; background-size: 100% 100%; background-repeat: no-repeat; -webkit-background-clip: text; background-clip: text; color: transparent; -webkit-text-fill-color: transparent; }
}
/* 3. Rechargement : scroll-behavior:smooth du thème neutralisé pendant le chargement (html.nm-loading, posée en tête par
   functions.php, retirée 200 ms après load par neova-page-transition.js) : la position restaurée ne défile plus. */
html.nm-loading { scroll-behavior: auto !important; }
/* 4. Bouton « retour en haut » (desktop > 1200, a.pxl-scroll-top) : « contour pas net et pas noir comme il faut », puis
   « doit rester tout le temps en bas, en blanc sur noir, avec un peu d'espace par rapport au côté droit et au bas ».
   Le thème dessinait un anneau gris inset de 2 px (#d4d4d4, flou), un disque bleu nuit (#01062e) et l'arc de progression sur
   l'anneau. Désormais : disque noir NEOVA plein (#0a0a0a) partout, flèche blanche, arc de progression blanc fin (3) au bord ;
   pas d'inversion sur les fonds sombres (essayée puis écartée le 16/10 : neova-buttons.js.version-inversion-retour-haut-16-10).
   Position : 40 px du bord droit et du bas = 20 px à l'intérieur des panneaux de page (eux-mêmes à 20 px des bords de la
   fenêtre) ; l'ancien décalage à 84 px du bas servait à passer au-dessus du bouton Ally, désactivé le 15/10. */
:root body a.pxl-scroll-top { right: 40px !important; bottom: 40px !important; box-shadow: none !important; background: transparent !important; color: #fff !important; }
:root body a.pxl-scroll-top::before { top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important; background-color: #0a0a0a !important; }
:root body a.pxl-scroll-top .pxl-scroll-progress-circle path { stroke: #fff !important; stroke-width: 3 !important; }
/* 5. Mobile (< 768) : points du carrousel « Nos conseils » (Accueil) posés DANS la première carte. Les points ont une marge
   haute de −10 px (bloc « CARROUSELS MOBILES ») prévue pour les pistes placées dans une colonne flex à 28 px d'écart (écart
   visible 18 px) ; la piste des articles est dans le bloc du shortcode, sans écart : −10 px les remontait sur les cartes.
   Même écart visible que partout (18 px). */
@media (max-width: 767px) { .nm-root .nm-conseils .nm-slider + .nm-mcar-dots { margin-top: 18px; } }
/* 6. Pied de page tablette (768 à 1099) : « le positionnement des coordonnées n'est pas esthétique » (BVA, capture 16/10).
   Depuis le 15/10 la ligne « Écrivez-nous » passait à la ligne et l'adresse, seule, se calait à droite sous rien. Désormais
   une petite grille : « Écrivez-nous » en tête, e-mail, formulaire et téléphone sur la 1re ligne, l'adresse sur la 2e,
   alignée à gauche sous l'e-mail. Les mentions légales gardaient 32 px de retrait à droite pour l'ancien bouton « retour
   en haut », masqué ≤ 1200 px depuis le 15/10 : retrait supprimé jusqu'à 1200, le texte s'arrête au bout du filet. */
@media (min-width: 768px) and (max-width: 1099px) {
  .nm-root .nm-fcontact { display: grid !important; grid-template-columns: repeat(4, max-content); justify-content: start; align-items: baseline; gap: 8px 12px; }
  .nm-root .nm-fcontact address { grid-column: 2 / -1; grid-row: 2; margin-left: 0 !important; text-align: left !important; }
}
@media (min-width: 768px) and (max-width: 1200px) { .nm-root .nm-flegal { padding-right: 0 !important; } }
/* 7. Financement, « Vue d'ensemble » (< 768) : « les cartes de la section vue d'ensemble en mobile doivent s'empiler » (Frédéric).
   Les 5 cartes dispositif (.nm-cards.nm-fin-disp > .nm-disp-card, 296 à 356 px de haut, ≤ 70 % d'un écran de 667 px) reçoivent
   l'empilement au scroll du site, mêmes réglages que les piles .nm-stack en mobile : collées en haut à 12 px + 10 px par carte,
   z-index croissant, sans ombre (« les ombres font sale », 23/09), filet 1 px à 8 % (04/10), dernière carte libre, CSS pur ;
   prefers-reduced-motion : simple pile sans effet. Exception assumée à l'exclusion « cartes de comparaison » (demande explicite). */
@media (max-width: 767px) {
  /* cartes de même hauteur (la plus haute, CPF en bleu) : sinon le bas bleu de la 1re carte dépasse sous les cartes grises
     qui la recouvrent ; bouton « Voir le détail » calé en bas de chaque carte */
  .nm-root .nm-cards.nm-fin-disp.e-con { overflow: visible !important; display: grid !important; grid-template-columns: minmax(0, 1fr) !important; grid-auto-rows: 1fr; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con > .nm-btn { margin-top: auto !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con { position: -webkit-sticky !important; position: sticky !important; box-shadow: none !important; border: 1px solid rgba(10, 10, 10, .08) !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con:nth-child(1) { top: 12px !important; z-index: 1 !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con:nth-child(2) { top: 22px !important; z-index: 2 !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con:nth-child(3) { top: 32px !important; z-index: 3 !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con:nth-child(4) { top: 42px !important; z-index: 4 !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con:nth-child(5) { top: 52px !important; z-index: 5 !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con:nth-child(6) { top: 62px !important; z-index: 6 !important; }
  .nm-root .nm-cards.nm-fin-disp.e-con > .e-con:last-child { position: static !important; }
}
@media (max-width: 767px) and (prefers-reduced-motion: reduce) { .nm-root .nm-cards.nm-fin-disp.e-con > .e-con { position: static !important; } }
/* 8. L'auto-école, « Chronologie » (≥ 768, deux colonnes) : « réduis la taille de la photo pour qu'elle soit alignée avec 2025 ».
   La photo gardait son ratio 330/220 et descendait bien plus bas que la dernière date ; aligner le bas de la photo seule sur
   la dernière date en faisait une bande de 80 à 150 px (option A, écartée). Option B choisie par Frédéric (17/10) : photo de
   200 px de haut au minimum (recadrée, object-fit: cover) qui remplit sa rangée, et la colonne des dates s'étire sur la même
   hauteur : les 5 lignes se partagent l'espace (flex 1), le filet sous « 2025 » tombe exactement sur le bas de la photo. */
@media (min-width: 768px) {
  .nm-root .nm-ae-chrono > .elementor-widget-image { position: relative !important; align-self: stretch !important; height: auto !important; min-height: 200px; }
  .nm-root .nm-ae-chrono > .elementor-widget-image img { position: absolute !important; inset: 0; width: 100% !important; height: 100% !important; aspect-ratio: auto !important; object-fit: cover; }
  .nm-root .nm-ae-chrono > .nm-ae-dates-w { align-self: stretch !important; display: flex !important; flex-direction: column !important; }
  .nm-root .nm-ae-chrono > .nm-ae-dates-w > .nm-ae-dates { flex: 1 1 auto; display: flex !important; flex-direction: column !important; margin: 0 !important; }
  .nm-root .nm-ae-chrono .nm-ae-dates > .nm-ae-date { flex: 1 1 0; }
}
/* fin RECETTE 16/10/2026 *//* End custom CSS */