/* themes/bootswatch_morph/css/style.css — neumorphism / soft UI sur mesure.
   Le skin Bootswatch Morph fournit couleurs + typo via les variables --bs-*.
   Ici : ombres extrudées douces (clair + foncé), arrondis généreux, rythme. */

:root {
    /* Distance d'extrusion des ombres, fluide selon le viewport. */
    --soft-distance: clamp(6px, 1.2vw, 11px);
    --soft-blur: clamp(14px, 3vw, 26px);
    --soft-radius: clamp(1.25rem, 3vw, 2rem);
    /* Lumière (haut-gauche) et ombre (bas-droite) dérivées du fond. */
    --soft-light: rgba(255, 255, 255, 0.85);
    --soft-shadow: rgba(31, 45, 61, 0.16);
    --soft-bg: var(--bs-body-bg, #f4f5f7);
}

/* ── Carte douce réutilisable : surface extrudée du fond ────────────── */
.soft-card {
    background: var(--soft-bg);
    border: none;
    border-radius: var(--soft-radius);
    padding: clamp(1.5rem, 4vw, 2.75rem);
    box-shadow:
        calc(var(--soft-distance) * -1) calc(var(--soft-distance) * -1) var(--soft-blur) var(--soft-light),
        var(--soft-distance) var(--soft-distance) var(--soft-blur) var(--soft-shadow);
    transition: box-shadow 0.35s ease, transform 0.35s ease;
}

/* Variante creusée (inset) — utile pour zones d'accueil/champs. */
.soft-card--inset {
    box-shadow:
        inset calc(var(--soft-distance) * -1) calc(var(--soft-distance) * -1) var(--soft-blur) var(--soft-light),
        inset var(--soft-distance) var(--soft-distance) var(--soft-blur) var(--soft-shadow);
}

/* ── Hero : un seul GRAND panneau extrudé, moulé dans le fond ──────── */
/* Pas de carte centrée comme les autres thèmes : ici le hero EST la carte.
   Un bloc .soft-card géant remplit la largeur, posé sur le fond du body. */
.bsw-hero {
    padding: clamp(2.5rem, 6vw, 5rem) 0;
    background: var(--soft-bg);
}

/* Le panneau géant : extrusion plus marquée que les cartes normales. */
.soft-card--hero {
    position: relative;
    overflow: hidden;
    border-radius: clamp(1.75rem, 5vw, 3rem);
    padding: clamp(3rem, 9vw, 6rem) clamp(1.5rem, 6vw, 5rem);
    /* Double ombre amplifiée : la pièce semble sculptée dans le fond. */
    box-shadow:
        calc(var(--soft-distance) * -2) calc(var(--soft-distance) * -2)
            calc(var(--soft-blur) * 1.6) var(--soft-light),
        calc(var(--soft-distance) * 2) calc(var(--soft-distance) * 2)
            calc(var(--soft-blur) * 1.6) var(--soft-shadow);
}

/* Contenu recentré et borné à l'intérieur du grand panneau. */
.soft-hero__inner {
    position: relative;
    z-index: 1;
    max-width: 52rem;
    margin-inline: auto;
}

.soft-hero__title {
    color: var(--bs-body-color);
    letter-spacing: -0.015em;
}

.soft-hero__lead {
    color: var(--bs-secondary-color, rgba(31, 45, 61, 0.65));
    max-width: 48ch;
    margin-inline: auto;
}

/* Accents circulaires moulés : un creusé (TL) + un extrudé (BR). */
.soft-accent {
    position: absolute;
    border-radius: 50%;
    background: var(--soft-bg);
    pointer-events: none;
    z-index: 0;
}
.soft-accent--tl {
    /* Cercle pressé dans la matière, en haut-gauche. */
    width: clamp(6rem, 16vw, 12rem);
    height: clamp(6rem, 16vw, 12rem);
    top: clamp(-2.5rem, -4vw, -1.5rem);
    left: clamp(-2.5rem, -4vw, -1.5rem);
    box-shadow:
        inset 6px 6px 14px var(--soft-shadow),
        inset -6px -6px 14px var(--soft-light);
}
.soft-accent--br {
    /* Bouton extrudé, teinté primaire, en bas-droite. */
    width: clamp(4.5rem, 12vw, 9rem);
    height: clamp(4.5rem, 12vw, 9rem);
    bottom: clamp(-1.5rem, -3vw, -1rem);
    right: clamp(-1.5rem, -3vw, -1rem);
    background:
        radial-gradient(circle at 35% 35%,
            rgba(var(--bs-primary-rgb), 0.18), transparent 70%),
        var(--soft-bg);
    box-shadow:
        -8px -8px 18px var(--soft-light),
        8px 8px 18px var(--soft-shadow);
}
@media (max-width: 575.98px) {
    /* Accents discrets sur mobile pour ne pas écraser le texte. */
    .soft-accent--tl { top: -1.5rem; left: -1.5rem; }
    .soft-accent--br { bottom: -1rem; right: -1rem; }
}

/* Pastille douce, légèrement creusée. */
.soft-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1.1rem;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--bs-primary);
    background: var(--soft-bg);
    box-shadow:
        inset 2px 2px 5px var(--soft-shadow),
        inset -2px -2px 5px var(--soft-light);
}
.soft-pill i { font-size: 0.95em; }

