/* ===========================================================================
 * i-Assmat — Public pages (header, drawer mobile, sections génériques, footer)
 * ---------------------------------------------------------------------------
 * Feuille partagée par toutes les pages publiques (Index, Article, FAQ, Login).
 * Contient :
 *   1. NAV  — header sticky avec backdrop blur
 *   2. MOBILE BURGER MENU — drawer Alpine (overlay + drawer + bouton X)
 *   3. SECTION HEADER générique (.lp-sec / .lp-sec-head / .lp-sec-eyebrow)
 *   4. FOOTER marine identitaire
 *   5. BACK TO TOP — bouton de retour en haut
 *   6. PAGES ÉDITORIALES — Article / FAQ (layout v1-*, hero, breadcrumb,
 *      corps art-body, info-box, footnotes, CTA inline, aside complet)
 *   7. RESPONSIVE — header / drawer / sections / footer
 * Dépend de : ds/theme.css        (variables, font-face, utilities signature)
 *             ds/components.css   (.btn, .container, .lp-brand)
 * Reference : docs/design_system.md (Ch.6.5 Bandeaux, Ch.6.4 Badges)
 * =========================================================================== */


/* ============================================================================
 * 1. NAV — header sticky avec backdrop blur
 * ========================================================================== */
.lp-nav {
  position: sticky; top: 0; z-index: 50;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: saturate(140%) blur(8px);
  border-bottom: 1px solid var(--color-orange-100);
}
/* Hauteur desktop (≥1024px) confortable pour la marketing-page d'accueil.
   Hauteur mobile (<1024px) compactée pour s'aligner sur la topbar privée
   (cf. règles dans la section RESPONSIVE plus bas). */
.lp-nav-row { display: flex; align-items: center; gap: 32px; padding: 18px 0; }
.lp-nav-links { display: flex; gap: 12px; }
.lp-nav-links a {
  font-size: 14.5px; color: var(--fg-muted);
  padding: 8px 14px;
  border-radius: 9999px;
  transition: color .15s, background .15s;
  white-space: nowrap;
}
/* Pill chaude au survol (cf. design system Ch.6.1 — accent orange doux) */
.lp-nav-links a:hover {
  color: var(--fg-brand);
  background: var(--color-orange-50);
}
/* Accessibilité clavier — même feedback visuel + ring marine (Ch.10) */
.lp-nav-links a:focus-visible {
  outline: none;
  color: var(--fg-brand);
  background: var(--color-orange-50);
  box-shadow: 0 0 0 2px var(--focus-ring);
}
.lp-nav-cta { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.lp-link-quiet { font-size: 14.5px; color: var(--fg-muted); }


/* ============================================================================
 * 2. MOBILE BURGER MENU
 * Pattern Alpine : <body x-data="{ mobileNav: false }">
 *   <button class="lp-nav-mobile-toggle" @click="mobileNav = !mobileNav">…</button>
 *   <div   class="lp-nav-mobile-overlay" :class="{ 'is-open': mobileNav }">…</div>
 *   <aside class="lp-nav-mobile-drawer"  :class="{ 'is-open': mobileNav }">…</aside>
 * ========================================================================== */
.lp-nav-mobile-toggle {
  display: none;
  background: none;
  border: 1px solid var(--color-orange-200);
  width: 44px; height: 44px;
  border-radius: 9999px;
  align-items: center; justify-content: center;
  color: var(--fg-brand);
  cursor: pointer;
  margin-left: auto;
  font-size: 18px;
}

.lp-nav-mobile-overlay {
  position: fixed; inset: 0;
  background: rgba(8, 57, 87, 0.4);
  z-index: 60;
  display: none;
}
.lp-nav-mobile-overlay.is-open { display: block; }

.lp-nav-mobile-drawer {
  position: fixed; top: 0; right: 0; bottom: 0;
  width: 86%; max-width: 320px;
  background: #fff;
  z-index: 70;
  box-shadow: var(--shadow-2xl);
  /* padding-top à 0 : c'est le .lp-nav-mobile-head qui apporte ses 12px,
     pour que sa border-bottom s'aligne pixel-près avec celle de la topbar. */
  padding: 0 22px 24px;
  transform: translateX(100%);
  transition: transform .3s var(--ease-out);
  overflow-y: auto;
  display: flex; flex-direction: column; gap: 4px;
}
.lp-nav-mobile-drawer.is-open { transform: translateX(0); }

/* Hauteur 64px (12 + 40 + 12) pour s'aligner sur la topbar et créer un
   filet bas continu à l'ouverture du drawer. */
.lp-nav-mobile-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 0;
  margin-bottom: 8px;
  border-bottom: 1px solid var(--color-orange-100);
}
/* Bouton de fermeture — cercle marine plein avec X blanc, pattern visuel
   marqué pour bien signaler "fermer", conforme aux normes d'usage et adapté
   au public CSP- fragile face au numérique.
   Taille 40px (légèrement sous le seuil tactile WCAG 44px) pour que le bouton
   ne dépasse pas la hauteur de la topbar et que les filets bas s'alignent. */
