/* ==========================================================================
   home-accueil.css — page « Accueil › Home »
   --------------------------------------------------------------------------
   Registre : outil métier clinique. Hiérarchie par la typographie et
   l'espacement, bordures 1px, un seul accent.

   Design system (aucune valeur hors de ces jetons) :
     · encre       #131d2f / #47536a / #79849a   (le demi-cerveau NPSI)
     · trait       #dde2ea / #c5ced9
     · surfaces    #ffffff / #f5f7f8 / #eef4f3
     · accent      #1f6f68 (unique) + #a8d2cd en aplat fin
     · typo        Source Serif 4 (titres) / DM Sans (texte et interface)
     · espace      4 8 12 16 24 32 48 72 104
     · rayon       0 · 3px · 6px          épaisseur de trait : 1px
   Tout est préfixé .hf-* et porté sous .hf-home.
   ========================================================================== */

.hf-home {
    /* — encre — */
    --hf-ink: #131d2f;
    --hf-ink-2: #47536a;
    --hf-ink-3: #79849a;
    /* — traits — */
    --hf-line: #dde2ea;
    --hf-line-2: #c5ced9;
    /* — surfaces — */
    --hf-bg: #ffffff;
    --hf-bg-2: #f5f7f8;
    --hf-bg-accent: #eef4f3;
    /* — accent unique — */
    --hf-accent: #1f6f68;
    --hf-accent-2: #a8d2cd;
    /* — fond de la bande « conformité » — */
    --hf-band: #131d2f;
    /* — typographie — */
    --hf-serif: 'Source Serif 4', 'Lora', Georgia, 'Times New Roman', serif;
    --hf-sans: 'DM Sans', 'Segoe UI', Tahoma, sans-serif;
    /* — espacement — */
    --hf-1: 4px;
    --hf-2: 8px;
    --hf-3: 12px;
    --hf-4: 16px;
    --hf-5: 24px;
    --hf-6: 32px;
    --hf-7: 48px;
    --hf-8: 72px;
    --hf-9: 104px;
    /* — rayons — */
    --hf-r: 3px;
    --hf-r-2: 6px;

    max-width: 1180px;
    margin: 0 auto;
    padding: 0 var(--hf-5) var(--hf-8);
    font-family: var(--hf-sans);
    color: var(--hf-ink);
    font-size: 0.95rem;
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
}

.hf-home[hidden] {
    display: none;
}

.hf-home p {
    margin: 0;
}

/* Les utilitaires .ha-anim d'index-page.css translatent de 40 à 48px : trop
   démonstratif pour cette page. On garde l'observateur existant, on réduit
   l'amplitude à un simple raccrochage. */
.hf-home .ha-anim {
    transition-duration: 0.45s;
}

.hf-home .ha-anim-up {
    transform: translateY(12px);
}

.hf-home .ha-anim-left {
    transform: translateX(-12px);
}

.hf-home .ha-anim-right {
    transform: translateX(12px);
}

/* Indispensable : les trois règles ci-dessus ont la même spécificité que le
   .ha-anim.ha-visible d'index-page.css, mais ce fichier est chargé après —
   sans cette remise à zéro, l'élément resterait décalé de 12px une fois
   révélé. */
.hf-home .ha-anim.ha-visible {
    transform: translate(0, 0);
}

/* Étiquette de section : le seul usage de la majuscule espacée. */
.hf-home .hf-eyebrow {
    display: flex;
    align-items: center;
    gap: var(--hf-3);
    margin-bottom: var(--hf-4);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--hf-ink-3);
}

.hf-home .hf-eyebrow::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--hf-line);
}

.hf-home .hf-h2 {
    margin: 0;
    font-family: var(--hf-serif);
    font-size: clamp(1.4rem, 2.1vw, 1.85rem);
    font-weight: 600;
    line-height: 1.22;
    letter-spacing: -0.008em;
    color: var(--hf-ink);
}

.hf-home .hf-lead {
    max-width: 62ch;
    margin-top: var(--hf-3);
    color: var(--hf-ink-2);
}

/* ==========================================================================
   1. Accroche — colonne de texte et fiche de faits, asymétriques
   ========================================================================== */

.hf-home .hf-lede {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
    gap: var(--hf-8);
    align-items: start;
    padding: var(--hf-7) 0 var(--hf-7);
    border-bottom: 1px solid var(--hf-line);
}