/* ── Boutons doux : extrudés au repos, enfoncés au clic ────────────── */
.soft-btn {
    border: none;
    border-radius: 999px;
    padding-inline: clamp(1.5rem, 4vw, 2.25rem);
    font-weight: 600;
    box-shadow:
        -4px -4px 9px var(--soft-light),
        4px 4px 9px var(--soft-shadow);
    transition: box-shadow 0.25s ease, transform 0.15s ease, filter 0.25s ease;
}
.soft-btn:hover,
.soft-btn:focus-visible {
    transform: translateY(-1px);
    box-shadow:
        -5px -5px 11px var(--soft-light),
        5px 5px 11px var(--soft-shadow);
    filter: brightness(1.03);
}
.soft-btn:active {
    transform: translateY(0);
    box-shadow:
        inset 3px 3px 7px var(--soft-shadow),
        inset -3px -3px 7px var(--soft-light);
}

/* Bouton fantôme : même surface que le fond, juste extrudée. */
.soft-btn--ghost {
    background: var(--soft-bg);
    color: var(--bs-primary);
}

/* ── Sections : rythme + scroll-margin ─────────────────────────────── */
.bsw-section { padding: clamp(3rem, 7vw, 5rem) 0; }
main > section { scroll-margin-top: 5rem; }

/* Le bloc contact hérite du look carte douce sans toucher au markup. */
#contact .col-lg-8 {
    background: var(--soft-bg);
    border-radius: var(--soft-radius);
    padding: clamp(2rem, 5vw, 3.5rem);
    box-shadow:
        -7px -7px 16px var(--soft-light),
        7px 7px 16px var(--soft-shadow);
}
#contact a { text-decoration: none; }
#contact a:hover { color: var(--bs-primary); }

/* ── Cartes services en relief doux (override de section) ───────────── */
.services .soft-card {
    height: 100%;
}
.services .soft-card:hover,
.services .soft-card:focus-within {
    transform: translateY(-4px);
    box-shadow:
        -9px -9px 20px var(--soft-light),
        9px 9px 20px var(--soft-shadow);
}
.services .soft-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    font-size: 1.4rem;
    color: var(--bs-primary);
    background: var(--soft-bg);
    box-shadow:
        inset 3px 3px 6px var(--soft-shadow),
        inset -3px -3px 6px var(--soft-light);
}

/* ── Projets : carte douce avec média arrondi ──────────────────────── */
.projects .soft-card,
.team .soft-card,
.testimonials .soft-card {
    height: 100%;
}
.soft-project,
.soft-member {
    overflow: hidden;
}
.soft-project:hover,
.soft-project:focus-within,
.soft-member:hover,
.soft-member:focus-within,
.testimonials .soft-card:hover,
.testimonials .soft-card:focus-within {
    transform: translateY(-4px);
    box-shadow:
        -9px -9px 20px var(--soft-light),
        9px 9px 20px var(--soft-shadow);
}
.soft-project__media {
    margin: clamp(0.75rem, 2vw, 1rem);
    border-radius: calc(var(--soft-radius) - 0.5rem);
    overflow: hidden;
    box-shadow:
        inset 3px 3px 6px var(--soft-shadow),
        inset -3px -3px 6px var(--soft-light);
}
.soft-project__img {
    display: block;
    width: 100%;
    height: 200px;
    object-fit: cover;
}
.soft-project__body {
    padding: 0 clamp(1.25rem, 3vw, 1.75rem) clamp(1.25rem, 3vw, 1.75rem);
}
/* Quand il n'y a pas d'image, redonner un padding haut. */
.soft-project > .soft-project__body:first-child {
    padding-top: clamp(1.5rem, 4vw, 2rem);
}

