/* ============================================================================
 * HappyNeuron — Theme styles
 * Tokens + block styles + utilities issus du Design System (Figma Component HN).
 *
 * CONVENTIONS DE NAMING (cf. docs/audit-pixel-perfect-allinone.md) :
 *
 * 1. Préfixe `.hn-*` pour TOUS les éléments du design system HN.
 *
 * 2. Variants couleur des cards (skins Figma) → en FRANÇAIS pour matcher
 *    directement les variants Figma "Blanc / Beige / Bleu" :
 *      .hn-callout-card--blanc, .hn-product-card--beige, .hn-team-card--bleu, etc.
 *
 * 3. Modifiers transversaux atomiques (taille, style, état) → en ANGLAIS :
 *      .hn-btn--lg, .hn-btn--dark, .hn-btn--white-outline
 *      .hn-h1, .hn-h2-script
 *      .hn-badge--cyan, .hn-stat--on-dark
 *
 * 4. BEM strict pour les éléments internes : .hn-card__title, .hn-card__body
 *
 * 5. Couleurs : toujours via tokens `var(--wp--preset--color--*)`.
 *    Exceptions documentées : rgba pour translucent, color-mix pour hover states.
 *
 * 6. Toutes les cards molecules ont un contour brushed via filter SVG
 *    (#hn-roughen injecté en wp_footer dans functions.php).
 * ========================================================================== */

:root {
    --hn-radius-sm: 4px;
    --hn-radius-md: 8px;
    --hn-radius-lg: 16px;
    --hn-radius-full: 9999px;

    --hn-shadow-sm: 0 1px 2px rgb(15 23 42 / 8%);
    --hn-shadow-md: 0 12px 30px rgb(15 23 42 / 10%);
    --hn-shadow-lg: 0 24px 60px rgb(15 23 42 / 14%);

    --hn-transition: 200ms cubic-bezier(0.4, 0, 0.2, 1);

    --hn-focus-ring: 0 0 0 3px color-mix(in srgb, var(--wp--preset--color--primary) 35%, transparent);
}

/* ------------------------------------------------------------------ Base    */

body {
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

.wp-site-blocks {
    overflow-x: clip;
}

/* Accessibilité — focus visible cohérent */
:where(a, button, .wp-block-button__link, input, select, textarea):focus-visible {
    outline: none;
    box-shadow: var(--hn-focus-ring);
    border-radius: var(--hn-radius-sm);
}

/* ------------------------------------------------------------- Sections     */

.hn-section,
.is-style-hn-section-muted,
.is-style-hn-section-dark,
.is-style-hn-section-primary {
    padding-block: clamp(3rem, 7vw, 6rem);
}

.is-style-hn-section-muted {
    background: var(--wp--preset--color--surface-muted);
}

.is-style-hn-section-dark {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}

.is-style-hn-section-dark :is(h1, h2, h3, h4, h5, h6) {
    color: var(--wp--preset--color--surface);
}

.is-style-hn-section-primary {
    background: var(--wp--preset--color--primary);
    color: var(--wp--preset--color--surface);
}

.is-style-hn-section-primary :is(h1, h2, h3, h4, h5, h6) {
    color: var(--wp--preset--color--surface);
}

/* Alias historique — à supprimer une fois les patterns migrés. */
.hn-section-muted { background: var(--wp--preset--color--surface-muted); }

/* ============================================================================
 * LEGACY — Classes block styles Storybook (.is-style-hn-*)
 *
 * Utilisées par les patterns Gutenberg historiques :
 *   - is-style-hn-card           → card-grid-3-colonnes, checklist-promesse, split-layout
 *   - is-style-hn-section-dark   → cta-block-primary, stat-bar-preuves
 *   - is-style-hn-section-muted  → page-hero-avec-badge
 *   - is-style-hn-button-accent  → cta-primary, cta-block-primary
 *   - is-style-hn-button-inverse → cta-block-primary
 *   - is-style-hn-badge-primary  → page-hero-avec-badge
 *   - is-style-hn-kicker         → split-layout-texte-visuel
 *
 * → CONSERVÉS pour ne pas casser les patterns existants. Migration progressive
 * vers les classes .hn-* atomiques quand chaque pattern sera refondu pixel-perfect.
 * ========================================================================== */

/* ------------------------------------------------------------- Cards        */

/* Base partagée pour les cards génériques (Storybook legacy) */
.hn-card,
.is-style-hn-card,
.is-style-hn-card-bordered,
.is-style-hn-card-elevated {
    background: var(--wp--preset--color--surface);
    border-radius: var(--hn-radius-lg);
    padding: var(--wp--preset--spacing--6);
    transition: box-shadow var(--hn-transition), transform var(--hn-transition);
    border: 1px solid var(--wp--preset--color--border);
    box-shadow: var(--hn-shadow-sm);
}

.is-style-hn-card-bordered {
    border-color: var(--wp--preset--color--border-strong);
    box-shadow: none;
}

.is-style-hn-card-elevated {
    border-color: transparent;
    box-shadow: var(--hn-shadow-md);
}

.hn-card:hover,
.is-style-hn-card:hover,
.is-style-hn-card-elevated:hover {
    box-shadow: var(--hn-shadow-lg);
    transform: translateY(-2px);
}

/* ------------------------------------------------------------- Buttons      */

.wp-block-button__link {
    transition:
        transform var(--hn-transition),
        box-shadow var(--hn-transition),
        background-color var(--hn-transition),
        border-color var(--hn-transition),
        color var(--hn-transition);
}

.wp-block-button__link:hover {
    transform: translateY(-1px);
    box-shadow: var(--hn-shadow-sm);
}

.is-style-hn-button-accent .wp-block-button__link {
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
}

.is-style-hn-button-accent .wp-block-button__link:hover {
    background: var(--wp--preset--color--accent-hover);
}

.is-style-hn-button-ghost .wp-block-button__link {
    background: transparent;
    color: var(--wp--preset--color--primary);
    border: 1px solid transparent;
}

.is-style-hn-button-ghost .wp-block-button__link:hover {
    background: color-mix(in srgb, var(--wp--preset--color--primary) 8%, transparent);
}

.is-style-hn-button-link .wp-block-button__link {
    background: transparent;
    color: var(--wp--preset--color--primary);
    padding: 0;
    text-decoration: underline;
    box-shadow: none !important;
}

.is-style-hn-button-link .wp-block-button__link:hover {
    color: var(--wp--preset--color--primary-hover);
    transform: none;
}

.is-style-hn-button-icon .wp-block-button__link {
    width: 2.5rem;
    height: 2.5rem;
    padding: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--hn-radius-full);
}

.is-style-hn-button-inverse .wp-block-button__link {
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
}

.is-style-hn-button-inverse .wp-block-button__link:hover {
    background: var(--wp--preset--color--surface-muted);
}

/* ============================================================================
 * BADGE (atomic) — Figma Component HN, Badge (9:301)
 *
 * 4 variants : Cyan (accent), Brand (dark), Blanc (white), Glass (semi-transp).
 * Specs : padding 2px 10px, border-radius 4px, Montserrat Medium 16px/24
 * sizing hug content (inline-flex).
 *
 * Usage : <span class="hn-badge hn-badge--cyan">Populaire</span>
 * ========================================================================== */

.hn-badge {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 4px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    white-space: nowrap;
    /* Couleur par défaut = Cyan (la plus utilisée — Pricing Populaire) */
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
}

.hn-badge--cyan {
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
}

.hn-badge--brand {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--paper);
}

.hn-badge--white {
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
}

.hn-badge--glass {
    background: rgba(255, 255, 255, 0.3);
    color: var(--wp--preset--color--brand-dark);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

/* DEPRECATED — anciens block styles Storybook, conservés pour compat */
.is-style-hn-badge-neutral {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 4px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    background: var(--wp--preset--color--surface-muted);
    color: var(--wp--preset--color--foreground);
}
.is-style-hn-badge-primary { /* alias --brand */
    display: inline-flex; align-items: center; padding: 2px 10px;
    border-radius: 4px; font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500; font-size: 16px; line-height: 24px;
    background: var(--wp--preset--color--brand-dark); color: var(--wp--preset--color--paper);
}
.is-style-hn-badge-accent { /* alias --cyan */
    display: inline-flex; align-items: center; padding: 2px 10px;
    border-radius: 4px; font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500; font-size: 16px; line-height: 24px;
    background: var(--wp--preset--color--accent); color: var(--wp--preset--color--brand-dark);
}
.is-style-hn-badge-success {
    display: inline-flex; align-items: center; padding: 2px 10px;
    border-radius: 4px; font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500; font-size: 16px; line-height: 24px;
    background: color-mix(in srgb, var(--wp--preset--color--success) 14%, white);
    color: var(--wp--preset--color--success);
}

/* ------------------------------------------------------------- Kicker       */

.is-style-hn-kicker,
.hn-kicker {
    color: var(--wp--preset--color--primary);
    font-size: var(--wp--preset--font-size--caption);
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    margin-bottom: var(--wp--preset--spacing--2);
}

/* ============================================================================
 * HEADER V2 — Component HN (37:8746 / 37:8804)
 *
 * Pill compacte sticky : logo + Se connecter + hamburger.
 * Overlay menu en bottom-sheet/dropdown sur fond paper #f7f3eb.
 * ========================================================================== */

.hn-header {
    position: sticky;
    top: 0;
    z-index: 60;
    padding-block: 16px;
    pointer-events: none; /* laisse passer les clics hors pills */
}

.hn-header__inner {
    max-width: 1280px;
    margin-inline: auto;
    padding-inline: clamp(16px, 4vw, 80px);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    pointer-events: none;
}

.hn-pill {
    pointer-events: auto;
    background: rgba(247, 243, 235, 0.7); /* paper @70% (Figma) */
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    border-radius: 58px;
    box-shadow: 0 2px 12px rgb(15 23 42 / 6%);
    display: inline-flex;
    align-items: center;
    border: 0;
    font: inherit;
    color: inherit;
}

.hn-pill--main {
    gap: 16px;
    padding: 8px 8px 8px 16px;
}

.hn-pill--burger {
    cursor: pointer;
    width: 70px;
    height: 68px;
    justify-content: center;
    transition: background 200ms ease;
}

.hn-pill--burger:hover {
    background: color-mix(in srgb, var(--wp--preset--color--paper) 80%, #000);
}

.hn-pill__logo {
    display: flex;
    align-items: center;
    text-decoration: none;
}

.hn-pill__logo img {
    /* Figma : logo 130×43 ; pas de height forcé, on laisse les dimensions du SVG */
    height: 43px;
    width: auto;
    display: block;
}

/* ============================================================================
 * MINI-CART (icône header + tiroir off-canvas)
 * ========================================================================== */
.hn-pill__cart {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
    transition: background 200ms ease;
}
.hn-pill__cart:hover { background: color-mix(in srgb, var(--wp--preset--color--paper) 70%, #000); }
.hn-pill__cart-count {
    position: absolute;
    top: 2px;
    right: 0;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9999px;
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 11px;
    line-height: 18px;
    text-align: center;
    box-sizing: border-box;
}
.hn-cart-count.is-empty { display: none; }
/* AC 30258 : masquer tout le picto panier fixe tant que le panier est vide. */
.hn-pill__cart:has(.hn-cart-count.is-empty) { display: none; }

/* Tiroir off-canvas */
/* Message « règle panier » (offre déjà au panier…) — centré + poids 500,
   affiché au clic via #hn-cart-toast (AC 30277). */
.hn-cart-rule-msg {
    display: block;
    text-align: center;
    font-weight: 500;
}

#hn-cart-toast {
    position: fixed;
    top: 96px;
    left: 50%;
    transform: translateX(-50%) translateY(-12px);
    z-index: 1100;
    width: max-content;
    max-width: min(900px, 92vw);
    padding: 16px 48px 16px 24px;
    background: #fdecef;
    border: 1px solid #e6b3bd;
    color: #7a2230;
    border-radius: 16px;
    box-shadow: var(--hn-shadow-md, 0 12px 32px rgba(18, 0, 50, 0.18));
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms ease, transform 200ms ease;
}

#hn-cart-toast.hn-cart-toast--open {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
}

#hn-cart-toast .hn-cart-toast__body a {
    color: inherit;
    font-weight: 700;
    text-decoration: underline;
}

#hn-cart-toast .hn-cart-toast__close {
    position: absolute;
    top: 8px;
    right: 12px;
    background: none;
    border: 0;
    font-size: 22px;
    line-height: 1;
    color: inherit;
    cursor: pointer;
    opacity: 0.7;
}

#hn-cart-toast .hn-cart-toast__close:hover {
    opacity: 1;
}

@media (max-width: 600px) {
    #hn-cart-toast {
        top: 80px;
        max-width: 94vw;
    }
}

.hn-cart-drawer {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(18, 0, 50, 0.4);
    opacity: 0;
    transition: opacity 250ms ease;
    display: flex;
    justify-content: flex-end;
    pointer-events: auto; /* ré-active les clics (le header parent est pointer-events:none) */
}
.hn-cart-drawer[hidden] { display: none; }
.hn-cart-drawer--open { opacity: 1; }
.hn-cart-drawer__panel {
    width: min(420px, 100vw);
    height: 100%;
    background: var(--wp--preset--color--surface);
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 250ms ease;
    box-shadow: -12px 0 40px rgba(18, 0, 50, 0.18);
}
.hn-cart-drawer--open .hn-cart-drawer__panel { transform: translateX(0); }
.hn-cart-drawer__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 24px 28px;
    border-bottom: 1px solid var(--wp--preset--color--paper);
}
.hn-cart-drawer__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 20px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-cart-drawer__close {
    border: 0;
    background: none;
    cursor: pointer;
    display: inline-flex;
    padding: 4px;
}
.hn-cart-drawer__body {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 24px 28px;
}

/* Contenu mini-cart WooCommerce */
.hn-cart-drawer__body .woocommerce-mini-cart {
    list-style: none;
    margin: 0 0 16px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.hn-cart-drawer__body .woocommerce-mini-cart-item {
    position: relative;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 12px;
    padding: 0 32px 16px 0;
    border-bottom: 1px solid var(--wp--preset--color--paper);
}
/* lien produit = miniature + nom */
.hn-cart-drawer__body .woocommerce-mini-cart-item > a:not(.remove) {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    gap: 12px;
    min-width: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 1.3;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
}
.hn-cart-drawer__body .woocommerce-mini-cart-item img {
    flex: none;
    width: 56px;
    height: 56px;
    border-radius: 10px;
    object-fit: cover;
    margin: 0;
}
/* prix / quantité : sous le titre, aligné après la miniature (56 + 12) */
.hn-cart-drawer__body .woocommerce-mini-cart-item .quantity {
    flex: 0 0 100%;
    margin-left: 68px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 14px;
    color: var(--wp--preset--color--muted-text);
}
.hn-cart-drawer__body .woocommerce-mini-cart-item a.remove {
    position: absolute;
    top: 0;
    right: 0;
    width: 22px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--wp--preset--color--muted-text) !important;
    font-size: 20px;
    line-height: 1;
    text-decoration: none;
}
.hn-cart-drawer__body .woocommerce-mini-cart-item a.remove:hover {
    background: var(--wp--preset--color--paper);
    color: var(--wp--preset--color--brand-dark) !important;
}
.hn-cart-drawer__body .woocommerce-mini-cart__total {
    display: flex;
    justify-content: space-between;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 16px;
    color: var(--wp--preset--color--brand-dark);
    margin: 0 0 20px;
}
.hn-cart-drawer__body .woocommerce-mini-cart__buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 0;
}
.hn-cart-drawer__body .woocommerce-mini-cart__buttons .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 48px;
    border-radius: 9999px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    text-decoration: none;
    border: 2px solid var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--brand-dark);
    background: transparent;
}
.hn-cart-drawer__body .woocommerce-mini-cart__buttons .button.checkout,
.hn-cart-drawer__body .woocommerce-mini-cart__buttons .button.wc-forward:last-child {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}
.hn-cart-drawer__body .woocommerce-mini-cart__empty-message {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    color: var(--wp--preset--color--muted-text);
}

/* ============================================================================
 * TEXT (atomic) — Figma Component HN, Text (113:596)
 *
 * 20 variants typo : titres H1→H4 × 2 familles (Montserrat + Mynerve manuscrit)
 * + 3 niveaux mobile × 2 familles + Body (regular/bold/manuscrit) + CTA/Note.
 *
 * Usage :
 *   <h1 class="hn-h1">…</h1>
 *   <h2 class="hn-h2">Comparer <span class="hn-h2-script">en détails</span></h2>
 *   <p class="hn-body">…</p>
 *   <p class="hn-body hn-body--bold">…</p>
 *   <p class="hn-note">Suivez-nous</p>
 *
 * Responsive : auto-switch desktop → mobile sizes à @media (max-width: 768px).
 * ========================================================================== */

/* --- Titres desktop ---------------------------------------------------------- */

.hn-h1, .hn-h2, .hn-h3, .hn-h4 {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    color: var(--wp--preset--color--brand-dark);
    margin: 0;
}

.hn-h1 { font-size: 70px; line-height: 65px; }
.hn-h2 { font-size: 50px; line-height: 50px; }
.hn-h3 { font-size: 40px; line-height: 48px; }
.hn-h4 { font-size: 30px; line-height: 1.2; }

/* --- Titres manuscrits (Mynerve, en inline span ou heading complet) --------- */

.hn-h1-script, .hn-h2-script, .hn-h3-script, .hn-h4-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    color: var(--wp--preset--color--brand-dark);
}

.hn-h1-script { font-size: 75px; line-height: 65px; }
.hn-h2-script { font-size: 55px; line-height: 55px; }
.hn-h3-script { font-size: 45px; line-height: 46px; }
.hn-h4-script { font-size: 35px; line-height: 1.2; }

/* --- Body texts ------------------------------------------------------------- */

.hn-body, .hn-body-bold, .hn-body-script {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    margin: 0;
    color: var(--wp--preset--color--brand-dark);
}

.hn-body              { font-weight: 400; font-size: 18px; line-height: 25px; }
.hn-body--bold,
.hn-body-bold         { font-weight: 700; font-size: 18px; line-height: 25px; }
.hn-body-script       { font-family: 'Mynerve', cursive; font-weight: 400; font-size: 22px; line-height: 1.15; }

/* --- CTA / Note (petits textes UI) ----------------------------------------- */

.hn-cta, .hn-cta-bold, .hn-note {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    margin: 0;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cta      { font-weight: 500; font-size: 15px; line-height: 17.16px; }
.hn-cta-bold { font-weight: 600; font-size: 15px; line-height: 17.16px; }
.hn-note     {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
}

/* --- Responsive : sizes mobile Figma à <= 768px ----------------------------- */

@media (max-width: 768px) {
    .hn-h1 { font-size: 40px; line-height: 37px; letter-spacing: -0.05em; }
    .hn-h2 { font-size: 36px; line-height: 34px; letter-spacing: -0.0556em; }
    .hn-h3 { font-size: 24px; line-height: 26px; }
    .hn-h4 { font-size: 22px; line-height: 1.2; }

    .hn-h1-script { font-size: 45px; line-height: 48px; letter-spacing: -0.0444em; }
    .hn-h2-script { font-size: 40px; line-height: 30px; }
    .hn-h3-script { font-size: 32px; line-height: 35px; }
}

/* ============================================================================
 * SOMMAIRE / TOC (molecule) — Figma Component HN Sommaire (194:3048)
 *  + Texte Sommaire (atome ligne, 193:1293)
 *
 * Container sticky de table of content pour pages article :
 *  - Fond paper #F7F3EB
 *  - Border-radius 24px
 *  - Padding 30, column gap 14
 *  - Width recommandé 299px (sticky sidebar)
 *
 * Chaque ligne `.hn-toc__link` = row align-items center, gap 13 :
 *  - Default : Montserrat Regular 15/22.32 -1.2%, brand-dark, sans puce
 *  - Active  : Montserrat Medium 15/22.32 -1.2%, brand-dark, + puce ellipse 7×7 cyan
 *
 * Usage :
 *   <nav class="hn-toc" aria-label="Sommaire">
 *     <ol class="hn-toc__list">
 *       <li><a class="hn-toc__link" href="#section-1">Les notes standard</a></li>
 *       <li><a class="hn-toc__link hn-toc__link--active" href="#section-2"><span class="hn-toc__bullet"></span>Percentiles</a></li>
 *     </ol>
 *   </nav>
 * ========================================================================== */

.hn-toc {
    background: var(--wp--preset--color--paper);
    border-radius: 24px;
    padding: 30px;
    box-sizing: border-box;
    width: 100%;
    max-width: 299px;
}

.hn-toc__list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.hn-toc__link {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 13px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 22.32px;
    letter-spacing: -0.012em;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
    transition: color 200ms ease;
}

.hn-toc__link:hover {
    color: var(--wp--preset--color--primary);
}

.hn-toc__link--active {
    font-weight: 500;
}

.hn-toc__bullet {
    flex-shrink: 0;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--wp--preset--color--accent);
    display: inline-block;
}

/* Mobile : ouvert = pleine largeur sous header, fermé = bare collapsible */
@media (max-width: 768px) {
    .hn-toc {
        max-width: 100%;
        border-radius: 24px 24px 0 0;
    }
}

/* ============================================================================
 * NAVIGATION MOLECULES — composants utilitaires de navigation
 *
 * Distincts du système .hn-btn classique :
 *  - .hn-icon-toggle  : bouton icon-only 44×44 (Figma button/dropdown-box 57:3341)
 *  - .hn-back-link    : "← Back" (Figma button/back-menu-button 57:3354)
 *  - .hn-search       : input search field (Figma Search 90:318)
 *  - .hn-icon-badge   : pill icon + counter (Figma compte 94:1481)
 *  - .hn-breadcrumb   : fil d'ariane (Figma 95:2767)
 * ========================================================================== */

/* ----- 1. Icon toggle (dropdown-box) -------------------------------------- */
.hn-icon-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    padding: 8px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.3);
    border: 0;
    cursor: pointer;
    color: var(--wp--preset--color--brand-dark);
    transition: background 200ms ease;
}

.hn-icon-toggle:hover {
    background: rgba(255, 255, 255, 0.5);
}

.hn-icon-toggle--solid {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}
.hn-icon-toggle--solid:hover {
    background: #1f0a4d;
}

.hn-icon-toggle svg {
    width: 19px;
    height: 19px;
    display: block;
}

/* ----- 2. Back link (← Back, Mynerve) ------------------------------------- */
.hn-back-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    text-decoration: none;
    color: var(--wp--preset--color--brand-dark);
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
    transition: opacity 200ms ease;
}

.hn-back-link:hover {
    opacity: 0.7;
}

.hn-back-link__icon {
    display: inline-flex;
    width: 24px;
    height: 24px;
    line-height: 0;
}

/* ----- 3. Search input (Figma 90:318) ------------------------------------- */
.hn-search {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 40px;
    padding: 0 16px;
    border: 1.5px solid #E8E8E8;
    border-radius: 9999px;
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
    transition: border-color 200ms ease;
    box-sizing: border-box;
}

.hn-search:focus-within,
.hn-search--active {
    border-color: var(--wp--preset--color--brand-dark);
}

.hn-search__icon {
    display: inline-flex;
    width: 16px;
    height: 16px;
    line-height: 0;
    color: var(--wp--preset--color--brand-dark);
    flex-shrink: 0;
}

.hn-search__input {
    border: 0;
    background: transparent;
    outline: none;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 13px;
    color: var(--wp--preset--color--brand-dark);
    flex: 1 1 auto;
    min-width: 0;
}

.hn-search__input::placeholder {
    color: #E8E8E8;
}

/* ----- 4. Icon badge (notification counter) ------------------------------- */
.hn-icon-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 12px 20px;
    background: #F0F0F0;
    border-radius: 62px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 14px;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
}

.hn-icon-badge__icon {
    display: inline-flex;
    width: 20px;
    height: 20px;
    line-height: 0;
}

.hn-icon-badge__count {
    font-variant-numeric: tabular-nums;
    min-width: 1ch;
    text-align: center;
}

/* ----- 5. Breadcrumb (fil d'ariane) ---------------------------------------- */
.hn-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    list-style: none;
    padding: 0;
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 17.16px;
    color: rgba(0, 0, 0, 0.6);
}