.hf-home .hf-kicker {
    display: inline-flex;
    align-items: baseline;
    gap: var(--hf-2);
    margin-bottom: var(--hf-5);
    padding-bottom: var(--hf-2);
    border-bottom: 1px solid var(--hf-accent-2);
    font-size: 0.76rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hf-accent);
}

.hf-home .hf-title {
    margin: 0;
    font-family: var(--hf-serif);
    font-size: clamp(1.95rem, 3.5vw, 2.95rem);
    font-weight: 600;
    line-height: 1.14;
    letter-spacing: -0.018em;
    text-wrap: balance;
}

.hf-home .hf-title em {
    font-style: italic;
    font-weight: 500;
    color: var(--hf-accent);
}

.hf-home .hf-lede-text {
    max-width: 54ch;
    margin-top: var(--hf-5);
    font-size: 1.02rem;
    color: var(--hf-ink-2);
}

/* Fiche de faits : lignes clé / valeur, denses, séparées par un filet. */
.hf-home .hf-facts {
    border: 1px solid var(--hf-line);
    border-radius: var(--hf-r);
    background: var(--hf-bg);
}

.hf-home .hf-facts dl {
    margin: 0;
}

.hf-home .hf-fact {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    gap: var(--hf-3);
    padding: var(--hf-3) var(--hf-4);
    border-bottom: 1px solid var(--hf-line);
}

.hf-home .hf-fact:last-child {
    border-bottom: 0;
}

.hf-home .hf-fact dt {
    margin: 0;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--hf-ink-3);
    line-height: 1.75;
}

.hf-home .hf-fact dd {
    margin: 0;
    font-size: 0.88rem;
    color: var(--hf-ink);
}

/* ==========================================================================
   2. Flux du bilan — rail de cinq étapes et scène de démonstration
   ========================================================================== */

.hf-home .hf-flow {
    margin: 0 calc(var(--hf-5) * -1);
    padding: var(--hf-7) var(--hf-5);
    background: var(--hf-bg-2);
    border-bottom: 1px solid var(--hf-line);
}

.hf-home .hf-flow-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--hf-4);
    margin-bottom: var(--hf-5);
}

.hf-home .hf-hint {
    display: inline-flex;
    align-items: center;
    gap: var(--hf-2);
    font-size: 0.8rem;
    color: var(--hf-ink-3);
}

.hf-home .hf-hint i {
    font-size: 0.72rem;
    color: var(--hf-accent);
}

/* — Rail — */
.hf-home .hf-steps {
    position: relative;
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: var(--hf-3);
    margin: 0;
    padding: 0;
    list-style: none;
}

/* Le filet qui relie les cinq étapes, à hauteur des cellules d'icône. */
.hf-home .hf-steps::before {
    content: '';
    position: absolute;
    top: 46px;
    left: 10%;
    right: 10%;
    height: 1px;
    background: var(--hf-line-2);
}

.hf-home .hf-step {
    position: relative;
    min-width: 0;
}

.hf-home .hf-node {
    display: block;
    width: 100%;
    padding: var(--hf-3) var(--hf-3) var(--hf-4);
    border: 0;
    background: transparent;
    text-align: left;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

.hf-home .hf-node-num {
    display: block;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    color: var(--hf-ink-3);
    transition: color 0.15s ease;
}

.hf-home .hf-node-icon {
    position: relative;
    z-index: 1;
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    margin: var(--hf-2) 0 var(--hf-3);
    border: 1px solid var(--hf-line-2);
    border-radius: var(--hf-r);
    background: var(--hf-bg);
    color: var(--hf-ink-2);
    font-size: 0.98rem;
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}

.hf-home .hf-node-label {
    display: block;
    font-size: 0.92rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--hf-ink);
}

.hf-home .hf-node-desc {
    display: block;
    margin-top: var(--hf-1);
    font-size: 0.8rem;
    line-height: 1.4;
    color: var(--hf-ink-3);
}

.hf-home .hf-node:hover .hf-node-icon,
.hf-home .hf-node:focus-visible .hf-node-icon {
    border-color: var(--hf-accent);
    color: var(--hf-accent);
}

.hf-home .hf-node:focus-visible {
    outline: 1px solid var(--hf-accent);
    outline-offset: 2px;
}

.hf-home .hf-step.is-active .hf-node-icon {
    border-color: var(--hf-accent);
    background: var(--hf-accent);
    color: #fff;
}

.hf-home .hf-step.is-active .hf-node-num {
    color: var(--hf-accent);
}