/* ── Équipe : avatar creusé, liens sociaux doux ────────────────────── */
.soft-member {
    padding: clamp(1.5rem, 4vw, 2rem) clamp(1.25rem, 3vw, 1.75rem);
}
.soft-member__avatar {
    width: 7.5rem;
    height: 7.5rem;
    border-radius: 50%;
    overflow: hidden;
    box-shadow:
        4px 4px 9px var(--soft-shadow),
        -4px -4px 9px var(--soft-light);
}
.soft-member__avatar--empty {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--soft-bg);
    box-shadow:
        inset 4px 4px 9px var(--soft-shadow),
        inset -4px -4px 9px var(--soft-light);
}
.soft-member__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.soft-social {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 50%;
    color: var(--bs-primary);
    background: var(--soft-bg);
    text-decoration: none;
    box-shadow:
        -3px -3px 6px var(--soft-light),
        3px 3px 6px var(--soft-shadow);
    transition: box-shadow 0.2s ease, transform 0.15s ease;
}
.soft-social:hover,
.soft-social:focus-visible {
    color: var(--bs-primary);
    transform: translateY(-1px);
}
.soft-social:active {
    box-shadow:
        inset 2px 2px 5px var(--soft-shadow),
        inset -2px -2px 5px var(--soft-light);
}

/* ── Témoignages : guillemet en pastille creusée ───────────────────── */
.soft-quote__mark {
    font-size: 1.6rem;
}
.soft-quote__avatar {
    display: inline-flex;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    overflow: hidden;
    flex: 0 0 auto;
    box-shadow:
        3px 3px 6px var(--soft-shadow),
        -3px -3px 6px var(--soft-light);
}
.soft-quote__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* ── FAQ : items en cartes douces, sans bordures Bootstrap ─────────── */
.soft-accordion .accordion-item {
    overflow: hidden;
}
.soft-accordion .accordion-button {
    background: transparent;
    color: var(--bs-body-color);
    font-weight: 600;
    box-shadow: none;
    border-radius: var(--soft-radius);
    padding: clamp(1rem, 2.5vw, 1.35rem) clamp(1.25rem, 3vw, 1.75rem);
}
.soft-accordion .accordion-button:not(.collapsed) {
    background: transparent;
    color: var(--bs-primary);
}
.soft-accordion .accordion-button:focus {
    box-shadow:
        inset 2px 2px 5px var(--soft-shadow),
        inset -2px -2px 5px var(--soft-light);
}
.soft-accordion .accordion-body {
    padding: 0 clamp(1.25rem, 3vw, 1.75rem) clamp(1.25rem, 3vw, 1.6rem);
}

/* ── Footer ────────────────────────────────────────────────────────── */
.bsw-footer a { text-decoration: none; }
.bsw-footer a:hover { color: var(--bs-primary) !important; }

/* ── Icône douce, variante compacte (listes about) ─────────────────── */
.soft-icon--sm {
    width: 2.4rem;
    height: 2.4rem;
    font-size: 1.05rem;
}

/* ── About : cadre média creusé + liste d'infos ────────────────────── */
.soft-about__frame {
    overflow: hidden;
}
.soft-about__media {
    margin: clamp(0.75rem, 2vw, 1rem);
    border-radius: calc(var(--soft-radius) - 0.5rem);
    overflow: hidden;
    box-shadow:
        inset 3px 3px 6px var(--soft-shadow),
        inset -3px -3px 6px var(--soft-light);
}
.soft-about__img {
    display: block;
    width: 100%;
    height: auto;
}
.soft-about__list {
    display: grid;
    gap: 0.85rem;
}
.soft-about__list li {
    display: flex;
    align-items: center;
    gap: 0.85rem;
}
.soft-about__list a:hover { color: var(--bs-primary); }