.lp-nav-mobile-close {
  background: var(--fg-brand);
  border: none;
  cursor: pointer;
  width: 40px; height: 40px;
  border-radius: 9999px;
  color: #fff;                        /* X blanc sur fond marine */
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 16px;
  transition: background .15s, transform .15s, box-shadow .15s;
}
.lp-nav-mobile-close:hover {
  background: var(--color-b-assmat-2);
  transform: scale(1.05);
}
.lp-nav-mobile-close:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.lp-nav-mobile-drawer a {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 12px;
  font-size: 16px; color: var(--fg-default);
  border-radius: var(--radius-asym-tl) var(--radius-asym-tr) var(--radius-asym-br) var(--radius-asym-bl);
  font-weight: 400;
  transition: background .15s;
}
.lp-nav-mobile-drawer a:hover { background: var(--color-orange-50); color: var(--fg-brand); }
.lp-nav-mobile-drawer a.cta {
  margin-top: 14px;
  background: var(--fg-brand); color: #fff;
  justify-content: center;
  padding: 16px 20px;
  font-weight: 500;
}
.lp-nav-mobile-drawer a.cta:hover { background: var(--color-b-assmat-2); }


/* ============================================================================
 * 3. SECTION HEADER générique
 * Pattern :
 *   <section class="lp-sec [tinted]">
 *     <div class="container">
 *       <div class="lp-sec-head">
 *         <span class="lp-sec-eyebrow"><i class="fa-…"></i> Surtitre</span>
 *         <h2>Titre <em>en italique</em>.</h2>
 *         <p>Lead descriptif…</p>
 *       </div>
 *       …contenu page…
 *     </div>
 *   </section>
 * ========================================================================== */
.lp-sec { padding: 96px 0; }
.lp-sec.tinted {
  background: #fffaf3;
  border-top:    1px solid var(--color-orange-100);
  border-bottom: 1px solid var(--color-orange-100);
}
.lp-sec-head { text-align: center; max-width: 720px; margin: 0 auto 64px; }
.lp-sec-eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 18px; color: var(--color-orange-700); letter-spacing: .02em;
  background: var(--color-orange-50);
  padding: 6px 12px; border-radius: 9999px;
  font-weight: 500;
  margin-bottom: 18px;
}
.lp-sec-head h2 {
  font-family: var(--font-display); font-weight: 300;
  font-size: clamp(34px, 3.8vw, 50px);
  line-height: 1.1; letter-spacing: -.015em;
  color: var(--fg-brand);
  margin: 0 0 16px;
  text-wrap: balance;
}
.lp-sec-head h2 em {
  font-style: italic; font-weight: 300; color: var(--color-orange-700);
}
.lp-sec-head p {
  font-size: 17px; line-height: 1.6;
  color: var(--fg-muted);
  margin: 0;
  text-wrap: pretty;
}


/* ============================================================================
 * 4. FOOTER — fond marine identitaire
 * ========================================================================== */