/* Le repère qui rattache l'étape active à la scène, en dessous. */
.hf-home .hf-step.is-active .hf-node::after {
    content: '';
    position: absolute;
    left: var(--hf-3);
    right: var(--hf-3);
    bottom: 0;
    height: 2px;
    background: var(--hf-accent);
}

/* — Scène : une seule séquence visible à la fois — */
.hf-home .hf-stage {
    position: relative;
    margin-top: var(--hf-4);
    border: 1px solid var(--hf-line-2);
    border-radius: var(--hf-r-2);
    background: var(--hf-bg);
    overflow: hidden;
}

.hf-home .hf-clip {
    display: none;
    margin: 0;
}

.hf-home .hf-clip.is-active {
    display: block;
}

.hf-home .hf-clip-frame {
    position: relative;
    aspect-ratio: 16 / 9;
    background: var(--hf-bg-2);
}

.hf-home .hf-clip video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    background: var(--hf-bg-2);
}

/* Séquence jouée par une page HTML animée plutôt que par un fichier vidéo
   (étape 02 : app/static/animations/questionnaires.html). Même cadrage que la
   vidéo, mais sans object-fit : l'animation se met elle-même à l'échelle. */
.hf-home .hf-clip iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
    background: var(--hf-bg-2);
}

/* Séquence pas encore déposée : la scène garde sa place et l'annonce. */
.hf-home .hf-clip:not([data-media="ready"]) video,
.hf-home .hf-clip:not([data-media="ready"]) iframe {
    opacity: 0;
}

.hf-home .hf-clip-empty {
    position: absolute;
    inset: 0;
    display: grid;
    place-content: center;
    justify-items: center;
    gap: var(--hf-3);
    color: var(--hf-ink-3);
    text-align: center;
}

.hf-home .hf-clip[data-media="ready"] .hf-clip-empty {
    display: none;
}

.hf-home .hf-clip-empty i {
    font-size: 1.5rem;
    color: var(--hf-line-2);
}

.hf-home .hf-clip-empty span {
    font-size: 0.82rem;
    letter-spacing: 0.02em;
}

.hf-home .hf-clip figcaption {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--hf-2) var(--hf-3);
    padding: var(--hf-3) var(--hf-4);
    border-top: 1px solid var(--hf-line);
    font-size: 0.85rem;
    color: var(--hf-ink-2);
}

.hf-home .hf-clip figcaption b {
    font-weight: 600;
    color: var(--hf-ink);
}

/* ==========================================================================
   3. Temps gagné — une mesure en grand, un tableau qui la détaille
   ========================================================================== */

.hf-home .hf-gain {
    display: grid;
    grid-template-columns: minmax(0, 290px) minmax(0, 1fr);
    gap: var(--hf-8);
    align-items: start;
    padding: var(--hf-7) 0;
    border-bottom: 1px solid var(--hf-line);
}

.hf-home .hf-figure {
    margin-top: var(--hf-5);
    font-family: var(--hf-serif);
    font-size: clamp(2.6rem, 5vw, 3.6rem);
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.03em;
    color: var(--hf-accent);
}

.hf-home .hf-figure small {
    font-size: 0.38em;
    font-weight: 500;
    letter-spacing: 0;
}

.hf-home .hf-figure-note {
    margin-top: var(--hf-3);
    font-size: 0.92rem;
    color: var(--hf-ink-2);
}

.hf-home .hf-table {
    width: 100%;
    border-collapse: collapse;
    font-variant-numeric: tabular-nums;
}

.hf-home .hf-table th,
.hf-home .hf-table td {
    padding: var(--hf-3);
    border-bottom: 1px solid var(--hf-line);
    text-align: right;
    vertical-align: baseline;
}

.hf-home .hf-table th:first-child,
.hf-home .hf-table td:first-child {
    padding-left: 0;
    text-align: left;
}

.hf-home .hf-table th:last-child,
.hf-home .hf-table td:last-child {
    padding-right: 0;
}

/* Les colonnes de valeurs ne se replient pas : c'est le libellé du poste,
   seul en-tête à contenu variable, qui absorbe la largeur restante. */
.hf-home .hf-table thead th + th {
    white-space: nowrap;
}

.hf-home .hf-table thead th {
    border-bottom-color: var(--hf-line-2);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--hf-ink-3);
}

.hf-home .hf-table tbody td {
    font-size: 0.9rem;
    color: var(--hf-ink-2);
}