/* ── Skills : carte douce + barre de progression creusée ───────────── */
.skills .soft-card:hover,
.skills .soft-card:focus-within {
    transform: translateY(-4px);
    box-shadow:
        -9px -9px 20px var(--soft-light),
        9px 9px 20px var(--soft-shadow);
}
.soft-progress {
    height: 0.7rem;
    border-radius: 999px;
    background: var(--soft-bg);
    box-shadow:
        inset 2px 2px 5px var(--soft-shadow),
        inset -2px -2px 5px var(--soft-light);
    overflow: hidden;
}
.soft-progress__bar {
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg,
        rgba(var(--bs-primary-rgb), 0.75),
        var(--bs-primary));
    box-shadow: 0 0 6px rgba(var(--bs-primary-rgb), 0.4);
}

/* ── Stats : chiffres clés en cartes douces ────────────────────────── */
.stats .soft-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}
.stats .soft-card:hover {
    transform: translateY(-4px);
    box-shadow:
        -9px -9px 20px var(--soft-light),
        9px 9px 20px var(--soft-shadow);
}
.soft-stat__value {
    color: var(--bs-primary);
    font-size: clamp(2rem, 5vw, 2.75rem);
    line-height: 1.1;
}
.soft-stat__unit {
    font-size: 0.55em;
    margin-left: 0.1em;
}

/* ── Resume : panneau doux + timeline creusée ──────────────────────── */
.resume .soft-card h4 { color: var(--bs-body-color); }
.soft-timeline {
    position: relative;
    padding-left: 1.75rem;
}
.soft-timeline::before {
    content: "";
    position: absolute;
    left: 0.3rem;
    top: 0.35rem;
    bottom: 0.35rem;
    width: 5px;
    border-radius: 999px;
    background: var(--soft-bg);
    box-shadow:
        inset 1px 1px 3px var(--soft-shadow),
        inset -1px -1px 3px var(--soft-light);
}
.soft-timeline__item {
    position: relative;
    padding-bottom: 1.5rem;
}
.soft-timeline__item:last-child { padding-bottom: 0; }
.soft-timeline__item::before {
    content: "";
    position: absolute;
    left: calc(-1.75rem + 0.05rem);
    top: 0.35rem;
    width: 0.7rem;
    height: 0.7rem;
    border-radius: 50%;
    background: var(--bs-primary);
    box-shadow:
        2px 2px 4px var(--soft-shadow),
        -2px -2px 4px var(--soft-light);
}

/* ── Phase 5 : sections de listes (publications / events / resources / blog) ─ */
/* Carte douce qui se soulève au survol, mutualisée pour les 4 aperçus. */
.publications .soft-card,
.events .soft-card,
.resources .soft-card,
.blog .soft-card {
    height: 100%;
}
.publications .soft-pub:hover,
.publications .soft-pub:focus-within,
.resources .soft-resource:hover,
.resources .soft-resource:focus-within,
.events .soft-project:hover,
.events .soft-project:focus-within,
.blog .soft-project:hover,
.blog .soft-project:focus-within {
    transform: translateY(-4px);
    box-shadow:
        -9px -9px 20px var(--soft-light),
        9px 9px 20px var(--soft-shadow);
}

/* Publications : liste de cartes douces (pas de bordures Bootstrap). */
.soft-pub a:hover { color: var(--bs-primary); }

/* Lien « pilule » en ligne (badge Featured) — taille compacte. */
.soft-pill.ms-1 {
    padding: 0.2rem 0.7rem;
    font-size: 0.7rem;
}

/* Visuels d'aperçu (events/blog) : hauteur cadrée dans le média creusé. */
.events .soft-project__img,
.blog .soft-project__img {
    height: 200px;
}

/* Réduction de mouvement : neutraliser le lift des sections de listes. */
@media (prefers-reduced-motion: reduce) {
    .publications .soft-pub:hover,
    .publications .soft-pub:focus-within,
    .resources .soft-resource:hover,
    .resources .soft-resource:focus-within,
    .events .soft-project:hover,
    .events .soft-project:focus-within,
    .blog .soft-project:hover,
    .blog .soft-project:focus-within { transform: none; }
}