.hn-breadcrumb__item {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.hn-breadcrumb__link {
    color: rgba(0, 0, 0, 0.6);
    text-decoration: none;
    transition: color 200ms ease;
}

.hn-breadcrumb__link:hover {
    color: var(--wp--preset--color--brand-dark);
}

.hn-breadcrumb__separator {
    display: inline-flex;
    color: rgba(0, 0, 0, 0.4);
    line-height: 0;
}

.hn-breadcrumb__current {
    color: var(--wp--preset--color--brand-dark);
    font-weight: 500;
}

/* ============================================================================
 * CHECKITEM (atomic) — Figma Component HN, Checkitem (10:359)
 *
 * 4 variants : Check bleu, Check blanc (sur fond dark), Croix bleu, Croix blanc.
 * Structure : row flex, gap 15px, icon 24×24 + label Body/body 18/25.
 *
 * Usage :
 *   <li class="hn-checkitem hn-checkitem--check">
 *     <span class="hn-checkitem__icon"><?php echo hn_icon('check'); ?></span>
 *     <span class="hn-checkitem__label">Accès aux logiciels</span>
 *   </li>
 * ========================================================================== */

.hn-checkitem {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-checkitem__icon {
    flex-shrink: 0;
    display: inline-flex;
    width: 24px;
    height: 24px;
    line-height: 0;
    align-items: center;
    justify-content: center;
    color: var(--wp--preset--color--brand-dark);
}

.hn-checkitem__icon svg {
    width: 100%;
    height: 100%;
    display: block;
}

.hn-checkitem__label {
    flex: 1 1 auto;
}

/* Variants couleur — icon color & label color */
.hn-checkitem--check  { color: var(--wp--preset--color--brand-dark); }
.hn-checkitem--check  .hn-checkitem__icon { color: var(--wp--preset--color--brand-dark); }
.hn-checkitem--cross  { color: var(--wp--preset--color--muted-text); }
.hn-checkitem--cross  .hn-checkitem__icon { color: var(--wp--preset--color--muted-text); }

/* Variants "blanc" — pour fond sombre */
.hn-checkitem--check-blanc { color: var(--wp--preset--color--surface); }
.hn-checkitem--check-blanc .hn-checkitem__icon { color: var(--wp--preset--color--surface); }
.hn-checkitem--cross-blanc { color: rgba(255, 255, 255, 0.5); }
.hn-checkitem--cross-blanc .hn-checkitem__icon { color: rgba(255, 255, 255, 0.5); }

/* Variant "check-cyan" — utilisé dans BeforeAfter Card côté Après */
.hn-checkitem--check-cyan .hn-checkitem__icon { color: var(--wp--preset--color--accent); }

/* ============================================================================
 * BRUSHED BORDER — utilitaire de contour "au pinceau"
 *
 * Reproduit la signature graphique HN (cohérente avec Mynerve cursive) :
 * bordure texturée brushed obtenue via SVG filter <feTurbulence> +
 * <feDisplacementMap> (filter défini dans functions.php / wp_footer).
 *
 * Usage : ajouter la classe `.hn-brushed-border` sur un container ; un
 * pseudo-element ::before dessine le contour, le filter le roughit.
 *
 * Surcharger l'épaisseur / couleur du contour via custom props :
 *   --hn-brushed-color  (défaut: brand-dark)
 *   --hn-brushed-width  (défaut: 3px)
 *   --hn-brushed-radius (défaut: 24px)
 *
 * NOTE : Les cards molecules (Pricing, Callout, Event, Ressource, Solution,
 * Team, Testimonial, Card Photo, Product, BeforeAfter side, Timeline card)
 * ont leur propre ::before inline (avec custom props local) pour permettre
 * un radius spécifique par card. À TERME, on pourra les migrer vers cette
 * classe utilitaire en ajoutant `.hn-brushed-border` à leur HTML — réduit
 * ~120 lignes de CSS dupliqué. Migration progressive lors des refontes.
 *
 * → Utiliser `.hn-brushed-border` pour TOUS les futurs organisms / containers
 * qui doivent avoir le contour signature HN.
 * ========================================================================== */

.hn-brushed-border {
    position: relative;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-brushed-border::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

/* Fallback Safari/anciens navigateurs : si filter:url() n'est pas supporté,
   le border reste solide mais avec border-radius — visible, lisible */
@supports not (filter: url(#hn-roughen)) {
    .hn-brushed-border::before {
        filter: none;
    }
}

/* ============================================================================
 * BEFOREAFTER CARD (molecule) — Figma Component HN (51:2062)
 *
 * 3 variants couleur (Bleu, Blanc, Beige) appliqués au côté "Après".
 * Layout : row 2 cartes, gap 64px. Carte Avant = transparent + checkitems croix.
 * Carte Après = fond couleur + checkitems check teal + titre manuscrit accent.
 * Mobile : stack en column.
 *
 * Usage :
 *   <article class="hn-beforeafter-card hn-beforeafter-card--bleu">
 *     <div class="hn-beforeafter-card__side hn-beforeafter-card__side--avant">
 *       <h4 class="hn-h4">Avant Évidence</h4>
 *       <ul class="hn-beforeafter-card__items">
 *         <li class="hn-checkitem hn-checkitem--cross">…</li>
 *       </ul>
 *     </div>
 *     <div class="hn-beforeafter-card__side hn-beforeafter-card__side--apres">
 *       <h4 class="hn-h4-script">Après Évidence</h4>
 *       <ul class="hn-beforeafter-card__items">
 *         <li class="hn-checkitem hn-checkitem--check-cyan">…</li>
 *       </ul>
 *     </div>
 *   </article>
 * ========================================================================== */

.hn-beforeafter-card {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 64px;
    padding: 20px;
    box-sizing: border-box;
}

.hn-beforeafter-card__side {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 48px;
    border-radius: 24px;
    box-sizing: border-box;
    flex: 1 1 0;
    min-width: 0;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-beforeafter-card__side::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

/* Sur le côté Après Bleu, le contour est de la même couleur que le fond — il
   reste invisible mais l'effet brushed sur le fond crée la texture. On
   conserve une bordure très légèrement plus claire pour ne pas perdre le
   contour entièrement. */
.hn-beforeafter-card--bleu .hn-beforeafter-card__side--apres {
    --hn-brushed-color: color-mix(in srgb, var(--wp--preset--color--brand-dark) 80%, #ffffff);
}

.hn-beforeafter-card__side--avant {
    background: transparent;
    color: var(--wp--preset--color--brand-dark);
}

.hn-beforeafter-card__side--apres {
    /* Background dépend du variant parent ; défaut = brand-dark */
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--brand-dark);
}

/* Variants — change le bg du côté Après et la couleur du titre script */
.hn-beforeafter-card--bleu  .hn-beforeafter-card__side--apres {
    background: var(--wp--preset--color--brand-dark);
}
.hn-beforeafter-card--bleu  .hn-beforeafter-card__side--apres .hn-h4-script {
    color: var(--wp--preset--color--accent);
}
.hn-beforeafter-card--bleu  .hn-beforeafter-card__side--apres .hn-checkitem__label {
    color: var(--wp--preset--color--surface);
}

.hn-beforeafter-card--blanc .hn-beforeafter-card__side--apres {
    background: var(--wp--preset--color--surface);
}
.hn-beforeafter-card--blanc .hn-beforeafter-card__side--apres .hn-h4-script,
.hn-beforeafter-card--beige .hn-beforeafter-card__side--apres .hn-h4-script {
    color: var(--wp--preset--color--brand-dark);
}

.hn-beforeafter-card--beige .hn-beforeafter-card__side--apres {
    background: var(--wp--preset--color--paper);
}

.hn-beforeafter-card__items {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

@media (max-width: 768px) {
    .hn-beforeafter-card {
        flex-direction: column;
        gap: 32px;
        padding: 0;
    }
    .hn-beforeafter-card__side {
        padding: 32px;
    }
}

/* ============================================================================
 * CALLOUT CARD (molecule) — Figma Component HN (51:2808)
 *
 * 3 variants couleur : Blanc / Beige / Bleu. Structure row desktop, column mobile.
 * Composition : badge + titre mixte (Montserrat + span Mynerve) + body + CTA.
 * Contour brushed signature HN via filter SVG.
 *
 * Usage :
 *   <article class="hn-callout-card hn-callout-card--blanc">
 *     <div class="hn-callout-card__content">
 *       <span class="hn-badge hn-badge--cyan">Jeune diplomée</span>
 *       <h3 class="hn-callout-card__title">6 mois offerts pour
 *         <span class="hn-h3-script">bien démarrer</span>
 *       </h3>
 *       <p class="hn-callout-card__body">Lorem ipsum…</p>
 *     </div>
 *     <a class="hn-btn hn-btn--dark" href="#">Démarrer</a>
 *   </article>
 * ========================================================================== */

.hn-callout-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 32px;
    padding: 32px;
    border-radius: 24px;
    box-sizing: border-box;
    max-width: var(--hn-section-max, 1184px);
    margin-inline: auto;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

/* Colonne texte (badge + titre + corps + bouton) — toujours présente. */
.hn-callout-card__text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 32px;
    width: 100%;
    min-width: 0;
}

/* Le bouton garde sa largeur naturelle (jamais stretch) sous le contenu */
.hn-callout-card__text > .hn-btn {
    flex: 0 0 auto;
    align-self: flex-start;
}

/* Variante avec image (ex. encart « jeune diplômé(e) ») : image à gauche +
   texte à droite, façon 2 colonnes. */
.hn-callout-card--media {
    flex-direction: row;
    align-items: center;
    gap: clamp(32px, 5vw, 64px);
}
.hn-callout-card--media .hn-callout-card__media {
    flex: 0 0 auto;
    width: min(46%, 480px);
    aspect-ratio: 480 / 360;
    object-fit: cover;
    border-radius: 16px;
    display: block;
    align-self: stretch;
    height: auto;
}
.hn-callout-card--media .hn-callout-card__text {
    flex: 1 1 auto;
}
@media (max-width: 768px) {
    .hn-callout-card--media {
        flex-direction: column;
        align-items: stretch;
    }
    .hn-callout-card--media .hn-callout-card__media {
        width: 100%;
        aspect-ratio: 16 / 10;
    }
}

.hn-callout-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-callout-card__content {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
    width: 100%;
    min-width: 0;
}

/* Title/body doivent quand même occuper toute la largeur du content area */
.hn-callout-card__title,
.hn-callout-card__body {
    align-self: stretch;
}

.hn-callout-card__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 40px;
    line-height: 48px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-callout-card__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

/* Variants couleur ---------------------------------------------------------- */
.hn-callout-card--blanc {
    background: var(--wp--preset--color--surface);
}

.hn-callout-card--beige {
    background: var(--wp--preset--color--paper);
}

.hn-callout-card--bleu {
    background: var(--wp--preset--color--brand-dark);
    --hn-brushed-color: color-mix(in srgb, var(--wp--preset--color--brand-dark) 80%, #ffffff);
}
.hn-callout-card--bleu .hn-callout-card__title,
.hn-callout-card--bleu .hn-callout-card__title .hn-h3-script {
    color: var(--wp--preset--color--surface);
}
.hn-callout-card--bleu .hn-callout-card__body {
    color: var(--wp--preset--color--surface);
}

@media (max-width: 768px) {
    .hn-callout-card {
        gap: 24px;
        padding: 24px;
    }
    .hn-callout-card__title {
        font-size: 24px;
        line-height: 26px;
    }
    .hn-callout-card__title .hn-h3-script {
        font-size: 32px;
        line-height: 35px;
    }
}

/* ============================================================================
 * EVENT CARD (molecule) — Figma Component HN (51:3686)
 *
 * 3 variants couleur : Blanc / Beige / Bleu. Column layout, padding 48, width 590.
 * Composition : titre H4 + auteur + date+durée + séparateur ligne + footer.
 * Footer split: bouton text-only "S'inscrire" + indicateur places (badge ou note).
 *
 * Usage :
 *   <article class="hn-event-card hn-event-card--blanc">
 *     <h4 class="hn-event-card__title">Le guide complet…</h4>
 *     <div class="hn-event-card__body">
 *       <div class="hn-event-card__meta">
 *         <p class="hn-event-card__speaker">Dr. Sophie Martin</p>
 *         <p class="hn-event-card__when">15 avril 2026</p>
 *         <p class="hn-event-card__duration">1h30</p>
 *       </div>
 *       <div class="hn-event-card__divider"></div>
 *       <div class="hn-event-card__footer">
 *         <a class="hn-btn hn-btn--text hn-btn--xs" href="#">S'inscrire</a>
 *         <span class="hn-badge hn-badge--cyan">12 places restantes</span>
 *       </div>
 *     </div>
 *   </article>
 * ========================================================================== */

.hn-event-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 48px;
    border-radius: 24px;
    box-sizing: border-box;
    width: 100%;
    max-width: 590px;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-event-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-event-card__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 30px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}

.hn-event-card__body {
    display: flex;
    flex-direction: column;
    gap: 32px;
}

.hn-event-card__meta {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.hn-event-card__speaker {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 18px;
    line-height: 1.4;
    color: var(--wp--preset--color--brand-dark);
}

.hn-event-card__when,
.hn-event-card__duration {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-event-card__divider {
    height: 1px;
    background: currentColor;
    color: var(--wp--preset--color--brand-dark);
    opacity: 0.6;
    width: 100%;
}

.hn-event-card__footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

/* Variants couleur ---------------------------------------------------------- */
.hn-event-card--blanc { background: var(--wp--preset--color--surface); }
.hn-event-card--beige { background: var(--wp--preset--color--paper); }

.hn-event-card--bleu {
    background: var(--wp--preset--color--brand-dark);
    --hn-brushed-color: color-mix(in srgb, var(--wp--preset--color--brand-dark) 80%, #ffffff);
}
.hn-event-card--bleu .hn-event-card__title,
.hn-event-card--bleu .hn-event-card__speaker,
.hn-event-card--bleu .hn-event-card__when,
.hn-event-card--bleu .hn-event-card__duration { color: var(--wp--preset--color--surface); }
.hn-event-card--bleu .hn-event-card__divider { color: var(--wp--preset--color--surface); opacity: 0.4; }

/* "12 places restantes" en Mynerve sur Beige/Bleu = note inline */
.hn-event-card__places {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
    color: var(--wp--preset--color--primary);
}
.hn-event-card--bleu .hn-event-card__places { color: var(--wp--preset--color--accent); }

@media (max-width: 768px) {
    .hn-event-card { padding: 32px; max-width: 100%; }
    .hn-event-card__title { font-size: 24px; line-height: 26px; }
    .hn-event-card__footer { flex-direction: column; align-items: stretch; gap: 8px; }
}

/* ============================================================================
 * RESSOURCE CARD (molecule) — Figma Component HN ProductCard (51:4426)
 *
 * NOTE : Figma utilise le componentSet "ProductCard" (51:4426) pour DEUX
 * cas d'usage sémantiques :
 *  - Ressource Card : Article / Podcast / Webinaire / Guide
 *  - Product Card   : Logiciel / Formation / Sans catégorie
 *
 * Même structure CSS pour les deux. Pour rester sémantique côté HTML, on
 * peut utiliser <article class="hn-ressource-card"> ou <article class="hn-product-card">
 * — la classe .hn-product-card est ajoutée comme alias plus bas dans ce fichier.
 *
 * Fond blanc, padding 48, column gap 24, contour brushed.
 * 4 variants typologiques (Article / Podcast / Guide / Webinaire) — distingués
 * par le texte de l'overline + le contenu meta (date, durée, format).
 *
 * Structure :
 *   1. Overline type (Mynerve cursive)
 *   2. Titre H4 Montserrat
 *   3. Body description
 *   4. Meta row (date, heure, durée) primary blue
 *   5. Divider 1px
 *   6. CTA bouton text
 *
 * Usage :
 *   <article class="hn-ressource-card">
 *     <header class="hn-ressource-card__head">
 *       <p class="hn-ressource-card__overline">Webinaire</p>
 *       <h3 class="hn-ressource-card__title">Comprendre la dyslexie…</h3>
 *     </header>
 *     <div class="hn-ressource-card__body-block">
 *       <p class="hn-ressource-card__body">Un tour d'horizon…</p>
 *       <div class="hn-ressource-card__meta-wrap">
 *         <div class="hn-ressource-card__meta">
 *           <span>25 mars 2026</span><span>12h30</span><span>8min</span>
 *         </div>
 *         <div class="hn-ressource-card__divider"></div>
 *       </div>
 *       <a class="hn-btn hn-btn--text hn-btn--xs" href="#">S'inscrire</a>
 *     </div>
 *   </article>
 * ========================================================================== */

.hn-ressource-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 48px;
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    box-sizing: border-box;
    width: 100%;
    max-width: 592px;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-ressource-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-ressource-card__head {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.hn-ressource-card__overline {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-ressource-card__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 30px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}

.hn-ressource-card__body-block {
    display: flex;
    flex-direction: column;
    gap: 32px;
}

.hn-ressource-card__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

.hn-ressource-card__meta-wrap {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.hn-ressource-card__meta {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
}

.hn-ressource-card__meta span {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
    color: var(--wp--preset--color--primary);
}

.hn-ressource-card__divider {
    height: 1px;
    background: currentColor;
    color: var(--wp--preset--color--brand-dark);
    opacity: 0.6;
    width: 100%;
}

.hn-ressource-card .hn-btn {
    align-self: flex-start;
}

/* Variants couleur ---------------------------------------------------------- */

.hn-ressource-card--blanc { background: var(--wp--preset--color--surface); }

.hn-ressource-card--beige {
    background: var(--wp--preset--color--paper);
}

.hn-ressource-card--bleu {
    background: var(--wp--preset--color--brand-dark);
    --hn-brushed-color: color-mix(in srgb, var(--wp--preset--color--brand-dark) 80%, #ffffff);
}
.hn-ressource-card--bleu .hn-ressource-card__overline,
.hn-ressource-card--bleu .hn-ressource-card__title { color: var(--wp--preset--color--paper); }
.hn-ressource-card--bleu .hn-ressource-card__body { color: var(--wp--preset--color--surface); }
.hn-ressource-card--bleu .hn-ressource-card__meta span { color: var(--wp--preset--color--accent); }
.hn-ressource-card--bleu .hn-ressource-card__divider { color: var(--wp--preset--color--paper); opacity: 0.4; }

/* Sub-elements pour ReplayCard / Téléchargement ----------------------------- */

/* Head row (overline + badge) — utilisé par variante Téléchargement */
.hn-ressource-card__head-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

/* Author block (avatar + nom) — utilisé par ReplayCard */
.hn-ressource-card__author {
    display: flex;
    align-items: center;
    gap: 12px;
}

.hn-ressource-card__author-avatar {
    width: 32px;
    height: 32px;
    border-radius: 16px;
    object-fit: cover;
    flex-shrink: 0;
    background: var(--wp--preset--color--surface-muted);
}

.hn-ressource-card__author-name {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 13px;
    line-height: 1.2;
    color: var(--wp--preset--color--foreground);
}

/* Footer row : bouton à gauche + meta inline à droite — Replay/Téléchargement */
.hn-ressource-card__footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.hn-ressource-card__footer-note {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
    color: var(--wp--preset--color--primary);
}

/* Variante Téléchargement — gap parent plus large (96) pour aérer */
.hn-ressource-card--telechargement {
    gap: 96px;
}

@media (max-width: 768px) {
    .hn-ressource-card { padding: 32px; max-width: 100%; }
    .hn-ressource-card--telechargement { gap: 48px; }
    .hn-ressource-card__title { font-size: 24px; line-height: 26px; }
    .hn-ressource-card__footer { flex-direction: column; align-items: flex-start; gap: 16px; }
}

/* ============================================================================
 * PRODUCT CARD (molecule) — Figma Component HN ProductCard (51:8807)
 *
 * COMPONENTSET DISTINCT de Ressource Card (51:4426). Différences :
 *  - Footer : line + __status (texte bold "Inclut dans l'abonnement") + bouton
 *    (column gap 8) — pas de meta date/heure/durée
 *  - 4 variants couleur : Blanc / Beige / Bleu / Mobile
 *
 * Structure column padding 48, gap 24 :
 *  - __head (column gap 12) : overline Mynerve + titre H4
 *  - __body (Montserrat 18/25 gris)
 *  - __divider (filet 1px)
 *  - __footer (column gap 8) : __status (Body bold) + bouton
 *
 * Usage :
 *   <article class="hn-product-card hn-product-card--blanc">
 *     <header class="hn-product-card__head">
 *       <p class="hn-product-card__overline">Évaluation</p>
 *       <h3 class="hn-product-card__title">Lexis 3</h3>
 *     </header>
 *     <p class="hn-product-card__body">Examen des troubles…</p>
 *     <div class="hn-product-card__divider"></div>
 *     <div class="hn-product-card__footer">
 *       <p class="hn-product-card__status">Inclut dans l'abonnement</p>
 *       <a class="hn-btn hn-btn--text hn-btn--xs" href="#">En savoir plus →</a>
 *     </div>
 *   </article>
 * ========================================================================== */

.hn-product-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 24px;
    padding: 48px;
    border-radius: 24px;
    box-sizing: border-box;
    width: 100%;
    max-width: 358px;
    overflow: hidden;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-product-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-product-card__head {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.hn-product-card__overline {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-product-card__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 30px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}

.hn-product-card__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

.hn-product-card__divider {
    height: 1px;
    background: var(--wp--preset--color--brand-dark);
    width: 100%;
}

.hn-product-card__footer {
    display: flex;
    flex-direction: column;
    gap: 8px;
    align-items: flex-start;
}

.hn-product-card__status {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 18px;
    line-height: 1.4;
    color: var(--wp--preset--color--brand-dark);
}

/* Variants couleur ---------------------------------------------------------- */

.hn-product-card--blanc { background: var(--wp--preset--color--surface); }

.hn-product-card--beige {
    background: var(--wp--preset--color--paper);
}

.hn-product-card--bleu {
    background: var(--wp--preset--color--brand-dark);
    --hn-brushed-color: color-mix(in srgb, var(--wp--preset--color--brand-dark) 80%, #ffffff);
}
.hn-product-card--bleu .hn-product-card__overline { color: var(--wp--preset--color--accent); }
.hn-product-card--bleu .hn-product-card__title,
.hn-product-card--bleu .hn-product-card__status { color: var(--wp--preset--color--paper); }
.hn-product-card--bleu .hn-product-card__body { color: var(--wp--preset--color--surface); }
.hn-product-card--bleu .hn-product-card__divider { background: var(--wp--preset--color--paper); opacity: 0.4; }

@media (max-width: 768px) {
    .hn-product-card { padding: 32px; max-width: 100%; }
    .hn-product-card__title { font-size: 24px; line-height: 26px; }
}

/* Variante --with-image : pour les pages catégorie / archive WooCommerce.
   Pas dans le Figma Component HN d'origine — ajoutée pour rendre la grille
   produits e-commerce plus visuelle (image hero en haut de la card, débord
   sur les côtés pour atteindre le contour brushed). */
.hn-product-card--with-image {
    padding-top: 0;
}

.hn-product-card__image {
    display: block;
    width: calc(100% + 96px);
    margin: 0 -48px;
    aspect-ratio: 4 / 3;
    object-fit: cover;
}

@media (max-width: 768px) {
    .hn-product-card__image {
        width: calc(100% + 64px);
        margin: 0 -32px;
    }
}

/* Conteneur grille produits filtrable (bloc happyneuron/product-cards) -------- */
.hn-product-cards {
    max-width: 1184px;
    margin-inline: auto;
    padding: clamp(48px, 6vw, 80px) clamp(24px, 6vw, 64px);
    display: flex;
    flex-direction: column;
    gap: 32px;
}

.hn-product-filter {
    justify-content: center;
}

.hn-product-grid > .hn-product-card[hidden] {
    display: none;
}

/* ============================================================================
 * BOUTIQUE CATEGORIES (organism) — Figma Design HN Boutique (617:6094)
 *
 * Section utilisée dans archive-product.html (page principale /boutique/) :
 * gradient cream→white, titre mixte centré + lead, grille 3 Product Cards
 * (Logiciels / Formations / Supervision). Chaque card pointe vers une
 * taxonomy-product_cat WC.
 * ========================================================================== */

.hn-boutique-categories {
    background: linear-gradient(0deg, var(--wp--preset--color--surface) 13%, var(--wp--preset--color--paper) 90%);
    padding: clamp(64px, 8vw, 96px) clamp(24px, 6vw, 128px);
}

.hn-boutique-categories__inner {
    max-width: 1184px;
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    gap: 48px;
}

.hn-boutique-categories__head {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    text-align: center;
}

.hn-boutique-categories__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-boutique-categories__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
    margin-left: 8px;
}

.hn-boutique-categories__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    max-width: 720px;
}

.hn-boutique-categories__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 32px;
    align-items: stretch;
}

.hn-boutique-categories__grid .hn-product-card {
    max-width: none;
    height: 100%;
}

@media (max-width: 960px) {
    .hn-boutique-categories__grid {
        grid-template-columns: 1fr;
        gap: 24px;
    }
}

/* ============================================================================
 * WOOCOMMERCE — Page catégorie produits (taxonomy-product_cat)
 *
 * Refonte conforme à la maquette Figma « HN- Desktop - Boutique » (node 724-6471) :
 * fond dégradé blanc→beige, fil d'ariane à chevrons, titre + description à gauche,
 * barre filtres/tri + compteur, chips de filtres actifs, grille de cartes SIMPLES
 * (image portrait + nom + prix), pagination « page X of Y ».
 * Composants dynamiques : mu-plugins/hn-shop-ui.php (shortcodes).
 * ========================================================================== */

.hn-shop { --hn-shop-rail: 1184px; --hn-shop-gutter: clamp(24px, 8vw, 128px); }
.hn-shop-breadcrumb { --hn-shop-rail: 1184px; --hn-shop-gutter: clamp(24px, 8vw, 128px); }

/* Fil d'ariane (fond blanc, au-dessus du dégradé) */
.hn-shop-breadcrumb {
    background: var(--wp--preset--color--surface);
    padding: 24px 0 0;
}
.hn-shop-breadcrumb .woocommerce-breadcrumb {
    width: min(100% - 2 * var(--hn-shop-gutter), var(--hn-shop-rail));
    margin-inline: auto;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 17.16px;
    color: rgba(0, 0, 0, 0.6);
    text-align: left;
}
.hn-shop-breadcrumb a { color: rgba(0, 0, 0, 0.6); text-decoration: none; }
.hn-shop-breadcrumb a:hover { color: var(--wp--preset--color--brand-dark); }
.hn-bc-sep { color: rgba(0, 0, 0, 0.35); margin: 0 4px; }

/* Conteneur dégradé blanc → beige (englobe hero + grille) */
.hn-shop {
    background: linear-gradient(to bottom, var(--wp--preset--color--surface) 0%, var(--wp--preset--color--paper) 100%);
}

/* En-tête catégorie : titre + description + barre + chips, alignés à gauche */
/* Page catégorie : fond blanc (conforme maquette 724-6471), sans le dégradé de
   page par défaut. */
body.tax-product_cat { background: var(--wp--preset--color--surface); }

.hn-shop__head {
    width: min(100% - 2 * var(--hn-shop-gutter), var(--hn-shop-rail));
    margin-inline: auto;
    padding: 48px 0 0;
    display: flex;
    flex-direction: column;
    gap: 24px;
    text-align: left;
}
/* Surtitre = badge cyan au-dessus du titre (Figma 1102-7535) */
.hn-shop__eyebrow {
    align-self: flex-start;
    width: fit-content;
    margin: 0;
    display: inline-flex;
    align-items: center;
    background: #2fd6c9;
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    padding: 2px 10px;
    border-radius: 4px;
}
.hn-shop__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
    text-align: left;
}
/* Partie manuscrite du titre éditorial (Figma 1102-7535 : Mynerve 55) */
.hn-shop__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1.05;
    letter-spacing: -0.0087em;
}

.hn-shop__lead {
    margin: 0;
    max-width: 900px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    text-align: left;
}

/* Barre filtres / tri */
.hn-shop__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    padding-top: 8px;
}
.hn-shop__bar-left { display: flex; align-items: center; gap: 26px; flex-wrap: wrap; }
/* margin-left:auto → TRIER PAR + compteur collés à droite, robuste même si wpautop
   injecte un <p> vide en fin de form (qui casserait un simple space-between). */
.hn-shop__bar-right { display: flex; align-items: center; gap: 16px; margin-left: auto; }
.hn-shop__bar > p:empty { display: none; }
.hn-shop__dd,
.hn-shop__sort {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: none;
    border: 0;
    /* .hn-shop__sort est un <label> → neutralise le margin-bottom de
       .woocommerce-page label (sinon le bloc TRIER PAR est décalé vs le compteur). */
    margin: 0 !important;
    padding: 5px;
    cursor: pointer;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 17.16px;
    color: #1d2328;
}
/* Filtre actif : libellé souligné en accent */
.hn-shop__dd.is-active,
.hn-shop__sort.is-active { color: var(--wp--preset--color--brand-dark); }
/* Le <select> natif recouvre le libellé (invisible) : « DOMAINE ▾ » reste
   affiché, mais le clic ouvre le menu natif et déclenche le filtrage. */
.hn-shop__dd select,
.hn-shop__sort select {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    border: 0;
    padding: 0;
    opacity: 0;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    font: inherit;
}
.hn-shop__caret {
    width: 8px;
    height: 8px;
    border-right: 1px solid var(--wp--preset--color--muted-text);
    border-bottom: 1px solid var(--wp--preset--color--muted-text);
    transform: rotate(45deg);
    margin-bottom: 3px;
}
.hn-shop__sort-ico { display: block; width: 14px; height: 10px; color: #1d2328; }
/* gap plus serré entre « TRIER PAR » et l'icône (les flèches étaient décalées) */
.hn-shop__sort { gap: 6px; }
.hn-shop__count {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

/* Panneau FILTRES dépliant (<details> natif, sans JS) */
.hn-shop__filters { position: relative; }
.hn-shop__filters > summary { list-style: none; cursor: pointer; }
.hn-shop__filters > summary::-webkit-details-marker { display: none; }
.hn-shop__filters[open] > summary .hn-shop__caret {
    transform: rotate(225deg);
    margin-bottom: 0;
    margin-top: 3px;
}
.hn-shop__panel {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    z-index: 40;
    box-sizing: border-box;
    min-width: 240px;
    max-width: min(330px, calc(100vw - 48px));
    max-height: 60vh;
    overflow-y: auto;
    background: var(--wp--preset--color--surface);
    border: 1px solid #ececec;
    border-radius: 16px;
    box-shadow: 0 16px 40px rgba(18, 0, 50, 0.12);
    padding: 8px;
}
.hn-shop__facet {
    border: 0;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.hn-shop__facet legend {
    padding: 4px 10px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 13px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--wp--preset--color--brand-dark);
}
/* Option = ligne compacte avec hover (le margin-bottom 10.5px des <label> WC est
   neutralisé ici, sinon l'espacement entre items doublait). */
.hn-shop__facet-opt {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin: 0 !important; /* bat .woocommerce-page label { margin-bottom: 0.7em } */
    padding: 8px 10px;
    border-radius: 10px;
    cursor: pointer;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 1.25;
    color: #54585a;
    transition: background 150ms ease, color 150ms ease;
}
.hn-shop__facet-opt:hover { background: var(--wp--preset--color--paper); color: var(--wp--preset--color--brand-dark); }
.hn-shop__facet-opt:has(input:checked) { color: var(--wp--preset--color--brand-dark); font-weight: 500; }
.hn-shop__facet-opt input {
    width: 18px;
    height: 18px;
    margin: 1px 0 0;
    accent-color: var(--wp--preset--color--brand-dark);
    flex: none;
    cursor: pointer;
}
/* AC 30262 : « Trier par » = mêmes options que les filtres mais sans case à cocher
   (tri = choix unique), et panneau aligné à droite (le tri est en fin de barre). */
.hn-shop__facet--sort .hn-shop__facet-opt input { display: none; }
.hn-shop__dropdown--sort .hn-shop__panel { left: auto; right: 0; }
.hn-shop__panel-actions {
    display: flex;
    align-items: center;
    gap: 16px;
    padding-top: 4px;
}
.hn-shop__panel-reset {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 14px;
    color: var(--wp--preset--color--muted-text);
    text-decoration: underline;
}

/* Chips de filtres actifs (encadrés de filets fins) */
.hn-shop__chips {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px 12px;
    padding: 20px 0;
    border-top: 1px solid #e2e2e2;
    border-bottom: 1px solid #e2e2e2;
}
.hn-shop__chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    height: 35px;
    padding: 0 16px;
    border: 1px solid #e5e5e5;
    border-radius: 30px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: #54585a;
    text-decoration: none;
    transition: border-color 0.15s ease, color 0.15s ease;
}
.hn-shop__chip:hover { border-color: #b9b9b9; color: var(--wp--preset--color--brand-dark); }
.hn-shop__chip-x { font-size: 16px; line-height: 1; color: #54585a; }
.hn-shop__clear {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 17.16px;
    color: #1d2328;
    text-decoration: none;
    padding: 0 8px;
}
.hn-shop__clear:hover { text-decoration: underline; }

/* Grille produits + pagination (sur le dégradé) */
.hn-shop__grid-wrap {
    width: min(100% - 2 * var(--hn-shop-gutter), var(--hn-shop-rail));
    margin-inline: auto;
    padding: 32px 0 clamp(64px, 8vw, 96px);
}
.hn-shop__grid-wrap .wc-block-product-template,
.hn-shop__grid-wrap .wp-block-woocommerce-product-template {
    display: grid !important;
    /* !important pour battre la règle responsive native WC (.columns-3) */
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 32px;
    list-style: none;
    padding: 0;
    margin: 0;
}
.hn-shop__grid-wrap li.wc-block-product,
.hn-shop__grid-wrap .wc-block-product {
    display: flex;
    margin: 0;
    padding: 0;
    border: 0;
    background: none;
}

/* Carte produit SIMPLE (maquette CardBoutique 725:6034) : image + nom + prix */
.hn-shop-card {
    display: flex;
    flex-direction: column;
    gap: 16px;
    width: 100%;
}
.hn-shop-card .wp-block-woocommerce-product-image,
.hn-shop-card__image { margin: 0; width: 100%; display: block; }
.hn-shop-card .wp-block-woocommerce-product-image a { display: block; }
.hn-shop-card .wp-block-woocommerce-product-image img {
    width: 100%;
    display: block;
    aspect-ratio: 9 / 10 !important; /* portrait, matche Figma 384×427 */
    object-fit: cover;
    border-radius: 0;
    background: #d9d9d9;
}
.hn-shop-card__meta { display: flex; flex-direction: column; gap: 4px; }
.hn-shop-card__name,
.hn-shop-card__name a {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: #1d2328;
    text-decoration: none;
}
.hn-shop-card__price,
.hn-shop-card__price .price {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.18px;
    color: var(--wp--preset--color--brand-dark);
}

/* Pagination « page X of Y » — Mynerve, centrée, flèches discrètes */
/* Pagination maquette (1008-6203) : label + filet 8px (court) + VOIR PLUS */
.hn-shop__pagination {
    width: 100%;
    max-width: 480px;
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 20px;
    padding-top: 48px;
}
.hn-shop__more.hn-btn { width: auto; min-width: 180px; height: 48px; }
.hn-shop__more.is-loading { opacity: 0.6; pointer-events: none; }
/* [hidden] (display:none UA) est battu par .hn-btn{display:flex} → forcer. */
.hn-shop__more[hidden] { display: none !important; }
.hn-shop__pag-top {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
}
.hn-shop__page-label {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.18px;
    color: #1d2328;
}
.hn-shop__page-arrow {
    font-size: 22px;
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
}
.hn-shop__page-arrow.is-disabled { color: #c9c9c9; pointer-events: none; }
.hn-shop__progress {
    width: 100%;
    height: 8px;
    border-radius: 999px;
    background: #d9d9d9;
    overflow: hidden;
}
.hn-shop__progress-fill {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: var(--wp--preset--color--brand-dark);
    transition: width 200ms ease;
}

/* ============================================================================
 * RECHERCHE — résultats « façon Google » (liste paragraphes, pas de cards)
 * Bloc happyneuron/search-results (mu-plugin hn-search.php). Périmètre =
 * contenus ressources. Pagination réutilise .hn-shop__pagination.
 * ========================================================================== */
.hn-search-results {
    width: 100%;
    max-width: 820px;
    margin-inline: auto;
    padding: 56px 24px 96px;
    box-sizing: border-box;
}
.hn-search-results__count {
    margin: 0 0 32px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 15px;
    color: var(--wp--preset--color--muted-text);
}
.hn-search-results__list {
    display: flex;
    flex-direction: column;
    gap: 36px;
}
.hn-search-result__tags {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}
.hn-search-result__cat {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 13px;
    font-weight: 500;
    color: var(--wp--preset--color--muted-text);
    padding: 3px 10px;
    border: 1px solid var(--wp--preset--color--stroke, #e3ddd3);
    border-radius: 999px;
}
.hn-search-result__title {
    margin: 0 0 6px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 21px;
    line-height: 1.3;
}
.hn-search-result__title a {
    color: var(--wp--preset--color--primary);
    text-decoration: none;
}
.hn-search-result__title a:hover,
.hn-search-result__title a:focus { text-decoration: underline; }
.hn-search-result__excerpt {
    margin: 0 0 8px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}
.hn-search-result__link {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: var(--wp--preset--color--primary);
    text-decoration: none;
}
.hn-search-result__link:hover { text-decoration: underline; }
.hn-search-results--empty { padding-block: 64px 96px; text-align: center; }
.hn-search-results__empty {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    color: var(--wp--preset--color--muted-text);
}
.hn-search__pagination { padding-top: 56px; }
@media (max-width: 600px) {
    .hn-search-results { padding-top: 40px; }
    .hn-search-result__title { font-size: 19px; }
}

/* Responsive grille produits + barre filtres (3 → 2 → 1 colonne).
   !important pour battre la grille responsive native WC (.columns-3). */
@media (max-width: 960px) {
    .hn-shop__grid-wrap .wc-block-product-template,
    .hn-shop__grid-wrap .wp-block-woocommerce-product-template {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}
@media (max-width: 600px) {
    .hn-shop__grid-wrap .wc-block-product-template,
    .hn-shop__grid-wrap .wp-block-woocommerce-product-template {
        grid-template-columns: 1fr !important;
        gap: 24px;
    }
    .hn-shop__bar { flex-direction: column; align-items: flex-start; }
    .hn-shop__bar-left { flex-wrap: wrap; gap: 16px 26px; width: 100%; }
    .hn-shop__bar-right { width: 100%; justify-content: space-between; }
    /* Panneau FILTRES : bloc statique pleine largeur (pas de déroulant absolu) */
    .hn-shop__filters { position: static; width: 100%; }
    .hn-shop__filters > summary { width: 100%; }
    .hn-shop__panel {
        position: static;
        width: 100%;
        min-width: 0;
        max-width: none;
        max-height: none;
        margin-top: 12px;
        box-shadow: none;
    }
}

/* Variante beige du CTA (Figma CTABlock page catégorie, fond #f7f3eb).
   Double classe pour battre la règle de base .hn-cta-block déclarée plus bas. */
.hn-cta-block.hn-cta-block--beige { background: var(--wp--preset--color--paper); }

/* ============================================================================
 * WOOCOMMERCE — Single product (fiche produit)
 *
 * Sections HN appliquées au-dessus des blocs WC natifs pour single-product.html :
 *  - .hn-product-hero    : 2 colonnes (image gallery 444px + meta 622px),
 *                          breadcrumb au-dessus, prix + qty + add-to-cart en bas
 *  - .hn-product-content : zone description rich text sur fond paper
 *  - .hn-related-products: section "Vous allez aimer aussi" + grille HN
 *
 * Volontairement plus minimaliste que le Figma Produit (12305px) — on reprend
 * juste les sections clés. Pas de tabs Description/Points forts/Auteurs/A
 * découvrir (demande JS + componentisation) ni upsell abonnements (relations
 * produit→abo à modéliser) dans cette V1.
 * ========================================================================== */

.hn-product-hero,
.hn-product-content,
.hn-product-subs-wrap,
.hn-related-products { --hn-shop-gutter: clamp(24px, 8vw, 128px); }

.hn-product-hero {
    padding: clamp(64px, 8vw, 96px) 0;
    background: transparent;
    display: flex !important;
    flex-direction: column;
    gap: 32px;
}

.hn-product-hero__breadcrumb {
    width: min(100% - 2 * var(--hn-shop-gutter), 1184px);
    margin-inline: auto;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    color: rgba(0, 0, 0, 0.6);
}
.hn-product-hero__breadcrumb a { color: rgba(0, 0, 0, 0.6); text-decoration: none; }
.hn-product-hero__breadcrumb a:hover { color: var(--wp--preset--color--brand-dark); }

.hn-product-hero__inner {
    width: min(100% - 2 * var(--hn-shop-gutter), 1184px);
    margin-inline: auto;
    display: flex !important;
    flex-direction: row;
    gap: 96px;
    align-items: flex-start;
}

.hn-product-hero__gallery { flex: 0 0 444px; max-width: 444px; position: relative; }
/* Badge « Nouveau » fiche produit (coin galerie), piloté par la case Nouveauté. */
.hn-product-hero__new {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 2;
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 12px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 4px 10px;
    border-radius: 4px;
    line-height: 1.4;
}
.hn-product-hero__gallery img {
    border-radius: 20px; width: 100%; height: auto; display: block; background: #f0eeed;
}
.hn-product-hero__gallery .flex-control-thumbs {
    display: flex; flex-wrap: wrap; gap: 12px; margin: 12px 0 0; padding: 0; list-style: none;
}
.hn-product-hero__gallery .flex-control-thumbs li { width: 60px; }
/* Pas de loupe / zoom sur la galerie produit */
.hn-product-hero__gallery .woocommerce-product-gallery__trigger { display: none !important; }
.hn-product-hero__gallery img { cursor: default; }
/* Marge entre l'image principale et les vignettes (règle WC plus spécifique →
   !important pour la rétablir). */
.hn-product-hero__gallery .woocommerce-product-gallery .flex-control-thumbs { margin-top: 24px !important; }

/* Sélecteur de variation (offre) : select stylé DS + lien « Effacer » → croix. */
.hn-product-hero__buy .variations { border: 0; margin: 0; }
.hn-product-hero__buy .variations td,
.hn-product-hero__buy .variations th { padding: 0; border: 0; background: transparent; vertical-align: middle; }
.hn-product-hero__buy .variations select {
    appearance: none;
    -webkit-appearance: none;
    min-width: 220px;
    height: auto;
    border: 1.5px solid var(--wp--preset--color--stroke, #e3ddd3);
    border-radius: 10px;
    padding: 12px 42px 12px 16px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 15px;
    line-height: 1.5;
    color: var(--wp--preset--color--brand-dark);
    background-color: #fff;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23120032' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    background-size: 14px;
    cursor: pointer;
}
.hn-product-hero__buy .variations select:focus {
    outline: none;
    border-color: var(--wp--preset--color--brand-dark);
}
.hn-product-hero__buy a.reset_variations {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin-left: 2px;
    border-radius: 999px;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
    font-size: 0 !important;
    line-height: 0;
    vertical-align: middle;
}
.hn-product-hero__buy a.reset_variations::after {
    content: '\00d7';
    font-size: 22px;
    line-height: 1;
}
.hn-product-hero__buy a.reset_variations:hover { background: rgba(18, 0, 50, 0.07); }

/* Produit sans image : on masque la galerie, la méta prend la largeur */
.hn-product--no-image .hn-product-hero__gallery { display: none; }
.hn-product--no-image .hn-product-hero__meta { max-width: 820px; }

.hn-product-hero__meta { flex: 1 1 auto; display: flex !important; flex-direction: column; gap: 64px; min-width: 0; }
.hn-product-hero__head { display: flex; flex-direction: column; gap: 16px; }

/* Neutralise le blockGap (margin-block-start) que WordPress injecte sur les
   wp:group « is-layout-flow » : il s'ajoutait à notre `gap` flex et décalait
   l'inner (+24px) et la colonne meta (+24px) vs la fiche formation (template PHP). */
.hn-product-hero > * + *,
.hn-product-hero__inner > * + *,
.hn-product-hero__meta > * + *,
.hn-product-hero__head > * + *,
.hn-product-hero__buy > * + * { margin-block-start: 0 !important; }

.hn-product-hero__title {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 4.5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
    margin: 0;
}

/* Badges format / durée */
.hn-product-hero__badges { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 16px; }
.hn-product-hero__badge {
    display: inline-flex; align-items: center; gap: 8px;
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 14px; line-height: 25px; color: #4a4a4a;
}
.hn-product-hero__badge svg { color: var(--wp--preset--color--accent); flex: none; }

/* Auteur (icône masquée : absente de la maquette, héro identique à la formation) */
.hn-product-hero__author {
    display: flex; align-items: center; gap: 10px; margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 18px; line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-product-hero__author-ico { display: none; }
.hn-product-hero__short {
    margin: 12px 0 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 27px;
    color: var(--wp--preset--color--muted-text);
}
/* Suffixe « /mois » après le prix (abonnement mensuel, AC 30315). */
.hn-price-suffix {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 0.6em;
    color: var(--wp--preset--color--muted-text);
}

/* Prix + achat */
.hn-product-hero__buy { display: flex; flex-direction: column; gap: 18px; align-items: flex-start; }
.hn-product-hero__price {
    display: flex; align-items: baseline; gap: 12px;
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 600; font-size: 32px; line-height: 1;
    color: var(--wp--preset--color--brand-dark); margin: 0;
}
.hn-product-hero__price .price { color: inherit; font-weight: inherit; font-size: inherit; }
/* « TTC » à droite du prix (comme la fiche formation / la maquette). */
.hn-product-hero__price::after {
    content: 'TTC'; font-size: 18px; font-weight: 400; color: inherit;
}
/* Pas de « TTC » quand le prix n'est pas un montant (abonnement « Voir les
   offres », « Sur demande ») — sinon « Voir les offres TTC » n'a pas de sens. */
.hn-product-hero__price:has(.hn-price--subscription)::after,
.hn-product-hero__price:has(.hn-price--on-request)::after {
    content: none;
}
.hn-product-hero__buy form.cart {
    display: flex; flex-direction: row; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0;
}
.hn-product-hero__buy .quantity {
    background: #f0f0f0; border-radius: 62px; padding: 12px 20px; display: inline-flex; align-items: center; gap: 16px;
}
.hn-product-hero__buy .quantity input[type="number"] {
    width: 40px; border: 0; background: transparent; text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 500; font-size: 15px;
    color: var(--wp--preset--color--brand-dark); appearance: textfield; -moz-appearance: textfield;
}
.hn-product-hero__buy .quantity input[type="number"]::-webkit-inner-spin-button,
.hn-product-hero__buy .quantity input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.hn-product-hero__buy button.single_add_to_cart_button {
    border: 0; background: var(--wp--preset--color--brand-dark); color: var(--wp--preset--color--surface);
    border-radius: 9999px; padding: 0 24px; height: 48px;
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 500; font-size: 15px; cursor: pointer;
    transition: background 200ms ease;
}
.hn-product-hero__buy button.single_add_to_cart_button:hover { background: #1f0a4d; }

/* Description (post_content unique) — fond transparent : laisse voir le dégradé. */
.hn-product-content { background: transparent; padding: clamp(48px, 8vw, 64px) 0; }
.hn-product-content__inner { width: min(100% - 2 * var(--hn-shop-gutter), 1184px); margin-inline: auto; }
.hn-product-content__inner h2 {
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 600; font-size: 20px; line-height: 22.32px;
    letter-spacing: -0.009em; color: var(--wp--preset--color--brand-dark); margin: 24px 0 8px;
}
.hn-product-content__inner h3 {
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 600; font-size: 20px;
    color: var(--wp--preset--color--brand-dark); margin: 16px 0 8px;
}
.hn-product-content__inner p,
.hn-product-content__inner li {
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 18px; line-height: 25px; color: #1d2328;
}

/* Section « aussi proposé dans nos abonnements » — fond transparent (dégradé). */
.hn-product-subs-wrap { background: transparent; }
.hn-product-subs {
    width: min(100% - 2 * var(--hn-shop-gutter), 1184px); margin-inline: auto;
    padding: clamp(48px, 8vw, 96px) 0; display: flex; flex-direction: column; gap: 40px;
}
.hn-product-subs__title {
    font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 500; font-size: clamp(28px, 3.5vw, 40px);
    line-height: 1.15; letter-spacing: -0.02em; color: var(--wp--preset--color--brand-dark); text-align: center; margin: 0;
}
.hn-product-subs__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
/* Formation : offre Expertise seule → carte centrée, pas étirée sur 3 colonnes. */
.hn-product-subs--single .hn-product-subs__grid { grid-template-columns: minmax(0, 420px); justify-content: center; }
.hn-product-subs__card {
    background: var(--wp--preset--color--surface); border-radius: 24px; padding: 40px;
    display: flex; flex-direction: column; gap: 12px; align-items: flex-start;
}
.hn-product-subs__name { font-family: 'Mynerve', cursive; font-weight: 400; font-size: 28px; line-height: 1; color: var(--wp--preset--color--brand-dark); margin: 0; }
.hn-product-subs__price { margin: 0; display: flex; align-items: baseline; gap: 6px; }
.hn-product-subs__amount { font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 600; font-size: 40px; line-height: 1; color: var(--wp--preset--color--brand-dark); }
.hn-product-subs__period { font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 18px; color: var(--wp--preset--color--muted-text); }
.hn-product-subs__note { margin: 0; font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 600; font-size: 15px; color: var(--wp--preset--color--brand-dark); }
.hn-product-subs__desc { margin: 0 0 8px; font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 16px; line-height: 24px; color: var(--wp--preset--color--muted-text); }

/* Related products "Vous allez aimer aussi" (cartes simples .hn-shop-card) */
.hn-related-products { padding: clamp(64px, 8vw, 96px) 0; background: transparent; }
.hn-related-products__inner { width: min(100% - 2 * var(--hn-shop-gutter), 1184px); margin-inline: auto; display: flex; flex-direction: column; gap: 32px; }
.hn-related-products__title { font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 500; font-size: clamp(32px, 4vw, 40px); line-height: 1.1; color: var(--wp--preset--color--brand-dark); text-align: center; margin: 0; }
.hn-related-products__title-script { font-family: 'Mynerve', cursive; font-weight: 400; font-size: clamp(36px, 4.5vw, 45px); line-height: 1; color: var(--wp--preset--color--brand-dark); }
.hn-related-products .wc-block-product-template,
.hn-related-products .wp-block-woocommerce-product-template {
    display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)) !important; gap: 32px; list-style: none; padding: 0; margin: 0;
}
.hn-related-products li.wc-block-product,
.hn-related-products .wc-block-product { display: flex; margin: 0; padding: 0; border: 0; background: none; }

/* Responsive single product */
@media (max-width: 960px) {
    .hn-product-hero__inner { flex-direction: column; gap: 32px; }
    .hn-product-hero__gallery { flex-basis: auto; max-width: 100%; width: 100%; }
    .hn-product-subs__grid { grid-template-columns: 1fr; }
    .hn-related-products .wc-block-product-template,
    .hn-related-products .wp-block-woocommerce-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 600px) {
    .hn-related-products .wc-block-product-template,
    .hn-related-products .wp-block-woocommerce-product-template { grid-template-columns: 1fr !important; }
}

/* ============================================================================
 * WOOCOMMERCE — Pages Panier / Commande (page-panier.html / page-commande.html)
 *
 * Templates par slug autour des blocs wp:woocommerce/cart et /checkout.
 * Les blocs WC natifs gèrent toute la logique (items, totaux, paiements) —
 * on ajoute seulement un header HN custom + des overrides cohérents avec
 * le DS sur les classes wc-block-*.
 * ========================================================================== */

.hn-wc-page-head {
    background: var(--wp--preset--color--paper);
    padding: clamp(64px, 8vw, 96px) clamp(24px, 6vw, 128px) !important;
    display: flex !important;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    text-align: center;
}

.hn-wc-page-head__overline {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 1;
    color: var(--wp--preset--color--accent);
    margin: 0;
}

.hn-wc-page-head__title {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
    margin: 0;
}

.hn-wc-page-head__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
    margin-left: 8px;
}

.hn-wc-page-body {
    padding: clamp(48px, 6vw, 80px) clamp(16px, 4vw, 64px) !important;
}

.hn-wc-page-body > * {
    max-width: 1184px;
    margin-inline: auto;
}

/* Cart : neutralise le is-loading WC + harmonise les bordures/cards */
.hn-wc-page-body .wc-block-cart,
.hn-wc-page-body .wp-block-woocommerce-cart {
    font-family: Montserrat, ui-sans-serif, sans-serif;
}

.hn-wc-page-body .wc-block-cart__main-image img,
.hn-wc-page-body .wc-block-components-product-image img {
    border-radius: 12px;
}

.hn-wc-page-body .wc-block-components-product-name {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
}

.hn-wc-page-body .wc-block-components-product-name:hover {
    color: var(--wp--preset--color--accent);
}

.hn-wc-page-body .wc-block-components-product-price,
.hn-wc-page-body .wc-block-formatted-money-amount {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    color: var(--wp--preset--color--brand-dark);
}

/* Sidebars panier ET commande : même carte récap (cf. SKIN FORMULAIRE en fin
   de fichier pour la règle unifiée .wc-block-components-sidebar). */

.hn-wc-page-body .wp-block-woocommerce-cart-totals-block {
    align-self: flex-start;
}

/* Boutons WC : pousser vers nos boutons HN */
.hn-wc-page-body .wc-block-cart__submit-button,
.hn-wc-page-body .wc-block-components-checkout-place-order-button,
.hn-wc-page-body button.wc-block-components-button,
.hn-wc-page-body .wp-block-button__link {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    border-radius: 9999px !important;
    border: 0;
    padding: 0 24px !important;
    height: 48px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    transition: background 200ms ease;
}

.hn-wc-page-body .wc-block-cart__submit-button:hover,
.hn-wc-page-body .wc-block-components-checkout-place-order-button:hover,
.hn-wc-page-body button.wc-block-components-button:hover {
    background: #1f0a4d;
}

/* Inputs checkout : skin unique hn-form (cf. SKIN FORMULAIRE en fin de fichier). */

/* Empty cart : centrer + style HN */
.hn-wc-page-body .wp-block-woocommerce-empty-cart-block {
    text-align: center;
    padding: 48px 0;
}

.hn-wc-page-body .wp-block-woocommerce-empty-cart-block h2 {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    color: var(--wp--preset--color--brand-dark);
}

/* My Account (shortcode legacy) : layout 2 col nav + contenu */
.hn-wc-page-body--account .woocommerce {
    font-family: Montserrat, ui-sans-serif, sans-serif;
}

.hn-wc-page-body--account .woocommerce-MyAccount-navigation {
    background: var(--wp--preset--color--paper);
    border-radius: 24px;
    padding: 24px;
}

.hn-wc-page-body--account .woocommerce-MyAccount-navigation ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hn-wc-page-body--account .woocommerce-MyAccount-navigation li a {
    display: block;
    padding: 12px 16px;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
    border-radius: 12px;
    font-weight: 500;
    transition: background 200ms ease, color 200ms ease;
}

.hn-wc-page-body--account .woocommerce-MyAccount-navigation li a:hover,
.hn-wc-page-body--account .woocommerce-MyAccount-navigation li.is-active a {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}

/* Neutralise le float + width:30%/68% par défaut de WC (sinon les items de grille
   sont rétrécis au lieu de remplir leur colonne). */
.hn-wc-page-body--account .woocommerce-MyAccount-navigation,
.hn-wc-page-body--account .woocommerce-MyAccount-content {
    float: none;
    width: auto;
}

.hn-wc-page-body--account .woocommerce-MyAccount-content {
    color: var(--wp--preset--color--brand-dark);
}

.hn-wc-page-body--account .woocommerce-MyAccount-content h2,
.hn-wc-page-body--account .woocommerce-MyAccount-content h3 {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    color: var(--wp--preset--color--brand-dark);
}

/* Login/register + champs du compte : skin unique hn-form (cf. SKIN FORMULAIRE
   en fin de fichier — carte blanche centrée + champs underline). */

/* Boutons d'envoi du compte (Se connecter, S'inscrire, Enregistrer…). */
.hn-wc-page-body--account button[type="submit"],
.hn-wc-page-body--account .woocommerce-Button,
.hn-wc-page-body--account a.button,
.hn-wc-page-body--account input[type="submit"] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    border: 0;
    border-radius: 9999px;
    padding: 0 28px;
    height: 48px;
    width: auto;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    text-decoration: none;
    cursor: pointer;
    transition: background 200ms ease;
}

.hn-wc-page-body--account button[type="submit"]:hover,
.hn-wc-page-body--account .woocommerce-Button:hover,
.hn-wc-page-body--account a.button:hover,
.hn-wc-page-body--account input[type="submit"]:hover {
    background: #1f0a4d;
    color: var(--wp--preset--color--surface);
}

/* Tableau de bord (connecté) : nav + contenu en 2 colonnes.
   .woocommerce-account est posée sur <body> (hors wrapper) → on cible la vue
   connectée par la présence de la nav (:has) plutôt que par cette classe. */
@media (min-width: 768px) {
    .hn-wc-page-body--account .woocommerce:has(.woocommerce-MyAccount-navigation) {
        display: grid;
        grid-template-columns: 260px 1fr;
        gap: 48px;
        align-items: start;
    }
    /* Neutralise le clearfix ::before/::after de .woocommerce qui, en contexte
       grid, devient un item et décale la nav/contenu. */
    .hn-wc-page-body--account .woocommerce:has(.woocommerce-MyAccount-navigation)::before,
    .hn-wc-page-body--account .woocommerce:has(.woocommerce-MyAccount-navigation)::after {
        content: none;
    }
}

/* ============================================================================
 * SOLUTION CARD (molecule) — Figma Component HN (51:4967)
 *
 * 7 variants : Blanc/Beige/Bleu en long (content + 3 checkitems) ou court
 * (content seul) + Mobile court/long.
 *
 * Structure LONG : row, padding 48, gap 32 entre 2 colonnes
 *   __content (479 wide) : overline Mynerve + titre H3 + body + bouton
 *   __features (448 wide) : header bold + 3 checkitems check-cyan
 *
 * Structure COURT : content seul (pas de __features), max-width réduite.
 *
 * Mobile : stack en column (content puis features sous).
 *
 * Usage :
 *   <article class="hn-solution-card hn-solution-card--blanc hn-solution-card--long">
 *     <div class="hn-solution-card__content">
 *       <p class="hn-solution-card__overline">Structurer votre démarche</p>
 *       <h3 class="hn-solution-card__title">Évidence</h3>
 *       <p class="hn-solution-card__body">…</p>
 *       <a class="hn-btn hn-btn--dark" href="#">Découvrir</a>
 *     </div>
 *     <div class="hn-solution-card__features">
 *       <p class="hn-solution-card__features-title">Ce que cela vous apporte</p>
 *       <ul class="hn-solution-card__features-list">
 *         <li class="hn-checkitem hn-checkitem--check-cyan">…</li>
 *       </ul>
 *     </div>
 *   </article>
 * ========================================================================== */

.hn-solution-card {
    position: relative;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 32px;
    padding: 48px;
    border-radius: 24px;
    box-sizing: border-box;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-solution-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-solution-card__content {
    display: flex;
    flex-direction: column;
    gap: 24px;
    width: 100%;
    max-width: 479px;
    min-width: 0;
}

/* Frame 404 (overline + titre) — column gap 12 */
.hn-solution-card__head {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.hn-solution-card__overline {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.0082em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-solution-card__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 30px;
    line-height: 36px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-solution-card__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

.hn-solution-card__content .hn-btn {
    align-self: flex-start;
    flex: 0 0 auto;
}

/* Frame 407 (features) — column gap 26 */
.hn-solution-card__features {
    display: flex;
    flex-direction: column;
    gap: 26px;
    width: 100%;
    max-width: 448px;
    flex: 1 1 0;
    min-width: 0;
}

.hn-solution-card__features-title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 18px;
    line-height: 1.4;
    color: var(--wp--preset--color--brand-dark);
}

.hn-solution-card__features-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* Variant COURT : content seul, pas de features */
.hn-solution-card--court .hn-solution-card__features {
    display: none;
}

.hn-solution-card--court {
    /* Card naturelle plus étroite quand pas de features */
    max-width: 575px;
}

/* Variants couleur ---------------------------------------------------------- */

.hn-solution-card--blanc { background: var(--wp--preset--color--surface); }

.hn-solution-card--beige {
    background: var(--wp--preset--color--paper);
}

.hn-solution-card--bleu {
    background: var(--wp--preset--color--brand-dark);
    --hn-brushed-color: color-mix(in srgb, var(--wp--preset--color--brand-dark) 80%, #ffffff);
}
.hn-solution-card--bleu .hn-solution-card__overline { color: var(--wp--preset--color--accent); }
.hn-solution-card--bleu .hn-solution-card__title { color: var(--wp--preset--color--paper); }
.hn-solution-card--bleu .hn-solution-card__body { color: var(--wp--preset--color--surface); }
.hn-solution-card--bleu .hn-solution-card__features-title { color: var(--wp--preset--color--paper); }
.hn-solution-card--bleu .hn-checkitem { color: var(--wp--preset--color--paper); }

@media (max-width: 960px) {
    .hn-solution-card {
        flex-direction: column;
        align-items: stretch;
        gap: 32px;
        padding: 32px;
    }
    .hn-solution-card__content,
    .hn-solution-card__features {
        max-width: 100%;
    }
    .hn-solution-card__title { font-size: 30px; line-height: 36px; }
}

/* ============================================================================
 * TEAM MEMBER CARD (molecule) — Figma Component HN (51:5956)
 *
 * 2 layouts × 3 skins + responsive mobile :
 *  - Compact (default) : photo en haut (fill width, height 260), nom+rôle dessous
 *  - Long              : photo carrée 260×260, nom+rôle à droite en row
 *  Skins : --blanc, --beige, --bleu (skin Bleu = fond brand-dark, texte paper).
 *
 * Texte : "nom" Mynerve 20/22.32 + "rôle" Montserrat 18/25.
 * Padding card : 12px (les images font 260px, le contenu déborde peu).
 * Brushed border via filter SVG.
 *
 * Usage compact :
 *   <article class="hn-team-card hn-team-card--blanc">
 *     <img class="hn-team-card__photo" src="…" alt="" />
 *     <div class="hn-team-card__info">
 *       <p class="hn-team-card__name">Clair</p>
 *       <p class="hn-team-card__role">Responsable de la comm</p>
 *     </div>
 *   </article>
 *
 * Usage long : ajouter modifier --long sur l'article.
 * ========================================================================== */

.hn-team-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 32px;
    padding: 12px;
    border-radius: 24px;
    box-sizing: border-box;
    overflow: hidden; /* clip le halo brushed pour qu'il ne déborde pas */
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-team-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-team-card__photo {
    width: 100%;
    height: 260px;
    border-radius: 16px;
    object-fit: cover;
    object-position: center top; /* garde les visages (haut de la photo) */
    display: block;
    background: var(--wp--preset--color--surface-muted);
    flex-shrink: 0;
}

/* AC Solutions : la grille team garde la largeur de carte du Figma (288px) au lieu
   de s'étirer sur toute la largeur (sinon photos paysage qui coupent les visages). */
.hn-cards-grid.hn-team-cards-grid {
    grid-template-columns: repeat(auto-fit, minmax(288px, 1fr));
    justify-content: center;
    max-width: var(--hn-section-max, 1184px);
    margin-inline: auto;
}

/* AC 30264 : bande de logos partenaires (page Mission). */
.hn-partners {
    width: min(100% - 2 * 24px, 1184px);
    margin-inline: auto;
    padding: clamp(40px, 7vw, 80px) 0;
    text-align: center;
}
.hn-partners__title {
    margin: 0 0 clamp(24px, 4vw, 40px);
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(28px, 4vw, 40px);
    color: var(--wp--preset--color--brand-dark);
}
.hn-partners__grid {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: clamp(24px, 4vw, 56px);
}
.hn-partners__grid img {
    height: 48px;
    width: auto;
    max-width: 160px;
    object-fit: contain;
    flex: 0 0 auto;
}

.hn-team-card__info {
    display: flex;
    flex-direction: column;
}

/* CTA réservation coaching (carte coach) + modal YCBM (tâche 30313). */
.hn-coach-cta {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 16px;
}
.hn-coach-cta__btn {
    width: 100%;
    justify-content: center;
    text-align: center;
    font-size: 14px;
}
.hn-ycbm-modal {
    width: min(840px, 94vw);
    max-width: 94vw;
    border: 0;
    border-radius: 20px;
    padding: 0;
    background: var(--wp--preset--color--surface, #fff);
    overflow: hidden;
}
.hn-ycbm-modal::backdrop {
    background: rgba(18, 0, 50, 0.55);
}
.hn-ycbm-modal__close {
    position: absolute;
    top: 10px;
    right: 14px;
    z-index: 2;
    width: 36px;
    height: 36px;
    border: 0;
    border-radius: 999px;
    background: rgba(18, 0, 50, 0.06);
    color: var(--wp--preset--color--brand-dark);
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
}
.hn-ycbm-modal__close:hover { background: rgba(18, 0, 50, 0.12); }
.hn-ycbm-modal #ycbm {
    display: block;
    width: 100%;
    min-height: 70vh;
    border: 0;
    background: transparent;
}

/* Bandeau « pas de crédit » sur la catégorie supervision (redirection CTA coach). */
.hn-shop-notice {
    margin: 0 0 24px;
    padding: 16px 20px;
    border-radius: 12px;
    background: color-mix(in srgb, var(--wp--preset--color--accent) 18%, #fff);
    border: 1px solid var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    line-height: 24px;
}

.hn-team-card__name {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-team-card__role {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-team-card__bio {
    margin: 8px 0 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 22px;
    color: var(--wp--preset--color--muted-text, #515151);
}

/* Variant Long : row avec photo carrée + info à droite, card hugge son contenu */
.hn-team-card--long {
    flex-direction: row;
    align-items: flex-end;
    gap: 32px;
    width: fit-content;
    max-width: 100%;
}

.hn-team-card--long .hn-team-card__photo {
    width: 260px;
    height: 260px;
    flex-shrink: 0;
}

.hn-team-card--long .hn-team-card__info {
    width: 233px;
    flex-shrink: 0;
}

/* Skins ---------------------------------------------------------------------- */
.hn-team-card--blanc { background: var(--wp--preset--color--surface); }
.hn-team-card--beige { background: var(--wp--preset--color--paper); }

.hn-team-card--bleu {
    background: var(--wp--preset--color--brand-dark);
    --hn-brushed-color: color-mix(in srgb, var(--wp--preset--color--brand-dark) 80%, #ffffff);
}
.hn-team-card--bleu .hn-team-card__name,
.hn-team-card--bleu .hn-team-card__role {
    color: var(--wp--preset--color--paper);
}

@media (max-width: 768px) {
    .hn-team-card--long {
        flex-direction: column;
        align-items: stretch;
    }
    .hn-team-card--long .hn-team-card__photo {
        width: 100%;
        height: 200px;
    }
    .hn-team-card--long .hn-team-card__info {
        width: 100%;
    }
}

/* ============================================================================
 * CARDS GRID (utility) — conteneur responsive pour collections de cartes
 *   (team-cards, event-cards, ressource-cards…). Pilote le nombre de colonnes
 *   via --hn-cards-cols ; dégrade à 2 puis 1 colonne en dessous de 1024/768px.
 * ========================================================================== */
.hn-cards-grid {
    display: grid;
    gap: 32px;
    grid-template-columns: repeat(var(--hn-cards-cols, 3), minmax(0, 1fr));
    align-items: stretch;
    justify-items: stretch;
}
.hn-cards-grid--2 { --hn-cards-cols: 2; }
.hn-cards-grid--3 { --hn-cards-cols: 3; }
.hn-cards-grid--4 { --hn-cards-cols: 4; }

/* Bloc event-cards posé en haut de page (ex. /a-propos/presse/) : l'alignwide ne
   contraint pas une grille en layout flow → on l'aligne sur la largeur de section
   (comme les autres sections) au lieu de la laisser bord à bord. AC 30357. */
.entry-content > .hn-cards-grid {
    max-width: var(--hn-section-max, 1184px);
    margin-inline: auto;
}

/* Page Presse : espace avant le footer (le dernier bloc « Contact presse »
   collait au pied de page). AC 30357. */
.page-id-5152 .entry-content { padding-bottom: clamp(56px, 8vw, 112px); }

@media (max-width: 1024px) {
    .hn-cards-grid--3,
    .hn-cards-grid--4 { --hn-cards-cols: 2; }
}
@media (max-width: 768px) {
    .hn-cards-grid { --hn-cards-cols: 1; }
}

/* ============================================================================
 * PAGE PRENDRE RENDEZ-VOUS (.hn-rdv) — Figma Design HN 879:5568
 *   Layout 2 colonnes plein écran : gauche (beige) = badge + titre + sélecteur
 *   d'offres (radio) + encart « Nous vous offrons » ; droite (blanc) =
 *   conseiller (photo + label Mynerve + intro) + citation + calendrier Google
 *   embarqué (iframe) + CTA + réassurance. Conseiller affiché selon
 *   ?conseiller=Prénom ; sélecteur d'offres géré par JS conseiller-rdv.js.
 * ========================================================================== */
.hn-rdv {
    display: flex;
    align-items: stretch;
    width: 100%;
}

.hn-rdv__col {
    flex: 1 1 50%;
    min-width: 0;
    box-sizing: border-box;
    display: flex;
    padding-top: clamp(120px, 13vw, 191px);
    padding-bottom: 64px;
    padding-inline: clamp(24px, 4vw, 48px);
}
/* Bande haute transparente (le fond de page quasi-blanc transparaît) puis fondu
   vers le bicolore : le split ne « remonte » plus sous le menu. */
.hn-rdv__col--left {
    background: linear-gradient(to bottom, transparent 40px, var(--wp--preset--color--paper) 80px);
    justify-content: flex-end;
}
.hn-rdv__col--right {
    background: linear-gradient(to bottom, transparent 40px, var(--wp--preset--color--surface) 80px);
    justify-content: flex-start;
}

.hn-rdv__inner {
    width: 100%;
    max-width: 528px;
    display: flex;
    flex-direction: column;
    gap: 68px;
}
.hn-rdv__inner--left { padding-right: clamp(0px, 3vw, 48px); }
.hn-rdv__inner--right {
    padding-left: clamp(0px, 4vw, 71px);
    gap: 32px;
}

/* Colonne gauche : en-tête ----------------------------------------------- */
.hn-rdv__head { display: flex; flex-direction: column; gap: 32px; }

.hn-rdv__badge {
    align-self: flex-start;
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    padding: 2px 10px;
    border-radius: 4px;
}

.hn-rdv__title {
    margin: 0;
    display: flex;
    flex-direction: column;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 32px;
    line-height: 40px;
    letter-spacing: -0.18px;
    color: var(--wp--preset--color--foreground);
}
.hn-rdv__title-script { font-family: 'Mynerve', cursive; font-weight: 400; }

/* Colonne gauche : sélecteur d'offres ------------------------------------ */
.hn-rdv__offers { display: flex; flex-direction: column; gap: 12px; }
/* AC 30241 : offres informatives (3 cadres au style actif, sans sélection). */
.hn-rdv__offers--static .hn-rdv-offer { cursor: default; }

.hn-rdv-offer {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 24px;
    border-radius: 24px;
    border: 1px solid transparent;
    background: transparent;
    cursor: pointer;
    transition: background-color .15s ease, box-shadow .15s ease;
}
.hn-rdv-offer.is-active {
    background: var(--wp--preset--color--surface);
    border-color: var(--wp--preset--color--surface);
    box-shadow: 0 1px 3px rgba(15, 23, 42, .08);
}
.hn-rdv-offer__input {
    position: absolute;
    opacity: 0;
    width: 1px; height: 1px;
    margin: -1px;
    overflow: hidden;
}
.hn-rdv-offer__radio {
    flex-shrink: 0;
    margin-top: 4px;
    width: 16px; height: 16px;
    border-radius: 50%;
    border: 2px solid #cbd5e1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
}
.hn-rdv-offer.is-active .hn-rdv-offer__radio { border-color: var(--wp--preset--color--brand-dark); }
.hn-rdv-offer.is-active .hn-rdv-offer__radio::after {
    content: '';
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--wp--preset--color--brand-dark);
}
.hn-rdv-offer__input:focus-visible + .hn-rdv-offer__radio {
    outline: 2px solid var(--wp--preset--color--primary);
    outline-offset: 2px;
}
.hn-rdv-offer__body { display: flex; flex-direction: column; gap: 4px; }
.hn-rdv-offer__title {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 20px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}
.hn-rdv-offer__desc {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

/* Colonne gauche : encart « Nous vous offrons » -------------------------- */
.hn-rdv__offrons {
    display: flex;
    gap: 12px;
    padding: 28px 20px 20px;
    border-radius: 12px;
    border: 1px solid color-mix(in srgb, var(--wp--preset--color--brand-dark) 8%, transparent);
    background: color-mix(in srgb, var(--wp--preset--color--surface) 50%, transparent);
}
.hn-rdv__offrons-icon {
    flex-shrink: 0;
    color: var(--wp--preset--color--primary);
    margin-top: 2px;
}
.hn-rdv__offrons-icon svg { display: block; }
.hn-rdv__offrons-body { display: flex; flex-direction: column; gap: 12px; }
.hn-rdv__offrons-title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-rdv__offrons-list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.hn-rdv__offrons-list li {
    position: relative;
    padding-left: 16px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-rdv__offrons-list li::before {
    content: '';
    position: absolute;
    left: 0; top: 10px;
    width: 4px; height: 4px;
    border-radius: 50%;
    background: var(--wp--preset--color--accent);
}

.hn-rdv__empty { margin: 0; color: var(--wp--preset--color--muted); }

.hn-conseiller[hidden] { display: none; }

.hn-conseiller {
    display: flex;
    flex-direction: column;
    gap: 32px;
}

.hn-conseiller__head {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 32px;
}

.hn-conseiller__photo {
    width: 111px;
    height: 111px;
    border-radius: 16px;
    object-fit: cover;
    display: block;
    flex-shrink: 0;
    background: var(--wp--preset--color--surface-muted);
}

.hn-conseiller__info {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.hn-conseiller__label {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-conseiller__intro {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}
/* AC 30241 : prénom en Mynerve au début de l'intro. */
.hn-conseiller__intro-name {
    font-family: 'Mynerve', cursive;
    font-size: 1.3em;
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}
/* AC 30241 : phrase d'accroche au-dessus de l'agenda embarqué (remplace le CTA). */
.hn-conseiller__agenda-lead {
    margin: 0 0 4px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 16px;
    line-height: 1.5;
    color: var(--wp--preset--color--brand-dark);
}

.hn-conseiller__quote {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 24px;
}

.hn-conseiller__quote-icon {
    flex-shrink: 0;
    width: 40px;
    height: 31px;
    color: var(--wp--preset--color--accent);
}
.hn-conseiller__quote-icon svg { display: block; width: 100%; height: 100%; }

.hn-conseiller__quote-text {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

/* Widget agenda (beige) ----------------------------------------------------- */
.hn-rdv-agenda {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 16px;
    padding: 24px;
    min-height: 280px;
    background: var(--wp--preset--color--paper);
    border-radius: 24px;
    box-sizing: border-box;
    text-align: center;
}
.hn-rdv-agenda--embed { padding: 8px; min-height: 0; overflow: hidden; }
/* AC 30241 : rogner l'en-tête de l'agenda Google embarqué (cross-origin, non stylable),
   on tire l'iframe vers le haut dans un conteneur overflow:hidden. Offset à ajuster
   si Google modifie la hauteur de son en-tête. */
.hn-rdv-agenda--embed .hn-rdv-agenda__embed { margin-top: -326px; min-height: 1020px; }

.hn-rdv-agenda__icon {
    width: 48px;
    height: 48px;
    border-radius: var(--hn-radius-full);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--wp--preset--color--primary) 10%, transparent);
    color: var(--wp--preset--color--primary);
    flex-shrink: 0;
}

.hn-rdv-agenda__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 16px;
    line-height: 1.6;
    color: var(--wp--preset--color--foreground);
}

.hn-rdv-agenda__text {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 14px;
    line-height: 21px;
    color: var(--wp--preset--color--muted);
}

.hn-rdv-agenda__embed {
    display: block;
    width: 100%;
    border: 0;
    border-radius: 16px;
    min-height: 600px;
}

.hn-conseiller__cta { align-self: flex-start; }

.hn-rdv__reassurance {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

/* Responsive ------------------------------------------------------------- */
@media (max-width: 900px) {
    .hn-rdv { flex-direction: column; }
    .hn-rdv__col {
        flex: 1 1 auto;
        justify-content: center;
        padding-top: clamp(96px, 16vw, 140px);
        padding-bottom: 48px;
    }
    .hn-rdv__col--right { padding-top: 48px; }
    .hn-rdv__inner { max-width: 592px; margin-inline: auto; gap: 40px; }
    .hn-rdv__inner--left,
    .hn-rdv__inner--right { padding-inline: 0; }
}
@media (max-width: 768px) {
    .hn-conseiller__head { flex-direction: column; align-items: flex-start; gap: 16px; }
    .hn-conseiller__photo { width: 96px; height: 96px; }
    .hn-rdv__title { font-size: 28px; line-height: 36px; }
    .hn-rdv-offer { padding: 20px; }
    .hn-rdv-offer__title { font-size: 18px; }
    .hn-rdv-offer__desc,
    .hn-rdv__offrons-list li { font-size: 16px; }
}

/* ============================================================================
 * FORMULAIRES — Gravity Forms (Contact) + embed HubSpot
 *   Contact = Gravity Forms (#1). Essai/JeunesDip/Étudiants/Newsletter/Fiches =
 *   embeds HubSpot (bloc happyneuron/hubspot-form). Alignement tokens HN.
 * ========================================================================== */
.hn-hubspot-form-block { max-width: 640px; margin-inline: auto; }

.hn-hubspot-form-block__title {
    margin: 0 0 24px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 30px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
    text-align: center;
}

.hn-hubspot-form-block__placeholder {
    border: 2px dashed var(--wp--preset--color--border-strong);
    border-radius: var(--hn-radius-lg);
    padding: 32px;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    color: var(--wp--preset--color--muted);
}
.hn-hubspot-form-block__placeholder p { margin: 0 0 8px; }

/* Section « question » Qualiopi sur les fiches formation (AC 30285). */
.hn-form-question {
    padding: clamp(48px, 7vw, 96px) 24px;
}
.hn-form-question__inner {
    max-width: 720px;
    margin-inline: auto;
    text-align: center;
}
.hn-form-question__title {
    margin: 0 0 20px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: clamp(26px, 3vw, 34px);
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}
.hn-form-question__lead {
    margin: 0 auto 16px;
    max-width: 640px;
    color: var(--wp--preset--color--muted);
    line-height: 1.6;
}
.hn-form-question .hn-hubspot-form {
    margin-top: 32px;
    text-align: left;
}

/* Panier d'abonnement (.hn-cart-has-offer sur body) : seul « Prélèvement mensuel »
   est proposé → on masque le bloc « express » PayPal du checkout bloc + le
   message de financement PayLater (non couverts par le filtre des passerelles). AC 30235. */
body.hn-cart-has-offer .wp-block-woocommerce-checkout-express-payment-block,
body.hn-cart-has-offer .wc-block-components-express-payment,
body.hn-cart-has-offer .wc-block-checkout__express-payment,
body.hn-cart-has-offer .wp-block-woocommerce-cart-express-payment-block,
body.hn-cart-has-offer .ppcp-messages,
body.hn-cart-has-offer [data-pp-message] {
    display: none !important;
}

/* Désactivation GLOBALE des CTA d'achat rapide / express (Apple Pay, Google Pay,
   Link, PayPal express + financement Pay Later) sur tout le site : checkout,
   panier, mini-panier ET fiches produit. Les clients passent par les moyens de
   paiement classiques (radios). */
.wp-block-woocommerce-checkout-express-payment-block,
.wp-block-woocommerce-cart-express-payment-block,
.wc-block-components-express-payment,
.wc-block-checkout__express-payment,
.wc-block-cart__payment-options,
.ppcp-messages,
[data-pp-message],
.ppc-button-wrapper,
.ppcp-button-apm,
.wc-stripe-payment-request-wrapper,
#wc-stripe-payment-request-wrapper,
.wc-stripe-payment-request-button-separator,
#wc-stripe-express-checkout-element,
.wc-stripe-express-checkout-element,
.wc-stripe-express-checkout-button-separator {
    display: none !important;
}

/* Section contact (formulaire Gravity + photo en core/columns) : boxée et photo
   arrondie qui remplit sa colonne au lieu de coller au bord (AC layout 2026-06-17). */
.hn-contact-cols {
    max-width: var(--hn-section-max, 1184px);
    margin-inline: auto;
    align-items: stretch;
}
.hn-contact-cols > .wp-block-column { align-self: stretch; }
.hn-contact-cols figure.wp-block-image {
    height: 100%;
    margin: 0;
}
.hn-contact-cols img {
    width: 100%;
    height: 100%;
    min-height: 320px;
    object-fit: cover;
    border-radius: 24px;
    display: block;
}

/* Pop-up « fiches gratuites » (AC 30240). */
.hn-dl-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(18, 0, 50, 0.5);
}
.hn-dl-modal[hidden] { display: none; }
.hn-dl-modal__panel {
    position: relative;
    width: 100%;
    max-width: 520px;
    max-height: 90vh;
    overflow-y: auto;
    background: #fff;
    border-radius: 24px;
    padding: clamp(28px, 4vw, 44px);
    box-shadow: var(--hn-shadow-lg, 0 24px 64px rgba(18, 0, 50, 0.28));
}
.hn-dl-modal__close {
    position: absolute;
    top: 14px;
    right: 18px;
    background: none;
    border: 0;
    font-size: 26px;
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
    cursor: pointer;
    opacity: 0.6;
}
.hn-dl-modal__close:hover { opacity: 1; }
.hn-dl-modal__title {
    margin: 0 0 12px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: clamp(22px, 2.6vw, 28px);
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}
.hn-dl-modal__lead {
    margin: 0 0 24px;
    color: var(--wp--preset--color--muted);
    line-height: 1.55;
}

/* Skin formulaires HubSpot : voir le skin unifié (§ "TROIS écosystèmes",
   .hn-hubspot-form) + compléments layout en fin de fichier (AC 30240). */

/* Gravity Forms — champs/labels : skin unique hn-form (fin de fichier). */

.gform_wrapper .gform_footer input[type="submit"],
.gform_wrapper .gform_footer button {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    border: 0;
    border-radius: var(--hn-radius-full);
    padding: 0 24px;
    height: 48px;
    cursor: pointer;
    transition: background var(--hn-transition);
}
.gform_wrapper .gform_footer input[type="submit"]:hover,
.gform_wrapper .gform_footer button:hover { background: #1f0a4d; }

/* ============================================================================
 * TESTIMONIAL CARD (molecule) — Figma Component HN "Témoignages" (102:7452)
 *
 * Card column avec quote icon teal + body grise + Avatar atom (nom Mynerve + rôle).
 * Width 350 fixed, padding 32, gap 48, brushed border.
 *
 * Usage :
 *   <article class="hn-testimonial-card">
 *     <div class="hn-testimonial-card__text">
 *       <span class="hn-testimonial-card__quote"><?php echo hn_icon('quote'); ?></span>
 *       <p class="hn-testimonial-card__body">Lorem ipsum…</p>
 *     </div>
 *     <article class="hn-avatar"><!-- atom Avatar --></article>
 *   </article>
 * ========================================================================== */

.hn-testimonial-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 48px;
    padding: 32px;
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    box-sizing: border-box;
    width: 100%;
    max-width: 350px;
    overflow: hidden;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-testimonial-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-testimonial-card__text {
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 16px;
    width: 100%;
}

.hn-testimonial-card__quote {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px;
    color: var(--wp--preset--color--accent);
    line-height: 0;
}

.hn-testimonial-card__quote svg {
    width: 40px;
    height: auto;
    display: block;
}

.hn-testimonial-card__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    flex: 1 1 auto;
}

@media (max-width: 768px) {
    .hn-testimonial-card { max-width: 100%; padding: 24px; gap: 32px; }
}

/* ============================================================================
 * BLOC-TEXT (molecule) — Figma Component HN (53:10558)
 *
 * Mini-bloc texte : titre + filet séparateur horizontal + description.
 * Utilisé typiquement en grille de 3 (CardGrid Tension) pour illustrer
 * des points de douleur / tension.
 *
 * Pas de fond ni de bordure — c'est juste du contenu structuré.
 *
 * Structure column gap 16, width 329 :
 *   - __head (column gap 8) :
 *     - __title (Body 18 brand-dark)
 *     - __divider (1px brand-dark full width)
 *   - __body (Body 18 brand-dark)
 *
 * Usage :
 *   <div class="hn-text-block">
 *     <div class="hn-text-block__head">
 *       <p class="hn-text-block__title">Votre charge mentale augmente</p>
 *       <div class="hn-text-block__divider"></div>
 *     </div>
 *     <p class="hn-text-block__body">Préparer les séances…</p>
 *   </div>
 * ========================================================================== */

.hn-text-block {
    display: flex;
    flex-direction: column;
    gap: 16px;
    width: 100%;
    max-width: 329px;
}

.hn-text-block__head {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.hn-text-block__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-text-block__divider {
    height: 1px;
    background: var(--wp--preset--color--brand-dark);
    width: 100%;
}

.hn-text-block__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}
/* Badge optionnel par carte (ex. Interactif / Flexible / Autonome) */
.hn-text-block__badge {
    align-self: flex-start;
    margin: 0 0 4px;
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 14px;
    line-height: 1.4;
    padding: 2px 10px;
    border-radius: 4px;
}
/* Liste « Les avantages » par carte */
.hn-text-block__advtitle {
    margin: 16px 0 8px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 16px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-text-block__adv {
    margin: 0;
    padding-left: 1.2em;
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    line-height: 22px;
    color: var(--wp--preset--color--brand-dark);
}

/* ============================================================================
 * CARD PHOTO (molecule) — Figma Component HN (134:1181)
 *
 * Card column avec logo (ou image) en haut + texte structuré + divider + CTA.
 * Padding 32, gap 16, width 401, fond blanc, brushed border.
 *
 * Structure :
 *   - __media (logo ou image, max-width 214 height auto)
 *   - __body (column gap 32) :
 *     - __content (column) : __title manuscrit + __description grise
 *   - __divider 1px
 *   - __cta (bouton text)
 *
 * Usage :
 *   <article class="hn-card-photo">
 *     <img class="hn-card-photo__media" src="logo.svg" alt="" />
 *     <div class="hn-card-photo__body">
 *       <div class="hn-card-photo__content">
 *         <p class="hn-card-photo__title">Titre</p>
 *         <p class="hn-card-photo__description">Description…</p>
 *       </div>
 *     </div>
 *     <div class="hn-card-photo__divider"></div>
 *     <a class="hn-btn hn-btn--text hn-btn--xs" href="#">En savoir plus</a>
 *   </article>
 * ========================================================================== */

.hn-card-photo {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 16px;
    padding: 32px;
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    box-sizing: border-box;
    width: 100%;
    max-width: 401px;
    overflow: hidden;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-card-photo::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-card-photo__media {
    width: 214px;
    height: auto;
    max-height: 73px;
    object-fit: contain;
    display: block;
}

.hn-card-photo__body {
    display: flex;
    flex-direction: column;
    gap: 32px;
}

.hn-card-photo__content {
    display: flex;
    flex-direction: column;
}

.hn-card-photo__title {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-card-photo__description {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

.hn-card-photo__divider {
    height: 1px;
    background: var(--wp--preset--color--brand-dark);
    opacity: 0.6;
    width: 100%;
}

.hn-card-photo .hn-btn {
    align-self: flex-start;
}

/* ============================================================================
 * PAGE HERO (molecule) — Figma Component HN (57:1792)
 *
 * 3 variants logiques :
 *  - default      : titre mixte + description body
 *  - --badge      : badge cyan en haut + titre + description (tout centré)
 *  - --title-only : titre seul
 *
 * Titre mixte = Montserrat 50px brand-dark + span Mynerve 55px brand-dark
 *               (lineHeight 55, letter-spacing -4% / -3.64%), text-align center.
 * Description = Montserrat 18/25 var(--wp--preset--color--muted-text), text-align center.
 * Mobile : Montserrat 40 + Mynerve 45 (lineHeight 37/48, letter-spacing -5%).
 *
 * Usage :
 *   <header class="hn-page-hero hn-page-hero--badge">
 *     <span class="hn-badge hn-badge--cyan">Solutions</span>
 *     <h1 class="hn-page-hero__title">Des outils pour chaque
 *       <span class="hn-page-hero__title-script">temps du soin</span>
 *     </h1>
 *     <p class="hn-page-hero__lead">Evaluation, rééducation, formation…</p>
 *   </header>
 * ========================================================================== */

.hn-page-hero {
    display: flex;
    flex-direction: column;
    gap: 32px;
    box-sizing: border-box;
    width: 100%;
    max-width: 671px;
    margin-inline: auto;
    padding: 20px;
}

.hn-page-hero__title {
    margin: 0;
    text-align: center;
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
}

.hn-page-hero__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    letter-spacing: -0.0364em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-page-hero__lead {
    margin: 0;
    text-align: center;
    color: var(--wp--preset--color--muted-text);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
}

/* Boutons d'action sous le lead (hero de page intérieure avec CTA) */
.hn-page-hero__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 16px;
    margin-top: 8px;
}

/* Variant --badge : badge cyan en haut, tout centré horizontalement */
.hn-page-hero--badge {
    align-items: center;
}

/* Le badge utilise l'atom .hn-badge --cyan */
.hn-page-hero .hn-badge {
    align-self: center;
}

/* Variant --title-only : titre seul, lead masqué si présent */
.hn-page-hero--title-only .hn-page-hero__lead {
    display: none;
}

/* Responsive : sizes mobile Figma */
@media (max-width: 768px) {
    .hn-page-hero {
        max-width: 100%;
        gap: 24px;
    }
    .hn-page-hero__title {
        font-size: 40px;
        line-height: 37px;
        letter-spacing: -0.05em;
    }
    .hn-page-hero__title-script {
        font-size: 45px;
        line-height: 48px;
        letter-spacing: -0.0444em;
    }
}

/* ============================================================================
 * TIMELINE (molecule + Timeline Grid organism) — Figma (65:1565 + 70:4334)
 *
 * Liste d'étapes empilées avec rond numéroté à gauche + card text à droite.
 * Les ronds sont reliés visuellement par un trait vertical (connector).
 *
 * Note : le wrapper `.hn-timeline` correspond à l'organism "Timeline Grid"
 * Figma (70:4334), qui n'est qu'un container `flex-direction: column`. La
 * Timeline molecule Figma (65:1565) = 1 step seul = `.hn-timeline__step`.
 *
 * Structure :
 *  .hn-timeline             — container column (la liste d'étapes)
 *    .hn-timeline__step     — row align-items center, gap 48 (32 mobile)
 *      .hn-timeline__marker — column : rond numéroté + connecteur vertical
 *        .hn-timeline__number — cercle 44px brand-dark, num Mynerve 24 paper
 *        .hn-timeline__connector — ligne 3px brand-dark verticale (entre étapes)
 *      .hn-timeline__card   — card blanche brushed, body-bold + body-gris
 *
 * Usage :
 *   <ol class="hn-timeline">
 *     <li class="hn-timeline__step">
 *       <div class="hn-timeline__marker">
 *         <span class="hn-timeline__number">1</span>
 *         <span class="hn-timeline__connector"></span>
 *       </div>
 *       <article class="hn-timeline__card">
 *         <p class="hn-timeline__card-title">En amont</p>
 *         <p class="hn-timeline__card-body">Mieux orienter…</p>
 *       </article>
 *     </li>
 *   </ol>
 * ========================================================================== */

.hn-timeline {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
}

/* Variante verticale avec photo à gauche de la frise (AC 30290). */
.hn-stepper__media-layout {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1fr);
    gap: clamp(32px, 5vw, 72px);
    align-items: start;
}

.hn-stepper__media {
    margin: 0;
    position: sticky;
    top: 96px;
    align-self: stretch;
}

.hn-stepper__media img {
    width: 100%;
    height: 100%;
    min-height: 320px;
    max-height: 640px;
    object-fit: cover;
    border-radius: 24px;
    display: block;
}

/* AC 30299 — Supervision « Une séance de A à Z » : décaler le cadrage vers la
   gauche pour montrer davantage l'écran (laptop) que la praticienne. */
.page-id-5144 .hn-stepper__media img {
    object-position: 18% center;
}

@media (max-width: 900px) {
    .hn-stepper__media-layout {
        grid-template-columns: 1fr;
        gap: 32px;
    }
    .hn-stepper__media {
        position: static;
    }
    .hn-stepper__media img {
        min-height: 220px;
        max-height: 360px;
    }
}

.hn-timeline__step {
    display: flex;
    flex-direction: row;
    align-items: stretch;
    gap: 48px;
}

.hn-timeline__marker {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
    flex-shrink: 0;
}

.hn-timeline__number {
    width: 44px;
    height: 44px;
    border-radius: 44px;
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--paper);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 24px;
    line-height: 1;
    flex-shrink: 0;
}

.hn-timeline__connector {
    width: 3px;
    flex: 1 0 auto;
    min-height: 32px;
    background: var(--wp--preset--color--brand-dark);
}

/* La dernière étape n'a pas de connector visible (ou retiré côté HTML) */
.hn-timeline__step:last-child .hn-timeline__connector {
    display: none;
}

.hn-timeline__card {
    position: relative;
    flex: 1 1 auto;
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    padding: 24px;
    box-sizing: border-box;
    margin-bottom: 24px; /* espace entre cards verticales */
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: 12px;
    max-width: 365px;
    --hn-brushed-color: var(--wp--preset--color--surface);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

.hn-timeline__card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-timeline__card-title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-timeline__card-body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

@media (max-width: 768px) {
    .hn-timeline__step { gap: 32px; }
    .hn-timeline__card { max-width: 100%; }
}

/* ============================================================================
 * TOGGLE (molecule) — Figma Component HN, 2 composants distincts
 *
 * 1. "Toogle" (13:5796) — pill button selector (filled actif + outline inactif).
 * 2. "Toogle produit" (137:2806) — tab navigation avec filet sous label.
 *
 * Les 2 sont des sélecteurs mutuellement exclusifs, mais avec des styles
 * graphiques très différents (pills bold vs tabs minimalistes).
 * ========================================================================== */

/* ----- 1. Pill selector ("Toogle" 13:5796) ---------------------------------
 *
 * Row de pills 48px, gap 16. Actif = .hn-btn--dark (filled brand-dark),
 * Inactifs = .hn-btn--dark-outline. Utilise directement le système Buttons.
 *
 * Usage :
 *   <div class="hn-toggle-pills" role="group">
 *     <button class="hn-btn hn-btn--dark" type="button">Option A</button>
 *     <button class="hn-btn hn-btn--dark-outline" type="button">Option B</button>
 *     <button class="hn-btn hn-btn--dark-outline" type="button">Option C</button>
 *   </div>
 * ========================================================================== */

.hn-toggle-pills {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 16px;
    align-items: center;
}

/* ----- 2. Tab navigation ("Toogle produit" 137:2806) ------------------------
 *
 * Tab navigation simple : label centré + filet 1px sous label.
 * 2 états : Inactif (gris 60%, Montserrat Regular) / Actif (noir, Medium).
 *
 * Usage :
 *   <div class="hn-toggle-group" role="tablist">
 *     <button class="hn-toggle hn-toggle--active" role="tab" aria-selected="true">
 *       <span class="hn-toggle__label">Contexte</span>
 *       <span class="hn-toggle__divider"></span>
 *     </button>
 *   </div>
 * ========================================================================== */

.hn-toggle-group {
    display: flex;
    flex-direction: row;
    gap: 20px;
    align-items: stretch;
}

.hn-toggle {
    display: flex;
    flex-direction: column;
    gap: 16px;
    background: transparent;
    border: 0;
    padding: 0;
    cursor: pointer;
    flex: 1 1 0;
    min-width: 0;
    color: inherit;
}

.hn-toggle__label {
    display: block;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 20px;
    line-height: 22px;
    color: rgba(0, 0, 0, 0.6);
    transition: color 200ms ease, font-weight 200ms ease;
}

.hn-toggle__divider {
    display: block;
    height: 1px;
    background: rgba(0, 0, 0, 0.1);
    width: 100%;
}

.hn-toggle--active .hn-toggle__label,
.hn-toggle[aria-selected="true"] .hn-toggle__label {
    font-weight: 500;
    color: var(--wp--preset--color--brand-dark);
}

.hn-toggle:hover:not(.hn-toggle--active) .hn-toggle__label {
    color: var(--wp--preset--color--brand-dark);
}

/* ============================================================================
 * AVATAR (atomic) — Figma Component HN, Avatar (10:425)
 *
 * Carte mini "team member" : photo carrée arrondie + nom (Mynerve) + rôle (Montserrat).
 * Layout row flex, align-items: flex-end, photo à droite.
 *
 * Usage :
 *   <article class="hn-avatar">
 *     <div class="hn-avatar__info">
 *       <h4 class="hn-avatar__name">Talia Nguyen</h4>
 *       <p class="hn-avatar__role">Orthophoniste</p>
 *     </div>
 *     <img class="hn-avatar__photo" src="…" alt="" />
 *   </article>
 * ========================================================================== */

.hn-avatar {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
    gap: 0;
    width: 100%;
    max-width: 236px;
}

.hn-avatar__info {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding-right: 20px;
    width: 111px;
    flex-shrink: 0;
}

.hn-avatar__name {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-avatar__role {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

.hn-avatar__photo {
    width: 111px;
    height: 111px;
    border-radius: 16px;
    object-fit: cover;
    display: block;
    flex-shrink: 0;
    background: var(--wp--preset--color--surface-muted);
}

/* Variant photo-only : juste la photo, sans bloc info (Figma 10:420) */
.hn-avatar--photo-only {
    justify-content: flex-start;
    width: fit-content;
}

/* ============================================================================
 * ATOM PREVIEW — wrapper utilitaire pour boxer la preview des atomes dans
 * /allinone/ et la rendre lisible (pas full-width).
 * ========================================================================== */

.hn-atom-preview {
    max-width: 960px;
    margin-inline: auto;
    padding: 24px;
    background: var(--wp--preset--color--surface);
    border: 1px solid var(--wp--preset--color--border, #e5e7eb);
    border-radius: 16px;
    display: flex;
    flex-direction: column;
    gap: 32px;
}

.hn-atom-preview__row {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.hn-atom-preview__legend {
    margin: 0;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--wp--preset--color--muted-text);
    font-family: Montserrat, ui-sans-serif, sans-serif;
}

.hn-atom-preview__items {
    display: flex;
    gap: 12px;
    align-items: center;
    flex-wrap: wrap;
    padding: 16px;
    background: #fafafa;
    border-radius: 12px;
}

.hn-atom-preview__items--paper {
    background: var(--wp--preset--color--paper);
}

.hn-atom-preview__items--dark {
    background: var(--wp--preset--color--brand-dark);
}

/* ============================================================================
 * BUTTONS (atomic) — Figma Component HN, canvas Buttons (57:2842)
 *
 * Famille button/large (48), /medium (40), /small (32), /1xs (24).
 * 5 styles : Dark (Figma "Bleu" #120032), Dark Outline, Paper (Beige #F7F3EB),
 *            White, White Outline.
 * 4 états :  Default, Hover, Active, Disabled.
 * Toutes les variantes sont en pill (border-radius 9999px), Montserrat Medium 15,
 * gap icône+texte 8px, padding-inline 24px, hauteur fixe selon la taille.
 *
 * Usage : <a class="hn-btn hn-btn--dark hn-btn--lg">…</a>
 * Modifiers : taille (xs/sm/md/lg) + style (dark/dark-outline/paper/white/white-outline)
 * ========================================================================== */

.hn-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding-inline: 24px;
    height: 48px; /* défaut = lg */
    border-radius: 9999px;
    border: 2px solid transparent;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    box-sizing: border-box;
    transition: background 200ms ease, color 200ms ease, border-color 200ms ease, opacity 200ms ease;
    white-space: nowrap;
}

.hn-btn:disabled,
.hn-btn[aria-disabled="true"] {
    cursor: not-allowed;
    pointer-events: none;
    background: #D4DADF;
    color: var(--wp--preset--color--muted-text);
    border-color: #D4DADF;
}

/* Icône arrow-right intégrée (Figma 5:1627 / 57:4411). Toujours en cyan accent
   pour ressortir sur n'importe quel style de bouton. */
.hn-btn__icon {
    display: inline-flex;
    align-items: center;
    line-height: 0;
    color: var(--wp--preset--color--accent);
    flex-shrink: 0;
}

.hn-btn__icon svg {
    width: 12px;
    height: auto;
    display: block;
}

.hn-btn:disabled .hn-btn__icon,
.hn-btn[aria-disabled="true"] .hn-btn__icon {
    color: var(--wp--preset--color--muted-text);
}

/* --- Tailles (height fixe + font-size pour les très petits) ---------------- */
.hn-btn--lg { height: 48px; }
.hn-btn--md { height: 40px; }
.hn-btn--sm { height: 32px; padding-inline: 20px; }
.hn-btn--xs { height: 24px; padding-inline: 16px; font-size: 13px; gap: 4px; }

/* --- Style : Dark (Figma "Bleu" — #120032 brand-dark plein) ---------------- */
.hn-btn--dark {
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    border-color: var(--wp--preset--color--brand-dark);
}
.hn-btn--dark:hover { background: #1f0a4d; border-color: #1f0a4d; }
.hn-btn--dark:active { background: #0a001a; border-color: #0a001a; }

/* --- Style : Dark Outline (border #120032, fond transparent) --------------- */
.hn-btn--dark-outline {
    background: transparent;
    color: var(--wp--preset--color--brand-dark);
    border-color: var(--wp--preset--color--brand-dark);
}
.hn-btn--dark-outline:hover { background: var(--wp--preset--color--brand-dark); color: var(--wp--preset--color--surface); }
.hn-btn--dark-outline:active { background: #0a001a; color: var(--wp--preset--color--surface); border-color: #0a001a; }

/* --- Style : Paper (Figma "Beige" — #F7F3EB plein) ------------------------- */
.hn-btn--paper {
    background: var(--wp--preset--color--paper);
    color: var(--wp--preset--color--brand-dark);
    border-color: var(--wp--preset--color--paper);
}
.hn-btn--paper:hover {
    background: color-mix(in srgb, var(--wp--preset--color--paper) 88%, #000);
    border-color: color-mix(in srgb, var(--wp--preset--color--paper) 88%, #000);
}
.hn-btn--paper:active {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    border-color: var(--wp--preset--color--brand-dark);
}

/* --- Style : White (fond blanc, texte dark) — pour sections sombres -------- */
.hn-btn--white {
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
    border-color: var(--wp--preset--color--surface);
}
.hn-btn--white:hover {
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    border-color: var(--wp--preset--color--accent);
}
.hn-btn--white:active {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    border-color: var(--wp--preset--color--brand-dark);
}

/* --- Style : White Outline (border blanc, transparent) — sections sombres -- */
.hn-btn--white-outline {
    background: transparent;
    color: var(--wp--preset--color--surface);
    border-color: var(--wp--preset--color--surface);
}
.hn-btn--white-outline:hover {
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
}
.hn-btn--white-outline:active {
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
    border-color: var(--wp--preset--color--surface);
}

/* --- Style : Text-only (Figma "Button texte" — button/2xs sans bg) -------- */
.hn-btn--text {
    background: transparent;
    color: var(--wp--preset--color--brand-dark);
    border-color: transparent;
    padding-inline: 0;
}
.hn-btn--text:hover {
    color: var(--wp--preset--color--primary);
}

.hn-btn--text-white {
    background: transparent;
    color: var(--wp--preset--color--surface);
    border-color: transparent;
    padding-inline: 0;
}
.hn-btn--text-white:hover {
    color: var(--wp--preset--color--accent);
}

/* --- DEPRECATED — aliases pour rétrocompatibilité (ancien CSS) ------------- */
.hn-btn--primary { /* utilisait #364EBF, à terme migrer vers --dark */
    background: var(--wp--preset--color--primary);
    color: #fff;
    border-color: var(--wp--preset--color--primary);
}
.hn-btn--primary:hover {
    background: color-mix(in srgb, var(--wp--preset--color--primary) 88%, #000);
    border-color: color-mix(in srgb, var(--wp--preset--color--primary) 88%, #000);
}
.hn-btn--large { /* alias de --lg, déjà la taille par défaut */ }

/* Hamburger (3 lignes 20px) */
.hn-burger {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    width: 20px;
    height: 16px;
}

.hn-burger span {
    display: block;
    height: 2px;
    background: var(--wp--preset--color--brand-dark);
    border-radius: 2px;
    transition: transform 200ms ease, opacity 200ms ease;
}

.hn-burger span:nth-child(2) {
    width: 13px;
    align-self: flex-end;
}

/* ============================================================================
 * MENU OVERLAY — état ouvert
 * ========================================================================== */

.hn-menu-overlay {
    position: fixed;
    inset: 0;
    z-index: 70;
    pointer-events: auto;
    display: flex;
    justify-content: center;
    padding: 16px clamp(16px, 4vw, 80px);
    background: rgb(15 23 42 / 0%);
    transition: background 250ms ease;
}

.hn-menu-overlay[hidden] {
    display: none;
}

.hn-menu-overlay--open {
    background: rgb(15 23 42 / 35%);
}

.hn-menu-overlay__panel {
    background: rgba(247, 243, 235, 0.95); /* paper @95% (Figma 90% + un peu d'opacité pour la lisibilité) */
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-radius: 24px;
    padding: 32px 24px;
    width: min(300px, 100%);
    box-shadow: 0 24px 60px rgb(15 23 42 / 25%);
    display: flex;
    flex-direction: column;
    gap: 32px;
    /* Doit se positionner juste sous le pill close (= padding header 16 + pill hauteur ~91 + gap 8) */
    margin-top: 115px;
    align-self: flex-start;
    transform: translateY(-12px);
    opacity: 0;
    transition: transform 250ms ease, opacity 250ms ease;
}

.hn-menu-overlay--open .hn-menu-overlay__panel {
    transform: translateY(0);
    opacity: 1;
}

.hn-menu-overlay__head {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.hn-menu-overlay__head img {
    /* Figma : logo 130×43 dans le head du panel overlay */
    height: 43px;
    width: auto;
    display: block;
}

.hn-menu-overlay__close {
    background: transparent;
    border: 0;
    padding: 4px;
    cursor: pointer;
    color: var(--wp--preset--color--brand-dark);
    display: inline-flex;
}

.hn-menu-overlay__nav ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hn-menu-overlay__nav a {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 35px;
    /* line-height fixe = max des 2 states pour éviter le "saut" de hauteur au hover */
    line-height: 48px;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    min-height: 48px;
}

/* Hover Figma (Menu texte variant Hover) : switch typo Montserrat → Mynerve cursive.
   La taille passe de 35 (Mont) à 40 (Mynerve) mais line-height reste 48 pour figer
   la hauteur du bloc parent. */
.hn-menu-overlay__nav a:hover,
.hn-menu-overlay__nav a:focus-visible {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 40px;
    color: var(--wp--preset--color--brand-dark);
}

/* --- Second niveau : Ressources en accordéon (Figma Menu "Variant5") -------
   Libellé = lien vers le hub /ressources/ ; chevron = bascule du sous-menu. */
.hn-menu-overlay__group {
    display: flex;
    flex-direction: column;
}

.hn-menu-overlay__group-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

/* .hn-menu-overlay__group-label est un <a> : il hérite de .hn-menu-overlay__nav a
   (Montserrat 35px, switch Mynerve au hover). État ouvert = Mynerve forcé. */
.hn-menu-overlay__group.is-open .hn-menu-overlay__group-label {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 40px;
}

/* Pastille blanche + chevron, bouton de bascule (Figma : rond clair, chevron qui se retourne) */
.hn-menu-overlay__chevron {
    appearance: none;
    -webkit-appearance: none;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    padding: 0;
    border: 0;
    border-radius: 12px;
    background: #fff;
    color: var(--wp--preset--color--brand-dark);
    cursor: pointer;
    transition: transform 220ms ease;
}

.hn-menu-overlay__chevron[aria-expanded="true"] {
    transform: rotate(180deg);
}

.hn-menu-overlay__submenu {
    list-style: none;
    margin: 4px 0 0;
    padding: 8px 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.hn-menu-overlay__submenu[hidden] {
    display: none;
}

.hn-menu-overlay__submenu a {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    min-height: 0;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
}

.hn-menu-overlay__submenu a:hover,
.hn-menu-overlay__submenu a:focus-visible {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* AC 30258 : le foot du menu (CTA Se connecter + icônes) a été retiré du header.
   .hn-icon-btn conservé (utilitaire potentiellement réutilisé ailleurs). */
.hn-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    border-radius: 24px;
    text-decoration: none;
    transition: background 200ms ease;
}

.hn-icon-btn:hover {
    background: #1f0a4d;
    color: #fff;
}

/* Responsive — sur mobile, overlay plein centre, pill compact sans Se connecter */
@media (max-width: 768px) {
    .hn-menu-overlay {
        padding: 8px;
        justify-content: center;
    }
    .hn-menu-overlay__panel {
        margin-top: 80px;
        width: 100%;
    }
    .hn-menu-overlay__nav a {
        font-size: 32px;
        line-height: 44px;
        min-height: 44px;
    }
    .hn-menu-overlay__nav a:hover,
    .hn-menu-overlay__nav a:focus-visible {
        font-size: 36px;
    }
    .hn-menu-overlay__group.is-open .hn-menu-overlay__group-label {
        font-size: 36px;
    }
    .hn-pill--main {
        padding: 8px 8px 8px 16px;
        gap: 12px;
    }
    /* AC 30258 : le bouton compte reste fixe sur mobile (le foot du menu, qui
       portait l'accès compte, a été retiré). Le picto panier se masque seul si vide. */
}

/* ============================================================================
 * FOOTER V2 — Component HN (96:6609) — 2 zones (paper + dark)
 * ========================================================================== */

.hn-footer {
    margin-top: 96px;
}

.hn-footer__top {
    background: var(--wp--preset--color--surface);
    padding: 64px clamp(24px, 8vw, 100px);
}

.hn-footer__columns {
    max-width: 1280px;
    margin-inline: auto;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(32px, 4vw, 80px);
}

.hn-footer__column h3 {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    color: var(--wp--preset--color--brand-dark);
    margin: 0 0 20px;
    line-height: 1.2;
}

.hn-footer__column ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.hn-footer__column a {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 14px;
    color: var(--wp--preset--color--brand-dark);
    text-decoration: none;
    transition: opacity 200ms ease;
}

.hn-footer__column a:hover {
    opacity: 0.7;
}

/* Suivez-nous : placé dans la colonne Social, sous les items du menu, pour que
   la pointe de la flèche arrive au centre des liens (Figma 96:6257). */
.hn-footer__follow {
    margin-top: 24px;
    padding-left: 30px;
    display: flex;
    align-items: baseline;
    gap: 14px;
}

@media (max-width: 768px) {
    .hn-footer__follow {
        padding-left: 0;
        align-items: center;
    }
}

.hn-footer__follow img,
.hn-footer__follow svg {
    flex-shrink: 0;
    width: 54px;
    height: auto;
    display: block;
}

.hn-footer__follow span {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-footer__bottom {
    background: var(--wp--preset--color--brand-dark);
    color: #fcfcfc;
    padding: 96px clamp(24px, 8vw, 128px);
}

.hn-footer__bottom-inner {
    max-width: 1280px;
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    gap: 64px;
}

.hn-footer__info {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 32px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 1.55;
}

.hn-footer__contact a {
    color: #f7f3eb;
    text-decoration: none;
    display: block;
}

.hn-footer__contact a:hover {
    color: var(--wp--preset--color--accent);
}

.hn-footer__address {
    color: #f7f3eb;
    margin-top: 12px;
    white-space: pre-line;
}

.hn-footer__copyright {
    color: #fcfcfc;
    text-align: right;
    margin: 0;
}

.hn-footer__logo {
    display: flex;
    justify-content: center;
    align-items: center;
}

.hn-footer__logo img {
    width: 100%;
    max-width: 1110px;
    height: auto;
    display: block;
}

.hn-footer__legal {
    align-self: flex-end;
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin: 0;
    padding: 0;
    list-style: none;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 12px;
}

.hn-footer__legal a {
    color: #fcfcfc;
    text-decoration: none;
    transition: opacity 200ms ease;
}

.hn-footer__legal a:hover {
    opacity: 0.7;
}

@media (max-width: 768px) {
    .hn-footer__columns {
        grid-template-columns: 1fr;
        gap: 48px;
    }
    .hn-footer__info {
        flex-direction: column;
        align-items: stretch;
    }
    .hn-footer__copyright {
        text-align: left;
    }
}

/* ============================================================================
 * FOOTER V2 — Proposition Component HN (37:8849 desktop / 37:9005 mobile)
 *
 * Coexiste avec la V1 ci-dessus (.hn-footer). Préfixe dédié .hn-footer-v2
 * pour permettre la comparaison client sur /allinone/ avant arbitrage.
 *
 * Layout : zone unique brand-dark (#120032), 1 col logo + 3 colonnes liens,
 * annotation manuscrite "On répond toujours, promis" + flèche cyan pointant
 * vers le CTA Contactez-nous, sub-bar copyright + liens légaux.
 * ========================================================================== */

.hn-footer-v2 {
    position: relative;
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    padding: 48px clamp(24px, 6vw, 96px);
    display: flex;
    flex-direction: column;
    gap: 32px;
}

/* Bord brushé crème en haut du footer (transition page → footer sombre).
   Posé pleinement sur le haut du footer pour que les traits crème ressortent
   sur le fond sombre. */
.hn-footer-v2::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    height: clamp(22px, 3vw, 42px);
    background: url('../images/footer-brush-top.png') center top / 100% 100% no-repeat;
    pointer-events: none;
    z-index: 1;
}

.hn-footer-v2__main {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
    gap: 48px;
    flex-wrap: wrap;
}

.hn-footer-v2__brand {
    position: relative;
    flex: 0 1 380px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.hn-footer-v2__logo {
    width: 211px;
    height: auto;
    display: block;
}

.hn-footer-v2__tagline {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 25px;
    letter-spacing: -0.03em;
    color: var(--wp--preset--color--surface);
    max-width: 267px;
    margin: 0;
}

.hn-footer-v2__cta {
    align-self: flex-start;
}

/* Annotation manuscrite "On répond toujours, promis" + flèche cyan pointant
   vers le bouton Contactez-nous. Figma : Group absolute en haut-droite du
   bloc brand, à hauteur du CTA. La flèche pointe down-left vers le bouton. */
.hn-footer-v2__promise {
    position: absolute;
    top: 196px;
    left: 350px;
    width: 210px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    pointer-events: none;
}

.hn-footer-v2__promise-text {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 1.2;
    letter-spacing: -0.0082em;
    color: var(--wp--preset--color--surface);
    white-space: normal;
    max-width: 200px;
}

.hn-footer-v2__promise-arrow {
    width: 52px;
    height: auto;
    display: block;
    margin-left: -10px;
    transform: rotate(28deg);
    transform-origin: left center;
}

.hn-footer-v2__columns {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-start;
    gap: clamp(28px, 3.5vw, 56px);
    flex: 1 1 720px;
    max-width: 800px;
}

.hn-footer-v2__column {
    display: flex;
    flex-direction: column;
    gap: 16px;
    min-width: 0;
    flex: 1 1 0;
}

.hn-footer-v2__heading {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    line-height: 1;
    color: var(--wp--preset--color--accent);
    margin: 0;
}

.hn-footer-v2__heading a { color: inherit; text-decoration: none; transition: opacity 200ms ease; }
.hn-footer-v2__heading a:hover { opacity: 0.8; }

.hn-footer-v2__column ul {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.hn-footer-v2__column li {
    padding: 2.5px 0 1.5px;
}

.hn-footer-v2__column li a {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 14px;
    line-height: 20px;
    color: var(--wp--preset--color--surface);
    text-decoration: none;
    transition: opacity 200ms ease;
}

.hn-footer-v2__column li a:hover {
    opacity: 0.7;
}

.hn-footer-v2__sub {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 16px;
    padding: 24px 32px;
    flex-wrap: wrap;
}

.hn-footer-v2__copyright,
.hn-footer-v2__legal a {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 12px;
    line-height: 17.16px;
    color: #fcfcfc;
}

.hn-footer-v2__copyright {
    margin: 0;
}

.hn-footer-v2__legal {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 16px;
}

.hn-footer-v2__legal a {
    text-decoration: none;
    transition: opacity 200ms ease;
}

.hn-footer-v2__legal a:hover {
    opacity: 0.7;
}

/* Logo Qualiopi (lien PDF, nouvelle fenêtre), aligné à droite du sous-pied. */
.hn-footer-v2__qualiopi-wrap {
    margin-left: auto;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 8px;
    flex-shrink: 0;
    max-width: 260px;
}
.hn-footer-v2__qualiopi {
    display: block;
    flex-shrink: 0;
    line-height: 0;
}
.hn-footer-v2__qualiopi img {
    display: block;
    height: 69px;
    width: auto;
}
.hn-footer-v2__qualiopi-note {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 11px;
    line-height: 1.4;
    text-align: right;
    color: rgba(255, 255, 255, 0.6);
}

@media (max-width: 960px) {
    .hn-footer-v2__main {
        flex-direction: column;
        align-items: center;
        gap: 64px;
    }
    .hn-footer-v2__brand {
        align-items: center;
        text-align: center;
        flex-basis: auto;
        max-width: 329px;
    }
    .hn-footer-v2__tagline {
        text-align: center;
        max-width: none;
    }
    .hn-footer-v2__cta {
        align-self: center;
    }
    /* Mobile : promise repositionnée entre brand et columns, centrée */
    .hn-footer-v2__promise {
        position: relative;
        top: auto;
        bottom: auto;
        left: auto;
        align-items: center;
        margin-top: 8px;
    }
    .hn-footer-v2__promise-text {
        text-align: center;
    }
    .hn-footer-v2__promise-arrow {
        margin-left: 0;
        transform: rotate(20deg);
    }
    .hn-footer-v2__columns {
        flex-direction: column;
        align-items: center;
        gap: 48px;
        max-width: none;
        flex: 0 1 auto;
        width: 100%;
    }
    .hn-footer-v2__column {
        align-items: center;
        text-align: center;
    }
    .hn-footer-v2__sub {
        flex-direction: column;
        justify-content: center;
        align-items: center;
        gap: 8px;
        padding: 0 16px;
    }
    .hn-footer-v2__qualiopi {
        margin: 8px auto 0;
    }
    .hn-footer-v2__qualiopi-wrap {
        margin: 8px auto 0;
        align-items: center;
        max-width: 320px;
    }
    .hn-footer-v2__qualiopi-note {
        text-align: center;
    }
    .hn-footer-v2__copyright,
    .hn-footer-v2__legal a {
        text-align: center;
    }
    .hn-footer-v2__legal {
        justify-content: center;
    }
}

@media (max-width: 480px) {
    .hn-footer-v2 {
        padding: 32px;
    }
}

/* ============================================================================
 * CHECKLIST (organism) — Figma Component HN, Checklist (38:9531)
 *
 * Liste verticale de CheckItem atoms (cf. atomic [[checkitem]] ligne ~723).
 * 3 variants Figma : --cyan / --bleu (défaut) / --blanc (fond sombre).
 *
 * Le wrapper est purement structurel : layout column + gap 16px.
 * Chaque <li> est un .hn-checkitem complet (icône SVG + label), pas un <li>
 * stylé via pseudo-element. Les variants couleur sont portées par les items.
 *
 * Usage :
 *   <ul class="hn-checklist hn-checklist--bleu">
 *     <li class="hn-checkitem hn-checkitem--check">
 *       <span class="hn-checkitem__icon"><?php echo hn_icon('check'); ?></span>
 *       <span class="hn-checkitem__label">Une démarche plus structurée</span>
 *     </li>
 *     …
 *   </ul>
 *
 * Variants (correspondance items) :
 *  - --cyan  → items en .hn-checkitem--check-cyan  (icône turquoise, label brand-dark)
 *  - --bleu  → items en .hn-checkitem--check       (icône brand-dark, label brand-dark)
 *  - --blanc → items en .hn-checkitem--check-blanc (utilisable sur fond sombre)
 *
 * Spec Figma : column gap 16, master width 315 (items en `fill`).
 * ========================================================================== */

.hn-checklist {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* Les variants n'imposent pas le variant CheckItem (chaque item garde le sien),
   mais .hn-checklist--blanc force la couleur de texte par défaut au cas où un
   item n'aurait pas de variant explicite — utile sur fond brand-dark. */
.hn-checklist--blanc { color: var(--wp--preset--color--surface); }

/* ============================================================================
 * STEPPER (organism) — Figma Component HN (65:2046)
 *
 * Section "parcours en étapes" : titre H2 optionnel + Timeline Grid verticale.
 * La structure complète Figma (Default) est un SplitLayout texte gauche + Timeline
 * droite — pour ce cas, composer manuellement avec [[hn-split-layout]] et
 * embarquer un .hn-stepper en slot. Le bloc ACF Stepper rend uniquement le
 * wrapper titre + Timeline (les CTAs/lead viennent du SplitLayout parent).
 *
 * Le Timeline molecule ([[hn-timeline]]) gère le rendu visuel des steps
 * (rond numéroté Mynerve + connector vertical + card brushed).
 *
 * Usage (rendu par render.php du bloc ACF) :
 *   <section class="hn-stepper">
 *     <h2 class="hn-stepper__title">Notre démarche EBP en 4 étapes</h2>
 *     <ol class="hn-timeline">
 *       <li class="hn-timeline__step">…</li>
 *       …
 *     </ol>
 *   </section>
 * ========================================================================== */

.hn-stepper {
    display: flex;
    flex-direction: column;
    gap: 32px;
    padding-block: var(--hn-section-y, clamp(48px, 8vw, 96px));
    margin-inline: auto;
    max-width: var(--hn-section-max, 720px);
    padding-inline: clamp(24px, 4vw, 32px);
    box-sizing: border-box;
}

/* Frise + photo (variante média) : large par défaut (sinon tassée en 720). */
.hn-stepper:has(.hn-stepper__media-layout) {
    max-width: var(--hn-section-max, 1184px);
}

/* En contexte SplitLayout, le Stepper occupe son slot — pas de max-width forcée */
.hn-split-layout .hn-stepper,
.hn-split-layout__content .hn-stepper {
    margin-inline: 0;
    max-width: none;
    padding-inline: 0;
    padding-block: 0;
}

.hn-stepper__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-stepper__empty {
    color: var(--wp--preset--color--muted-text);
    margin: 0;
}

@media (max-width: 768px) {
    .hn-stepper__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
}

/* ============================================================================
 * FAQ ITEM (molecule) — Figma Component HN (13:5738)
 *
 * 4 variants : FAQ-Close / Open / Mobile Close / Mobile Open.
 * Single item = question (header) + answer (body si open).
 *
 * Specs Figma :
 *  - Container : column padding 32, border-radius 15 (mobile 20), bg paper
 *  - Header row space-between : titre Montserrat 20/26 letter-spacing -4% + icône +/-
 *  - Icon : 20×20 close (+), 28×28 open (−), color accent cyan
 *  - Body (open) : Montserrat 20/26 color var(--wp--preset--color--muted-text) gris
 *  - Plusieurs items empilés en column gap 16 typiquement
 *
 * Usage avec <details>/<summary> pour accordéon natif sans JS :
 *   <details class="hn-faq__item">
 *     <summary class="hn-faq__question">Je n'ai pas le temps…</summary>
 *     <div class="hn-faq__answer">Réponse longue…</div>
 *   </details>
 *
 * Wrappés dans un .hn-faq__list pour le groupe.
 * ========================================================================== */

.hn-faq__list {
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    padding: 8px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    box-sizing: border-box;
}

.hn-faq__item {
    background: var(--wp--preset--color--paper);
    border-radius: 15px;
    padding: 32px;
    box-sizing: border-box;
    border: 0;
}

.hn-faq__question {
    cursor: pointer;
    list-style: none;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 20px;
    line-height: 26px;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-faq__question::-webkit-details-marker { display: none; }
.hn-faq__question::marker { content: ''; }

.hn-faq__question::after {
    content: '';
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    background-color: var(--wp--preset--color--accent);
    -webkit-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='none'%3E%3Cpath d='M10 4v12M4 10h12' stroke='black' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='none'%3E%3Cpath d='M10 4v12M4 10h12' stroke='black' stroke-width='2.5' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
    transition: transform 200ms ease;
}

.hn-faq__item[open] .hn-faq__question::after {
    width: 28px;
    height: 28px;
    -webkit-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 28 28' xmlns='http://www.w3.org/2000/svg' fill='none'%3E%3Cpath d='M6 14h16' stroke='black' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 28 28' xmlns='http://www.w3.org/2000/svg' fill='none'%3E%3Cpath d='M6 14h16' stroke='black' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E") center / contain no-repeat;
}

.hn-faq__answer {
    margin-top: 16px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 20px;
    line-height: 26px;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--muted-text);
}

/* ============================================================================
 * FAQ ACCORDION (organism) — Figma Component HN (70:4956)
 *
 * Section accordéon : titre H2 mixte optionnel + groupe de [[hn-faq-item]]
 * empilés dans une card blanche (padding 8, radius 24, gap 8 entre items).
 * Le wrapper crée l'effet "stroke 15px blanc" Figma via le padding intérieur.
 *
 * Usage (rendu par render.php du bloc ACF) :
 *   <section class="hn-faq">
 *     <h2 class="hn-faq__title">Vos questions
 *       <span class="hn-faq__title-script">les plus fréquentes</span>
 *     </h2>
 *     <div class="hn-faq__list">
 *       <details class="hn-faq__item">
 *         <summary class="hn-faq__question">…</summary>
 *         <div class="hn-faq__answer">…</div>
 *       </details>
 *       …
 *     </div>
 *   </section>
 * ========================================================================== */

.hn-faq {
    display: flex;
    flex-direction: column;
    gap: 32px;
    margin-block: clamp(48px, 8vw, 96px);
    margin-inline: auto;
    max-width: 720px;
    padding-inline: clamp(24px, 4vw, 32px);
    box-sizing: border-box;
}

.hn-faq__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
    text-align: center;
}

.hn-faq__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-faq__empty {
    color: var(--wp--preset--color--muted-text);
    margin: 0;
    text-align: center;
}

@media (max-width: 768px) {
    .hn-faq__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-faq__title-script {
        font-size: 40px;
        line-height: 30px;
    }
    .hn-faq__item {
        border-radius: 20px;
        padding: 24px;
    }
}

/* ============================================================================
 * COMPARISON TABLE (organism) — Figma Component HN (137:3061)
 *
 * Section "Comparer en détails" : header titre mixte + card blanche avec
 * tableau d'offres (colonnes) × features (lignes). Icônes SVG check-cyan /
 * cross via les atoms partagés (cf. [[hn-checkitem]]).
 *
 * Structure :
 *  .hn-comparison           — section column align-center gap 48 padding 96/128 bg paper
 *    .hn-comparison__header — column align-center gap 16 (title mixte + subtitle)
 *      .hn-comparison__title           — Montserrat 50 brand-dark
 *      .hn-comparison__title-script    — span Mynerve 55 brand-dark
 *      .hn-comparison__subtitle        — Montserrat 16/25 muted-text max-w 608
 *    .hn-comparison__card   — wrapper blanc border-radius 24 padding 48
 *      .hn-comparison__scroll          — overflow-x:auto pour mobile
 *      .hn-comparison__table           — table layout principal
 *        thead .hn-comparison__th      — header colonne (Mynerve 22 + subtitle)
 *        tbody .hn-comparison__th-row  — header ligne (label gauche)
 *        tbody .hn-comparison__td      — cell icône (check-cyan/cross/text)
 *
 * Spec Figma desktop : padding 96/128, gap 48, card padding 48 radius 24,
 *  header gap 64, row gap 16, séparateurs 1px rgba(0,0,0,0.1).
 *
 * Mobile : padding 64/32, title 40/Mynerve 45, table scroll horizontal.
 * ========================================================================== */

.hn-comparison {
    padding: clamp(48px, 8vw, 96px) clamp(24px, 4vw, 32px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 48px;
    box-sizing: border-box;
}

/* Largeur du tableau pilotée par le Paramétrage (sélecteur « Largeur du contenu »). */
.hn-comparison__header,
.hn-comparison__card {
    width: 100%;
    max-width: var(--hn-section-max, 1184px);
    margin-inline: auto;
}

.hn-comparison__header {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    max-width: 800px;
    text-align: center;
}

.hn-comparison__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-comparison__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-comparison__subtitle {
    margin: 0;
    max-width: 608px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 25px;
    letter-spacing: -0.03em;
    color: var(--wp--preset--color--muted-text);
}

.hn-comparison__card {
    position: relative;
    width: 100%;
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    padding: clamp(24px, 4vw, 48px);
    box-sizing: border-box;
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 24px;
}

/* Contour brushed signature HN, identique aux autres cards molecules */
.hn-comparison__card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

@supports not (filter: url(#hn-roughen)) {
    .hn-comparison__card::before { filter: none; }
}

.hn-comparison__scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.hn-comparison__table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    min-width: 600px;
}

/* En-têtes de colonne (offres) : Mynerve 22 + subtitle Montserrat 18 */
.hn-comparison__table thead th {
    text-align: center;
    vertical-align: bottom;
    padding: 0 16px 16px;
    font-weight: 400;
}

.hn-comparison__th-feature { background: transparent; }

.hn-comparison__col-label {
    display: block;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}

.hn-comparison__col-subtitle {
    display: block;
    margin-top: 4px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-comparison__badge {
    display: inline-block;
    margin-bottom: 8px;
    padding: 4px 12px;
    border-radius: 999px;
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.hn-comparison__cta {
    display: inline-block;
    margin-top: 16px;
}

/* Lignes de feature : label gauche Body, td centrés, séparateur bas 1px */
.hn-comparison__table tbody td,
.hn-comparison__table tbody th {
    padding: 16px;
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.hn-comparison__table tbody tr:last-child td,
.hn-comparison__table tbody tr:last-child th {
    border-bottom: none;
}

.hn-comparison__th-row {
    text-align: left;
    background: transparent;
    font-weight: 400;
    color: var(--wp--preset--color--muted-text);
}

.hn-comparison__row-label {
    display: block;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
}

.hn-comparison__row-hint {
    display: block;
    margin-top: 4px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 14px;
    color: var(--wp--preset--color--muted-text);
}

.hn-comparison__td {
    text-align: center;
    vertical-align: middle;
    color: var(--wp--preset--color--brand-dark);
}

/* Cell icônes : SVG 24×24 currentColor — check-cyan accent / cross muted */
.hn-comparison__check,
.hn-comparison__cross {
    display: inline-flex;
    width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
}

.hn-comparison__check { color: var(--wp--preset--color--accent); }
.hn-comparison__cross { color: var(--wp--preset--color--muted-text); }

.hn-comparison__check svg,
.hn-comparison__cross svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* Featured column : surlignage léger pour mise en avant */
.hn-comparison__th--featured,
.hn-comparison__td--featured {
    background: color-mix(in srgb, var(--wp--preset--color--accent) 8%, transparent);
}

.hn-comparison__empty {
    color: var(--wp--preset--color--muted-text);
    margin: 0;
}

@media (max-width: 768px) {
    .hn-comparison {
        padding: 64px 32px;
        gap: 32px;
    }
    .hn-comparison__title {
        font-size: 40px;
        line-height: 37px;
        letter-spacing: -0.05em;
    }
    .hn-comparison__title-script {
        font-size: 45px;
        line-height: 48px;
    }
}

/* ============================================================================
 * STAT (molecule) — Figma Component HN (53:10920)
 *
 * 2 variants Figma : "Description" (number+label+description) et "Without" (number+label only).
 * Implémenté en 1 seul composant avec description optionnelle.
 *
 * Structure column items-center, gap 8 :
 *   - __number : Mynerve 64px brand-dark (le chiffre/valeur)
 *   - __label  : Mynerve 20px brand-dark (l'unité, ex "Années")
 *   - __description : Montserrat 16/25 gris (texte court qui contextualise)
 *
 * Usage :
 *   <div class="hn-stat">
 *     <p class="hn-stat__number">25+</p>
 *     <p class="hn-stat__label">Années</p>
 *     <p class="hn-stat__description">aux côtés des professionnels</p>
 *   </div>
 * ========================================================================== */

.hn-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    text-align: center;
}

.hn-stat__group {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}

.hn-stat__number {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(48px, 6vw, 64px);
    line-height: 1;
    letter-spacing: -0.0028em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-stat__label {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-stat__description {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 25px;
    letter-spacing: -0.03em;
    color: var(--wp--preset--color--muted-text);
}

/* Variant Stat sur fond sombre : inverser couleurs */
.hn-stat--on-dark .hn-stat__number,
.hn-stat--on-dark .hn-stat__label { color: var(--wp--preset--color--paper); }
.hn-stat--on-dark .hn-stat__description { color: rgba(255, 255, 255, 0.7); }

/* ============================================================================
 * STAT GRID (organism) — Figma Component HN (65:1536, "Stat grid")
 *
 * Bandeau de N Stat molecules ([[hn-stat]]) en row, gap 32. Sous 768px,
 * passe en column. Pas de fond intégré : la couleur du fond est gérée par
 * le parent (section, group is-style-hn-section-dark, etc.).
 *
 * Variant --on-dark : propage le modifier Stat--on-dark aux enfants pour
 * inverser les couleurs sur fond sombre sans avoir à classer chaque .hn-stat.
 *
 * Usage :
 *   <div class="hn-stat-grid">
 *     <div class="hn-stat">
 *       <p class="hn-stat__number">25+</p>
 *       <p class="hn-stat__label">Années</p>
 *       <p class="hn-stat__description">aux côtés des professionnels</p>
 *     </div>
 *     …
 *   </div>
 *
 * Spec Figma : row gap 32 (desktop) / column gap 32 (mobile), items hug.
 * ========================================================================== */

.hn-stat-grid {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    gap: 64px;
}

/* Variant --on-dark : applique l'inversion couleur sur tous les Stat enfants */
.hn-stat-grid--on-dark .hn-stat__number,
.hn-stat-grid--on-dark .hn-stat__label { color: var(--wp--preset--color--paper); }
.hn-stat-grid--on-dark .hn-stat__description { color: rgba(255, 255, 255, 0.7); }

@media (max-width: 768px) {
    .hn-stat-grid {
        flex-direction: column;
        align-items: stretch;
    }
}

/* ============================================================================
 * STAT SECTION (organism wrapper) — Figma Component HN (65:2003 "Section")
 *
 * Section pleine largeur qui combine un titre H2 mixte + un Stat grid.
 * Utilisé pour les bandeaux "social proof / chiffres clés".
 *
 * Structure column align-center gap 32, padding 96 128 (clamp).
 * Title mixte (Montserrat 50 + Mynerve 55), même typo que Hero/SplitLayout.
 * Variant --on-dark : fond brand-dark + titre paper + propagation Stat--on-dark
 * automatique via le sélecteur descendant `.hn-stat-grid` enfant.
 *
 * Usage :
 *   <section class="hn-stat-section hn-stat-section--on-dark">
 *     <h2 class="hn-stat-section__title">Des
 *       <span class="hn-stat-section__title-script">contenus et outils</span>
 *       construits avec exigence
 *     </h2>
 *     <div class="hn-stat-grid">
 *       <div class="hn-stat">…</div>
 *       …
 *     </div>
 *   </section>
 *
 * Spec Figma : column gap 32, padding 96 128, bg surface, title max-width 710.
 * ========================================================================== */

.hn-stat-section {
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
    box-sizing: border-box;
}

/* Rangée de boutons sous les chiffres (home V5 : 2 CTA). */
.hn-stat-section__actions {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 19px;
    margin-top: 8px;
}

/* Compléments home V5 ------------------------------------------------------- */
/* Surtitre + puces des étapes du Stepper (parcours). */
.hn-timeline__card-overline {
    margin: 0 0 8px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 14px;
    line-height: 1.4;
    color: var(--wp--preset--color--muted-text);
}
.hn-timeline__card-list {
    margin: 0;
    padding-left: 1.2em;
    list-style: disc;
    display: flex;
    flex-direction: column;
    gap: 6px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 15px;
    line-height: 22px;
    color: var(--wp--preset--color--muted-text, #515151);
}
/* Titre d'étape en manuscrit (maquette : « En amont », « Pendant le soin »…). */
.hn-stepper--split .hn-timeline__card-title {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 28px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}

/* Note sous le bouton d'un onglet Solution (« Inclus dans les abonnements »). */
.hn-solution-tabs__note {
    margin: 4px 0 0;
    font-family: 'Montserrat', ui-sans-serif, sans-serif;
    font-style: italic;
    font-weight: 300;
    font-size: 13px;
    line-height: 1.4;
    color: var(--wp--preset--color--brand-dark);
}

/* Préfixe de prix (« à partir de ») dans les cartes tarifs. */
.hn-pricing-card__price-prefix {
    display: block;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 14px;
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
    opacity: 0.8;
}

/* Bouton centré en bas d'un Card Grid (« Explorez les ressources »). */
.hn-cardgrid {
    display: flex;
    flex-direction: column;
    align-items: center;
}
.hn-cardgrid__items { width: 100%; }
.hn-cardgrid__cta { margin-top: clamp(24px, 4vw, 48px); }

.hn-stat-section__title {
    margin: 0;
    max-width: 710px;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-stat-section__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

/* Variant --on-dark : fond brand-dark + titre paper + items en mode dark.
   Le sélecteur descendant propage l'inversion couleurs sur le Stat grid enfant
   sans avoir à dupliquer --on-dark partout. */
.hn-stat-section--on-dark { background: var(--wp--preset--color--brand-dark); }
.hn-stat-section--on-dark .hn-stat-section__title,
.hn-stat-section--on-dark .hn-stat-section__title-script {
    color: var(--wp--preset--color--paper);
}
.hn-stat-section--on-dark .hn-stat__number,
.hn-stat-section--on-dark .hn-stat__label { color: var(--wp--preset--color--paper); }
.hn-stat-section--on-dark .hn-stat__description { color: rgba(255, 255, 255, 0.7); }

@media (max-width: 768px) {
    .hn-stat-section {
        padding: 64px 32px;
        gap: 48px;
    }
    .hn-stat-section__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-stat-section__title-script {
        font-size: 40px;
        line-height: 30px;
    }
}

/* ============================================================================
 * PRICING CARD — Figma Component HN (53:10770)
 * Variants: Default + Populaire (featured)
 * ========================================================================== */

.hn-pricing-card {
    position: relative;
    background: var(--wp--preset--color--surface);
    border-radius: 12px;
    padding: 32px;
    display: flex;
    flex-direction: column;
    gap: clamp(32px, 5vw, 64px);
    width: 100%;
    max-width: 358px;
    margin-inline: auto;
    /* Contour brushed signature HN (cf. .hn-brushed-border) */
    --hn-brushed-color: var(--wp--preset--color--brand-dark);
    --hn-brushed-width: 3px;
    --hn-brushed-radius: 12px;
}

.hn-pricing-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: var(--hn-brushed-width) solid var(--hn-brushed-color);
    border-radius: var(--hn-brushed-radius);
    filter: url(#hn-roughen);
    pointer-events: none;
}

.hn-pricing-card--featured {
    box-shadow: 0 12px 32px rgb(54 78 191 / 18%);
    outline: 2px solid var(--wp--preset--color--accent);
    outline-offset: -2px;
}

/* Position du badge sur la card — extends .hn-badge--cyan via class composition */
.hn-pricing-card__badge {
    position: absolute;
    top: -16px;
    left: 50%;
    transform: translateX(-50%);
}

.hn-pricing-card__head {
    display: flex;
    flex-direction: column;
    gap: 23px;
}

.hn-pricing-card__title {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 40px;
    line-height: 1.05;
    color: var(--wp--preset--color--brand-dark);
    margin: 0;
}

.hn-pricing-card__price {
    display: flex;
    align-items: baseline;
    gap: 13px;
    margin: 0;
}

.hn-pricing-card__amount {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 32px;
    line-height: 1;
    letter-spacing: -0.01em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-pricing-card__period {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 1.4;
    color: var(--wp--preset--color--brand-dark);
}

.hn-pricing-card__body {
    display: flex;
    flex-direction: column;
    gap: 19px;
}

.hn-pricing-card__tagline {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 18px;
    line-height: 1.4;
    color: var(--wp--preset--color--brand-dark);
    margin: 0;
}

.hn-pricing-card__description {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 1.4;
    color: var(--wp--preset--color--muted-text);
    margin: 0;
}

.hn-pricing-card__features {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.hn-pricing-card__feature {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 1.4;
    color: var(--wp--preset--color--brand-dark);
}

.hn-pricing-card__feature.is-included .hn-pricing-card__feature-icon {
    color: var(--wp--preset--color--brand-dark);
}

.hn-pricing-card__feature.is-excluded {
    color: var(--wp--preset--color--muted-text);
}

.hn-pricing-card__feature.is-excluded .hn-pricing-card__feature-icon {
    color: var(--wp--preset--color--muted-text);
}

.hn-pricing-card__feature-icon {
    flex-shrink: 0;
    display: inline-flex;
    width: 24px;
    height: 24px;
    line-height: 0;
}

.hn-pricing-card__feature-icon svg {
    width: 100%;
    height: 100%;
    display: block;
}

.hn-pricing-card__feature-label {
    flex: 1 1 auto;
}

.hn-pricing-card__foot {
    margin-top: auto;
    display: flex;
}

.hn-pricing-card__foot .hn-btn {
    align-self: flex-start;
}

/* ============================================================================
 * PRICING SECTION (organism) — Figma CardGrid Tension Desktop (70:5563)
 * Section dark avec titre mixte + 3 cards + boutons CTA
 * ========================================================================== */

.hn-pricing-section {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 64px;
    box-sizing: border-box;
}

.hn-pricing-section__head {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    max-width: 800px;
    text-align: center;
}

.hn-pricing-section__title {
    margin: 0;
    color: var(--wp--preset--color--surface);
    font-weight: 500;
    line-height: 1;
    letter-spacing: -0.04em;
    font-size: clamp(36px, 5vw, 50px);
    font-family: Montserrat, ui-sans-serif, sans-serif;
}

.hn-pricing-section__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    letter-spacing: -0.03em;
    margin-left: 0.1em;
}

.hn-pricing-section__subtitle {
    margin: 0;
    color: var(--wp--preset--color--surface);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.55;
    max-width: 608px;
}

.hn-pricing-section__cards {
    display: flex;
    justify-content: space-between;
    align-items: stretch;
    gap: 32px;
    width: 100%;
    max-width: 1280px;
}

.hn-pricing-section__cards > * {
    flex: 1 1 0;
    min-width: 0;
    max-width: 380px;
}

.hn-pricing-section__actions {
    display: flex;
    align-items: center;
    gap: 26px;
    flex-wrap: wrap;
    justify-content: center;
}

@media (max-width: 960px) {
    .hn-pricing-section__cards {
        flex-direction: column;
        align-items: center;
        gap: 24px;
    }
    .hn-pricing-section__cards > * {
        width: 100%;
        max-width: 380px;
    }
}

/* ============================================================================
 * HERO (organism) — Figma Component HN (72:7724)
 *
 * Section pleine largeur, fond paper, padding section.
 * 3 variants logiques :
 *  - .hn-hero--split   : row content gauche + image droite (Home V5)
 *  - .hn-hero--center  : column center, titre + body + 2 CTA
 *  - .hn-hero--minimal : column center, titre + body SANS CTA
 *
 * Titre mixte H1 : Montserrat 50 + span Mynerve 55.
 * Body Montserrat 18/25 muted-text.
 *
 * Usage :
 *   <section class="hn-hero hn-hero--split">
 *     <div class="hn-hero__content">
 *       <h1 class="hn-hero__title">Retrouvez du temps pour ce qui compte :
 *         <span class="hn-hero__title-script">soigner</span>
 *       </h1>
 *       <p class="hn-hero__lead">Évaluez avec plus de fiabilité…</p>
 *       <div class="hn-hero__actions">
 *         <a class="hn-btn hn-btn--dark hn-btn--lg" href="#">Essai gratuit</a>
 *         <a class="hn-btn hn-btn--dark-outline hn-btn--lg" href="#">En savoir plus</a>
 *       </div>
 *     </div>
 *     <img class="hn-hero__media" src="…" alt="…" />
 *   </section>
 * ========================================================================== */

.hn-hero {
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: column;
    gap: 32px;
    box-sizing: border-box;
}

.hn-hero__content {
    display: flex;
    flex-direction: column;
    gap: 32px;
    max-width: 800px;
}

.hn-hero__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-hero__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-hero__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    max-width: 716px;
}

.hn-hero__actions {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 19px;
}

.hn-hero__media {
    width: 100%;
    max-width: 482px;
    height: auto;
    border-radius: 24px;
    object-fit: cover;
    display: block;
    background: var(--wp--preset--color--surface-muted);
}

/* ----- Variant Split : row content + image ------------------------------- */
.hn-hero--split {
    flex-direction: row;
    align-items: center;
    gap: clamp(48px, 8vw, 126px);
}

.hn-hero--split .hn-hero__content {
    max-width: 579px;
    flex: 1 1 0;
}

.hn-hero--split .hn-hero__media {
    flex: 0 0 auto;
}

/* ----- Variant Centre : column items center ------------------------------ */
.hn-hero--center {
    align-items: center;
    text-align: center;
}

.hn-hero--center .hn-hero__content {
    align-items: center;
    text-align: center;
}

.hn-hero--center .hn-hero__title { max-width: 746px; }
.hn-hero--center .hn-hero__lead { max-width: 716px; }
.hn-hero--center .hn-hero__actions { justify-content: center; }

/* ----- Variant Minimal centre : sans CTA --------------------------------- */
.hn-hero--minimal {
    align-items: center;
    text-align: center;
}

.hn-hero--minimal .hn-hero__content {
    align-items: center;
    text-align: center;
    max-width: 800px;
}

.hn-hero--minimal .hn-hero__title { max-width: 740px; }
.hn-hero--minimal .hn-hero__actions { display: none; }

@media (max-width: 768px) {
    .hn-hero {
        padding: 64px 32px;
        gap: 48px;
    }
    .hn-hero--split {
        flex-direction: column;
        align-items: stretch;
    }
    .hn-hero--split .hn-hero__media {
        max-width: 100%;
        height: 175px;
    }
    .hn-hero__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-hero__title-script {
        font-size: 40px;
        line-height: 30px;
    }
}

/* ============================================================================
 * CARDGRID (organism) — Figma Component HN (65:1142, 70:5562 Tension, 70:3383)
 *
 * Section "header + grille de cards" qui structure les pages marketing :
 *  - Header optionnel : titre mixte H2 centré + subtitle centré
 *  - Grille de cards/blocs en row (3 colonnes typiquement, responsive)
 *
 * Cas d'usage Figma observés :
 *  - CardGrid Tension      : 3 Bloc-text (illustration douleurs)
 *  - CardGrid Pricing      : 3 Pricing Card + 2 CTA en bas (la Pricing section)
 *  - CardGrid Ressources   : 3 Ressource Card
 *  - CardGrid Solutions    : 3 Solution Card
 *
 * Variants couleur (skin section) :
 *  - .hn-cardgrid--paper (fond paper, défaut)
 *  - .hn-cardgrid--blanc (fond blanc)
 *  - .hn-cardgrid--bleu  (fond brand-dark, texts paper)
 *
 * Usage :
 *   <section class="hn-cardgrid hn-cardgrid--paper">
 *     <header class="hn-cardgrid__head">
 *       <h2 class="hn-cardgrid__title">Comparer
 *         <span class="hn-cardgrid__title-script">en détails</span>
 *       </h2>
 *       <p class="hn-cardgrid__subtitle">Lorem ipsum…</p>
 *     </header>
 *     <div class="hn-cardgrid__items">
 *       [3 cards ou bloc-text]
 *     </div>
 *     <footer class="hn-cardgrid__actions"><!-- 1-2 CTA optionnels --></footer>
 *   </section>
 * ========================================================================== */

.hn-cardgrid {
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 64px;
    box-sizing: border-box;
}

.hn-cardgrid__head {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    max-width: 800px;
    text-align: center;
}

.hn-cardgrid__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cardgrid__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    letter-spacing: -0.03em;
    color: var(--wp--preset--color--brand-dark);
    margin-left: 0.1em;
}

.hn-cardgrid__subtitle {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.55;
    color: var(--wp--preset--color--brand-dark);
    max-width: 608px;
}

.hn-cardgrid__items {
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: stretch;
    gap: clamp(32px, 6vw, 96px);
    width: 100%;
    max-width: 1280px;
    flex-wrap: wrap;
}

.hn-cardgrid__items > * {
    flex: 1 1 0;
    min-width: 0;
}

/* Modifier --stack : cartes larges empilées verticalement (solution-cards block) */
.hn-cardgrid__items--stack {
    flex-direction: column;
    align-items: stretch;
    max-width: 1184px;
    gap: 32px;
}
.hn-cardgrid__items--stack > * {
    flex: 0 0 auto;
    width: 100%;
    max-width: 100%;
}

/* Modifier --cols-N : grille à nombre de colonnes fixe (card-grid block) */
.hn-cardgrid__items--cols-2,
.hn-cardgrid__items--cols-3,
.hn-cardgrid__items--cols-4 {
    display: grid;
    gap: 32px;
    max-width: 1184px;
}
.hn-cardgrid__items--cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.hn-cardgrid__items--cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.hn-cardgrid__items--cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.hn-cardgrid__items--cols-2 > *,
.hn-cardgrid__items--cols-3 > *,
.hn-cardgrid__items--cols-4 > * { max-width: none; }
@media (max-width: 960px) {
    .hn-cardgrid__items--cols-2,
    .hn-cardgrid__items--cols-3,
    .hn-cardgrid__items--cols-4 { grid-template-columns: 1fr; }
}

/* Bloc Checklist (happyneuron/checklist) — texte + puces + image optionnelle */
.hn-checklist-block {
    max-width: 1184px;
    margin-inline: auto;
    padding: clamp(48px, 7vw, 80px) clamp(24px, 6vw, 64px);
    display: flex;
    gap: 48px;
    align-items: center;
    flex-wrap: wrap;
}
.hn-checklist-block__text {
    flex: 1 1 360px;
    display: flex;
    flex-direction: column;
    gap: 24px;
    align-items: flex-start;
}
.hn-checklist-block__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(28px, 4vw, 40px);
    line-height: 1.1;
    color: var(--wp--preset--color--brand-dark);
}
.hn-checklist-block__intro {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}
.hn-checklist-block__media {
    flex: 1 1 360px;
    max-width: 520px;
    border-radius: 24px;
    object-fit: cover;
}

/* Bloc Section texte (happyneuron/text-section) — prose éditoriale HN */
.hn-text-section {
    max-width: 820px;
    margin-inline: auto;
    padding: clamp(40px, 6vw, 72px) clamp(24px, 6vw, 64px);
    display: flex;
    flex-direction: column;
    gap: 20px;
}
.hn-text-section--center { text-align: center; align-items: center; }
.hn-text-section--left { text-align: left; align-items: flex-start; }
.hn-text-section__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(28px, 4vw, 44px);
    line-height: 1.12;
    letter-spacing: -0.02em;
    color: var(--wp--preset--color--brand-dark);
}
.hn-text-section__body {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 27px;
    color: var(--wp--preset--color--muted-text);
    max-width: 720px;
}
.hn-text-section__body > :first-child { margin-top: 0; }
.hn-text-section__body > :last-child { margin-bottom: 0; }
.hn-text-section__body p { margin: 0 0 16px; }
.hn-text-section__cta { margin-top: 8px; }

.hn-cardgrid__actions {
    display: flex;
    align-items: center;
    gap: 26px;
    flex-wrap: wrap;
    justify-content: center;
}

/* ----- Variants couleur ---------------------------------------------------- */

.hn-cardgrid--paper {
    background: var(--wp--preset--color--paper);
}

.hn-cardgrid--blanc {
    background: var(--wp--preset--color--surface);
}

.hn-cardgrid--bleu {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}
.hn-cardgrid--bleu .hn-cardgrid__title,
.hn-cardgrid--bleu .hn-cardgrid__title-script,
.hn-cardgrid--bleu .hn-cardgrid__subtitle {
    color: var(--wp--preset--color--surface);
}

@media (max-width: 960px) {
    .hn-cardgrid {
        gap: 48px;
    }
    .hn-cardgrid__items {
        flex-direction: column;
        align-items: center;
        gap: 24px;
    }
    .hn-cardgrid__items > * {
        width: 100%;
        max-width: 420px;
    }
}

/* ============================================================================
 * SPLITLAYOUT (organism) — Figma Component HN (57:1616)
 *
 * Section deux colonnes 50/50 : un bloc texte (titre mixte + lead + slot) et
 * un visuel. 2 variants Figma :
 *  - .hn-split-layout            : Gauche, texte gauche / image droite (défaut)
 *  - .hn-split-layout--droite    : image gauche / texte droite
 * Sous 768px : column stacked (mobile), texte au-dessus, image dessous.
 *
 * Le bloc texte accepte n'importe quel contenu en slot : [[checklist]],
 * buttons, paragraphe additionnel, etc.
 *
 * Usage :
 *   <section class="hn-split-layout">
 *     <div class="hn-split-layout__content">
 *       <h2 class="hn-split-layout__title">Retrouvez du temps pour ce qui compte :
 *         <span class="hn-split-layout__title-script">soigner</span>
 *       </h2>
 *       <p class="hn-split-layout__lead">Évaluez avec plus de fiabilité…</p>
 *       <ul class="hn-checklist hn-checklist--bleu">…</ul>
 *     </div>
 *     <img class="hn-split-layout__media" src="…" alt="…" />
 *   </section>
 *
 * Spec Figma : row gap 128, padding 96 128, bg blanc, texte width 579,
 * image 509×273 radius 24. Mobile : column gap 48, padding 64 32.
 * ========================================================================== */

.hn-split-layout {
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: clamp(48px, 8vw, 128px);
    box-sizing: border-box;
}

.hn-split-layout__content {
    display: flex;
    flex-direction: column;
    gap: 32px;
    flex: 1 1 0;
    max-width: 579px;
}

.hn-split-layout__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-split-layout__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-split-layout__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    max-width: 548px;
}

.hn-split-layout__media {
    flex: 0 0 auto;
    width: 100%;
    max-width: 509px;
    height: auto;
    aspect-ratio: 509 / 273;
    border-radius: 24px;
    object-fit: cover;
    display: block;
    background: var(--wp--preset--color--surface-muted);
}

/* Variant Droite : image gauche / texte droite */
.hn-split-layout--droite {
    flex-direction: row-reverse;
}

/* Mobile : column stacked, padding réduit, title plus petit */
@media (max-width: 768px) {
    .hn-split-layout,
    .hn-split-layout--droite {
        flex-direction: column;
        align-items: stretch;
        padding: 64px 32px;
        gap: 48px;
    }
    .hn-split-layout__content {
        max-width: 100%;
    }
    .hn-split-layout__media {
        max-width: 100%;
        aspect-ratio: 16 / 9;
    }
    .hn-split-layout__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-split-layout__title-script {
        font-size: 40px;
        line-height: 30px;
    }
}

/* ============================================================================
 * CTA BLOCK (organism) — Figma Component HN (57:1684)
 *
 * Bandeau de conversion pleine largeur centré : titre mixte + lead + 2 CTAs.
 * 2 skins Figma :
 *  - .hn-cta-block          : fond surface blanc (Default)
 *  - .hn-cta-block--bleu    : fond brand-dark (Bleu, le plus utilisé)
 * Mobile : padding 96 32, title 36/Mynerve 40 (cf. ts3/ts4 Figma).
 *
 * Le rendu suit la même recette typo que Hero/SplitLayout/StatSection
 * (titre Montserrat 50 + span Mynerve 55).
 *
 * Usage :
 *   <section class="hn-cta-block hn-cta-block--bleu">
 *     <div class="hn-cta-block__content">
 *       <h2 class="hn-cta-block__title">Prête à
 *         <span class="hn-cta-block__title-script">retrouver un cadre</span>
 *         plus clair pour votre pratique ?
 *       </h2>
 *       <p class="hn-cta-block__lead">Commencez par explorer les solutions…</p>
 *     </div>
 *     <div class="hn-cta-block__actions">
 *       <a class="hn-btn hn-btn--white hn-btn--lg" href="#">Essai gratuit</a>
 *       <a class="hn-btn hn-btn--white-outline hn-btn--lg" href="#">Découvrir</a>
 *     </div>
 *   </section>
 *
 * Spec Figma : column align-center gap 32 padding 96/128, content width 746,
 *   actions row gap 19.
 * ========================================================================== */

.hn-cta-block {
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
    box-sizing: border-box;
}

.hn-cta-block__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
    max-width: 746px;
    text-align: center;
}

.hn-cta-block__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cta-block__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cta-block__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cta-block__actions {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 19px;
}

/* Variant --bleu : fond brand-dark + textes paper */
.hn-cta-block--bleu {
    background: var(--wp--preset--color--brand-dark);
}

.hn-cta-block--bleu .hn-cta-block__title,
.hn-cta-block--bleu .hn-cta-block__title-script {
    color: var(--wp--preset--color--paper);
}

.hn-cta-block--bleu .hn-cta-block__lead {
    color: var(--wp--preset--color--paper);
}

/* Fond sombre via Paramétrage (hn_bg = sombre) : titres + lead passent en clair
   (les boutons sont déjà choisis « clairs » par le render). Sur fond clair, tout
   reste sombre (couleurs par défaut). */
.hn-cta-block.hn-bg-sombre .hn-cta-block__title,
.hn-cta-block.hn-bg-sombre .hn-cta-block__title-script,
.hn-cta-block.hn-bg-sombre .hn-cta-block__lead {
    color: var(--wp--preset--color--surface);
}

@media (max-width: 768px) {
    .hn-cta-block {
        padding: 96px 32px;
    }
    .hn-cta-block__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-cta-block__title-script {
        font-size: 40px;
        line-height: 30px;
    }
}

/* ============================================================================
 * TESTIMONIAL CAROUSEL (organism) — Figma Component HN (65:2312)
 *
 * Section "social proof" : titre mixte + carrousel horizontal de [[hn-testimonial-card]].
 * Pas de JS — scroll-snap natif horizontal + swipe mobile naturel.
 * 3 cards visibles desktop / 1 mobile + indicateur de pagination optionnel.
 *
 * Structure :
 *  .hn-testimonial-carousel             — section paper padding 96/128 gap 64
 *    .hn-testimonial-carousel__title    — Montserrat 50 + span Mynerve 55 (centré)
 *    .hn-testimonial-carousel__track    — overflow-x:auto + scroll-snap-x mandatory
 *      .hn-testimonial-card             — molecule existante (350 wide, brushed border)
 *
 * Usage (pattern testimonial-carousel) :
 *   <section class="hn-testimonial-carousel">
 *     <h2 class="hn-testimonial-carousel__title">Des
 *       <span class="hn-testimonial-carousel__title-script">contenus et outils</span>
 *       construits avec exigence
 *     </h2>
 *     <div class="hn-testimonial-carousel__track">
 *       <article class="hn-testimonial-card">…</article>
 *       <article class="hn-testimonial-card">…</article>
 *       <article class="hn-testimonial-card">…</article>
 *     </div>
 *   </section>
 *
 * Spec Figma : padding 96/128, gap 64 entre title et track. Cards 350 wide.
 * ========================================================================== */

.hn-testimonial-carousel {
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 64px;
    box-sizing: border-box;
}

.hn-testimonial-carousel__title {
    margin: 0;
    max-width: 710px;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-testimonial-carousel__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-testimonial-carousel__track {
    width: 100%;
    max-width: 1106px;
    display: flex;
    flex-direction: row;
    gap: 28px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding: 28px;
    padding-bottom: 8px;
    /* Hide scrollbar visually but keep functionality */
    scrollbar-width: thin;
    scrollbar-color: var(--wp--preset--color--brand-dark) transparent;
}

.hn-testimonial-carousel__track > .hn-testimonial-card {
    flex: 0 0 auto;
    width: 350px;
    max-width: 350px;
    scroll-snap-align: start;
}

@media (max-width: 768px) {
    .hn-testimonial-carousel {
        padding: 64px 32px;
        gap: 32px;
    }
    .hn-testimonial-carousel__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-testimonial-carousel__title-script {
        font-size: 40px;
        line-height: 30px;
    }
    .hn-testimonial-carousel__track {
        gap: 16px;
        scroll-padding: 32px;
    }
    .hn-testimonial-carousel__track > .hn-testimonial-card {
        width: calc(100vw - 96px);
        max-width: 320px;
    }
}

/* ============================================================================
 * CAROUSEL générique (réutilisable) — track scroll-snap horizontal + flèches.
 *
 * Réutilisé par la page À propos (cartes équipe, cartes actualités). Le JS
 * (hn-carousel.js) câble .hn-carousel__arrow[data-dir] sur le scroll du track
 * et désactive les flèches en bout de course. Sans JS : scroll/swipe natif.
 *
 *   <div class="hn-carousel" data-hn-carousel>
 *     <div class="hn-carousel__track"> … cartes (flex:0 0 auto) … </div>
 *     <div class="hn-carousel__nav">
 *       <button class="hn-carousel__arrow" data-dir="-1" aria-label="Précédent">‹</button>
 *       <button class="hn-carousel__arrow" data-dir="1"  aria-label="Suivant">›</button>
 *     </div>
 *   </div>
 * ========================================================================== */

.hn-carousel {
    display: flex;
    flex-direction: column;
    gap: 24px;
    min-width: 0;
}

.hn-carousel__track {
    display: flex;
    flex-direction: row;
    gap: 32px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-padding-left: 4px;
    padding: 4px 4px 12px;
    margin: -4px -4px 0;
    scrollbar-width: thin;
    scrollbar-color: var(--wp--preset--color--brand-dark) transparent;
}

.hn-carousel__track > * {
    flex: 0 0 auto;
    scroll-snap-align: start;
}

.hn-carousel__nav {
    display: flex;
    flex-direction: row;
    gap: 12px;
}

.hn-carousel__arrow {
    width: 44px;
    height: 44px;
    border-radius: 999px;
    border: 1.5px solid var(--wp--preset--color--brand-dark);
    background: transparent;
    color: var(--wp--preset--color--brand-dark);
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 150ms ease, color 150ms ease, opacity 150ms ease;
}

.hn-carousel__arrow:hover:not([disabled]) {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--paper);
}

.hn-carousel__arrow[disabled] {
    opacity: 0.3;
    cursor: default;
}

/* ============================================================================
 * STAT SECTION — compléments page À propos : lead + CTA centrés (variante Clair).
 * ========================================================================== */

.hn-stat-section__lead {
    margin: 0;
    max-width: 1022px;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

.hn-stat-section__cta { margin-top: 8px; }

/* ============================================================================
 * TEAM CAROUSEL (page À propos) — titre + texte à gauche, cartes en scroll
 * horizontal à droite. Réutilise .hn-team-card (compact) + .hn-carousel.
 * ========================================================================== */

.hn-team-carousel {
    width: min(100% - 2 * 24px, 1184px);
    margin-inline: auto;
    padding: clamp(48px, 7vw, 96px) 0;
    display: grid;
    grid-template-columns: minmax(0, 420px) minmax(0, 1fr);
    align-items: center;
    gap: clamp(32px, 5vw, 80px);
    box-sizing: border-box;
}

.hn-team-carousel__aside {
    display: flex;
    flex-direction: column;
    gap: 24px;
}

.hn-team-carousel__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(30px, 3.4vw, 40px);
    line-height: 1.15;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-team-carousel__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(34px, 3.7vw, 45px);
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-team-carousel__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

/* La carte équipe garde sa largeur Figma (288) dans le track. */
.hn-team-carousel .hn-carousel__track > .hn-team-card {
    width: 288px;
    max-width: 288px;
}

@media (max-width: 900px) {
    .hn-team-carousel {
        grid-template-columns: 1fr;
        gap: 32px;
    }
}

/* ============================================================================
 * CARTE ACTUALITÉ (photo) — variante de .hn-ressource-card pour la page À propos
 * (Figma "Card Photo" 1183:10493) : image à la une + badge cyan catégorie.
 * ========================================================================== */

.hn-ressource-card--photo { gap: 0; }

.hn-ressource-card__media {
    display: block;
    width: 100%;
    height: 180px;
    object-fit: cover;
    border-radius: 16px;
    background: var(--wp--preset--color--surface-muted);
    margin-bottom: 16px;
}

.hn-ressource-card__badge {
    align-self: flex-start;
    margin-bottom: 16px;
}

.hn-resource-cards__subtitle {
    margin: 0 auto;
    max-width: 916px;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

/* En-tête (titre + sous-titre) centré, regroupé. */
.hn-resource-cards__head {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    max-width: 916px;
    margin-inline: auto;
}

/* Variante carrousel (page À propos) : section centrée façon section HN
   (titre mixte centré + marges généreuses + carrousel pleine largeur). */
.hn-resource-cards--carousel {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(40px, 5vw, 64px);
}

.hn-resource-cards--carousel .hn-resource-cards__title {
    margin: 0;
    text-align: center;
    max-width: 760px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-resource-cards__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    letter-spacing: -0.018em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-resource-cards--carousel .hn-carousel {
    align-self: stretch;
    width: 100%;
}

.hn-resource-cards__cta {
    align-self: center;
    margin: 0;
}

/* En mode carrousel, fixe la largeur des cartes ressource. */
.hn-resource-cards .hn-carousel__track > .hn-ressource-card {
    width: 401px;
    max-width: 401px;
}

@media (max-width: 768px) {
    .hn-resource-cards .hn-carousel__track > .hn-ressource-card {
        width: calc(100vw - 96px);
        max-width: 360px;
    }
}

/* ============================================================================
 * CTA BLOCK — variante avec média (page À propos « Parlons-en ? ») : texte à
 * gauche + image à droite (Figma 1183:11142). Sinon, layout centré par défaut.
 * ========================================================================== */

/* Colonne texte (titre + lead + boutons) — toujours présente. Centrée par
   défaut ; alignée à gauche en variante média. */
.hn-cta-block__text {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
    width: 100%;
}

.hn-cta-block--media {
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: clamp(40px, 8vw, 128px);
}

.hn-cta-block--media .hn-cta-block__text {
    align-items: flex-start;
    width: auto;
    max-width: 495px;
}

.hn-cta-block--media .hn-cta-block__content {
    align-items: flex-start;
    text-align: left;
    max-width: none;
}

.hn-cta-block--media .hn-cta-block__actions {
    justify-content: flex-start;
}

.hn-cta-block__media {
    flex: 0 0 auto;
    width: min(551px, 45%);
    aspect-ratio: 551 / 513;
    object-fit: cover;
    border-radius: 24px;
    display: block;
}

@media (max-width: 900px) {
    .hn-cta-block--media {
        flex-direction: column;
        align-items: center;
    }
    .hn-cta-block--media .hn-cta-block__content {
        align-items: center;
        text-align: center;
    }
    .hn-cta-block--media .hn-cta-block__actions {
        justify-content: center;
    }
    .hn-cta-block__media {
        width: 100%;
        max-width: 551px;
    }
}

/* ============================================================================
 * ARTICLE TITLE (molecule) — Figma "Article Titre" (193:1327)
 *
 * Header d'article : Badge catégorie + Title H1 mixte + ligne meta (author + date).
 * Utilisé en haut du single article template à l'intérieur de l'organism Article.
 *
 * Structure column gap 4 :
 *   __header (column gap 12) : Badge + Title mixte (Montserrat 50 + Mynerve 55)
 *   __meta (row space-between) :
 *     __author (avatar 42 + nom Body bold) | __date (Body 18 gris)
 *
 * Usage :
 *   <header class="hn-article-title">
 *     <div class="hn-article-title__header">
 *       <span class="hn-badge hn-badge--cyan">Catégorie</span>
 *       <h1 class="hn-article-title__heading">Ecart-type
 *         <span class="hn-article-title__heading-script">et si on faisait le point ?</span>
 *       </h1>
 *     </div>
 *     <div class="hn-article-title__meta">
 *       <div class="hn-article-title__author">
 *         <img class="hn-article-title__avatar" src="…" alt="" />
 *         <span class="hn-article-title__author-name">George Costanza</span>
 *       </div>
 *       <time class="hn-article-title__date">23 avril 2026</time>
 *     </div>
 *   </header>
 * ========================================================================== */

.hn-article-title {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.hn-article-title__header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
}

/* Badge dans le header : contraint à sa largeur "hug" pour ne pas s'étendre
   sur toute la colonne du flex parent (sinon le fond cyan déborderait). */
.hn-article-title__header > .hn-badge {
    align-self: flex-start;
    width: auto;
}

.hn-article-title__heading {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-article-title__heading-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    letter-spacing: -0.036em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-article-title__meta {
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    margin-top: 12px;
}

.hn-article-title__author {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 14px;
}

.hn-article-title__avatar {
    width: 42px;
    height: 42px;
    border-radius: 50%;
    object-fit: cover;
    display: block;
    flex-shrink: 0;
    background: var(--wp--preset--color--surface-muted);
}

.hn-article-title__author-name {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 20px;
    line-height: 22.32px;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
}

.hn-article-title__date {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: #515151;
}

@media (max-width: 768px) {
    .hn-article-title__heading {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-article-title__heading-script {
        font-size: 40px;
        line-height: 30px;
    }
    .hn-article-title__meta {
        flex-direction: column;
        align-items: flex-start;
        gap: 13px;
    }
}

/* ============================================================================
 * ARTICLE (organism) — Figma Component HN (194:3096)
 *
 * Layout single article : sidebar TOC (gauche, sticky) + colonne principale
 * (titre + contenu). Desktop row gap 64 + padding 96/128. Mobile column gap 48
 * (TOC passe en bas — peut être stylé sticky-bottom dans une V2).
 *
 * La section combine :
 *  - [[hn-toc]] (TOC molecule existante, sidebar 299 sticky en desktop)
 *  - [[hn-article-title]] (Badge + Title mixte + Author + Date)
 *  - .hn-article__body (post-content WP, max-w 800)
 *
 * Usage (rendu via template single.html ou pattern) :
 *   <section class="hn-article">
 *     <aside class="hn-article__sidebar">
 *       <nav class="hn-toc">…</nav>
 *     </aside>
 *     <article class="hn-article__main">
 *       <header class="hn-article-title">…</header>
 *       <div class="hn-article__body"><!-- post-content --></div>
 *     </article>
 *   </section>
 * ========================================================================== */

.hn-article {
    background: var(--wp--preset--color--surface);
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: flex-start;
    gap: 64px;
    box-sizing: border-box;
}

.hn-article__sidebar {
    flex: 0 0 auto;
    width: 299px;
    position: sticky;
    top: 96px;
}

.hn-article__main {
    flex: 0 1 800px;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 40px;
}

.hn-article__body {
    display: flex;
    flex-direction: column;
    gap: 24px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
    color: #434343;
}

.hn-article__body :where(h2, h3) {
    margin: 24px 0 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    color: var(--wp--preset--color--brand-dark);
}

.hn-article__body :where(h2) {
    font-size: clamp(28px, 4vw, 40px);
    line-height: 1.1;
    letter-spacing: -0.005em;
}

.hn-article__body :where(h3) {
    font-size: clamp(24px, 3vw, 32px);
    line-height: 1;
    letter-spacing: -0.0056em;
}

.hn-article__body :where(p) { margin: 0; }

.hn-article__body :where(img, figure img) {
    width: 100%;
    height: auto;
    border-radius: 5px;
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15);
    display: block;
}

.hn-article__body :where(ul, ol) {
    margin: 0;
    padding-inline-start: 1.25em;
}

.hn-article__body :where(a) {
    color: var(--wp--preset--color--brand-dark);
    text-decoration: underline;
    text-underline-offset: 3px;
}

@media (max-width: 960px) {
    .hn-article {
        flex-direction: column;
        align-items: stretch;
        padding: 64px 32px;
        gap: 48px;
    }
    .hn-article__sidebar {
        width: 100%;
        position: static;
        top: auto;
    }
    .hn-article__main {
        flex: 1 1 auto;
        max-width: 100%;
    }
}

/* ============================================================================
 * VISUEL FULL (organism) — Figma Component HN (71:7071)
 *
 * Section "image hero" : background image full-bleed + gradient overlay sombre
 * sur la partie basse pour la lisibilité du texte. Contenu (titre mixte + body
 * + 2 CTAs) ancré en bas à gauche.
 *
 * Image source via custom property `--hn-visuel-full-image: url(…)`.
 *
 * Spec Figma : bg image, padding 96/128 (mobile 64/32), row align-end gap 128.
 * Overlay : linear-gradient 181deg transparent → black, ~70% bas. Texte block
 * 579 wide. Title mixte Montserrat 50 + Mynerve 55 paper.
 *
 * Usage :
 *   <section class="hn-visuel-full" style="--hn-visuel-full-image:url(…);">
 *     <div class="hn-visuel-full__content">
 *       <h2 class="hn-visuel-full__title">Retrouvez du temps pour ce qui compte :
 *         <span class="hn-visuel-full__title-script">soigner</span>
 *       </h2>
 *       <p class="hn-visuel-full__lead">Évaluez avec plus de fiabilité…</p>
 *       <div class="hn-visuel-full__actions">
 *         <a class="hn-btn hn-btn--white hn-btn--lg" href="#">Essai gratuit</a>
 *         <a class="hn-btn hn-btn--white-outline hn-btn--lg" href="#">En savoir plus</a>
 *       </div>
 *     </div>
 *   </section>
 * ========================================================================== */

.hn-visuel-full {
    position: relative;
    overflow: hidden;
    min-height: clamp(500px, 60vh, 900px);
    padding: clamp(48px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: row;
    align-items: flex-end;
    gap: 128px;
    background-image: var(--hn-visuel-full-image, none);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-color: var(--wp--preset--color--brand-dark);
    box-sizing: border-box;
    color: var(--wp--preset--color--paper);
}

/* Gradient overlay 181deg : transparent en haut → noir en bas, occupe 70% bas */
.hn-visuel-full::before {
    content: '';
    position: absolute;
    inset: 30% 0 0 0;
    background: linear-gradient(181deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%);
    pointer-events: none;
    z-index: 1;
}

.hn-visuel-full__content {
    position: relative;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: 32px;
    max-width: 579px;
}

.hn-visuel-full__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--paper);
}

.hn-visuel-full__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(40px, 5.5vw, 55px);
    line-height: 1;
    color: var(--wp--preset--color--paper);
}

.hn-visuel-full__lead {
    margin: 0;
    max-width: 548px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--paper);
}
.hn-visuel-full__lead p { margin: 0; }
.hn-visuel-full__lead ul {
    margin: 0;
    padding-left: 1.5em;
    display: flex;
    flex-direction: column;
    gap: 4px;
    list-style: disc;
}
.hn-visuel-full__lead li { margin: 0; }

.hn-visuel-full__actions {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 19px;
}

@media (max-width: 768px) {
    .hn-visuel-full {
        padding: 64px 32px;
        gap: 48px;
        min-height: 600px;
    }
    .hn-visuel-full__title {
        font-size: 36px;
        line-height: 34px;
        letter-spacing: -0.0556em;
    }
    .hn-visuel-full__title-script {
        font-size: 40px;
        line-height: 30px;
    }
    .hn-visuel-full__actions {
        flex-direction: column;
        align-items: stretch;
        gap: 12px;
    }
}

/* ============================================================================
 * CART ITEM (organism) — Figma "Produits" (94:1490)
 *
 * Ligne d'item dans le panier WooCommerce (NB: malgré son nom Figma "Produits",
 * c'est bien un CartItem, pas une vitrine de produits). Layout row :
 *   - Image thumbnail 124×124 radius 8.66 bg #F0EEED
 *   - Content column space-between : titre bold + description + prix bold
 *   - Actions column space-between aligned right :
 *       - Icône poubelle (delete) en haut
 *       - Quantity selector "pill" (− / qty / +) en bas, bg #F0F0F0 radius 62
 *
 * Mobile : actions stack passe sous le titre (qty pill peut être à côté du prix).
 *
 * Usage :
 *   <article class="hn-cart-item">
 *     <img class="hn-cart-item__image" src="…" alt="…" />
 *     <div class="hn-cart-item__content">
 *       <div class="hn-cart-item__info">
 *         <p class="hn-cart-item__title">Logiciel Exalang</p>
 *         <p class="hn-cart-item__description">Licence solo, 12 mois</p>
 *       </div>
 *       <p class="hn-cart-item__price">79€/mois</p>
 *     </div>
 *     <div class="hn-cart-item__actions">
 *       <button class="hn-cart-item__remove" aria-label="Retirer du panier">
 *         <?php echo hn_icon('poubelle'); ?>
 *       </button>
 *       <div class="hn-cart-item__qty">
 *         <button class="hn-cart-item__qty-btn" aria-label="Décrémenter">−</button>
 *         <span class="hn-cart-item__qty-value">1</span>
 *         <button class="hn-cart-item__qty-btn" aria-label="Incrémenter">+</button>
 *       </div>
 *     </div>
 *   </article>
 * ========================================================================== */

.hn-cart-item {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 16px;
    width: 100%;
    box-sizing: border-box;
}

.hn-cart-item__image {
    flex: 0 0 124px;
    width: 124px;
    height: 124px;
    border-radius: 8.66px;
    background: #F0EEED;
    object-fit: cover;
    display: block;
}

.hn-cart-item__content {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-self: stretch;
    min-height: 118px;
    min-width: 0;
}

.hn-cart-item__info {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.hn-cart-item__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 18px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cart-item__description {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cart-item__price {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 700;
    font-size: 18px;
    color: var(--wp--preset--color--brand-dark);
}

.hn-cart-item__actions {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-end;
    align-self: stretch;
    min-height: 124px;
    gap: 16px;
}

.hn-cart-item__remove {
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
    width: 24px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--wp--preset--color--brand-dark);
    line-height: 0;
    transition: opacity 200ms ease;
}

.hn-cart-item__remove:hover { opacity: 0.7; }
.hn-cart-item__remove svg { width: 100%; height: 100%; display: block; }

.hn-cart-item__qty {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    gap: 20px;
    padding: 12px 20px;
    border-radius: 62px;
    background: #F0F0F0;
}

.hn-cart-item__qty-btn {
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
    width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 1;
    transition: opacity 200ms ease;
}

.hn-cart-item__qty-btn:hover { opacity: 0.7; }

.hn-cart-item__qty-value {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 14px;
    color: var(--wp--preset--color--brand-dark);
    min-width: 1em;
    text-align: center;
}

@media (max-width: 600px) {
    .hn-cart-item {
        flex-wrap: wrap;
        gap: 12px;
    }
    .hn-cart-item__image {
        flex: 0 0 80px;
        width: 80px;
        height: 80px;
    }
    .hn-cart-item__content {
        flex: 1 1 calc(100% - 80px - 16px);
        min-height: 80px;
    }
    .hn-cart-item__actions {
        flex: 1 1 100%;
        flex-direction: row;
        justify-content: space-between;
        align-items: center;
        min-height: 0;
    }
}

/* ============================================================================
 * BUGHERD FIXES — 2026-05-28 (retours Camille — projet 522114)
 *
 * Lot d'ajustements design suite à la première recette visuelle du DS sur la
 * Home et la page allinone. Regroupés ici pour traçabilité.
 * ========================================================================== */

/* #36 — ROLLBACK : mon interprétation "contour = couleur card" rendait le
   contour totalement invisible (blanc sur card blanche). Camille voulait
   probablement un contour adapté par variant (pas brand-dark systématique),
   mais avec contraste pour rester visible. À reclarifier avec Camille avant
   de réappliquer. Pour l'instant on reste sur brand-dark par défaut. */

/* #35 v2 (2026-05-29) — La vraie classe est .hn-pricing-section__cards (pas
   .hn-pricing-grid qui n'existe pas → mon premier fix n'a rien fait).
   Passage en display: grid garantit que toutes les cards de la même row ont
   la même hauteur, même si une seule a un label sur 2 lignes. */
.hn-pricing-section__cards {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    align-items: stretch;
}

.hn-pricing-section__cards > * {
    max-width: none;
    height: 100%;
}

@media (max-width: 960px) {
    .hn-pricing-section__cards {
        grid-template-columns: 1fr;
    }
}

/* #39 v2 — Testimonial card : avatar collé au bas (space-between conservé)
   mais min-height réduit de 480→380 pour ne plus créer de scroll vertical
   dans le track combiné au stagger #38 (cf. #43). */
.hn-testimonial-card {
    justify-content: space-between;
    min-height: 380px;
}

.hn-testimonial-card__text {
    flex: 1 1 auto;
}

/* #43 (2026-05-29) — Carousel testimonial : retrait du scroll vertical.
   Le translateY 28 du stagger sortait du track → overflow-y hidden explicite
   + padding-bottom 48 pour absorber la card décalée. */
.hn-testimonial-carousel__track {
    overflow-y: hidden;
    padding-bottom: 48px !important;
}

/* #33 v2 (2026-05-29) — Solution Card titre cassé sur 3 lignes : text-wrap
   balance répartit le titre équitablement entre les lignes. Padding réduit
   à 32px pour le variant --court (au lieu de 48) pour libérer de la place. */
.hn-solution-card__title {
    text-wrap: balance;
    hyphens: none;
}

.hn-solution-card--court {
    padding: 32px;
}

/* #38 — Décalage vertical des testimonial cards dans le carousel (effet
   staggered "décalé un sur deux" demandé par Camille). */
.hn-testimonial-carousel__track > .hn-testimonial-card:nth-child(even) {
    transform: translateY(28px);
}

/* #42 — BeforeAfter Card variant Blanc : le side "Avant" (sur fond bleu de la
   section parente) doit avoir text + checkitems en blanc pour être lisible.
   Actuellement le side --avant garde le color brand-dark par défaut. */
.hn-beforeafter-card--blanc .hn-beforeafter-card__side--avant {
    color: var(--wp--preset--color--surface);
}

.hn-beforeafter-card--blanc .hn-beforeafter-card__side--avant .hn-h4-script,
.hn-beforeafter-card--blanc .hn-beforeafter-card__side--avant .hn-checkitem__label {
    color: var(--wp--preset--color--surface);
}

.hn-beforeafter-card--blanc .hn-beforeafter-card__side--avant .hn-checkitem--cross-blanc,
.hn-beforeafter-card--blanc .hn-beforeafter-card__side--avant .hn-checkitem__icon {
    color: var(--wp--preset--color--surface);
}

/* #41 — Tab nav (.hn-toggle-group) : filet aligné en bas même si label sur 2 lignes.
   margin-top: auto pousse le divider tout en bas de chaque .hn-toggle (column),
   donc tous les filets sont alignés horizontalement. */
.hn-toggle__divider {
    margin-top: auto;
}

/* #29/30 + #36 — RE-APPLIQUÉ avec la bonne technique (mask-image au lieu de
   filter SVG). Confirmation Figma node 13:5610 : stroke 15px blanc (couleur
   card) + mask manuscrit Camille. On applique :
   - --hn-brushed-color = couleur card (transparent sur le fond environnant)
   - --hn-brushed-width = 15px (épaisseur stroke Figma)
   - mask-image : le tracé manuscrit Camille découpe la border en effet brushed.
   Override le filter url(#hn-roughen) qui ne marchait pas en data:URI. */

/* #29/30 + #36 — Rollback au filter procédural feTurbulence (cf functions.php).
   Ni feImage data:URI, ni mask-image, ni border-image n'ont donné un rendu
   satisfaisant. La texture Camille (PNG/SVG) reste dispo dans assets/images/.
   À reclarifier avec Camille (intent réel sur contour visuel des cards). */

/* #31 v2 (2026-05-29) — Bouton CTA : flèche cyan au hover. Le markup des
   patterns Visuel Full / Hero / etc. n'a pas <span class="hn-btn__icon">
   donc l'animation sur .hn-btn__icon ne pouvait rien afficher. On utilise un
   ::after qui inject l'icône SVG arrow-right en data URL — visible sur TOUS
   les .hn-btn au :hover sans toucher au markup. */
.hn-btn::after {
    content: '';
    display: inline-block;
    width: 0;
    height: 12px;
    background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='%232fd6c9'%3E%3Cpath d='M0 4.85h10l1 1-1 1H0z'/%3E%3Cpath d='M5.14 0l4.95 4.95-2.12.71L3.73 1.41z'/%3E%3Cpath d='M3.73 10.29l4.24-4.24 2.12.71-4.95 4.95z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
    background-position: center;
    margin-left: 0;
    opacity: 0;
    transition: width 220ms ease, margin-left 220ms ease, opacity 220ms ease;
    vertical-align: middle;
    flex-shrink: 0;
}

.hn-btn:hover::after,
.hn-btn:focus-visible::after {
    width: 12px;
    margin-left: 8px;
    opacity: 1;
}

.hn-btn:disabled::after,
.hn-btn[aria-disabled="true"]::after {
    width: 0;
    margin-left: 0;
    opacity: 0;
}

/* Évite la double-flèche quand le markup a déjà un .hn-btn__icon explicite */
.hn-btn:has(.hn-btn__icon)::after {
    display: none;
}

/* #37 — Testimonial carousel arrows : prev/next sous le track, centrés. */
.hn-testimonial-carousel__nav {
    display: flex;
    flex-direction: row;
    justify-content: center;
    gap: 16px;
    margin-top: 24px;
}

.hn-testimonial-carousel__nav-prev,
.hn-testimonial-carousel__nav-next {
    width: 40px;
    height: 40px;
    border-radius: 9999px;
    border: 1px solid rgba(18, 0, 50, 0.15);
    background: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 200ms ease, color 200ms ease, border-color 200ms ease;
}

.hn-testimonial-carousel__nav-prev:hover:not(:disabled),
.hn-testimonial-carousel__nav-next:hover:not(:disabled) {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
    border-color: var(--wp--preset--color--brand-dark);
}

.hn-testimonial-carousel__nav-prev:disabled,
.hn-testimonial-carousel__nav-next:disabled {
    opacity: 0.35;
    cursor: not-allowed;
}

/* ============================================================================
 * CADRE DE SECTION UNIFORME (2026-06-07)
 *
 * Toutes les sections principales s'alignent sur un rail unique, calé sur le
 * Figma (artboard 1440, sections padding 96/128 → contenu 1184) :
 *   --hn-content 1184px · --hn-gutter 128px (responsive) · --hn-section-y 96px.
 * Fonds pleine largeur (width:100%, jamais 100vw) + overflow-x:clip sur
 * .wp-site-blocks → aucun scroll latéral. Override placé en fin de fichier :
 * harmonise gouttières (64→128) et rails (1280→1184) sans toucher au markup.
 * ========================================================================== */
:root {
    --hn-content: 1184px;
    --hn-gutter: clamp(24px, 8vw, 128px);
    --hn-section-y: clamp(48px, 8vw, 96px);
}

/* Blocs HN de niveau section : pleine largeur + gouttière + rythme uniformes. */
.hn-page-hero,
.hn-hero,
.hn-visuel-full,
.hn-cta-block,
.hn-stat-section,
.hn-cardgrid,
.hn-checklist-block,
.hn-split-layout,
.hn-testimonial-carousel,
.hn-text-section,
.hn-hubspot-form-block,
.hn-product-cards,
.hn-boutique-categories,
.hn-pricing-section {
    width: 100%;
    max-width: none;
    margin-inline: 0;
    box-sizing: border-box;
    /* Boxing grands écrans : la gouttière grandit pour que le CONTENU reste
       plafonné au rail --hn-content (le fond, lui, reste pleine largeur). */
    padding-inline: max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2));
    padding-block: var(--hn-section-y);
}

/* Rails de contenu internes : largeur unique 1184, centrés, sans gouttière propre
   (la gouttière est portée par la section). */
.hn-cardgrid__items,
.hn-cardgrid__items--stack,
.hn-cardgrid__items--cols-2,
.hn-cardgrid__items--cols-3,
.hn-cardgrid__items--cols-4,
.hn-pricing-section__cards,
.hn-boutique-categories__inner,
.hn-product-grid,
.hn-stat-grid,
.hn-testimonial-carousel__track {
    max-width: var(--hn-content);
    margin-inline: auto;
    width: 100%;
}

/* Contenus volontairement plus étroits (lisibilité), centrés dans le rail. */
.hn-text-section__title,
.hn-text-section__body {
    max-width: 760px;
    margin-inline: auto;
}
.hn-cta-block__content { max-width: 880px; margin-inline: auto; }
.hn-pricing-section__head,
.hn-boutique-categories__head { max-width: 800px; }

/* Filet de sécurité anti-scroll latéral (rappel ; déjà sur .wp-site-blocks). */
.hn-cardgrid__items > *,
.hn-pricing-section__cards > * { min-width: 0; }

/* ============================================================================
 * WOOCOMMERCE — Commande reçue / Merci (order-confirmation)
 * Scopé via :has() sur le bloc de statut (présent uniquement sur cette page).
 * ========================================================================== */
main:has(.wc-block-order-confirmation-status) {
    padding: clamp(48px, 6vw, 80px) 0 clamp(64px, 8vw, 96px);
}
/* Cadre 1184 pour chaque bloc de la confirmation */
main:has(.wc-block-order-confirmation-status) > * {
    width: min(100% - 2 * clamp(24px, 8vw, 128px), 1184px);
    margin-inline: auto;
    box-sizing: border-box;
}
/* Titre + coche de succès */
main:has(.wc-block-order-confirmation-status) h1 {
    text-align: center;
    margin: 0 auto 12px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(32px, 4vw, 44px);
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}
main:has(.wc-block-order-confirmation-status) h1::before {
    content: '✓';
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    margin: 0 auto 20px;
    border-radius: 50%;
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-size: 32px;
    font-weight: 700;
}
.wc-block-order-confirmation-status {
    text-align: center;
    max-width: 720px;
    margin: 0 auto clamp(40px, 5vw, 56px) !important;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}
/* Récap (numéro, date, total, e-mail, paiement) */
.wc-block-order-confirmation-summary {
    background: var(--wp--preset--color--paper);
    border-radius: 20px;
    padding: clamp(20px, 3vw, 32px);
    margin-bottom: 32px;
}
.wc-block-order-confirmation-summary-list-item__key {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    color: var(--wp--preset--color--brand-dark);
}
.wc-block-order-confirmation-summary-list-item__value {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    color: var(--wp--preset--color--muted-text);
}
/* Titres de section */
main:has(.wc-block-order-confirmation-status) h2,
main:has(.wc-block-order-confirmation-status) h3 {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 20px;
    color: var(--wp--preset--color--brand-dark);
}
/* Table des produits */
.wc-block-order-confirmation-totals__table {
    width: 100%;
    border-collapse: collapse;
    border: 1px solid var(--wp--preset--color--paper);
    border-radius: 16px;
    overflow: hidden;
    font-family: Montserrat, ui-sans-serif, sans-serif;
}
.wc-block-order-confirmation-totals__table th {
    text-align: left;
    background: var(--wp--preset--color--paper);
    padding: 16px 20px;
    font-weight: 600;
    color: var(--wp--preset--color--brand-dark);
}
.wc-block-order-confirmation-totals__table td {
    padding: 16px 20px;
    border-top: 1px solid var(--wp--preset--color--paper);
    color: var(--wp--preset--color--brand-dark);
}
.wc-block-order-confirmation-totals__table a { color: inherit; text-decoration: none; }
/* Adresse de facturation / livraison en carte beige */
.wc-block-order-confirmation-billing-address,
.wc-block-order-confirmation-shipping-address {
    background: var(--wp--preset--color--paper);
    border: 0;
    border-radius: 16px;
    padding: 24px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    color: var(--wp--preset--color--brand-dark);
}

/* ============================================================================
 * PARAMÉTRAGE DE SECTION — charte de cohérence (2026-06-10)
 *
 * Source : docs/charte-coherence.md. Deux niveaux :
 *   1. Fond de PAGE par défaut : dégradé blanc → beige. Réglable ici une
 *      seule fois via --hn-page-bg-from / --hn-page-bg-to (si le client veut
 *      beige → blanc, inverser ces deux variables, rien d'autre à toucher).
 *   2. Fond/espacements de SECTION : classes produites par
 *      hn_section_settings_classes() (onglet « Paramétrage » des blocs ACF).
 *      Défaut = transparent + rythme --hn-section-y → le dégradé de page
 *      reste visible et le rythme vertical est uniforme.
 *
 * Ce bloc reste en FIN de fichier : les utilitaires doivent gagner à
 * spécificité égale contre les styles de section déclarés plus haut.
 * ========================================================================== */
:root {
    --hn-page-bg-from: var(--wp--preset--color--surface);
    --hn-page-bg-to: var(--wp--preset--color--paper);
}

body {
    background-image: linear-gradient(180deg, var(--hn-page-bg-from) 0%, var(--hn-page-bg-to) 100%);
}

/* Fonds de section (onglet Paramétrage) */
.hn-bg-blanc { background: var(--wp--preset--color--surface); }
.hn-bg-beige { background: var(--wp--preset--color--paper); }
.hn-bg-degrade { background: linear-gradient(180deg, var(--hn-page-bg-from), var(--hn-page-bg-to)); }
.hn-bg-degrade-inverse { background: linear-gradient(180deg, var(--hn-page-bg-to), var(--hn-page-bg-from)); }

.hn-bg-sombre {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}
.hn-bg-sombre :is(h1, h2, h3, h4, h5, h6) { color: inherit; }

/* Les cartes tarifs restent des îlots BLANCS même sur une section sombre → leur
   texte (titre, préfixe « à partir de », tagline, description) doit rester
   sombre, sinon il devient blanc sur blanc (invisible). */
.hn-bg-sombre .hn-pricing-card,
.hn-bg-sombre .hn-pricing-card :is(h1, h2, h3, h4, h5, h6),
.hn-bg-sombre .hn-pricing-card .hn-pricing-card__price-prefix {
    color: var(--wp--preset--color--brand-dark);
}
.hn-bg-sombre .hn-pricing-card .hn-pricing-card__description,
.hn-bg-sombre .hn-pricing-card .hn-pricing-card__tagline {
    color: var(--wp--preset--color--muted-text);
}

/* Espacements de section (onglet Paramétrage) */
.hn-pt-0 { padding-top: 0; }
.hn-pb-0 { padding-bottom: 0; }
.hn-pt-compact { padding-top: calc(var(--hn-section-y) / 2); }
.hn-pb-compact { padding-bottom: calc(var(--hn-section-y) / 2); }

/* Largeur du contenu (onglet Paramétrage → classes .hn-w-*). Surcharge le token
   --hn-content (utilisé par ~19 inners de blocs) ET --hn-section-max (blocs
   câblés sur ce token : stepper, team-cards, callout-card…). « Hérité » = pas de
   classe → chaque bloc garde sa largeur native. Ne touche pas le fond de section
   (qui reste plein si .hn-bg-* est posé) : seul le contenu interne est borné. */
.hn-w-narrow { --hn-content: 760px;  --hn-section-max: 760px; }
.hn-w-normal { --hn-content: 1040px; --hn-section-max: 1040px; }
.hn-w-wide   { --hn-content: 1280px; --hn-section-max: 1280px; }
.hn-w-full   { --hn-content: 100%;   --hn-section-max: 100%; }

/* Tableau natif (core/table) habillé au design HN — pour un tableau « normal »
   (sans la structure imposée du Tableau comparatif). Largeur via l'alignement
   natif du bloc (normal / large / pleine largeur). */
.wp-block-table { margin-inline: auto; }
.wp-block-table table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    color: var(--wp--preset--color--brand-dark);
    background: var(--wp--preset--color--surface);
    border-radius: 16px;
    overflow: hidden;
    box-shadow: var(--hn-shadow-sm);
}
.wp-block-table th,
.wp-block-table td {
    padding: 14px 20px;
    text-align: left;
    border: 0;
    border-bottom: 1px solid rgba(18, 0, 50, 0.08);
}
.wp-block-table thead th {
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    font-weight: 600;
}
.wp-block-table tbody tr:last-child td,
.wp-block-table tbody tr:last-child th { border-bottom: 0; }
.wp-block-table tbody tr:nth-child(even) td { background: var(--wp--preset--color--paper); }
.wp-block-table figcaption {
    margin-top: 10px;
    text-align: center;
    color: var(--wp--preset--color--muted);
    font-size: 14px;
}

/* ============================================================================
 * SKIN FORMULAIRE UNIQUE « hn-form » — charte règle 6 (2026-06-10)
 *
 * Référence : Figma Component HN / ContactForm (10:4819, organism 61:1098) —
 * style underline : pas de boîte, filet 1px sous le champ, label gris au-dessus,
 * valeur brand-dark, le tout dans une carte blanche radius 24 / padding 32.
 * Adaptation : 16px au lieu des 18px Figma (densité checkout).
 *
 * S'applique aux TROIS écosystèmes : Gravity Forms (.gform_wrapper), embeds
 * HubSpot (.hn-hubspot-form / .hs-input — prêts pour le Portal ID), WooCommerce
 * (compte/login classiques + blocs cart/checkout). Tout nouveau formulaire
 * doit rentrer dans ces sélecteurs — jamais de skin local.
 * ========================================================================== */
:root {
    --hn-field-line: #e8e8e8;
    --hn-field-line-focus: var(--wp--preset--color--brand-dark);
    --hn-field-text: var(--wp--preset--color--brand-dark);
    --hn-field-label: var(--wp--preset--color--muted-text);
    --hn-field-size: 16px;
    --hn-form-card-radius: 24px;
}

/* ----- Champs (text/email/tel/number/password, select, textarea) ---------- */
/* !important requis : Gravity 2.9 charge son thème Orbital (4 feuilles)
   après theme.css — même gotcha que wc-blocks. */
.gform_wrapper input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]),
.gform_wrapper select,
.gform_wrapper textarea,
.hn-hubspot-form .hs-input,
.hn-wc-page-body--account input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]),
.hn-wc-page-body--account select,
.hn-wc-page-body--account textarea {
    font-family: Montserrat, ui-sans-serif, sans-serif !important;
    font-size: var(--hn-field-size) !important;
    color: var(--hn-field-text) !important;
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid var(--hn-field-line) !important;
    border-radius: 0 !important;
    padding: 10px 0 !important;
    width: 100%;
    box-sizing: border-box;
}

/* Blocs WC (cart/checkout) : mêmes principes, mais on préserve le mécanisme de
   floating label (padding vertical natif) — on ne neutralise que la boîte. */
/* !important requis : la feuille wc-blocks charge après theme.css à
   spécificité égale (gotcha WC connu). */
.hn-wc-page-body .wc-block-components-text-input input,
.hn-wc-page-body .wc-block-components-textarea,
.hn-wc-page-body .wc-blocks-components-select__select,
.hn-wc-page-body .wc-block-components-combobox input {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    color: var(--hn-field-text);
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid var(--hn-field-line) !important;
    border-radius: 0 !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.hn-wc-page-body :is(.wc-block-components-text-input, .wc-block-components-combobox, .wc-blocks-components-select) label {
    left: 0;
    color: var(--hn-field-label);
    font-family: Montserrat, ui-sans-serif, sans-serif;
}

/* ----- Focus : filet épaissi brand-dark (remplace le ring global) ---------- */
.gform_wrapper input:focus,
.gform_wrapper input:focus-visible,
.gform_wrapper select:focus,
.gform_wrapper select:focus-visible,
.gform_wrapper textarea:focus,
.gform_wrapper textarea:focus-visible,
.hn-hubspot-form .hs-input:focus,
.hn-hubspot-form .hs-input:focus-visible,
.hn-wc-page-body--account input:focus,
.hn-wc-page-body--account input:focus-visible,
.hn-wc-page-body--account select:focus,
.hn-wc-page-body--account textarea:focus,
.hn-wc-page-body .wc-block-components-text-input input:focus,
.hn-wc-page-body .wc-block-components-text-input input:focus-visible,
.hn-wc-page-body .wc-block-components-textarea:focus,
.hn-wc-page-body .wc-blocks-components-select__select:focus,
.hn-wc-page-body .wc-block-components-combobox input:focus {
    outline: none !important;
    border-color: var(--hn-field-line-focus) !important;
    border-radius: 0 !important;
    box-shadow: 0 1px 0 0 var(--hn-field-line-focus) !important;
}

/* ----- Labels (formulaires classiques, hors floating WC) ------------------ */
.gform_wrapper .gfield_label,
.hn-hubspot-form label,
.hn-wc-page-body--account .woocommerce-form-row label,
.hn-wc-page-body--account .form-row label {
    font-family: Montserrat, ui-sans-serif, sans-serif !important;
    font-weight: 400 !important;
    font-size: var(--hn-field-size) !important;
    color: var(--hn-field-label) !important;
}

/* ----- Selects classiques : chevron brand-dark (les selects WC blocks ont
   déjà leur icône .wc-blocks-components-select__expand) ---------------------- */
.gform_wrapper select,
.hn-hubspot-form select.hs-input,
.hn-wc-page-body--account select {
    appearance: none !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' fill='none'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23120032' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 4px center;
    padding-right: 28px;
}

/* ----- Cases et radios ----------------------------------------------------- */
.gform_wrapper input[type="checkbox"],
.gform_wrapper input[type="radio"],
.hn-hubspot-form input[type="checkbox"],
.hn-hubspot-form input[type="radio"],
.hn-wc-page-body input[type="checkbox"],
.hn-wc-page-body input[type="radio"],
.hn-wc-page-body--account input[type="checkbox"] {
    accent-color: var(--wp--preset--color--brand-dark);
}

/* ----- Erreurs / validation ------------------------------------------------ */
.gform_wrapper .gfield_error input,
.gform_wrapper .gfield_error select,
.gform_wrapper .gfield_error textarea,
.hn-hubspot-form .hs-input.invalid,
.hn-wc-page-body .has-error input {
    border-bottom-color: var(--wp--preset--color--destructive);
}
.gform_wrapper .gfield_validation_message,
.gform_wrapper .validation_message,
.hn-hubspot-form .hs-error-msg,
.hn-wc-page-body .wc-block-components-validation-error p {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 14px;
    color: var(--wp--preset--color--destructive);
}

/* ----- Carte formulaire (enveloppe Figma : blanc, r24, p32) ---------------- */
.gform_wrapper,
.hn-hubspot-form,
.hn-wc-page-body--account .woocommerce-form-login,
.hn-wc-page-body--account .woocommerce-form-register {
    background: var(--wp--preset--color--surface);
    border: 0 !important;
    border-radius: var(--hn-form-card-radius);
    padding: 32px !important;
    box-shadow: var(--hn-shadow-sm);
}

/* Centrage du bloc connexion/inscription (la marge auto seule était écrasée
   par les styles WC ; largeur 544 constatée → on force et on centre). */
.hn-wc-page-body--account .woocommerce-form-login,
.hn-wc-page-body--account .woocommerce-form-register {
    max-width: 520px;
    margin-left: auto !important;
    margin-right: auto !important;
    float: none;
}

/* ----- Tunnel : carte récap IDENTIQUE panier et commande ------------------- */
.hn-wc-page-body .wc-block-components-sidebar {
    background: var(--wp--preset--color--paper);
    border-radius: 24px;
    padding: 24px !important;
    align-self: flex-start;
    box-sizing: border-box;
}
.hn-wc-page-body .wc-block-components-sidebar .wc-block-components-totals-item,
.hn-wc-page-body .wc-block-components-sidebar .wc-block-components-totals-footer-item {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    color: var(--wp--preset--color--brand-dark);
}

/* Typo de base des deux blocs tunnel (le panier l'avait, pas la commande). */
.hn-wc-page-body .wc-block-checkout,
.hn-wc-page-body .wp-block-woocommerce-checkout {
    font-family: Montserrat, ui-sans-serif, sans-serif;
}

/* ----- Finitions tunnel (sélecteurs WC profonds) --------------------------- */
/* Select pays/région : la boîte blanche est sur le container, pas le select. */
.hn-wc-page-body .wc-blocks-components-select__container {
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
}

/* Récap : pas de cadre slate dans la carte beige, séparateurs discrets. */
.hn-wc-page-body .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block {
    border: 0 !important;
}
.hn-wc-page-body .wc-block-components-sidebar .wc-block-components-totals-wrapper,
.hn-wc-page-body .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-coupon-form-block,
.hn-wc-page-body .wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-totals-block {
    border-color: rgba(18, 0, 50, 0.08) !important;
}

/* Badge quantité du récap : brand-dark (slate par défaut). */
.hn-wc-page-body .wc-block-components-order-summary-item__quantity {
    background: var(--wp--preset--color--brand-dark) !important;
    border: 0;
}

/* Options de paiement : lignes à coins DROITS dans le cadre carré (pas de
   coins arrondis par ligne — demande client). */
.hn-wc-page-body .wc-block-components-radio-control-accordion-option,
.hn-wc-page-body .wc-block-components-radio-control--highlight-checked,
.hn-wc-page-body .wc-block-components-radio-control-accordion-option--checked-option-highlighted {
    border-radius: 0 !important;
}
.hn-wc-page-body .wc-block-components-radio-control--highlight-checked,
.hn-wc-page-body .wc-block-components-radio-control-accordion-option--checked-option-highlighted {
    box-shadow: inset 0 0 0 1px rgba(18, 0, 50, 0.2) !important;
}

/* AC 30297-bis — « Options de paiement » : mise en page des accordéons aérée.
   Espace entre options, contenu déplié respiré, et descriptions alignées à
   gauche (PayPal forçait un centrage via style inline → effet décalé). */
.hn-wc-page-body .wc-block-components-radio-control-accordion-content {
    padding-bottom: 16px;
}
.hn-wc-page-body .wc-block-components-radio-control-accordion-content p {
    margin: 0 0 8px;
}
.hn-wc-page-body .wc-block-components-radio-control-accordion-content p:last-child {
    margin-bottom: 0;
}
.hn-wc-page-body .ppcp-place-order-description {
    text-align: left !important;
}

/* Titre de la vue connexion : centré au-dessus de la carte. */
.hn-wc-page-body--account .woocommerce:has(.woocommerce-form-login) > h2 {
    text-align: center;
}

/* ----- Spécificités Gravity Forms (thème Orbital) -------------------------- */
/* Carte contenue et centrée (le wrapper prenait toute la largeur du rail). */
.gform_wrapper.gform-theme {
    max-width: 760px;
    margin-inline: auto;
}

/* Bouton Envoyer : pill HN (Orbital impose son bleu --gf-color-primary ;
   HubSpot impose son .hs-button.primary). */
.gform_wrapper input[type="submit"],
.gform_wrapper .gform_footer input[type="submit"],
.gform_wrapper .gform_footer button,
.hn-hubspot-form .hs-button.primary {
    font-family: Montserrat, ui-sans-serif, sans-serif !important;
    font-weight: 500 !important;
    font-size: 15px !important;
    background: var(--wp--preset--color--brand-dark) !important;
    color: var(--wp--preset--color--surface) !important;
    border: 0 !important;
    border-radius: var(--hn-radius-full) !important;
    padding: 0 28px !important;
    height: 48px;
    width: auto !important;
    cursor: pointer;
    transition: background var(--hn-transition);
}
.gform_wrapper input[type="submit"]:hover,
.gform_wrapper .gform_footer button:hover,
.hn-hubspot-form .hs-button.primary:hover { background: #1f0a4d !important; }

/* Mention « (Nécessaire) » : discrète plutôt que rouge vif. */
.gform_wrapper .gfield_required {
    color: var(--wp--preset--color--muted-text) !important;
    font-size: 13px !important;
    font-weight: 400 !important;
}

/* Orbital : line-height 38px fixe (texte rogné avec notre padding) et
   box-shadow sur les champs (fausse boîte) — on neutralise. */
.gform_wrapper input:not([type="submit"]):not([type="button"]):not([type="checkbox"]):not([type="radio"]),
.gform_wrapper select,
.gform_wrapper textarea {
    line-height: 1.5 !important;
    height: auto !important;
    box-shadow: none !important;
}
.gform_wrapper input:focus,
.gform_wrapper select:focus,
.gform_wrapper textarea:focus {
    box-shadow: 0 1px 0 0 var(--hn-field-line-focus) !important;
}

/* ----- Compléments HubSpot (layout + pop-up) — APRÈS le skin unifié pour
   gagner les batailles d'ordre/!important. Le style de champ (underline, label,
   carte, focus) vient du skin unifié ci-dessus, branché sur .hn-hubspot-form. */

/* Largeur de carte plafonnée (cf. Figma ContactForm ~660) + centrée, pour que
   les champs (pleine largeur) ne s'étirent pas sur les blocs alignwide. */
.hn-hubspot-form {
    max-width: 660px;
    margin-inline: auto;
}

.hn-hubspot-form .hs-form-field { margin-bottom: 20px; }

/* HubSpot bride les rangs (.form-columns-N) à ~500px par défaut → on force la
   pleine largeur de la carte, sinon le form est calé à gauche. */
.hn-hubspot-form .form-columns-1,
.hn-hubspot-form .form-columns-2,
.hn-hubspot-form .form-columns-3 {
    width: 100% !important;
    max-width: 100% !important;
}
.hn-hubspot-form .form-columns-2,
.hn-hubspot-form .form-columns-3 { display: flex; gap: 32px; }
.hn-hubspot-form .form-columns-2 > .hs-form-field,
.hn-hubspot-form .form-columns-3 > .hs-form-field {
    flex: 1;
    width: auto !important;
    float: none !important;
    padding: 0 !important;
}
/* Champs en colonne simple + wrapper .input : pleine largeur. */
.hn-hubspot-form .form-columns-1 .hs-form-field,
.hn-hubspot-form .hs-form-field > .input {
    width: 100% !important;
    max-width: 100% !important;
}

/* Téléphone international : le conteneur .hs-fieldtype-intl-phone porte aussi
   .hs-input → on annule sa ligne/padding et on met select pays + numéro en ligne. */
.hn-hubspot-form .hs-fieldtype-intl-phone {
    display: flex;
    gap: 24px;
    border-bottom: 0 !important;
    padding: 0 !important;
    background: none !important;
}
.hn-hubspot-form .hs-fieldtype-intl-phone select.hs-input { width: auto; min-width: 120px; flex: 0 0 auto; }
.hn-hubspot-form .hs-fieldtype-intl-phone input.hs-input { flex: 1 1 auto; min-width: 0; }

/* Cases / radios alignées avec leur libellé. */
.hn-hubspot-form .inputs-list { list-style: none; margin: 0; padding: 0; }
.hn-hubspot-form .inputs-list > li { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 8px; }
.hn-hubspot-form .inputs-list input[type="checkbox"],
.hn-hubspot-form .inputs-list input[type="radio"] { width: auto; margin-top: 4px; }

/* Pop-up fiches gratuites : la modale EST déjà la carte → pas de double carte. */
.hn-dl-modal .hn-hubspot-form {
    background: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    border-radius: 0 !important;
}

@media (max-width: 600px) {
    .hn-hubspot-form .form-columns-2,
    .hn-hubspot-form .form-columns-3 { flex-direction: column; gap: 0; }
}

/* ============================================================================
 * RYTHME VERTICAL — suppression des marges entre blocs (charte règle 3)
 *
 * WP injecte un blockGap (margin-block-start: 24px via
 * `:root :where(.is-layout-flow) > *`) entre les blocs de premier niveau.
 * Le rythme HN vient du padding des sections (--hn-section-y), jamais des
 * marges → on le neutralise sur les blocs HN UNIQUEMENT. Les blocs core de
 * premier niveau (prose de mentions-legales, headings, shortcodes) gardent
 * leur flux à 24px.
 * ========================================================================== */
.wp-block-post-content > [class^="hn-"],
.wp-block-post-content > [class*=" hn-"] {
    margin-block-start: 0;
    margin-block-end: 0;
}

/* Parité éditeur : dans le canvas, le gap s'applique au wrapper du bloc. */
.editor-styles-wrapper .is-root-container > [class*="wp-block-happyneuron-"],
.editor-styles-wrapper .is-root-container > [class^="hn-"],
.editor-styles-wrapper .is-root-container > [class*=" hn-"] {
    margin-block-start: 0;
    margin-block-end: 0;
}

/* ============================================================================
 * PARITÉ ÉDITEUR — largeur des blocs dans le canvas (2026-06-10)
 * Le front (page.html, post-content layout default) ne contraint pas les
 * sections HN ; l'éditeur applique contentSize 760px aux wrappers de blocs.
 * On neutralise pour les blocs HN et les groupes → largeur réelle en BO.
 * ========================================================================== */
.editor-styles-wrapper .is-root-container > .wp-block[class*="wp-block-happyneuron"],
.editor-styles-wrapper .is-root-container > .wp-block-group {
    max-width: none;
}

/* Molecules posées en premier niveau (hors section porteuse) : rail centré. */
.wp-block-post-content > .hn-callout-card,
.wp-block-post-content > .hn-pricing-card {
    width: min(100% - 2 * var(--hn-gutter), var(--hn-content));
    margin-inline: auto;
    box-sizing: border-box;
}

/* Page /verification-blocs/ : intertitres de recette dans le rail. */
.hn-verif-head {
    width: min(100% - 2 * var(--hn-gutter), var(--hn-content));
    margin-inline: auto;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    font-weight: 600;
    color: var(--wp--preset--color--muted-text);
    border-bottom: 1px solid var(--wp--preset--color--border);
    padding: 24px 0 8px;
}
.hn-verif-head code {
    font-weight: 400;
    font-size: 13px;
    background: rgba(18, 0, 50, 0.06);
    padding: 2px 8px;
    border-radius: 6px;
}

/* ============================================================================
 * HOME V5 — alignement maquette Design - HN (448:9664 desktop / 423:1568 mobile)
 * (2026-06-11) Titres de section à 56px (la V5 passe de 50 → 56), mock
 * applicatif vitré du Visuel full, bloc Solution Tabs, stepper split,
 * FAQ split, actions globales pricing. Mobile : maquette 390.
 * ========================================================================== */

/* ----- Titres de section V5 : 56px (script 61px) --------------------------- */
.hn-visuel-full__title,
.hn-hero__title,
.hn-stat-section__title,
.hn-faq__title,
.hn-cta-block__title,
.hn-pricing-section__title,
.hn-testimonial-carousel__title,
.hn-solution-tabs__title {
    font-size: clamp(34px, 4.6vw, 56px);
    line-height: 1.07;
}
.hn-visuel-full__title-script,
.hn-hero__title-script,
.hn-stat-section__title-script,
.hn-faq__title-script,
.hn-cta-block__title-script,
.hn-pricing-section__title-script,
.hn-testimonial-carousel__title-script,
.hn-solution-tabs__title-script {
    font-size: clamp(37px, 5vw, 61px);
}

/* ----- Visuel full : mock applicatif vitré (glassmorphism) ------------------ */
.hn-visuel-full--with-mock { position: relative; }

/* AC Solutions : hero principal de page = fond ancré en haut → le rognage
   vertical retire le bas, pour ne pas couper les visages sous le menu. */
.hn-visuel-full--hero { background-position: center top; }

/* Badge / label au-dessus du titre (réutilise .hn-badge). */
.hn-visuel-full__badge { align-self: flex-start; }

/* Artefact image (V1) : visuel décoratif posé à droite du hero. */
.hn-visuel-full--with-artefact { position: relative; }
.hn-visuel-full--with-artefact .hn-visuel-full__content { max-width: 580px; }
.hn-visuel-full__artefact {
    position: absolute;
    right: clamp(24px, 5vw, 72px);
    bottom: clamp(32px, 6vw, 64px);
    width: min(440px, 40vw);
    z-index: 2;
    pointer-events: none;
}
.hn-visuel-full__artefact img { display: block; width: 100%; height: auto; }

.hn-visuel-full__mock {
    position: absolute;
    right: clamp(32px, 5vw, 64px);
    bottom: clamp(40px, 6vw, 72px);
    width: min(436px, 36vw);
    border-radius: 16px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.16);
    border: 1px solid rgba(255, 255, 255, 0.35);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    box-shadow: 0 24px 60px rgb(0 0 0 / 18%);
    font-family: Montserrat, ui-sans-serif, sans-serif;
}

.hn-visuel-full__mock-bar {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 14px 20px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.3);
}

.hn-visuel-full__mock-logo { display: inline-flex; }

.hn-visuel-full__mock-tabs {
    display: flex;
    gap: 18px;
    font-size: 13px;
    font-weight: 500;
    color: var(--wp--preset--color--brand-dark);
}
.hn-visuel-full__mock-tabs .is-active { font-weight: 700; }

.hn-visuel-full__mock-body { padding: 18px 20px 22px; }

.hn-visuel-full__mock-title {
    margin: 0 0 10px;
    font-size: 20px;
    font-weight: 700;
    color: var(--wp--preset--color--brand-dark);
}

.hn-visuel-full__mock-line {
    display: block;
    width: 86%;
    height: 8px;
    border-radius: 9999px;
    background: rgba(255, 255, 255, 0.45);
    margin-bottom: 18px;
}

.hn-visuel-full__mock-actions { display: flex; gap: 12px; flex-wrap: wrap; }

.hn-visuel-full__mock-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 40px;
    padding: 0 18px;
    border-radius: 9999px;
    font-size: 13px;
    font-weight: 500;
}
.hn-visuel-full__mock-btn--solid {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}
.hn-visuel-full__mock-btn--ghost {
    border: 1px solid var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--brand-dark);
    background: rgba(255, 255, 255, 0.25);
}

/* Le contenu texte laisse la place au mock à droite. */
.hn-visuel-full--with-mock .hn-visuel-full__content { max-width: 580px; }

/* ----- Solution Tabs (maquette 448:9677) ----------------------------------- */
.hn-solution-tabs {
    width: 100%;
    box-sizing: border-box;
    padding: var(--hn-section-y) var(--hn-gutter);
}

.hn-solution-tabs__inner {
    max-width: var(--hn-content);
    margin-inline: auto;
    display: flex;
    flex-direction: column;
    gap: 40px;
}

.hn-solution-tabs__head { max-width: 700px; display: flex; flex-direction: column; gap: 16px; }

/* Option « titre pleine largeur » (home V5 1048:5635) : le titre s'étend sur
   toute la largeur du bloc au lieu d'être contraint. */
.hn-solution-tabs--title-full .hn-solution-tabs__head { max-width: none; align-items: center; text-align: center; margin-inline: auto; }
.hn-solution-tabs--title-full .hn-solution-tabs__tablist { justify-content: center; }

/* Variante en-tête centré (page mère Solutions, Figma 1105-5443). */
.hn-solution-tabs--center .hn-solution-tabs__head { max-width: 790px; margin-inline: auto; align-items: center; text-align: center; }
.hn-solution-tabs--center .hn-solution-tabs__lead { max-width: 790px; }
.hn-solution-tabs--center .hn-solution-tabs__tablist { justify-content: center; }

.hn-solution-tabs__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}
.hn-solution-tabs__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    line-height: 1;
    letter-spacing: 0;
}

.hn-solution-tabs__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    max-width: 610px;
}

.hn-solution-tabs__tablist { display: flex; gap: 16px; flex-wrap: wrap; }

.hn-solution-tabs__tab {
    height: 48px;
    padding: 0 24px;
    border-radius: 9999px;
    border: 1px solid var(--wp--preset--color--brand-dark);
    background: transparent;
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 15px;
    font-weight: 500;
    cursor: pointer;
    transition: background var(--hn-transition), color var(--hn-transition);
}
.hn-solution-tabs__tab:hover { background: rgba(18, 0, 50, 0.06); }
.hn-solution-tabs__tab.is-active {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}

.hn-solution-tabs__panel {
    display: none;
    grid-template-columns: 1fr 1fr;
    gap: 32px;
    align-items: stretch;
}
.hn-solution-tabs__panel.is-active { display: grid; }

.hn-solution-tabs__media {
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.hn-solution-tabs__media img {
    width: 100%;
    height: auto;
    max-width: 565px;
    border-radius: 24px;
    box-shadow: var(--hn-shadow-md);
    display: block;
}

.hn-solution-tabs__card {
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    padding: clamp(28px, 3.5vw, 48px);
    display: flex;
    flex-direction: column;
    gap: 16px;
    justify-content: center;
    align-items: flex-start;
    filter: url('#hn-roughen');
}

.hn-solution-tabs__overline {
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-size: 22px;
    line-height: 1;
    color: var(--wp--preset--color--brand-dark);
}

.hn-solution-tabs__card-title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(30px, 3vw, 40px);
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}

.hn-solution-tabs__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}

/* ----- Stepper split (intro gauche / timeline droite) ----------------------- */
.hn-stepper--split {
    max-width: none;
    width: 100%;
    padding-inline: var(--hn-gutter);
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
    gap: clamp(48px, 8vw, 128px);
    align-items: start;
}
.hn-stepper--split > .hn-stepper__intro,
.hn-stepper--split > .hn-timeline { min-width: 0; }
.hn-stepper--split::before { content: none; }

/* Rail interne 1184 simulé : on borne le grid. */
@media (min-width: 1185px) {
    .hn-stepper--split {
        padding-inline: calc((100% - var(--hn-content)) / 2);
    }
}

.hn-stepper__intro {
    display: flex;
    flex-direction: column;
    gap: 24px;
    position: sticky;
    top: 120px;
}

.hn-stepper--split .hn-stepper__title {
    margin: 0;
    text-align: left;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(34px, 4.6vw, 56px);
    line-height: 1.07;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}
.hn-stepper__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(37px, 5vw, 61px);
    line-height: 1;
    letter-spacing: 0;
}

.hn-stepper__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    max-width: 480px;
}

.hn-stepper__cta { align-self: flex-start; box-shadow: var(--hn-shadow-sm); }

/* ----- FAQ split (titre gauche / questions droite) -------------------------- */
.hn-faq--split {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: clamp(40px, 6vw, 96px);
    align-items: start;
}
.hn-faq--split .hn-faq__title { text-align: left; }
.hn-faq--split .hn-faq__title-script { display: block; }
.hn-faq--split .hn-faq__list { background: transparent; padding: 0; }
.hn-faq--split .hn-faq__item {
    background: var(--wp--preset--color--surface);
    border-radius: 14px;
}

/* ----- Pricing : actions globales sous la grille ----------------------------- */
.hn-pricing-section__actions {
    display: flex;
    gap: 16px;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 16px;
}

/* ----- Responsive HOME V5 (maquette mobile 390) ------------------------------ */
@media (max-width: 900px) {
    .hn-solution-tabs__panel,
    .hn-solution-tabs__panel.is-active { grid-template-columns: 1fr; }
    /* Maquette mobile : carte texte d'abord, visuel ensuite. */
    .hn-solution-tabs__media { order: 2; }
    .hn-solution-tabs__card { order: 1; }
    .hn-solution-tabs__tablist { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; }
    .hn-solution-tabs__tab { flex: 0 0 auto; }

    .hn-stepper--split { grid-template-columns: 1fr; gap: 48px; }
    .hn-stepper__intro { position: static; }

    .hn-faq--split { grid-template-columns: 1fr; }

    .hn-visuel-full__mock { display: none; }
    .hn-visuel-full--with-mock .hn-visuel-full__content { max-width: none; }
    .hn-visuel-full__artefact { display: none; }
    .hn-visuel-full--with-artefact .hn-visuel-full__content { max-width: none; }
}

/* ----- HOME V5 — corrections recette #1 (2026-06-11) ------------------------ */

/* 01/04/09 Visuel full : pleine hauteur maquette (901px), texte calé en bas,
   overlay renforcé bas + gauche (lisibilité du titre blanc sur photos claires). */
.hn-visuel-full {
    min-height: min(901px, 100svh);
}
.hn-visuel-full::before {
    inset: 0;
    background:
        linear-gradient(180deg, rgba(0, 0, 0, 0) 28%, rgba(0, 0, 0, 0.82) 100%),
        linear-gradient(90deg, rgba(0, 0, 0, 0.38) 0%, rgba(0, 0, 0, 0) 55%);
}
/* 03 Tension : gouttière maquette (96px) — scopé aux grilles de text-blocks. */
.hn-cardgrid__items:has(> .hn-text-block) {
    gap: clamp(40px, 6.6vw, 96px);
}

/* 05 Solution tabs : bord brushed sur le FOND seulement (le filter sur la
   carte distordait le texte). */
.hn-solution-tabs__card {
    filter: none;
    background: transparent;
    position: relative;
}
.hn-solution-tabs__card::before {
    content: '';
    position: absolute;
    inset: 3px;
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    filter: url('#hn-roughen');
    z-index: 0;
}
.hn-solution-tabs__card > * { position: relative; z-index: 1; }
.hn-solution-tabs__tablist { scrollbar-width: none; }
.hn-solution-tabs__tablist::-webkit-scrollbar { display: none; }

/* 06 Stepper split : pastilles et cartes à l'échelle maquette ; accent du
   titre sur sa propre ligne en desktop. */
.hn-stepper--split .hn-timeline__number {
    width: 28px;
    height: 28px;
    font-size: 15px;
}
.hn-stepper--split .hn-timeline__card { padding: 20px 24px; }
.hn-stepper--split .hn-timeline__card-title { font-size: 28px; }
.hn-stepper--split .hn-timeline__card .hn-timeline__card-body { font-size: 15px; line-height: 22px; }
@media (min-width: 901px) {
    .hn-stepper--split .hn-stepper__title-script { display: block; }
}

/* 08 Pricing : gouttière 28px, cartes 365px, brushed contenu dans la carte
   (il débordait de la bbox → artefacts + clipping mobile), CTA pill aligné à
   gauche, badge Populaire en coin haut-droit. */
.hn-pricing-section__cards {
    gap: 28px;
    max-width: var(--hn-content);
}
.hn-pricing-card { max-width: 365px; }
.hn-pricing-card::before { inset: 3px; }
.hn-pricing-card .hn-pricing-card__cta {
    width: auto;
    align-self: flex-start;
    height: 44px;
    padding: 0 26px;
}
.hn-pricing-card__badge {
    left: auto;
    transform: none;
    top: -14px;
    right: 24px;
}

/* 10 Témoignages : avatar bas de carte (nom/rôle + petite vignette ~111px,
 * cf. maquette 448-9685), flèches de navigation, scrollbar masquée.
 * La photo vit DANS .hn-avatar (atome) → .hn-avatar__photo, pas en bannière. */
.hn-testimonial-card .hn-avatar {
    align-self: flex-start;
}
.hn-testimonial-carousel__track {
    scrollbar-width: none;
}
.hn-testimonial-carousel__track::-webkit-scrollbar { display: none; }
.hn-testimonial-carousel__nav {
    display: flex;
    gap: 12px;
    justify-content: center;
    margin-top: 8px;
}
.hn-testimonial-carousel__arrow {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 1px solid var(--wp--preset--color--brand-dark);
    background: transparent;
    color: var(--wp--preset--color--brand-dark);
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    transition: background var(--hn-transition), color var(--hn-transition);
}
.hn-testimonial-carousel__arrow:hover {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}

/* 11 FAQ split : accordéon large (1/3 – 2/3), titre 40px, items une ligne. */
.hn-faq--split {
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}
.hn-faq--split .hn-faq__title {
    font-size: clamp(30px, 2.9vw, 40px);
    line-height: 1.2;
}
.hn-faq--split .hn-faq__title-script { font-size: clamp(32px, 3.2vw, 44px); }
.hn-faq--split .hn-faq__question {
    font-size: 18px;
    padding: 18px 22px;
}

/* ----- Mobile (≤900px) — corrections recette #1 ------------------------------ */
@media (max-width: 900px) {
    .hn-visuel-full { min-height: min(867px, 100svh); }
    .hn-visuel-full__actions { flex-direction: row; flex-wrap: wrap; }
    .hn-visuel-full__actions .hn-btn { width: auto; }

    /* Pricing : carrousel horizontal (maquette mobile) au lieu d'une pile. */
    .hn-pricing-section__cards {
        display: flex !important;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        gap: 16px;
        padding: 6px 4px 12px;
        scrollbar-width: none;
    }
    .hn-pricing-section__cards::-webkit-scrollbar { display: none; }
    .hn-pricing-section__cards > * {
        flex: 0 0 85%;
        max-width: none;
        scroll-snap-align: center;
    }
}

/* ----- HOME V5 — corrections recette #2 (2026-06-11) ------------------------ */

/* 11 FAQ split : sortir du rail 720px (cause racine du titre en 4 lignes et
   des questions en 2 lignes) + rythme en padding. */
.hn-faq--split {
    max-width: none;
    width: min(100% - 2 * var(--hn-gutter), var(--hn-content));
    margin-block: 0;
    padding-block: var(--hn-section-y);
}

/* 08 Pricing : largeur réelle des cartes = 365px (padding inclus) ; cases à
   cocher carrées (maquette) ; pas d'outline teal sur la featured (maquette V5). */
.hn-pricing-card { box-sizing: border-box; }
.hn-pricing-card--featured { outline: none; }
.hn-pricing-card__feature-icon {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    border: 1.5px solid var(--wp--preset--color--brand-dark);
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.hn-pricing-card__feature-icon svg { width: 11px; height: 11px; }

/* 06 Stepper split : titre à l'échelle maquette (2 lignes + accent). */
.hn-stepper--split .hn-stepper__title { font-size: clamp(30px, 3.1vw, 44px); }
.hn-stepper--split .hn-stepper__title-script { font-size: clamp(33px, 3.4vw, 48px); }

/* 10 Témoignages : groupe centré quand tout tient (safe = pas de clip en overflow). */
.hn-testimonial-carousel__track { justify-content: safe center; }
.hn-testimonial-carousel__arrow:disabled { opacity: 0.35; cursor: default; }

@media (max-width: 900px) {
    /* Pricing mobile : la colonne héritée écrasait le carrousel. */
    .hn-pricing-section__cards { flex-direction: row !important; }
}

/* FAQ split : le padding 32px de l'item s'additionnait à celui de la question
   (item fermé à 126px au lieu de ~62 maquette) — la question porte le padding. */
.hn-faq--split .hn-faq__item { padding: 0; }

/* ============================================================================
 * RETOURS PHILIPPE 2026-06-11 — header/hero/boxing/CTA blancs
 * ========================================================================== */

/* 1. La photo du hero remonte SOUS le header (la maquette fait flotter la
   pilule de navigation sur la photo). Le header sticky (z-60) reste au-dessus.
   Var centralisée : hauteur du header en flux. */
:root { --hn-header-h: 100px; }

.wp-block-post-content > .hn-visuel-full:first-child {
    margin-top: calc(-1 * var(--hn-header-h));
}

/* 2. Contenu du header boxé au rail du site (le fond/la barre restent libres). */
.hn-header__inner {
    max-width: var(--hn-content);
    padding-inline: var(--hn-gutter);
}

/* 3. Boxing des blocs à padding propre (le cadre uniforme est déjà passé en
   max() ; on aligne ceux qui portent leur propre gouttière). */
.hn-solution-tabs {
    padding-inline: max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2));
}
.hn-stepper--split {
    padding-inline: max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2));
}
.hn-wc-page-head {
    padding-inline: max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2)) !important;
}

/* 4. CTA blancs : restent BLANCS au survol (le passage en turquoise rendait
   la flèche invisible) — feedback par élévation. */
.hn-btn--white:hover {
    background: var(--wp--preset--color--surface);
    border-color: var(--wp--preset--color--surface);
    color: var(--wp--preset--color--brand-dark);
    box-shadow: 0 6px 18px rgb(0 0 0 / 16%);
    transform: translateY(-1px);
}

/* Le blockGap racine (header → contenu → footer) crée 24px de marge entre les
   parties de premier niveau ; charte : le rythme vient du padding des sections,
   jamais des marges. Règle commune à TOUTES les pages (header, contenu, footer,
   wrapper WooCommerce…), pas seulement <main>. */
.wp-site-blocks > * { margin-block-start: 0; }

/* ============================================================================
 * RESSOURCES — hub & singles (Figma Design - HN 675:6570, libellés Vercel)
 * (2026-06-11) Hero avec recherche + pills de navigation par type, médias
 * des singles (lecteur Spotify, replay vidéo, ligne méta).
 * ========================================================================== */
.hn-resources-hero {
    width: 100%;
    box-sizing: border-box;
    padding: var(--hn-section-y) max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2)) 48px;
}

.hn-resources-hero__inner {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 24px;
    text-align: center;
}

.hn-resources-hero__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(34px, 4.6vw, 56px);
    line-height: 1.07;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
    max-width: 720px;
}
.hn-resources-hero__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(37px, 5vw, 61px);
    line-height: 1;
    letter-spacing: 0;
}

.hn-resources-hero__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 16px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
    max-width: 620px;
}

.hn-resources-hero__search {
    display: flex;
    align-items: center;
    gap: 12px;
    width: min(560px, 100%);
    height: 56px;
    padding: 0 22px;
    border-radius: 9999px;
    background: var(--wp--preset--color--surface);
    box-shadow: var(--hn-shadow-sm);
    color: var(--wp--preset--color--muted-text);
}
.hn-resources-hero__search input {
    flex: 1;
    border: 0;
    background: transparent;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 15px;
    color: var(--wp--preset--color--brand-dark);
    outline: none;
}
.hn-resources-hero__search input:focus-visible { box-shadow: none; }

.hn-resources-hero__pills {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    justify-content: center;
}
.hn-resources-hero__pill {
    display: inline-flex;
    align-items: center;
    height: 42px;
    padding: 0 20px;
    border-radius: 9999px;
    border: 1px solid var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
    transition: background var(--hn-transition), color var(--hn-transition);
}
.hn-resources-hero__pill:hover { background: rgba(18, 0, 50, 0.06); }
.hn-resources-hero__pill.is-active {
    background: var(--wp--preset--color--brand-dark);
    color: var(--wp--preset--color--surface);
}

/* Singles ressources : tête beige + médias */
.hn-resource-single-head {
    padding: clamp(48px, 7vw, 80px) var(--hn-gutter);
}
.hn-resource-meta {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 15px;
    color: var(--wp--preset--color--muted-text);
    margin: 0 0 20px;
}
.hn-resource-audio {
    border: 0;
    border-radius: 12px;
    margin: 0 0 28px;
    display: block;
}
.hn-resource-video {
    position: relative;
    aspect-ratio: 16 / 9;
    border-radius: 16px;
    overflow: hidden;
    margin: 0 0 28px;
    background: var(--wp--preset--color--brand-dark);
}
.hn-resource-video iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}
.hn-resource-download-pending { color: var(--wp--preset--color--muted-text); }

@media (max-width: 640px) {
    .hn-resources-hero__pills { justify-content: flex-start; overflow-x: auto; flex-wrap: nowrap; width: 100%; padding-bottom: 4px; scrollbar-width: none; }
    .hn-resources-hero__pills::-webkit-scrollbar { display: none; }
    .hn-resources-hero__pill { flex: 0 0 auto; }
}

/* Resource-cards : gouttières du cadre (le bloc n'était pas dans la liste
   du cadre uniforme — bords à bords en mobile). */
.hn-resource-cards {
    width: 100%;
    box-sizing: border-box;
    padding-inline: max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2));
    padding-block: var(--hn-section-y);
}

/* ============================================================================
 * HUB BOUTIQUE (archive-product) — Figma 616-1964 (desktop) / 622-12904 (mobile)
 * Hero visuel-full → 3 solutions (beige) → catalogue (toggle + cards riches)
 * → CTA abonnements (blanc) → stats (gradient). Card .hn-pcard PARTAGÉE avec la
 * page catégorie (724-6471 / 1102-7821).
 * ========================================================================== */

/* --- Section 3 solutions : Logiciels / Formations / Supervision (fond beige) - */
.hn-shop-solutions {
    background: var(--wp--preset--color--paper);
    padding: clamp(64px, 8vw, 96px) clamp(24px, 8vw, 128px);
}
.hn-shop-solutions__grid {
    max-width: 1234px;
    margin-inline: auto;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
    align-items: stretch;
}
.hn-shop-solution {
    background: var(--wp--preset--color--surface);
    border-radius: 24px;
    padding: 48px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 32px;
    box-sizing: border-box;
}
.hn-shop-solution__text { display: flex; flex-direction: column; gap: 12px; }
.hn-shop-solution__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 20px;
    line-height: 1.2;
    color: #000;
}
.hn-shop-solution__body {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}
.hn-shop-solution__footer { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.hn-shop-solution__note {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-style: italic;
    font-weight: 300;
    font-size: 13px;
    line-height: 25px;
    color: #000;
}
@media (max-width: 960px) {
    .hn-shop-solutions__grid { grid-template-columns: 1fr; }
    .hn-shop-solution { padding: 32px; }
}

/* --- Section Catalogue (titre + toggle + grille + Voir plus) ----------------- */
.hn-catalogue {
    background: linear-gradient(0deg, var(--wp--preset--color--surface) 1%, var(--wp--preset--color--paper) 99%);
    padding: clamp(64px, 8vw, 96px) clamp(24px, 8vw, 128px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 32px;
}
.hn-catalogue__head,
.hn-catalogue .hn-product-filter,
.hn-catalogue .hn-product-grid { width: 100%; max-width: 1232px; }
.hn-catalogue__head { display: flex; flex-direction: column; gap: 16px; }
.hn-catalogue__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(34px, 4vw, 40px);
    line-height: 1.2;
    color: var(--wp--preset--color--brand-dark);
}
.hn-catalogue__title-script {
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: clamp(38px, 4.5vw, 45px);
    line-height: 1;
}
.hn-catalogue__lead {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 25px;
    color: var(--wp--preset--color--muted-text);
}
.hn-catalogue__more { align-self: center; }

/* --- Card produit riche .hn-pcard (PARTAGÉE hub + catégorie) ---------------- */
.hn-pcard { display: flex; flex-direction: column; gap: 16px; box-sizing: border-box; }
.hn-pcard__media {
    position: relative;
    display: flex;
    height: 280px;
    padding: 20px 13px;
    box-sizing: border-box;
    background: var(--wp--preset--color--paper);
    border-radius: 20px;
    overflow: hidden;
    text-decoration: none;
}
/* Badges SOUS la photo (entre photo et titre) — sur les cartes « photo de
   personne » (formateurs) ils masquaient les visages en overlay. */
.hn-pcard__badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.hn-pcard__badge {
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    padding: 2px 10px;
    border-radius: 4px;
}
/* Badge « Nouveau » dans un coin de la carte (AC 30321), distinct des badges
   type/thématique (sous la photo) pour éviter la surcharge. */
.hn-pcard__new {
    position: absolute;
    top: 12px;
    left: 12px;
    z-index: 2;
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 12px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 4px 10px;
    border-radius: 4px;
    line-height: 1.4;
}
.hn-pcard__img-wrap { flex: 1 1 auto; width: 100%; min-height: 0; display: flex; align-items: center; justify-content: center; }
.hn-pcard__img-wrap img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }
.hn-pcard__body { display: flex; flex-direction: column; gap: 16px; }
.hn-pcard__text { display: flex; flex-direction: column; gap: 4px; }
.hn-pcard__name { margin: 0; font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 700; font-size: 18px; line-height: 1.2; }
.hn-pcard__name a { color: #000; text-decoration: none; }
.hn-pcard__name a:hover { text-decoration: underline; }
.hn-pcard__price { margin: 0; font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 18px; line-height: 25px; color: #000; }
.hn-pcard__price .price,
.hn-pcard__price ins,
.hn-pcard__price del { color: inherit; text-decoration-line: inherit; }
.hn-pcard__desc { margin: 0; font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 16px; line-height: 25px; color: #000; }
.hn-pcard__actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.hn-pcard__add {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 100px;
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    text-decoration: none;
    transition: background 200ms ease;
}
.hn-pcard__add:hover { background: #1f0a4d; color: #fff; }
.hn-pcard__more.hn-btn { height: 44px; }
/* WC ajoute un lien « Voir le panier » après l'ajax add-to-cart → masqué (mini-cart gère). */
/* WooCommerce (.woocommerce a.added_to_cart, spécificité 0,2,1) impose le lien
   « Voir le panier » après l'ajax → on le neutralise (mini-cart gère le feedback). */
.hn-pcard__actions a.added_to_cart { display: none !important; }
/* État masqué par le filtre toggle. */
.hn-product-grid > .hn-pcard[hidden] { display: none; }

/* --- Stats boutique (fond clair dégradé, sans titre) ------------------------ */
.hn-boutique-stats {
    background: linear-gradient(180deg, var(--wp--preset--color--surface) 0%, var(--wp--preset--color--paper) 100%);
    padding: clamp(48px, 6vw, 64px) clamp(24px, 8vw, 128px);
}

/* --- CTA abonnements boutique (fond blanc) --------------------------------- */
.hn-cta-block--boutique { background: var(--wp--preset--color--surface); }

/* ============================================================================
 * RETOURS 2026-06-13 — hub boutique : hero sous le menu (générique), marges
 * inter-blocs supprimées, CTA des cards centrés, mention manuscrite catalogue.
 * ========================================================================== */

/* Marges entre blocs supprimées sur les templates en <main> (archives WC…),
   comme pour les pages en .wp-block-post-content — le rythme vient du padding
   des sections (charte : jamais des marges). */
main.wp-block-group > [class^="hn-"],
main.wp-block-group > [class*=" hn-"] {
    margin-block-start: 0;
}

/* Hero photo sous le header (GÉNÉRIQUE) : la pilule de nav flotte sur la photo.
   Couvre les pages (post-content, déjà géré plus haut) ET les templates en
   <main> (boutique…). Le 1er <section> est le hero (store-notices = div h:0). */
main.wp-block-group > .hn-visuel-full:first-of-type {
    margin-top: calc(-1 * var(--hn-header-h));
}

/* Card produit : boutons « ajouter au panier » + « Découvrir » alignés à gauche,
   calés avec le texte/prix (préférence Candice, AC 30215). */
.hn-pcard__actions { justify-content: flex-start; }

/* Cartes « photo de personne » (formateur, coach supervision/mentorat) : la photo
   remplit le cadre (pas de padding, en cover) au lieu d'être contenue sur fond
   beige comme les visuels logiciels. AC 30215. */
.hn-pcard--photo .hn-pcard__media { padding: 0; }
.hn-pcard--photo .hn-pcard__img-wrap { width: 100%; height: 100%; }
.hn-pcard--photo .hn-pcard__img-wrap img {
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    object-fit: cover;
}

/* Mention manuscrite « De quoi avez-vous besoin aujourd'hui ? » + flèche cyan,
   placée en haut à droite du catalogue, AU-DESSUS du toggle (Figma 616:2054 :
   flèche au-dessus du texte, le tout à droite, au niveau du titre). */
.hn-catalogue { position: relative; }
.hn-catalogue__hint {
    position: absolute;
    top: clamp(178px, 18vw, 232px);
    left: 50%;
    margin-left: 150px;
    right: auto;
    z-index: 2;
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 6px;
    pointer-events: none;
}
.hn-catalogue__hint-text {
    max-width: 210px;
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 22.32px;
    letter-spacing: -0.008em;
    color: #364ebf;
    text-align: left;
    transform: rotate(-4deg);
}
.hn-catalogue__hint-arrow { width: 54px; height: 44px; color: #2fd6c9; }
@media (max-width: 1100px) {
    .hn-catalogue__hint { display: none; }
}

/* ============================================================================
 * FICHE PRODUIT FORMATION (Figma 1105-3675 / 1105-3796)
 * Héro image + méta + onglets + accordéon programme + contact + cartes riches.
 * ========================================================================== */
.hn-form { background: transparent; }
.hn-form > section { box-sizing: border-box; }

/* --- Héro --- */
.hn-form-hero {
    padding: clamp(64px, 8vw, 96px) max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2));
    display: flex;
    flex-direction: column;
    gap: 32px;
}
/* Fil d'Ariane UNIFIÉ (logiciel + formation) — spécificité 0,2,0 pour battre le
   style WooCommerce par défaut (qui ne s'appliquait que sur la fiche logiciel). */
.hn-product-hero .woocommerce-breadcrumb,
.hn-form-hero__bc .woocommerce-breadcrumb {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 17.16px;
    color: rgba(0, 0, 0, 0.6);
}
.hn-product-hero .woocommerce-breadcrumb a,
.hn-form-hero__bc a { color: rgba(0, 0, 0, 0.6); text-decoration: none; }
.hn-product-hero .woocommerce-breadcrumb a:hover,
.hn-form-hero__bc a:hover { color: var(--wp--preset--color--brand-dark); }
.hn-form-hero__inner {
    display: grid;
    grid-template-columns: 444px 1fr;
    gap: 96px;
    align-items: start;
}
.hn-form-hero__media { margin: 0; }
.hn-form-hero__media img,
.hn-form-hero__img { width: 100%; height: 530px; object-fit: cover; border-radius: 20px; display: block; }
.hn-form-hero__body { display: flex; flex-direction: column; gap: 64px; }
/* Groupe haut (titre/méta/auteur + intro + note) — 32px, puis 64px avant l'achat
   (organisation identique à la fiche logiciel, Figma 1105-4383). */
.hn-form-hero__main { display: flex; flex-direction: column; gap: 32px; }
.hn-form-hero__head { display: flex; flex-direction: column; gap: 16px; }
.hn-form-hero__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(36px, 4.5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}
.hn-form-hero__meta {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
}
.hn-form-hero__meta li {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 14px;
    line-height: 25px;
    color: #4a4a4a;
}
.hn-form-hero__meta svg { color: var(--wp--preset--color--accent); flex: none; }
.hn-form-hero__author {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-form-hero__intro {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 14px;
    line-height: 25px;
    color: #4a4a4a;
}
.hn-form-hero__note {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    line-height: 17.16px;
    color: var(--wp--preset--color--brand-dark);
}
.hn-form-hero__price {
    margin: 0 0 18px;
    display: flex;
    align-items: baseline;
    gap: 12px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 32px;
    letter-spacing: -0.005em;
    color: var(--wp--preset--color--brand-dark);
}
.hn-form-hero__price-suffix { font-weight: 400; font-size: 18px; }
/* Formulaire WC ajout panier dans le héro */
/* === Zone d'achat UNIFIÉE (fiche logiciel + formation) ===================== */
/* Fiches produit : fond = dégradé blanc→beige du body (charte), pas de fond
   blanc forcé. Les héros sont transparents pour le laisser transparaître.
   NB : le blockGap entre parties de premier niveau (header/contenu/footer) est
   neutralisé globalement par `.wp-site-blocks > * { margin-block-start: 0 }`. */

.hn-product-hero__buy form.cart,
.hn-form-hero__buy form.cart {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin: 0;
}
.hn-product-hero__buy .quantity,
.hn-form-hero__buy .quantity {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: #f0f0f0;
    border-radius: 62px;
    padding: 6px 10px;
}
.hn-product-hero__buy .quantity input,
.hn-form-hero__buy .quantity input {
    width: 40px;
    border: 0;
    background: transparent;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    color: var(--wp--preset--color--brand-dark);
    appearance: textfield;
    -moz-appearance: textfield;
}
.hn-product-hero__buy .quantity input::-webkit-inner-spin-button,
.hn-product-hero__buy .quantity input::-webkit-outer-spin-button,
.hn-form-hero__buy .quantity input::-webkit-inner-spin-button,
.hn-form-hero__buy .quantity input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
/* Boutons −/+ du stepper (injectés par hn-qty-stepper.js). */
.hn-qty-btn {
    flex: none;
    width: 30px;
    height: 30px;
    border: 0;
    border-radius: 50%;
    background: #fff;
    color: var(--wp--preset--color--brand-dark);
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 150ms ease, color 150ms ease;
}
.hn-qty-btn:hover { background: var(--wp--preset--color--brand-dark); color: #fff; }
.hn-product-hero__buy button.single_add_to_cart_button,
.hn-form-hero__buy button.single_add_to_cart_button {
    border: 0;
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    border-radius: 9999px;
    padding: 0 24px;
    height: 48px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    cursor: pointer;
    transition: background 200ms ease;
}
.hn-product-hero__buy button.single_add_to_cart_button:hover,
.hn-form-hero__buy button.single_add_to_cart_button:hover { background: #1f0a4d; }

/* CTA externe (lien « Je réserve ma place »…) : même style que le bouton
   d'ajout au panier (pilule brand-dark), pour cohérence visuelle. */
.hn-product-hero__buy a.hn-external-cta,
.hn-form-hero__buy a.hn-external-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
    border-radius: 9999px;
    padding: 0 24px;
    height: 48px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 15px;
    text-decoration: none;
    cursor: pointer;
    transition: background 200ms ease;
}
.hn-product-hero__buy a.hn-external-cta:hover,
.hn-form-hero__buy a.hn-external-cta:hover { background: #1f0a4d; color: #fff; }

/* --- Onglets --- */
.hn-form-tabs {
    background: transparent;
    padding: clamp(40px, 5vw, 64px) max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2));
}
.hn-form-tabs__inner { display: flex; flex-direction: column; gap: 32px; }
.hn-form-tabs__nav { display: flex; flex-wrap: wrap; gap: 16px; }
.hn-form-tabs__tab { height: 48px; }
.hn-form-tabs__tab.is-active {
    background: var(--wp--preset--color--brand-dark);
    color: #fff;
}
.hn-form-tabs__panel {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 25px;
    color: #000;
}
.hn-form-tabs__panel > * + * { margin-top: 16px; }
.hn-form-tabs__panel h2,
.hn-form-tabs__panel h3,
.hn-form-tabs__panel h4 {
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 20px;
    line-height: 1.2;
    letter-spacing: -0.009em;
    color: var(--wp--preset--color--brand-dark);
    margin: 24px 0 8px;
}
.hn-form-tabs__panel ul,
.hn-form-tabs__panel ol { margin: 0; padding-left: 1.25em; }
.hn-form-tabs__panel li + li { margin-top: 4px; }
.hn-form-tabs__links { list-style: none; padding-left: 0; display: flex; flex-direction: column; gap: 8px; }
.hn-form-tabs__links a { color: var(--wp--preset--color--primary); text-decoration: underline; }

/* Accordéon Programme */
.hn-form-accordion { display: flex; flex-direction: column; gap: 12px; }
.hn-form-accordion__item { border-bottom: 1px solid #e2e2e2; padding-bottom: 12px; }
.hn-form-accordion__head {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 16px;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 600;
    font-size: 20px;
    line-height: 1.2;
    letter-spacing: -0.009em;
    color: #000;
}
.hn-form-accordion__head::-webkit-details-marker { display: none; }
.hn-form-accordion__chevron {
    flex: none;
    width: 14px;
    height: 14px;
    border-right: 2px solid var(--wp--preset--color--brand-dark);
    border-bottom: 2px solid var(--wp--preset--color--brand-dark);
    transform: rotate(45deg);
    margin-left: auto;
    transition: transform 200ms ease;
}
.hn-form-accordion__item[open] .hn-form-accordion__chevron { transform: rotate(225deg); }
.hn-form-accordion__body { padding-top: 12px; font-size: 18px; line-height: 25px; color: #000; }

/* --- Contact (emplacement) --- */
.hn-form-contact {
    background: var(--wp--preset--color--paper);
    padding: clamp(48px, 6vw, 96px) max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2));
}
.hn-form-contact__inner {
    max-width: 640px;
    margin-inline: auto;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}
.hn-form-contact__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(28px, 3.5vw, 40px);
    line-height: 1.1;
    color: var(--wp--preset--color--brand-dark);
}
.hn-form-contact__lead { margin: 0; font-family: Montserrat, ui-sans-serif, sans-serif; font-size: 18px; line-height: 25px; color: var(--wp--preset--color--muted-text); }

/* --- Vous allez aimer aussi --- */
.hn-form-related {
    background: linear-gradient(180deg, var(--wp--preset--color--paper) 0%, var(--wp--preset--color--surface) 100%);
    padding: clamp(48px, 6vw, 96px) max(var(--hn-gutter), calc((100% - var(--hn-content)) / 2)) 128px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 64px;
}
.hn-form-related__title {
    margin: 0;
    text-align: center;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(34px, 4vw, 40px);
    line-height: 1.2;
    color: #000;
}
.hn-form-related__title-script { font-family: 'Mynerve', cursive; font-weight: 400; font-size: clamp(38px, 4.5vw, 45px); }
.hn-form-related .hn-product-grid { width: 100%; max-width: var(--hn-content); }

/* --- Responsive (mobile, Figma 1105-3796) --- */
@media (max-width: 900px) {
    .hn-form-hero__inner { grid-template-columns: 1fr; gap: 32px; }
    .hn-form-hero__media img,
    .hn-form-hero__img { height: auto; aspect-ratio: 4 / 3; }
    .hn-form-hero__body { gap: 40px; }
    .hn-form-hero__main { gap: 24px; }
}

/* ============================================================================
 * RESSOURCE — single unifié (article / podcast / webinaire / guide)
 *   Figma 665-3788 (desktop) / 667-4830 (mobile). En-tête (badge + titre +
 *   auteur + date) + 2 colonnes (sommaire/TOC sticky + corps), via
 *   single-resource.php. Sommaire généré des h2/h3 (scroll-spy hn-toc.js).
 * ========================================================================== */
/* Fond = dégradé blanc→beige du body (charte), comme les pages Solutions. */
.hn-rsingle { background: transparent; }

.hn-rsingle__layout {
    width: min(100% - 2 * var(--hn-gutter), 1184px);
    margin-inline: auto;
    padding: clamp(140px, 16vw, 200px) 0 clamp(64px, 8vw, 96px);
}
.hn-rsingle__layout--toc {
    display: grid;
    grid-template-columns: 299px minmax(0, 1fr);
    gap: 64px;
    align-items: start;
}

/* Cover en bandeau (hero) du single — décision Elise (AC 30223) : cover en
 * bandeau haut uniquement (pas de vignette carte). 1er enfant de main.hn-rsingle,
 * AVANT .hn-rsingle__layout. Markup attendu :
 *   <figure class="hn-rsingle__cover"><img src loading="eager" …></figure>
 * Largeur calée sur celle du layout (pas full-bleed écran). */
.hn-rsingle__cover {
    width: min(100% - 2 * var(--hn-gutter), 1184px);
    margin: clamp(120px, 15vw, 180px) auto 0;
    aspect-ratio: 16 / 5;
    max-height: 360px;
    border-radius: 24px;
    overflow: hidden;
}
.hn-rsingle__cover img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
/* La cover assure le dégagement sous le header fixe à la place du layout : on
 * réduit donc le padding-top du layout qui la suit (sinon double espace). */
.hn-rsingle__cover + .hn-rsingle__layout {
    padding-top: clamp(40px, 6vw, 64px);
}

.hn-rsingle__toc {
    position: sticky;
    top: 116px;
    background: var(--wp--preset--color--paper);
    border-radius: 24px;
    padding: 30px;
}
.hn-rsingle__toc-inner { display: flex; flex-direction: column; gap: 14px; }
.hn-rsingle__toc-link {
    position: relative;
    display: block;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 22.32px;
    letter-spacing: -0.012em;
    color: var(--wp--preset--color--muted-text);
    text-decoration: none;
    transition: color 150ms ease;
}
.hn-rsingle__toc-link--h3 { padding-left: 16px; }
.hn-rsingle__toc-link:hover { color: var(--wp--preset--color--brand-dark); }
.hn-rsingle__toc-link.is-active { font-weight: 500; color: var(--wp--preset--color--brand-dark); }
.hn-rsingle__toc-link.is-active::before {
    content: '';
    position: absolute;
    left: -13px;
    top: 8px;
    width: 7px; height: 7px;
    border-radius: 50%;
    background: var(--wp--preset--color--accent);
}
.hn-rsingle__toc-link--h3.is-active::before { left: 3px; }

.hn-rsingle__main { max-width: 800px; min-width: 0; }
.hn-rsingle__head { display: flex; flex-direction: column; gap: 12px; margin-bottom: 40px; }
.hn-rsingle__badge {
    align-self: flex-start;
    margin: 0;
    background: var(--wp--preset--color--accent);
    color: var(--wp--preset--color--brand-dark);
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 24px;
    padding: 2px 10px;
    border-radius: 4px;
}
.hn-rsingle__badge a { color: inherit; text-decoration: none; }
.hn-rsingle__title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(32px, 4.5vw, 50px);
    line-height: 1.1;
    letter-spacing: -0.04em;
    color: var(--wp--preset--color--brand-dark);
}
.hn-rsingle__byline { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 12px; }
.hn-rsingle__author { display: inline-flex; align-items: center; gap: 12px; }
.hn-rsingle__author-avatar { width: 42px; height: 42px; border-radius: 50%; object-fit: cover; display: block; flex: none; }
.hn-rsingle__author-avatar--empty { background: var(--wp--preset--color--paper); }
.hn-rsingle__author-name { font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 600; font-size: 20px; letter-spacing: -0.009em; color: #000; }
.hn-rsingle__date { font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 400; font-size: 18px; line-height: 25px; color: #515151; }

.hn-rsingle__content { font-family: Montserrat, ui-sans-serif, sans-serif; font-size: 18px; line-height: 25px; color: #434343; }
.hn-rsingle__content > * + * { margin-top: 24px; }
.hn-rsingle__content h2 { font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 500; font-size: 32px; line-height: 1.15; letter-spacing: -0.009em; color: var(--wp--preset--color--brand-dark); margin-top: 40px; }
.hn-rsingle__content h3 { font-family: Montserrat, ui-sans-serif, sans-serif; font-weight: 500; font-size: 24px; line-height: 1.25; color: var(--wp--preset--color--brand-dark); margin-top: 32px; }
.hn-rsingle__content ul, .hn-rsingle__content ol { padding-left: 1.6em; }
.hn-rsingle__content li + li { margin-top: 4px; }
.hn-rsingle__content a:not(.hn-btn) { color: var(--wp--preset--color--primary); }
.hn-rsingle__content img { border-radius: 5px; max-width: 100%; height: auto; }
.hn-rsingle__content :where(figure, .wp-block-embed) { margin-top: 24px; }
.hn-rsingle__media { margin-bottom: 24px; }
.hn-rsingle__media .hn-resource-audio { border: 0; border-radius: 12px; }
.hn-rsingle__media .hn-resource-video { position: relative; aspect-ratio: 16/9; }
.hn-rsingle__media .hn-resource-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; border-radius: 12px; }

/* Section contact en pied de single (Figma 665-4482 / organism ContactForm
 * 10:4819). Panneau beige arrondi, 2 colonnes desktop (contenu/formulaire +
 * photo), empilé mobile (photo dessous). V1 : conteneur + CTA placeholder ;
 * le vrai formulaire (HubSpot/Gravity, AC 30240) remplacera .hn-rsingle__contact-cta
 * dans la même colonne. Markup attendu : voir contrat communiqué à la session
 * Ressources. */
.hn-rsingle__contact {
    width: min(100% - 2 * var(--hn-gutter), 1184px);
    margin: clamp(56px, 8vw, 96px) auto 0;
}
.hn-rsingle__contact-inner {
    display: grid;
    grid-template-columns: 1fr;
    gap: clamp(24px, 4vw, 56px);
    align-items: center;
    background: var(--wp--preset--color--paper);
    border-radius: 24px;
    padding: clamp(28px, 4vw, 56px);
}
/* 2 colonnes uniquement si une photo accompagne le contenu. */
.hn-rsingle__contact-inner:has(.hn-rsingle__contact-media) {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
}
.hn-rsingle__contact-title {
    margin: 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-weight: 500;
    font-size: clamp(26px, 3vw, 36px);
    line-height: 1.15;
    letter-spacing: -0.02em;
    color: var(--wp--preset--color--brand-dark);
}
.hn-rsingle__contact-lead {
    margin: 16px 0 0;
    font-family: Montserrat, ui-sans-serif, sans-serif;
    font-size: 18px;
    line-height: 27px;
    color: #434343;
}
.hn-rsingle__contact-cta { margin-top: 28px; }
.hn-rsingle__contact-media {
    margin: 0;
    border-radius: 16px;
    overflow: hidden;
    aspect-ratio: 4 / 3;
}
.hn-rsingle__contact-media img { display: block; width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 900px) {
    .hn-rsingle__layout { padding-top: clamp(96px, 18vw, 140px); }
    .hn-rsingle__cover {
        margin-top: clamp(88px, 16vw, 120px);
        aspect-ratio: auto;
        height: clamp(180px, 48vw, 220px);
        border-radius: 24px;
    }
    .hn-rsingle__cover + .hn-rsingle__layout { padding-top: clamp(28px, 6vw, 40px); }
    .hn-rsingle__contact-inner,
    .hn-rsingle__contact-inner:has(.hn-rsingle__contact-media) { grid-template-columns: 1fr; }
    .hn-rsingle__contact-media { order: 2; aspect-ratio: 16 / 9; }
    .hn-rsingle__layout--toc { display: block; }
    .hn-rsingle__toc { position: static; margin-bottom: 32px; }
    .hn-rsingle__main { max-width: none; }
    .hn-rsingle__title { font-size: clamp(28px, 7vw, 40px); }
    .hn-rsingle__content h2 { font-size: 26px; }
}

/* ===========================================================================
 * ANNOTATIONS MANUSCRITES — texte Mynerve + flèche dessinée (cf. annotation.php)
 * Posées en absolu dans la marge du bloc hôte (.hn-annot-host = relatif).
 * Mobile : masquées ou remises dans le flux selon le champ par annotation.
 * ======================================================================== */

.hn-annot-host { position: relative; }

/* Calque d'annotation : posé sur la COLONNE DE CONTENU centrée (et non la pleine
 * largeur du bloc), pour que les positions en % restent collées au contenu quelle
 * que soit la largeur de la fenêtre. La colonne par défaut = largeur « wide » du
 * thème (≈ contenu rendu des sections) ; surchargeable par bloc via
 * --hn-annot-frame. Chaque calque enfant (texte/flèche) est posé en absolu, en %
 * de cette colonne (modèle libre piloté par le Studio). */
.hn-annotation {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: min(100%, var(--hn-annot-frame, 1184px));
    z-index: 4;
    pointer-events: none;
}

.hn-annotation__text {
    position: absolute;
    margin: 0;
    font-family: 'Mynerve', cursive;
    font-weight: 400;
    font-size: 22px;
    line-height: 1.15;
    letter-spacing: -0.0082em;
    white-space: normal;
    width: max-content;
    max-width: min(90vw, 22em);
    text-align: center;
    transform-origin: center center;
}
.hn-annotation__text--bleu  { color: #364ebf; }
.hn-annotation__text--cyan  { color: #2fd6c9; }
.hn-annotation__text--dark  { color: var(--wp--preset--color--brand-dark, #16002f); }
.hn-annotation__text--blanc { color: #fff; }

.hn-annotation__arrow {
    position: absolute;
    line-height: 0;
    transform-origin: center center;
}
.hn-annotation__arrow--cyan  { color: #2fd6c9; }
.hn-annotation__arrow--bleu  { color: #364ebf; }
.hn-annotation__arrow--dark  { color: var(--wp--preset--color--brand-dark, #16002f); }
.hn-annotation__arrow--blanc { color: #fff; }
.hn-annotation__arrow svg { display: block; width: 100%; height: auto; overflow: visible; }

/* Mobile : masquer ou remettre les calques dans le flux (centrés). */
@media (max-width: 781px) {
    .hn-annotation--m-hide { display: none !important; }
    .hn-annotation--m-flow { position: static !important; inset: auto !important; }
    .hn-annotation--m-flow .hn-annotation__text,
    .hn-annotation--m-flow .hn-annotation__arrow {
        position: static !important;
        left: auto !important;
        top: auto !important;
        transform: none !important;
        margin: 0.75rem auto !important;
        display: block;
        text-align: center;
        width: auto;
    }
    .hn-annotation--m-flow .hn-annotation__arrow svg { width: 48px; }
}

/* AC 30298 — Attestation Qualiopi : visible uniquement si le panier contient
   une formation (classe body posée par hn-qualiopi.php). Sinon masquée. */
body:not(.hn-cart-has-formation) .wc-block-components-address-form__hn-qualiopi-formation {
    display: none;
}

/* ============================================================================
 * BRUSHED BORDER v2 — filet texturé violet PROPRE (généralisé, 2026-06-17)
 *
 * Problème de la v1 : le contour était un `border` (anneau fin) sur un ::before
 * distordu par #hn-roughen → le filtre déplace les DEUX bords de l'anneau qui
 * se dédoublent (trait fantôme), surtout visible sur fond sombre (le bord net
 * de la carte blanche s'ajoutait au trait brushed → double ligne).
 *
 * Technique v2 (comme la card solution-tabs, mais avec le trait coloré) : deux
 * couches REMPLIES en arrière-plan (z-index:-1, donc le contenu reste net, sans
 * filtre) →
 *   ::before = rectangle plein couleur du trait, distordu (UN seul bord ondulé)
 *   ::after  = rectangle plein « surface » inséré de l'épaisseur du trait
 *              (masque le centre, ne laisse dépasser que le filet)
 * `isolation:isolate` confine les z-index:-1 dans la carte ; fond de carte rendu
 * transparent (la couleur réelle passe par --hn-brushed-surface → ::after).
 *
 * Override les ::before v1 (anneau) par ordre de cascade (ce bloc est en fin de
 * fichier). Pour ajouter une nouvelle carte : l'ajouter aux listes ci-dessous.
 * ========================================================================== */

.hn-brushed-border,
.hn-callout-card,
.hn-event-card,
.hn-ressource-card,
.hn-product-card,
.hn-solution-card,
.hn-team-card,
.hn-testimonial-card,
.hn-card-photo,
.hn-timeline__card,
.hn-comparison__card,
.hn-pricing-card {
    position: relative;
    isolation: isolate;
    overflow: visible;
    background-color: transparent;
    --hn-brushed-surface: var(--wp--preset--color--surface);
}

.hn-brushed-border::before,
.hn-callout-card::before,
.hn-event-card::before,
.hn-ressource-card::before,
.hn-product-card::before,
.hn-solution-card::before,
.hn-team-card::before,
.hn-testimonial-card::before,
.hn-card-photo::before,
.hn-timeline__card::before,
.hn-comparison__card::before,
.hn-pricing-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border: 0;
    background: var(--hn-brushed-color, var(--wp--preset--color--brand-dark));
    border-radius: var(--hn-brushed-radius, 24px);
    filter: url(#hn-roughen);
    z-index: -1;
    pointer-events: none;
}

.hn-brushed-border::after,
.hn-callout-card::after,
.hn-event-card::after,
.hn-ressource-card::after,
.hn-product-card::after,
.hn-solution-card::after,
.hn-team-card::after,
.hn-testimonial-card::after,
.hn-card-photo::after,
.hn-timeline__card::after,
.hn-comparison__card::after,
.hn-pricing-card::after {
    content: '';
    position: absolute;
    inset: var(--hn-brushed-width, 3px);
    background: var(--hn-brushed-surface);
    border-radius: calc(var(--hn-brushed-radius, 24px) - 1px);
    filter: url(#hn-roughen);
    z-index: -1;
    pointer-events: none;
}

/* Surface intérieure selon le skin (sinon ::after reste blanc). */
.hn-event-card--beige,
.hn-ressource-card--beige,
.hn-callout-card--beige,
.hn-team-card--beige,
.hn-product-card--beige {
    --hn-brushed-surface: var(--wp--preset--color--paper);
}
.hn-event-card--bleu,
.hn-ressource-card--bleu,
.hn-callout-card--bleu,
.hn-team-card--bleu,
.hn-product-card--bleu {
    --hn-brushed-surface: var(--wp--preset--color--brand-dark);
}

/* Fallback sans filtre SVG : ::before plein non distordu = bordure pleine nette. */
@supports not (filter: url(#hn-roughen)) {
    .hn-brushed-border::before,
    .hn-callout-card::before,
    .hn-event-card::before,
    .hn-ressource-card::before,
    .hn-product-card::before,
    .hn-solution-card::before,
    .hn-team-card::before,
    .hn-testimonial-card::before,
    .hn-card-photo::before,
    .hn-timeline__card::before,
    .hn-comparison__card::before,
    .hn-pricing-card::before {
        filter: none;
    }
}

/* Cards à bord DOUX (non violet) : le trait prend la couleur de surface → bord
   brushed discret au lieu du filet violet. Filtre brushed STANDARD (#hn-roughen)
   conservé (l'« adouci » #hn-roughen-soft a été écarté par le client). État validé
   pour témoignages / comparaison Evidence / ressources / équipe / callout /
   événements. (Les essais de réglage du brush se font sur brush-lab.html, hors WP.) */
.hn-team-card,
.hn-testimonial-card,
.hn-comparison__card,
.hn-ressource-card,
.hn-callout-card,
.hn-event-card {
    --hn-brushed-color: var(--hn-brushed-surface);
}