.lp-footer {
  background: var(--fg-brand);
  color: #cbd9e2;
  padding: 64px 0 32px;
  text-rendering: optimizeLegibility;
}
.lp-footer-grid {
  display: grid; grid-template-columns: 1.5fr repeat(3, 1fr);
  gap: 48px; padding-bottom: 48px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.lp-footer .pitch { font-size: 14px; line-height: 1.6; margin-top: 16px; max-width: 300px; font-weight: 600;}
.lp-footer h5 {
  font-family: var(--font-sans); font-weight: 700;
  color: #fff; font-size: 14px; margin: 0 0 16px;
}
.lp-footer ul {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 10px;
}
.lp-footer ul a { font-size: 14px; color: #e0eaf0; transition: color .15s; font-weight: 600;}
.lp-footer ul a:hover { color: #fff; }
.lp-footer-bottom {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 28px;
  font-size: 13px; color: #e0eaf0; font-weight: 600;
}
.lp-footer-bottom .legal { display: flex; gap: 22px; }


/* ============================================================================
 * 5. BACK TO TOP — FAB rond marine, apparition au scroll
 * Pattern Alpine (sur <body>) :
 *   x-data="{ scrolled: false, … }"
 *   @scroll.window.passive="scrolled = window.scrollY > 400"
 * Pattern HTML :
 *   <button class="lp-back-to-top" :class="{ 'is-visible': scrolled }"
 *           @click="window.scrollTo({ top: 0, behavior: 'smooth' })"
 *           aria-label="Retour en haut de page">
 *     <i class="fa-solid fa-arrow-up"></i>
 *   </button>
 * ========================================================================== */
.lp-back-to-top {
  position: fixed;
  bottom: 24px; right: 24px;
  width: 48px; height: 48px;
  border-radius: 9999px;
  /* Disc blanc + chevron marine — visible sur fond crème ET sur footer marine */
  background: #fff;
  color: var(--fg-brand);
  border: 1px solid var(--border-warm);
  display: inline-flex;
  align-items: center; justify-content: center;
  box-shadow: var(--shadow-xl);
  cursor: pointer;
  z-index: 40;
  font-size: 16px;

  /* État caché par défaut — apparition au scroll via .is-visible */
  opacity: 0;
  transform: translateY(12px);
  pointer-events: none;
  transition:
    opacity   .25s var(--ease-out),
    transform .25s var(--ease-out),
    background .15s,
    box-shadow .15s;
}
.lp-back-to-top.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.lp-back-to-top:hover {
  background: var(--color-orange-50);
  box-shadow: var(--shadow-2xl);
  transform: translateY(0) scale(1.05);
}
.lp-back-to-top:focus-visible {
  outline: none;
  box-shadow: var(--shadow-xl), 0 0 0 3px var(--focus-ring);
}


/* ============================================================================
 * 6. PAGES ÉDITORIALES — Article / FAQ
 * ----------------------------------------------------------------------------
 * Pack partagé par toutes les pages publiques de contenu (article, FAQ,
 * et futures pages éditoriales). Promu depuis les <style> inline de
 * article.html et faq.html (factorisation 2026-05-03).
 *
 * Classes spécifiques restées en local :
 *   - .faq-* + .side-popular  → faq.html (composant accordéon spécifique)
 *
 * Vocabulaire :
 *   - .v1-layout / .v1-hero / .v1-illu  : layout 2-col + hero marine + figure
 *   - .art-bread                        : fil d'Ariane
 *   - .art-body                         : corps éditorial type prose
 *   - .art-fn-ref / .art-footnotes      : notes de bas de page numérotées
 *   - .art-info                         : info-box éditoriale
 *   - .art-cta-inline                   : CTA inline marine
 *   - .art-side                         : sidebar éditoriale
 *   - .side-ia                          : bloc IA violet
 *   - .side-card / .side-cta            : cards aside génériques
 *   - .side-reco-list                   : liste articles recommandés
 * ========================================================================== */

/* --- LAYOUT 2 colonnes : article + aside ---------------------------------- */
.v1-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  max-width: 1180px;
  margin: 0 auto;
}
@media (min-width: 1024px) {
  .v1-layout {
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 48px;
  }
}

/* --- HERO pastel chaleureux (titre + meta-row + sous-titre) ---------------
   Anciennement marine plein (#083957), retravaillé en gradient sky/cream
   le 2026-05-03 pour cohérence avec l'identité douce du DS (cf. .lp-hero
   d'index.html et cartes-titres pastel des pages privées famille/feuille). */
.v1-hero {
  background: linear-gradient(135deg, #eaf4fb 0%, #f1f7fb 50%, #fef9f3 100%);
  border: 1.5px solid #cfe3f1;
  color: var(--fg-default);
  border-radius: var(--radius-asym-tl, 24px) var(--radius-asym-tr, 8px) var(--radius-asym-br, 24px) var(--radius-asym-bl, 8px);
  padding: 36px 32px 40px;
  margin-bottom: 22px;
}
.v1-hero .meta-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px;
  font-size: 12.5px;
  color: var(--fg-soft);
  margin-bottom: 18px;
}
.v1-hero .meta-row .item { display: inline-flex; align-items: center; gap: 6px; }
.v1-hero .meta-row .sep-dot {
  display: inline-block;
  width: 4px; height: 4px;
  background: var(--fg-soft);
  opacity: 0.45;
  border-radius: 9999px;
}
.v1-hero h1 {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(36px, 4.5vw, 56px);
  line-height: 1.05;
  letter-spacing: -.018em;
  margin: 0 0 16px;
  color: var(--fg-brand);
}
.v1-hero h1 em {
  font-style: italic;
  font-weight: 400;
  color: var(--color-orange-700, #c2410c);
}
.v1-hero .subtitle {
  font-size: 15px;
  line-height: 1.6;
  color: var(--fg-default);
  max-width: 720px;
  margin: 0;
}
.v1-hero .subtitle a {
  color: var(--fg-brand);
  text-decoration: underline;
  text-underline-offset: 3px;
  transition: color .15s;
}
.v1-hero .subtitle a:hover { color: var(--color-orange-700, #c2410c); }

/* --- Fil d'Ariane --------------------------------------------------------- */
.art-bread {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--fg-soft);
  margin-bottom: 8px;
}
.art-bread a {
  color: var(--fg-brand);
  text-decoration: none;
}
.art-bread a:hover { text-decoration: underline; }
.art-bread .sep { font-size: 10px; color: var(--fg-soft); }
.art-bread .current { color: var(--fg-default); font-weight: var(--weight-medium); }

/* --- Illustration en tête (figure) ---------------------------------------- */
.v1-illu {
  margin: 24px 0 32px;
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 4px 16px rgba(8,57,87,0.08);
}
.v1-illu img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 420px;
  object-fit: cover;
}
.v1-illu figcaption {
  padding: 10px 16px;
  font-size: 12.5px;
  color: var(--fg-soft);
  background: var(--bg-surface-muted);
  font-style: italic;
}

/* --- Corps éditorial (prose) ---------------------------------------------- */
.art-body {
  font-size: 16px;
  line-height: 1.7;
  color: var(--fg-default);
}
.art-body .lead {
  font-size: 18px;
  line-height: 1.6;
  color: var(--fg-default);
  margin: 0 0 22px;
  font-weight: var(--weight-medium);
}
.art-body p {
  margin: 16px 0;
}
.art-body h2 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 24px;
  color: var(--fg-brand);
  margin: 36px 0 14px;
  line-height: 1.2;
}
.art-body h2 em {
  font-style: italic;
  font-weight: 300;
  color: var(--color-orange-700, #c2410c);
}
.art-body h3 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 18px;
  color: var(--fg-brand);
  margin: 28px 0 10px;
}
.art-body ul,
.art-body ol {
  margin: 16px 0;
  padding-left: 28px;
}
.art-body ul li,
.art-body ol li {
  margin: 8px 0;
}
.art-body strong {
  color: var(--fg-brand);
  font-weight: var(--weight-medium);
}
.art-body a {
  color: var(--fg-brand);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.art-body a:hover { color: var(--color-orange-700, #c2410c); }

/* --- Référence de note (exposant dans le texte) --------------------------- */
.art-fn-ref {
  display: inline-block;
  vertical-align: super;
  font-size: 11px;
  font-weight: var(--weight-medium);
  color: var(--color-orange-700, #c2410c);
  margin: 0 1px 0 2px;
  text-decoration: none !important;
  padding: 0 4px;
  border-radius: 9999px;
  background: var(--color-orange-50, #fff7ed);
  border: 1px solid var(--color-orange-200, #fed7aa);
  line-height: 1.6;
}
.art-fn-ref:hover {
  background: var(--color-orange-700, #c2410c);
  color: #fff !important;
}

/* --- Info-box (variante éditoriale d'alert--info) ------------------------- */
.art-info {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  padding: 16px 20px;
  background: #eff6ff;
  border: 1.5px solid #bfdbfe;
  border-radius: 12px;
  margin: 24px 0;
}
.art-info .ic {
  flex: none;
  width: 36px; height: 36px;
  border-radius: 9999px;
  background: #dbeafe;
  color: #1e40af;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
}
.art-info .body {
  flex: 1;
  font-size: 14px;
  color: var(--fg-default);
  line-height: 1.55;
}
.art-info .body strong {
  display: block;
  color: #1e40af;
  font-weight: var(--weight-medium);
  margin-bottom: 2px;
}

/* --- CTA inline (rappel CTA en milieu de contenu éditorial) --------------- */
.art-cta-inline {
  background: linear-gradient(135deg, var(--fg-brand) 0%, #0c4a6e 100%);
  color: #fff;
  border-radius: 16px;
  padding: 22px 26px;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 32px 0;
}
.art-cta-inline .text { flex: 1 1 280px; font-weight: 500;}
.art-cta-inline h4 {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 18px;
  margin: 0 0 4px;
  color: #fff;
}
.art-cta-inline p {
  font-size: 13px;
  color: rgba(255,255,255,0.85);
  margin: 0;
}
.art-cta-inline .btn-on-dark {
  background: #fff;
  color: var(--fg-brand);
  padding: 11px 18px;
  border-radius: 9999px;
  font-size: 13.5px;
  font-weight: var(--weight-medium);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.art-cta-inline .btn-on-dark:hover { background: var(--bg-surface-muted); }

/* --- Footnotes (notes & références) --------------------------------------- */
.art-footnotes {
  margin-top: 40px;
  padding-top: 24px;
  border-top: 1.5px solid var(--border-soft);
}
.art-footnotes-title {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 16px;
  color: var(--fg-brand);
  margin: 0 0 12px;
}
.art-footnotes ol {
  margin: 0;
  padding-left: 24px;
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--fg-soft);
}
.art-footnotes ol li {
  margin: 8px 0;
  padding-left: 4px;
}
.art-footnotes ol li .back {
  display: inline-block;
  margin-left: 6px;
  color: var(--color-orange-700, #c2410c);
  text-decoration: none;
  font-weight: var(--weight-medium);
}
.art-footnotes ol li .back:hover { color: var(--fg-brand); }

/* --- Documents à télécharger (bas d'article) -----------------------------
   S'insère après .art-footnotes. Chaque .art-dl-item est un <a download>
   qui présente : logo SPIP + titre + descriptif + meta (type · taille).
   Hover marqué + flèche qui glisse pour signifier l'action. */
.art-downloads {
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1.5px solid var(--border-soft);
}
.art-downloads-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 16px;
  color: var(--fg-brand);
  margin: 0 0 16px;
}
.art-downloads-title i {
  color: var(--color-green-700);
  font-size: 14px;
}
.art-downloads ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.art-dl-item {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  background: #fff;
  border: 1.5px solid var(--border-soft);
  border-radius: 12px;
  text-decoration: none;
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.art-dl-item:hover {
  background: var(--bg-surface-muted);
  border-color: var(--fg-brand);
  box-shadow: var(--shadow-sm);
}
.art-dl-item:focus-visible {
  outline: none;
  border-color: var(--fg-brand);
  box-shadow: 0 0 0 3px rgba(8, 57, 87, 0.18);
}
.art-dl-logo {
  flex: none;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.art-dl-logo img { max-width: 100%; max-height: 100%; display: block; }
.art-dl-body { flex: 1; min-width: 0; }
.art-dl-title {
  display: block;
  font-size: 14px;
  font-weight: var(--weight-medium);
  color: var(--fg-default);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.art-dl-desc {
  display: block;
  font-size: 13px;
  color: var(--fg-soft);
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.art-dl-meta {
  display: block;
  font-size: 11.5px;
  color: var(--fg-soft);
  margin-top: 4px;
}
.art-dl-meta .sep { opacity: 0.5; margin: 0 4px; }
.art-dl-arrow {
  flex: none;
  color: var(--fg-soft);
  transition: color .15s, transform .15s;
}
.art-dl-item:hover .art-dl-arrow {
  color: var(--fg-brand);
  transform: translateX(2px);
}

/* --- Sidebar éditoriale --------------------------------------------------- */
.art-side {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.side-card,
.side-ia,
.side-cta {
  background: #fff;
  border: 1.5px solid var(--border-soft);
  border-radius: 14px;
  padding: 18px 20px;
}
.side-card h4 {
  font-family: var(--font-display);
  font-weight: 500;
  font-size: 14px;
  color: var(--fg-brand);
  margin: 0 0 12px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.side-card h4 i { font-size: 13px; }
.side-card ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

/* Bloc IA — palette violette réservée */
.side-ia {
  background: linear-gradient(135deg, #f5f3ff 0%, #fffaf3 100%);
  border-color: #ddd6fe;
}
.side-ia .head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}
.side-ia .head img {
  width: 40px; height: 40px;
  border-radius: 9999px;
  object-fit: cover;
  flex: none;
}
.side-ia .head .name {
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 30px;
  color: #6d28d9;
}
.side-ia .badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 10px;
  background: #ede9fe;
  color: #6d28d9;
  border-radius: 9999px;
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-weight: var(--weight-medium);
  margin-bottom: 10px;
}
.side-ia .pitch {
  font-size: 14px;
  font-weight: var(--weight-medium);
  color: var(--fg-brand);
  margin: 0 0 6px;
  line-height: 1.4;
}
.side-ia .sub {
  font-size: 12.5px;
  color: var(--fg-soft);
  margin: 0 0 14px;
}
.side-ia .qbox {
  background: rgba(255,255,255,0.7);
  border: 1px solid #ddd6fe;
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 14px;
}
.side-ia .qbox-title {
  font-size: 11.5px;
  font-weight: var(--weight-medium);
  color: #6d28d9;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 6px;
}
.side-ia .qbox ul {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12.5px;
  color: var(--fg-default);
  font-style: italic;
}
.side-ia .btn-ia {
  display: block;
  text-align: center;
  padding: 11px 14px;
  background: #6d28d9;
  color: #fff;
  border-radius: 9999px;
  font-size: 13.5px;
  font-weight: var(--weight-medium);
  text-decoration: none;
}
.side-ia .btn-ia:hover { background: #5b21b6; }

/* Bloc Articles recommandés (article.html) */
.side-reco-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.side-reco-list a {
  display: block;
  padding: 10px 12px;
  border-radius: 8px;
  color: var(--fg-default);
  text-decoration: none;
  transition: background .12s;
}
.side-reco-list a:hover { background: var(--bg-surface-muted); }
.side-reco-list .ttl {
  font-size: 15.5px;
  font-weight: var(--weight-medium);
  color: var(--fg-brand);
  line-height: 1.4;
}
.side-reco-list .meta {
  margin-top: 4px;
  font-size: 11.5px;
  color: var(--fg-soft);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.side-reco h4 {

  font-weight: 600;
  font-size: 16px;
}
.side-reco-list .meta i { font-size: 10.5px; }

/* Bloc CTA "Essayer gratuitement" — marine */
.side-cta {
  background: linear-gradient(135deg, var(--fg-brand) 0%, #0c4a6e 100%);
  border-color: transparent;
  color: #fff;
}
.side-cta h4 {
  color: #fff;
  font-weight: 600;
  font-size: 20px;
}
.side-cta p {
  font-size: 14px;
  color: rgba(255,255,255,0.90);
  margin: 0 0 14px;
  line-height: 1.5;
  font-weight: 600;
}
.side-cta .btn-on-dark {
  display: block;
  text-align: center;
  padding: 11px 14px;
  background: #fff;
  color: var(--fg-brand);
  border-radius: 9999px;
  font-size: 13.5px;
  font-weight: var(--weight-medium);
  text-decoration: none;
}
.side-cta .btn-on-dark:hover { background: var(--bg-surface-muted); }
.side-cta .fine {
  margin-top: 8px;
  font-size: 12px;
  font-weight: 500;
  color: rgba(255,255,255,0.90);
  text-align: center;
}


/* ============================================================================
 * 6.1 FAQ (accordéon Alpine + filtres pills)
 * ----------------------------------------------------------------------------
 * Pack utilisé par : docs/newtemplate/faq.html (mockup), squelettes/rubrique=2.html (SPIP).
 * Dépendances : Alpine.js + plugin @alpinejs/collapse pour le corps repliable.
 *
 * Composants :
 *   .faq-filterbar  + .faq-pill[.is-active] (.count)  → barre de filtres
 *   .faq-cat (.disc.green/.sky/.amber/.orange) (h2) (.sub)  → header catégorie
 *   .faq-list  > .faq-item[.is-open]                   → conteneur accordéon
 *     .faq-q (.label) (.toggle)                        → titre cliquable
 *     .faq-body (x-show + x-collapse)                  → corps de réponse
 *   .faq-cta                                           → bloc final CTA
 *   .side-popular                                      → "Questions populaires" sidebar
 * Promu depuis squelettes/rubrique=2.html le 2026-05-03.
 * ========================================================================== */

/* --- Filtres pills --- */
.faq-filterbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 28px; }
.faq-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 9px 16px; border-radius: 9999px;
  font-size: 13.5px; font-weight: var(--weight-medium);
  background: #fff; color: var(--fg-default);
  border: 1.5px solid var(--border-soft); cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.faq-pill:hover { background: var(--bg-surface-muted); border-color: var(--fg-brand); }
.faq-pill.is-active {
  background: var(--fg-brand); color: #fff; border-color: var(--fg-brand);
}
.faq-pill .count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 22px; padding: 1px 7px; font-size: 11px;
  border-radius: 9999px; background: var(--bg-surface-muted); color: var(--fg-soft);
}
.faq-pill.is-active .count { background: rgba(255,255,255,0.22); color: #fff; }

/* --- Header de catégorie (4 couleurs disponibles) --- */
.faq-cat { display: flex; align-items: center; gap: 14px; margin: 36px 0 16px; }
.faq-cat .disc {
  width: 44px; height: 44px; border-radius: 9999px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 17px; flex: none;
}
.faq-cat .disc.green  { background: #d1fae5; color: #047857; }
.faq-cat .disc.sky    { background: #e0f2fe; color: #0369a1; }
.faq-cat .disc.amber  { background: #fef3c7; color: #b45309; }
.faq-cat .disc.orange { background: #fff7ed; color: #c2410c; }
.faq-cat h2 {
  font-family: var(--font-display); font-weight: 500; font-size: 20px;
  color: var(--fg-brand); margin: 0; line-height: 1.2;
}
.faq-cat .sub { display: block; font-size: 13px; color: var(--fg-soft); margin-top: 2px; }

/* --- Liste accordéon (avec x-collapse) --- */
.faq-list { display: flex; flex-direction: column; gap: 8px; }
.faq-item {
  background: #fff; border: 1.5px solid var(--border-soft);
  border-radius: 12px; overflow: hidden;
  transition: border-color .15s, box-shadow .15s;
}
.faq-item:hover { border-color: var(--fg-brand); }
.faq-item.is-open {
  border-color: var(--fg-brand);
  box-shadow: 0 4px 12px rgba(8,57,87,0.06);
}
.faq-q {
  width: 100%; display: flex; align-items: center; justify-content: space-between;
  gap: 16px; padding: 16px 20px;
  background: none; border: none; text-align: left; cursor: pointer;
  color: var(--fg-default); font-family: inherit;
  font-size: 14.5px; font-weight: var(--weight-medium);
  line-height: 1.4; transition: background .12s;
}
.faq-q:hover                    { background: var(--bg-surface-muted); }
.faq-item.is-open .faq-q        { background: var(--bg-surface-muted); }
.faq-q .label { flex: 1; }
.faq-q .toggle {
  width: 28px; height: 28px; border-radius: 9999px;
  background: var(--bg-surface-muted); color: var(--fg-brand);
  display: inline-flex; align-items: center; justify-content: center;
  flex: none; font-size: 12px;
  transition: background .12s, transform .15s;
}
.faq-item.is-open .faq-q .toggle {
  background: var(--fg-brand); color: #fff; transform: rotate(45deg);
}
.faq-body {
  padding: 6px 20px 18px;
  border-top: 1px solid var(--border-soft);
}
.faq-body p {
  font-size: 14px; line-height: 1.65;
  color: var(--fg-default); margin: 12px 0 0;
}

/* --- CTA final "Vous ne trouvez pas votre réponse ?" --- */
.faq-cta {
  background: linear-gradient(135deg, #eaf4fb 0%, #f1f7fb 50%, #fef9f3 100%);
  border: 1.5px solid #cfe3f1;
  border-radius: var(--radius-asym-tl, 24px) var(--radius-asym-tr, 8px) var(--radius-asym-br, 24px) var(--radius-asym-bl, 8px);
  padding: 32px; text-align: center; margin-top: 40px;
}
.faq-cta .ic-wrap {
  width: 64px; height: 64px; border-radius: 9999px;
  background: var(--color-blue-100, #dbeafe);
  display: inline-flex; align-items: center; justify-content: center;
  margin-bottom: 16px;
}
.faq-cta .ic-wrap i { color: var(--color-blue-600, #2563eb); font-size: 24px; }
.faq-cta h3 {
  font-family: var(--font-display); font-weight: 500; font-size: 20px;
  color: var(--fg-brand); margin: 0 0 10px;
}
.faq-cta p { font-size: 14px; color: var(--fg-default); margin: 0 0 22px; }

/* --- Liste "Questions populaires" (sidebar) --- */
.side-popular ul li a {
  display: block; padding: 10px 12px; border-radius: 8px;
  color: var(--fg-default); text-decoration: none;
  font-size: 13px; line-height: 1.45; transition: background .12s;
}
.side-popular ul li a:hover { background: var(--bg-surface-muted); color: var(--fg-brand); }
.side-popular ul li a .cat {
  display: block; margin-top: 3px; font-size: 10.5px;
  color: var(--fg-soft); text-transform: uppercase;
  letter-spacing: 0.04em; font-weight: var(--weight-medium);
}


/* ============================================================================
 * 7. RESPONSIVE — header / drawer / sections / footer / back-to-top
 * ========================================================================== */
@media (max-width: 1024px) {
  /* NAV : on bascule du menu inline au burger drawer */
  .lp-nav-links     { display: none; }
  .lp-link-quiet    { display: none; }
  .lp-nav-mobile-toggle { display: inline-flex; width: 40px; height: 40px; }

  /* TOPBAR mobile : alignée sur la version privée (hauteur 64px, padding 16px).
     - Surcharge le padding horizontal du .container parent (22px → 16px effective)
       en lui donnant son propre padding horizontal positif.
     - Logo réduit pour ratio cohérent (image 28px / texte 17px) au lieu du
       standard 40px / 22px hérité de .lp-brand. */
  .container.lp-nav-row {
    padding: 12px 16px;
  }
  .lp-nav .lp-brand {
    font-size: 17px;
    gap: 8px;
  }
  .lp-nav .lp-brand img { height: 28px; }

  /* FOOTER : 4 colonnes → 2 */
  .lp-footer-grid { grid-template-columns: 1fr 1fr; gap: 36px; }
}

@media (max-width: 720px) {
  /* SECTIONS : padding réduit, h2 plus compact */
  .lp-sec       { padding: 64px 0; }
  .lp-sec-head  { margin-bottom: 40px; }
  .lp-sec-head h2 { font-size: 30px !important; }

  /* FOOTER : 2 colonnes → 1 ; bottom row empilé */
  .lp-footer-grid    { grid-template-columns: 1fr; }
  .lp-footer-bottom  { flex-direction: column; gap: 14px; }

  /* BACK TO TOP : plus collé au bord pour libérer de la place sur petit écran */
  .lp-back-to-top { bottom: 16px; right: 16px; }
}


/* Décalage pour les ancres internes — compense la hauteur du header fixe.
   Évite que les ancres SPIP (notes, titres) atterrissent sous le header. */
html { scroll-padding-top: 80px; }

@media (max-width: 768px) {
  html { scroll-padding-top: 64px; }
}


/* ===========================================================================
 * PAGE TARIFS (T9.10) — segmented control mensuel/annuel + bloc essai
 * ---------------------------------------------------------------------------
 * Composant indépendant du Tailwind compilé.
 * Tokens DS : --color-b-assmat, --border-warm, --shadow-md, --radius-asym.
 * =========================================================================== */

/* Segmented control */
.tarifs-toggle {
  display: inline-flex;
  align-items: center;
  margin: 0 auto 2rem;
  padding: 4px;
  background: var(--bg-surface-muted, #f3f4f6);
  border: 1px solid var(--border-warm, #e5e7eb);
  border-radius: 999px;
  gap: 2px;
}
.tarifs-toggle-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.55rem 1.4rem;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--color-b-assmat, #083957);
  background: transparent;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
}
.tarifs-toggle-btn:hover { background: rgba(8, 57, 87, 0.06); }
.tarifs-toggle-btn.is-active {
  background: var(--color-b-assmat, #083957);
  color: #fff;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.18);
}
.tarifs-toggle-btn.is-active:hover { background: var(--color-b-assmat-2, #062b42); }
.tarifs-toggle-badge {
  background: #fbbf24;
  color: #78350f;
  padding: 0.15rem 0.55rem;
  border-radius: 999px;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.tarifs-toggle-btn.is-active .tarifs-toggle-badge {
  background: #f59e0b;
  color: #fff;
}

/* Centrage du segmented sur la page */
[role="tablist"].tarifs-toggle {
  display: flex;
  margin-left: auto;
  margin-right: auto;
  width: fit-content;
}

/* ─────────────────────────────────────────────────────────────────────────
 * Bloc essai 1 € — fond marqué + bandeau avec pastille (engageant)
 * ───────────────────────────────────────────────────────────────────────── */

.bloc-essai-tarifs {
  max-width: 800px;
  margin: 2.5rem auto 0;
  background: linear-gradient(135deg, #fff7ed 0%, #fef3c7 100%);
  border: 1px solid #fcd34d;
  border-radius: var(--radius-asym, 18px);
  box-shadow: var(--shadow-md, 0 4px 12px rgba(0, 0, 0, 0.06));
  padding: 1.75rem 2rem;
  position: relative;
  overflow: hidden;
}
.bloc-essai-tarifs::before {
  content: "";
  position: absolute;
  top: -50px; right: -50px;
  width: 180px; height: 180px;
  background: rgba(251, 191, 36, 0.18);
  border-radius: 50%;
  pointer-events: none;
}
.bloc-essai-tarifs-bandeau {
  position: relative;
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1rem;
}
.bloc-essai-tarifs-pastille {
  flex-shrink: 0;
  width: 52px; height: 52px;
  background: var(--color-b-assmat, #083957);
  color: #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  box-shadow: 0 4px 10px rgba(8, 57, 87, 0.25);
}
.bloc-essai-tarifs-titre { flex: 1; min-width: 0; }
.bloc-essai-tarifs-eyebrow {
  font-size: 0.72rem;
  color: #92400e;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
  margin: 0 0 0.15rem;
}
.bloc-essai-tarifs-titre h3 {
  font-family: inherit;
  font-weight: 500;
  font-size: 1.35rem;
  color: var(--color-b-assmat, #083957);
  margin: 0;
}
.bloc-essai-tarifs-prix { text-align: right; flex-shrink: 0; }
.bloc-essai-tarifs-prix-label {
  font-size: 0.7rem;
  color: #92400e;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin: 0;
}
.bloc-essai-tarifs-prix-valeur {
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--color-b-assmat, #083957);
  margin: 0;
  line-height: 1;
}
.bloc-essai-tarifs-desc {
  position: relative;
  font-size: 0.93rem;
  color: #4b5563;
  margin: 1rem 0 1.25rem;
}
.bloc-essai-tarifs-desc ul {
  margin: 0.5rem 0;
  padding-left: 1.2rem;
  list-style: disc;
}
.bloc-essai-tarifs-desc li { margin: 0.25rem 0; }
.bloc-essai-tarifs-cta {
  position: relative;
  text-align: center;
  margin-top: 1rem;
}
.bloc-essai-tarifs-meta {
  margin: 0.6rem 0 0;
  font-size: 0.78rem;
  color: #6b7280;
}

@media (max-width: 600px) {
  .bloc-essai-tarifs { padding: 1.25rem; }
  .bloc-essai-tarifs-bandeau { flex-wrap: wrap; }
  .bloc-essai-tarifs-prix { text-align: left; width: 100%; }
}