/* ── Pages blog / projets (list + detail) ──────────────────────────── */
/* Fil d'Ariane discret, posé sur le fond sans bordure Bootstrap. */
.soft-breadcrumb {
    display: inline-flex;
    flex-wrap: wrap;
    margin-bottom: 0;
    padding: 0.55rem 1.1rem;
    border-radius: 999px;
    background: var(--soft-bg);
    box-shadow:
        inset 2px 2px 5px var(--soft-shadow),
        inset -2px -2px 5px var(--soft-light);
}
.soft-breadcrumb .breadcrumb-item a {
    color: var(--bs-primary);
    text-decoration: none;
}
.soft-breadcrumb .breadcrumb-item a:hover { text-decoration: underline; }
.soft-breadcrumb .breadcrumb-item.active { color: var(--bs-secondary-color, var(--bs-body-color)); }

/* Cadre média creusé partagé (image hero d'article / projet, galerie). */
.soft-detail__media {
    padding: clamp(0.6rem, 2vw, 1rem);
    overflow: hidden;
}
.soft-detail__media img {
    display: block;
    width: 100%;
    border-radius: calc(var(--soft-radius) - 0.6rem);
    box-shadow:
        inset 3px 3px 6px var(--soft-shadow),
        inset -3px -3px 6px var(--soft-light);
}

/* Article : confort de lecture dans la carte douce. */
.blog-detail .post-content :where(p, ul, ol, blockquote) { margin-bottom: 1rem; }
.blog-detail .post-content img { max-width: 100%; height: auto; border-radius: 0.75rem; }
.blog-detail .post-content a { color: var(--bs-primary); }

/* Pagination douce : pastilles extrudées, active = enfoncée. */
.soft-pagination {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.6rem;
    padding: 0;
    margin: 0;
    list-style: none;
}
.soft-page-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2.6rem;
    height: 2.6rem;
    padding-inline: 0.6rem;
    border-radius: 999px;
    font-weight: 600;
    color: var(--bs-primary);
    background: var(--soft-bg);
    text-decoration: none;
    box-shadow:
        -3px -3px 7px var(--soft-light),
        3px 3px 7px var(--soft-shadow);
    transition: box-shadow 0.2s ease, transform 0.15s ease;
}
.soft-page-link:hover,
.soft-page-link:focus-visible {
    color: var(--bs-primary);
    transform: translateY(-1px);
}
.soft-page-link.is-active {
    color: var(--bs-body-color);
    transform: none;
    box-shadow:
        inset 3px 3px 7px var(--soft-shadow),
        inset -3px -3px 7px var(--soft-light);
}

/* Réduction de mouvement : neutraliser le lift pagination. */
@media (prefers-reduced-motion: reduce) {
    .soft-page-link:hover,
    .soft-page-link:focus-visible { transform: none; }
}

/* ── Mode nuit : inverser l'éclairage des ombres ───────────────────── */
[data-bs-theme="dark"] {
    --soft-light: rgba(255, 255, 255, 0.05);
    --soft-shadow: rgba(0, 0, 0, 0.55);
}

/* ── Réduction de mouvement ────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .soft-card,
    .soft-btn,
    .soft-social,
    .services .soft-card { transition: none; }
    .soft-btn:hover,
    .soft-btn:focus-visible,
    .services .soft-card:hover,
    .services .soft-card:focus-within,
    .soft-project:hover,
    .soft-project:focus-within,
    .soft-member:hover,
    .soft-member:focus-within,
    .testimonials .soft-card:hover,
    .testimonials .soft-card:focus-within,
    .skills .soft-card:hover,
    .skills .soft-card:focus-within,
    .stats .soft-card:hover,
    .soft-social:hover,
    .soft-social:focus-visible { transform: none; }
}

/* ── Petits écrans : ombres plus discrètes ─────────────────────────── */
@media (max-width: 575.98px) {
    :root { --soft-distance: 6px; --soft-blur: 13px; }
}

/* ===== Phase 7 — content pages ===== */
/* Pages de contenu sur-mesure (services, jobs, team, events, publications,
   resources, faq, + leurs détails). On réutilise au maximum les composants
   existants (.soft-card, .soft-pill, .soft-project, .soft-member, .soft-icon,
   .soft-breadcrumb, .soft-detail__media, .soft-accordion). Ici : seulement
   les classes nouvelles + le lift au survol pour les nouvelles familles. */

/* Cartes pleine hauteur pour les nouvelles grilles de listes. */
.jobs .soft-card,
.services .soft-card { height: 100%; }