.hf-home .hf-table tbody th {
    padding-left: 0;
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--hf-ink);
    text-align: left;
}

.hf-home .hf-table .hf-was {
    color: var(--hf-ink-3);
}

.hf-home .hf-table .hf-now {
    font-weight: 600;
    color: var(--hf-ink);
}

.hf-home .hf-table .hf-delta {
    color: var(--hf-accent);
    font-weight: 600;
}

.hf-home .hf-table tfoot th,
.hf-home .hf-table tfoot td {
    border-bottom: 0;
    padding-top: var(--hf-4);
    font-weight: 600;
    color: var(--hf-ink);
}

/* Barre de proportion : un filet plein sur un filet vide, sans ombre. */
.hf-home .hf-bar {
    display: block;
    width: 100%;
    height: 3px;
    margin-top: var(--hf-2);
    background: var(--hf-line);
}

.hf-home .hf-bar i {
    display: block;
    height: 100%;
    background: var(--hf-accent-2);
}

.hf-home .hf-note {
    margin-top: var(--hf-4);
    font-size: 0.8rem;
    line-height: 1.5;
    color: var(--hf-ink-3);
}

/* ==========================================================================
   4. Conformité — bande encrée, rupture de rythme
   ========================================================================== */

.hf-home .hf-legal {
    margin: 0 calc(var(--hf-5) * -1);
    padding: var(--hf-7);
    background: var(--hf-band);
    color: #e6eaf0;
}

.hf-home .hf-legal .hf-eyebrow {
    color: rgba(230, 234, 240, 0.55);
}

.hf-home .hf-legal .hf-eyebrow::after {
    background: rgba(230, 234, 240, 0.18);
}

.hf-home .hf-legal .hf-h2 {
    color: #fff;
}

.hf-home .hf-legal .hf-lead {
    color: rgba(230, 234, 240, 0.72);
}

.hf-home .hf-legal-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 var(--hf-8);
    margin-top: var(--hf-5);
}

.hf-home .hf-legal-item {
    padding: var(--hf-4) 0;
    border-top: 1px solid rgba(230, 234, 240, 0.16);
}

.hf-home .hf-legal-item h3 {
    display: flex;
    align-items: baseline;
    gap: var(--hf-3);
    margin: 0 0 var(--hf-2);
    font-size: 0.95rem;
    font-weight: 600;
    color: #fff;
}

.hf-home .hf-legal-item h3 i {
    font-size: 0.76rem;
    color: var(--hf-accent-2);
}

.hf-home .hf-legal-item p {
    font-size: 0.86rem;
    line-height: 1.55;
    color: rgba(230, 234, 240, 0.68);
}

.hf-home .hf-legal-links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--hf-5);
    margin-top: var(--hf-5);
    padding-top: var(--hf-4);
    border-top: 1px solid rgba(230, 234, 240, 0.16);
    font-size: 0.85rem;
}

.hf-home .hf-legal-links a {
    color: var(--hf-accent-2);
    text-decoration: none;
    border-bottom: 1px solid rgba(168, 210, 205, 0.4);
    padding-bottom: 1px;
}

.hf-home .hf-legal-links a:hover {
    color: #fff;
    border-bottom-color: #fff;
}

/* ==========================================================================
   5. Partenariat — bloc court, logo à gauche
   ========================================================================== */

.hf-home .hf-partner {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: var(--hf-7);
    align-items: center;
    margin-top: var(--hf-7);
    padding: var(--hf-6);
    border: 1px solid var(--hf-line);
    border-radius: var(--hf-r);
    background: var(--hf-bg-accent);
}

.hf-home .hf-partner-mark {
    display: grid;
    place-items: center;
    padding: var(--hf-4) var(--hf-5);
    border: 1px solid var(--hf-line);
    border-radius: var(--hf-r);
    background: #fff;
}

.hf-home .hf-partner-mark img {
    display: block;
    width: 84px;
    height: auto;
}

.hf-home .hf-partner h3 {
    margin: var(--hf-2) 0 0;
    font-family: var(--hf-serif);
    font-size: 1.3rem;
    font-weight: 600;
    color: var(--hf-ink);
}

.hf-home .hf-partner p {
    max-width: 62ch;
    margin-top: var(--hf-3);
    font-size: 0.92rem;
    color: var(--hf-ink-2);
}

/* ==========================================================================
   Adaptations
   ========================================================================== */