/* Soulèvement doux au survol, cohérent avec les autres listes du thème. */
.jobs .soft-job:hover,
.jobs .soft-job:focus-within,
.services .soft-project:hover,
.services .soft-project:focus-within,
.team .soft-member:hover,
.team .soft-member:focus-within,
.publications .soft-pub:hover,
.publications .soft-pub:focus-within,
.resources .soft-resource:hover,
.resources .soft-resource:focus-within {
    transform: translateY(-4px);
    box-shadow:
        -9px -9px 20px var(--soft-light),
        9px 9px 20px var(--soft-shadow);
}

/* Pastille d'alerte (jobs urgents) : teinte danger sur le creux doux. */
.soft-pill--alert { color: var(--bs-danger, #d9534f); }

/* Liste de méta-infos compacte (jobs / resources), sans puces. */
.soft-meta-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.35rem;
}
.soft-meta-list li { display: flex; align-items: center; }

/* Liste de cartes-publications : titres cliquables, espacement régulier. */
.soft-pub-list { display: grid; gap: 0; }
.soft-pub a:hover { color: var(--bs-primary); }

/* Liste « ce qui est inclus » (service detail) : items moulés dans le fond. */
.soft-feature-list { display: grid; gap: 1rem; }
.soft-feature-list > li { padding: 0.25rem 0; }
.soft-feature-list .soft-icon { flex: 0 0 auto; }

/* Avatar agrandi pour la fiche détaillée d'un membre d'équipe. */
.soft-member__avatar--lg {
    width: clamp(9rem, 26vw, 12rem);
    height: clamp(9rem, 26vw, 12rem);
}

/* Réduction de mouvement : neutraliser le lift des nouvelles familles. */
@media (prefers-reduced-motion: reduce) {
    .jobs .soft-job:hover,
    .jobs .soft-job:focus-within,
    .services .soft-project:hover,
    .services .soft-project:focus-within,
    .team .soft-member:hover,
    .team .soft-member:focus-within { transform: none; }
}

/* Audit contraste : muté du skin morph trop clair en jour. Muté lisible. */
:root:not([data-bs-theme="dark"]) { --bs-secondary-color: #5c6472; --bs-secondary-color-rgb: 92, 100, 114; }

/* Le .text-secondary de Bootstrap (avec !important) rend le sous-titre de section
   blanc malgré --bs-secondary-color corrigé : on rétablit le muté lisible. */
:root:not([data-bs-theme="dark"]) .text-secondary { color: var(--bs-secondary-color) !important; }

/* AUDIT CONTRASTE — WCAG AA : le bleu-gris clair #7b8ab8 (titres de cartes,
   soft-buttons) échoue sur la surface claire neumorphique. Bleu foncé lisible.
   (on ne touche PAS --bs-primary : ses fonds pleins clairs casseraient.) */
:root:not([data-bs-theme="dark"]) .card-title,
:root:not([data-bs-theme="dark"]) .card-title a,
:root:not([data-bs-theme="dark"]) .soft-btn,
:root:not([data-bs-theme="dark"]) .soft-btn--ghost,
:root:not([data-bs-theme="dark"]) strong,
:root:not([data-bs-theme="dark"]) .fw-semibold { color: #3d4a70 !important; }
/* Le texte courant du skin (#7b8ab8) et l'accent (#378dfc) échouent sur la
   surface claire. Corps plus sombre + accent-texte (pilules, liens, stats). */
:root:not([data-bs-theme="dark"]) { --bs-body-color: #3d4a70; }
:root:not([data-bs-theme="dark"]) .soft-pill,
:root:not([data-bs-theme="dark"]) a.soft-page-link,
:root:not([data-bs-theme="dark"]) .soft-stat__value,
:root:not([data-bs-theme="dark"]) main a { color: #0a5bd4 !important; }

/* AUDIT AA jour : accent/boutons sur surfaces bleutées (soft UI). */
/* Bouton primaire soft : texte muet #7b8ab8 illisible sur surface claire. */
:root:not([data-bs-theme="dark"]) .btn-primary { color: #40507a !important; }
:root:not([data-bs-theme="dark"]) .accordion-button { color: #2764b4 !important; }
/* Outline-primary posé sur une section bleue (#378dfc) : encre plus sombre. */
:root:not([data-bs-theme="dark"]) .btn-outline-primary {
    --bs-btn-color: #042557; color: #042557 !important;
}
:root:not([data-bs-theme="dark"]) .btn-outline-primary .bi { color: #073e92 !important; }