@media (max-width: 1100px) {

    .hf-home .hf-lede,
    .hf-home .hf-gain {
        grid-template-columns: minmax(0, 1fr);
        gap: var(--hf-6);
    }

    .hf-home .hf-facts {
        max-width: 520px;
    }

    .hf-home .hf-figure {
        margin-top: 0;
    }
}

@media (max-width: 900px) {
    .hf-home .hf-steps {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: var(--hf-2);
    }

    .hf-home .hf-steps::before {
        display: none;
    }

    .hf-home .hf-legal-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .hf-home .hf-legal {
        padding: var(--hf-6) var(--hf-5);
    }

    .hf-home .hf-partner {
        grid-template-columns: minmax(0, 1fr);
        gap: var(--hf-5);
        justify-items: start;
    }
}

@media (max-width: 640px) {
    .hf-home {
        padding: 0 var(--hf-4) var(--hf-7);
    }

    .hf-home .hf-flow,
    .hf-home .hf-legal {
        margin: 0 calc(var(--hf-4) * -1);
        padding-left: var(--hf-4);
        padding-right: var(--hf-4);
    }

    .hf-home .hf-steps {
        grid-template-columns: minmax(0, 1fr);
    }

    .hf-home .hf-node {
        display: grid;
        grid-template-columns: 40px minmax(0, 1fr);
        gap: 0 var(--hf-3);
        align-items: center;
    }

    .hf-home .hf-node-num {
        grid-column: 2;
    }

    .hf-home .hf-node-icon {
        grid-row: 1 / span 3;
        margin: 0;
    }

    .hf-home .hf-table th,
    .hf-home .hf-table td {
        padding-left: var(--hf-2);
        padding-right: var(--hf-2);
    }

    .hf-home .hf-col-was {
        display: none;
    }
}

@media (prefers-reduced-motion: reduce) {
    .hf-home .hf-clip video {
        display: none;
    }

    .hf-home .ha-anim {
        transition: none;
        opacity: 1;
        transform: none;
    }
}

/* ==========================================================================
   Variante « Home 2 » (.hf-home-v2)
   --------------------------------------------------------------------------
   Meme page, trois ecarts assumes :
     1. la palette suit le MODE du site au lieu du teal NPSI de Home ;
     2. la fiche de faits est une grille 2 x 2 a filets internes ;
     3. la conformite tient sur une ligne par point.
   ========================================================================== */

/* — 1a. Mode Old : bleu identitaire #6378da -> #3b59df — */
.hf-home-v2 {
    --hf-ink: #101833;
    --hf-ink-2: #46507a;
    --hf-ink-3: #7a83a6;
    --hf-line: #dde3f4;
    --hf-line-2: #c3ccea;
    --hf-bg: #ffffff;
    --hf-bg-2: #f4f6fd;
    --hf-bg-accent: #eef1fb;
    --hf-accent: #3b59df;
    --hf-accent-2: #a8b6ee;
    /* Bande conformite volontairement ATTENUEE : assez sombre pour marquer la
       rupture, pas assez pour trouer la page comme le faisait #101833. */
    --hf-band: #33406b;
}

/* — 1b. Mode New : on emprunte les jetons de new-mode.css, la page se pose
       alors sur la coquille grise au lieu de trouer le fond en blanc. — */
html.synapp-new .hf-home-v2 {
    --hf-ink: var(--nm-ink, #232a3b);
    --hf-ink-2: var(--nm-muted, rgba(35, 42, 59, 0.64));
    --hf-ink-3: var(--nm-faint, rgba(35, 42, 59, 0.42));
    --hf-line: var(--nm-line, rgba(35, 42, 59, 0.13));
    --hf-line-2: rgba(35, 42, 59, 0.22);
    --hf-bg: var(--nm-panel, #ebeff6);
    --hf-bg-2: var(--nm-bg-soft, #d6dce8);
    --hf-bg-accent: var(--nm-bg-raise, #ebeff6);
    --hf-accent: var(--nm-accent, #4059b3);
    --hf-accent-2: #a9b8e8;
    --hf-band: #3d4763;
}

/* — 1c. Sur la feuille .hf-home-b, le second aplat reste celui du mode Old.
       Le bloc New ci-dessus l'écrasait par --nm-bg-soft (le gris de la
       coquille) : la bande « Le flux de travail » et le cadre 16/9 de la scène
       viraient au gris foncé alors que la feuille, elle, est presque blanche.
       Les autres jetons New (encres, filets, accent) restent en place. — */
html.synapp-new .hf-home-v2.hf-home-b {
    --hf-bg-2: #f2f5fb;
}

/* — 2. Fiche de faits : grille 2 x 2, filets internes, libelle accentue — */
.hf-home-v2 .hf-facts {
    border-radius: var(--hf-r-2);
    overflow: hidden;
}

.hf-home-v2 .hf-facts-title {
    padding: var(--hf-2) var(--hf-4);
    border-bottom: 1px solid var(--hf-line);
    background: var(--hf-bg-accent);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--hf-ink-3);
}

.hf-home-v2 .hf-facts-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0;
}

.hf-home-v2 .hf-fact {
    display: block;
    padding: var(--hf-4);
    border-right: 1px solid var(--hf-line);
    border-bottom: 1px solid var(--hf-line);
}

.hf-home-v2 .hf-fact:nth-child(2n) {
    border-right: 0;
}

.hf-home-v2 .hf-fact:nth-last-child(-n + 2) {
    border-bottom: 0;
}

.hf-home-v2 .hf-fact dt {
    display: flex;
    align-items: center;
    gap: var(--hf-2);
    margin-bottom: var(--hf-2);
    font-size: 0.67rem;
    letter-spacing: 0.11em;
    line-height: 1.2;
    color: var(--hf-accent);
}

.hf-home-v2 .hf-fact dt i {
    font-size: 0.8rem;
}

.hf-home-v2 .hf-fact dd {
    font-size: 0.86rem;
    line-height: 1.45;
    color: var(--hf-ink-2);
}

/* — 3. Conformite : une ligne par point, sur trois colonnes —
       La bande etant plus claire que dans Home, on remonte les alphas du
       texte secondaire pour conserver le contraste. */
.hf-home-v2 .hf-legal .hf-eyebrow {
    color: rgba(255, 255, 255, 0.62);
}

.hf-home-v2 .hf-legal .hf-eyebrow::after {
    background: rgba(255, 255, 255, 0.2);
}

.hf-home-v2 .hf-legal .hf-lead {
    color: rgba(255, 255, 255, 0.78);
}

.hf-home-v2 .hf-legal-links {
    border-top-color: rgba(255, 255, 255, 0.18);
}

.hf-home-v2 .hf-legal-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--hf-4) var(--hf-6);
    margin: var(--hf-5) 0 0;
    padding: 0;
    list-style: none;
}

.hf-home-v2 .hf-legal-list li {
    padding-top: var(--hf-3);
    border-top: 1px solid rgba(255, 255, 255, 0.18);
    font-size: 0.85rem;
    line-height: 1.5;
    color: rgba(255, 255, 255, 0.72);
}

/* Le libellé tient sa propre ligne : pas de tiret de séparation à poser. */
.hf-home-v2 .hf-legal-list b {
    display: flex;
    align-items: center;
    gap: var(--hf-2);
    margin-bottom: var(--hf-1);
    font-weight: 600;
    color: #fff;
}

.hf-home-v2 .hf-legal-list i {
    font-size: 0.76rem;
    color: var(--hf-accent-2);
}

@media (max-width: 900px) {
    .hf-home-v2 .hf-legal-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .hf-home-v2 .hf-facts-grid,
    .hf-home-v2 .hf-legal-list {
        grid-template-columns: minmax(0, 1fr);
    }

    .hf-home-v2 .hf-fact {
        border-right: 0;
    }

    .hf-home-v2 .hf-fact:nth-last-child(-n + 2) {
        border-bottom: 1px solid var(--hf-line);
    }

    .hf-home-v2 .hf-fact:last-child {
        border-bottom: 0;
    }
}

/* ==========================================================================
   Palette de la page (.hf-home-b) — confort de lecture, deux modes
   --------------------------------------------------------------------------
   Deux constats corrigés ici :
     · en mode New, la page reprenait telles quelles les surfaces de la
       coquille (#ebeff6 / #d6dce8) et une encre en rgba() : posée sur un fond
       déjà gris, elle donnait du gris sur gris et les blocs disparaissaient ;
     · en mode Old, le blanc pur #ffffff sous une encre presque noire (#101833)
       tape à l'œil sur une page longue.
   Réponse commune aux deux modes : la page devient une FEUILLE très claire,
   légèrement bleutée, sur laquelle les blocs de contenu restent blancs ; les
   encres sont opaques et un cran moins dures ; les filets prennent une pointe
   de bleu ; la bande « conformité » passe à un indigo profond plutôt qu'à
   l'ardoise ou au bleu nuit.
   ========================================================================== */

.hf-home-v2.hf-home-b {
    /* encre opaque, contraste tenu mais sans dureté */
    --hf-ink: #1b2338;
    --hf-ink-2: #4d5876;
    --hf-ink-3: #7e88a3;
    /* traits légèrement bleutés : ils se lisent sans peser */
    --hf-line: #dfe5f2;
    --hf-line-2: #c6cfe6;
    /* surfaces : blanc pour le contenu, deux aplats froids très clairs */
    --hf-bg: #ffffff;
    --hf-bg-2: #f2f5fb;
    --hf-bg-accent: #eaf0fd;
    /* accent : le bleu identitaire, un cran plus franc */
    --hf-accent: #3d5bd0;
    --hf-accent-2: #aebbef;
    /* bande conformité : indigo, plus chaud que l'ardoise et moins profond
       que le bleu nuit #101833 qui trouait la page */
    --hf-band: #2b3660;
}

/* La feuille elle-même : fond très clair + filet. En New elle décolle la page
   de la coquille grise ; en Old elle remplace le blanc pur plein écran. */
.hf-home-b {
    background: linear-gradient(180deg, #fbfcff 0%, #f6f9fe 100%);
    border: 1px solid var(--hf-line);
    border-radius: var(--nm-radius-lg, 12px);
    padding: var(--hf-6) var(--hf-6) var(--hf-8);
}

@media (max-width: 640px) {
    .hf-home-b {
        border-left: 0;
        border-right: 0;
        border-radius: 0;
        padding: var(--hf-5) var(--hf-4) var(--hf-7);
    }
}

/* Plus de fiche « En bref » : l'accroche reprend toute la largeur au lieu de
   laisser la colonne de droite vide. */
.hf-home-b .hf-lede {
    grid-template-columns: minmax(0, 1fr);
}

.hf-home-b .hf-lede-text {
    max-width: 64ch;
}

/* ==========================================================================
   Accroche : image de consultation en fond, à la demande
   --------------------------------------------------------------------------
   Le bouton pose .is-media sur la section. Image et texte partagent la même
   cellule de grille (grid-area 1/1) : la hauteur de la ligne est celle du
   plus haut des deux, et l'image gardant height:auto n'est jamais recadrée
   ni étirée — le bloc s'adapte à elle, pas l'inverse.
   ========================================================================== */

.hf-home-b .hf-lede {
    position: relative;
    isolation: isolate;
    /* Le retrait haut de 48px de .hf-home vient d'une page qui commence loin
       sous la banniere ; ici la feuille est calee juste dessous et ajoute deja
       ses 32px de gouttiere. On rend l'air en trop : l'image (et le titre,
       image masquee) demarre plus pres de la bande. */
    padding-top: var(--hf-3);
}

.hf-home-b .hf-lede-body {
    grid-area: 1 / 1;
    align-self: center;
    position: relative;
    z-index: 1;
}

.hf-home-b .hf-lede-img {
    grid-area: 1 / 1;
    align-self: center;
    width: 100%;
    height: auto;
    border-radius: var(--hf-r-2);
    /* Retirée du flux tant que le bouton n'a pas été actionné : la hauteur
       du bloc est alors celle du seul texte. */
    display: none;
}

.hf-home-b .hf-lede.is-media .hf-lede-img {
    display: block;
}

/* Voile : sans lui le texte passe mal sur la photo. Il suit la feuille, donc
   la lecture reste la même dans les deux modes. */
.hf-home-b .hf-lede.is-media::before {
    content: '';
    grid-area: 1 / 1;
    align-self: stretch;
    z-index: 0;
    border-radius: var(--hf-r-2);
    background: linear-gradient(100deg,
            rgba(251, 252, 255, 0.96) 0%,
            rgba(251, 252, 255, 0.9) 42%,
            rgba(251, 252, 255, 0.55) 74%,
            rgba(251, 252, 255, 0.28) 100%);
}

/* Le bouton : discret, aligné sur le reste de l'interface de la page. */
.hf-home-b .hf-lede-toggle {
    display: inline-flex;
    align-items: center;
    gap: var(--hf-2);
    margin-top: var(--hf-5);
    padding: 7px 14px;
    border: 1px solid var(--hf-line-2);
    border-radius: 999px;
    background: var(--hf-bg);
    color: var(--hf-ink-2);
    font: inherit;
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    transition: color 0.18s ease, border-color 0.18s ease, background 0.18s ease;
}

.hf-home-b .hf-lede-toggle:hover {
    color: var(--hf-accent);
    border-color: var(--hf-accent-2);
    background: var(--hf-bg-accent);
}

.hf-home-b .hf-lede-toggle:focus-visible {
    outline: 2px solid var(--hf-accent);
    outline-offset: 2px;
}

.hf-home-b .hf-lede-toggle i {
    color: var(--hf-accent);
}

/* Un seul des deux libellés est visible : l'état est porté par aria-pressed. */
.hf-home-b .hf-lede-toggle .hf-lede-toggle-off,
.hf-home-b .hf-lede-toggle[aria-pressed="true"] .hf-lede-toggle-on {
    display: none;
}

.hf-home-b .hf-lede-toggle[aria-pressed="true"] .hf-lede-toggle-off {
    display: inline;
}

/* Sous 720px la photo passerait derrière un texte plus haut qu'elle : on la
   laisse au-dessus du texte, en bandeau, plutôt que de la voiler entièrement. */
@media (max-width: 720px) {
    .hf-home-b .hf-lede.is-media {
        grid-template-rows: auto auto;
        gap: var(--hf-5);
    }

    .hf-home-b .hf-lede.is-media .hf-lede-img {
        grid-area: 1 / 1;
    }

    .hf-home-b .hf-lede.is-media .hf-lede-body {
        grid-area: 2 / 1;
    }

    .hf-home-b .hf-lede.is-media::before {
        display: none;
    }
}

/* ==========================================================================
   Occupation de l'écran
   --------------------------------------------------------------------------
   La feuille sort du flux et occupe en permanence tout l'espace disponible
   SOUS la bannière principale : --hf-wide-top est posée en JS à partir de la
   hauteur réelle de #app-main-navbar (elle diffère entre modes, entre tailles
   d'écran, et la barre peut défiler). Largeur pleine, hauteur pleine, le
   défilement se fait à l'intérieur de la feuille.
   z-index laissé à 0 : la barre, ses menus et les modales passent devant.
   ========================================================================== */

.hf-home-b {
    position: fixed;
    top: var(--hf-wide-top, 0px);
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 0;
    max-width: none;
    margin: 0;
    border: 0;
    border-radius: 0;
    padding: var(--hf-6) var(--hf-7) var(--hf-8);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

/* Le contenu garde sa colonne de lecture : occuper l'écran ne doit pas
   étirer les lignes de texte au-delà du lisible. */
.hf-home-b > * {
    max-width: 1180px;
    margin-left: auto;
    margin-right: auto;
}

/* Les deux bandes pleine largeur (flux, conformité) débordent normalement des
   gouttières par des marges négatives ; ici la page n'a plus de gouttière, ces
   marges les décaleraient vers la gauche. On les recentre en leur rendant la
   largeur de bande qu'elles avaient. */
.hf-home-b .hf-flow,
.hf-home-b .hf-legal {
    max-width: calc(1180px + var(--hf-5) * 2);
    margin: 0 auto;
}

@media (max-width: 640px) {
    .hf-home-b {
        padding: var(--hf-5) var(--hf-4) var(--hf-7);
    }
}

/* ==========================================================================
   Rail « Le flux de travail » posé dans une autre page (.hf-home-inline)
   --------------------------------------------------------------------------
   La Présentation reprend le partiel flux_travail.html à l'intérieur d'une
   carte. Elle a besoin de la palette de la feuille (.hf-home-v2.hf-home-b)
   mais surtout PAS de son occupation d'écran : sans ce bloc, la feuille reste
   en position fixe et se superpose au contenu qui la suit.
   ========================================================================== */

.hf-home.hf-home-inline {
    position: static;
    inset: auto;
    z-index: auto;
    max-width: none;
    height: auto;
    overflow: visible;
    padding: 0;
    background: none;
    border: 0;
}

.hf-home-inline > * {
    max-width: none;
}

/* La bande du flux ne déborde plus des gouttières : la carte hôte les fournit. */
.hf-home-inline .hf-flow {
    margin: 0;
    max-width: none;
    border-bottom: 0;
    border-radius: var(--hf-r-2);
    padding: var(--hf-5);
}
