/* =========================================
   _shared/css/steampunk-base.css
   Base commune des 3 thèmes steampunk Victorien (atelier, manufacture, comptoir).
   Palette laiton/acajou/parchemin/encre. Typo Playfair Display + IM Fell English.
   Cible : artisans bois/métal/cuir.

   Chargé APRÈS Bootstrap, AVANT le main.css spécifique du thème
   (qui surcharge juste 4-5 vars pour différencier les 3 variantes).
   ========================================= */

:root {
    /* ----- Palette commune (les 3 variantes héritent, peuvent override) ----- */
    --sp-brass:        #B08D57;  /* laiton primary */
    --sp-brass-dark:   #8A6E40;  /* laiton sombre (hovers) */
    --sp-brass-light:  #D4B786;  /* laiton clair (accents subtils) */
    --sp-copper:       #B87333;  /* cuivre secondaire */
    --sp-mahogany:     #8B4513;  /* acajou (titres riches) */
    --sp-parchment:    #F4E4BC;  /* parchemin (background pages) */
    --sp-parchment-2:  #EBD9A8;  /* parchemin foncé (sections alternées) */
    --sp-ink:          #2C1810;  /* encre (texte principal) */
    --sp-ink-soft:     #5C4530;  /* encre douce (texte secondaire) */
    --sp-bone:         #FBF5E5;  /* os blanc cassé (cards, panels) */
    --sp-tarnish:      #6B5234;  /* patine, ombres riches */

    /* Vars sémantiques mappées sur la palette */
    --sp-bg:           var(--sp-parchment);
    --sp-bg-alt:       var(--sp-parchment-2);
    --sp-surface:      var(--sp-bone);
    --sp-text:         var(--sp-ink);
    --sp-text-muted:   var(--sp-ink-soft);
    --sp-accent:       var(--sp-brass);
    --sp-accent-dark:  var(--sp-brass-dark);
    --sp-heading:      var(--sp-mahogany);
    --sp-border:       var(--sp-tarnish);
    --sp-shadow:       rgba(44, 24, 16, 0.18);

    /* Typographie */
    --sp-font-display: "Playfair Display", "IM Fell English", Georgia, serif;
    --sp-font-body:    "IM Fell English", "Playfair Display", Georgia, "Times New Roman", serif;
    --sp-font-mono:    "Courier Prime", "Courier New", monospace;

    /* Layout */
    --sp-radius:       6px;
    --sp-radius-lg:    10px;
    --sp-transition:   all 0.25s ease;

    /* ----- Hooks de personnalisation par variante ----- */
    --sp-nav-bg:           var(--sp-ink);
    --sp-nav-bg-gradient:  linear-gradient(180deg, var(--sp-ink) 0%, #1a0e08 100%);
    --sp-nav-text:         var(--sp-parchment);
    --sp-nav-brand:        var(--sp-brass);
    --sp-nav-hover:        var(--sp-brass);
    --sp-nav-border:       var(--sp-brass);
    --sp-nav-border-width: 3px;
    --sp-nav-border-style: double;

    --sp-card-bg:          var(--sp-bone);
    --sp-card-border:      var(--sp-border);
    --sp-card-shadow:
        0 1px 2px var(--sp-shadow),
        inset 0 0 0 4px var(--sp-bone),
        inset 0 0 0 5px var(--sp-brass-light);

    --sp-section-alt-bg:   var(--sp-parchment-2);
    --sp-body-pattern:
        repeating-linear-gradient(
            0deg,
            transparent,
            transparent 3px,
            rgba(139, 69, 19, 0.025) 3px,
            rgba(139, 69, 19, 0.025) 4px
        ),
        radial-gradient(circle at 20% 30%, rgba(184, 115, 51, 0.06), transparent 50%),
        radial-gradient(circle at 80% 70%, rgba(139, 69, 19, 0.05), transparent 50%);

    /* ----- Override Bootstrap 5.3 native vars : tout devient steampunk -----
       Les sections/pages _shared utilisent text-primary, bg-primary,
       bg-primary-subtle, btn-outline-primary, progress-bar bg-primary,
       etc. — on neutralise toute trace de #0d6efd. */
    --bs-primary:                  #B08D57;
    --bs-primary-rgb:              176, 141, 87;
    --bs-primary-bg-subtle:        #EBD9A8;
    --bs-primary-border-subtle:    #B08D57;
    --bs-primary-text-emphasis:    #8B4513;

    --bs-secondary:                #8B4513;
    --bs-secondary-rgb:            139, 69, 19;
    --bs-secondary-bg-subtle:      #D4B786;
    --bs-secondary-border-subtle:  #8B4513;
    --bs-secondary-text-emphasis:  #2C1810;

    --bs-success:                  #6B7935;       /* vert mousse, pas vert vif */
    --bs-success-rgb:              107, 121, 53;
    --bs-success-bg-subtle:        #DCD9B6;
    --bs-success-text-emphasis:    #4A5424;

    --bs-info:                     #B87333;       /* cuivre, pas cyan */
    --bs-info-rgb:                 184, 115, 51;
    --bs-info-bg-subtle:           #E8C9A4;
    --bs-info-text-emphasis:       #8A5524;

    --bs-warning:                  #C2893A;       /* ambre laiton, pas jaune */
    --bs-warning-rgb:              194, 137, 58;
    --bs-warning-bg-subtle:        #E8D3A4;
    --bs-warning-text-emphasis:    #8B6020;

    --bs-danger:                   #8E2B1F;       /* rouge brique, pas écarlate */
    --bs-danger-rgb:               142, 43, 31;
    --bs-danger-bg-subtle:         #E8C0B8;
    --bs-danger-text-emphasis:     #5A1A12;

    --bs-link-color:               #8B4513;
    --bs-link-color-rgb:           139, 69, 19;
    --bs-link-hover-color:         #B08D57;
    --bs-link-hover-color-rgb:     176, 141, 87;

    --bs-body-color:               #2C1810;
    --bs-body-color-rgb:           44, 24, 16;
    --bs-body-bg:                  #F4E4BC;
    --bs-body-bg-rgb:              244, 228, 188;
    --bs-emphasis-color:           #8B4513;

    --bs-border-color:             #6B5234;
    --bs-border-color-translucent: rgba(107, 82, 52, 0.25);

    --bs-heading-color:            #8B4513;
}

/* ----- Base typographique + body texturé ----- */
body {
    font-family: var(--sp-font-body);
    color: var(--sp-text);
    background-color: var(--sp-bg);
    background-image: var(--sp-body-pattern);
    font-size: 1.0625rem;
    line-height: 1.7;
}

/* ----- Sépia uniformisant sur images démo (placeholders violets/bleus → ton steampunk) ----- */
/* Override par variante via --sp-img-filter pour différencier l'ambiance. */
:root {
    --sp-img-filter: sepia(0.55) saturate(0.85) hue-rotate(-8deg) contrast(0.95);
}
img,
picture > img,
.card-img-top,
.atelier-craft-img {
    filter: var(--sp-img-filter);
    transition: filter 0.35s ease;
}
/* Au hover, l'image reprend ses couleurs (effet "carte postale colorisée") */
.card:hover img,
a:hover img,
img:hover {
    filter: sepia(0.15) saturate(1) hue-rotate(0deg);
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--sp-font-display);
    color: var(--sp-heading);
    font-weight: 700;
    letter-spacing: 0.01em;
}
h1, .h1 { font-size: clamp(2rem, 5vw, 3.5rem); }
h2, .h2 { font-size: clamp(1.5rem, 3.5vw, 2.5rem); margin-bottom: 1rem; }
h3, .h3 { font-size: clamp(1.25rem, 2.5vw, 1.75rem); }

a {
    color: var(--sp-mahogany);
    text-decoration: underline;
    text-decoration-color: var(--sp-brass);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    transition: var(--sp-transition);
}
a:hover {
    color: var(--sp-brass);
    text-decoration-color: var(--sp-mahogany);
}

p { color: var(--sp-text); }
.text-muted { color: var(--sp-text-muted) !important; }
.lead { font-family: var(--sp-font-display); font-style: italic; color: var(--sp-text-muted); }

/* ----- Sections : padding chaleureux ----- */
section, .section, .sp-section {
    padding: 5rem 0;
    position: relative;
}
section:nth-of-type(even) {
    background-color: var(--sp-section-alt-bg);
}
@media (max-width: 767.98px) {
    section, .section, .sp-section { padding: 3rem 0; }
}

/* Titre de section avec fioriture engrenage */
.section-title,
.sp-section-title {
    text-align: center;
    margin-bottom: 3rem;
    position: relative;
}
.section-title h2,
.sp-section-title h2 {
    display: inline-block;
    padding: 0 2.5rem;
    position: relative;
}
.section-title h2::before,
.section-title h2::after,
.sp-section-title h2::before,
.sp-section-title h2::after {
    content: "";
    position: absolute;
    top: 50%;
    width: 1.75rem;
    height: 1.75rem;
    transform: translateY(-50%);
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23B08D57'%3E%3Cpath d='M12 6.5c-3.04 0-5.5 2.46-5.5 5.5s2.46 5.5 5.5 5.5 5.5-2.46 5.5-5.5-2.46-5.5-5.5-5.5zm0 9a3.5 3.5 0 110-7 3.5 3.5 0 010 7zM22 12l-2.5-1.4.5-2.8-2.7-.6-1.2-2.6L13.4 5 12 2.5 10.6 5 7.9 4.6 6.7 7.2 4 7.8l.5 2.8L2 12l2.5 1.4-.5 2.8 2.7.6 1.2 2.6 2.7-.4L12 21.5l1.4-2.5 2.7.4 1.2-2.6 2.7-.6-.5-2.8L22 12z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}
.section-title h2::before,
.sp-section-title h2::before { left: 0; }
.section-title h2::after,
.sp-section-title h2::after { right: 0; }
.section-title p,
.sp-section-title p {
    font-family: var(--sp-font-display);
    font-style: italic;
    color: var(--sp-text-muted);
    max-width: 36rem;
    margin: 0.5rem auto 0;
}

/* ----- Navigation steampunk (vars sont overridées par chaque variante) ----- */
.sp-nav {
    background-color: var(--sp-nav-bg);
    background-image: var(--sp-nav-bg-gradient);
    border-bottom: var(--sp-nav-border-width) var(--sp-nav-border-style) var(--sp-nav-border);
    padding: 0.875rem 0;
}
.sp-nav .navbar-brand {
    font-family: var(--sp-font-display);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--sp-nav-brand) !important;
    letter-spacing: 0.04em;
    text-decoration: none;
}
.sp-nav .nav-link {
    color: var(--sp-nav-text) !important;
    font-family: var(--sp-font-display);
    font-size: 0.95rem;
    padding: 0.5rem 0.875rem;
    position: relative;
    text-decoration: none;
    transition: var(--sp-transition);
}
.sp-nav .nav-link:hover,
.sp-nav .nav-link.active {
    color: var(--sp-nav-hover) !important;
}
.sp-nav .navbar-toggler {
    border-color: var(--sp-nav-brand);
}
.sp-nav .navbar-toggler-icon {
    filter: invert(70%) sepia(40%) saturate(500%) hue-rotate(0deg);
}

/* ----- Override explicite des utilities Bootstrap couleur (sécurité ----- */
/* Bootstrap utilise .text-primary { color: rgba(var(--bs-primary-rgb), ...) }
   donc les vars suffisent EN GÉNÉRAL, mais certains thèmes ou cas
   d'usage cassent. On verrouille explicitement. */
.text-primary             { color: var(--sp-mahogany) !important; }
.text-primary-emphasis    { color: var(--sp-mahogany) !important; }
.text-secondary           { color: var(--sp-ink-soft) !important; }
.text-success             { color: #6B7935 !important; }
.text-info                { color: var(--sp-brass) !important; }
.text-warning             { color: var(--sp-copper) !important; }
.text-danger              { color: #8E2B1F !important; }
.text-light               { color: var(--sp-bone) !important; }
.text-dark                { color: var(--sp-ink) !important; }
.text-white               { color: var(--sp-bone) !important; }

.bg-primary               { background-color: var(--sp-brass) !important; }
.bg-primary-subtle        { background-color: var(--sp-parchment-2) !important; }
.bg-secondary             { background-color: var(--sp-mahogany) !important; color: var(--sp-parchment); }
.bg-secondary-subtle      { background-color: var(--sp-bone) !important; }
.bg-success               { background-color: #6B7935 !important; }
.bg-success-subtle        { background-color: #DCD9B6 !important; }
.bg-info                  { background-color: var(--sp-brass) !important; }
.bg-info-subtle           { background-color: #E8C9A4 !important; }
.bg-warning               { background-color: var(--sp-copper) !important; color: var(--sp-bone); }
.bg-warning-subtle        { background-color: #E8D3A4 !important; }
.bg-danger                { background-color: #8E2B1F !important; color: var(--sp-bone); }
.bg-light                 { background-color: var(--sp-bone) !important; }
.bg-dark                  { background-color: var(--sp-ink) !important; color: var(--sp-parchment); }
.bg-white                 { background-color: var(--sp-bone) !important; }

.border-primary           { border-color: var(--sp-brass) !important; }
.border-secondary         { border-color: var(--sp-mahogany) !important; }

.progress-bar             { background-color: var(--sp-brass) !important; }
.progress-bar.bg-primary,
.progress-bar.bg-success,
.progress-bar.bg-info     { background-color: var(--sp-brass) !important; }
.progress                 { background-color: var(--sp-parchment-2) !important; }

/* ----- Boutons style "plaque cuivre rivetée" ----- */
.btn-primary,
.btn-sp,
.btn.btn-primary {
    background-color: var(--sp-brass);
    background-image: linear-gradient(180deg, var(--sp-brass-light) 0%, var(--sp-brass) 60%, var(--sp-brass-dark) 100%);
    border: 1px solid var(--sp-brass-dark);
    color: var(--sp-ink);
    font-family: var(--sp-font-display);
    font-weight: 600;
    letter-spacing: 0.03em;
    padding: 0.625rem 1.5rem;
    border-radius: var(--sp-radius);
    text-decoration: none;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.3),
        inset 0 -1px 0 rgba(0,0,0,0.2),
        0 2px 4px var(--sp-shadow);
    transition: var(--sp-transition);
}
.btn-primary:hover,
.btn-sp:hover,
.btn.btn-primary:hover {
    background-image: linear-gradient(180deg, var(--sp-brass) 0%, var(--sp-brass-dark) 100%);
    color: var(--sp-ink);
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.3),
        inset 0 -1px 0 rgba(0,0,0,0.2),
        0 4px 8px var(--sp-shadow);
}
.btn-outline-primary,
.btn-outline-secondary,
.btn-outline-info,
.btn-outline-success,
.btn-sp-outline {
    background: transparent;
    border: 2px solid var(--sp-brass);
    color: var(--sp-mahogany);
    font-family: var(--sp-font-display);
    font-weight: 600;
    padding: 0.5rem 1.375rem;
    border-radius: var(--sp-radius);
    text-decoration: none;
    transition: var(--sp-transition);
}
.btn-outline-primary:hover,
.btn-outline-secondary:hover,
.btn-outline-info:hover,
.btn-outline-success:hover,
.btn-sp-outline:hover {
    background-color: var(--sp-brass);
    color: var(--sp-ink);
    border-color: var(--sp-brass-dark);
}
.btn-light {
    background-color: var(--sp-bone);
    color: var(--sp-ink);
    border: 1px solid var(--sp-tarnish);
}
.btn-light:hover {
    background-color: var(--sp-parchment);
    color: var(--sp-mahogany);
}

/* Liens "bg-opacity" + icônes : forcer la teinte laiton */
.bg-primary.bg-opacity-10,
.bg-success.bg-opacity-10,
.bg-info.bg-opacity-10,
.bg-warning.bg-opacity-10 {
    background-color: var(--sp-parchment-2) !important;
}

/* Icônes inline du type "bi-X text-primary" : laiton riche.
   AUDIT CONTRASTE — le laiton des variantes est trop clair sur parchemin
   (< 3.0) : chaque variante fournit un --sp-brass-icon assombri pour le
   jour ; la nuit rebascule sur le laiton clair (voir bloc audit en fin). */
i.text-primary, i.text-success, i.text-info, i.text-warning {
    color: var(--sp-brass-icon, var(--sp-brass)) !important;
}

/* Stretched links / cards-text fragments */
.card a, .card-title a { color: var(--sp-mahogany); }
.card a:hover, .card-title a:hover { color: var(--sp-brass); }

/* ----- Cards : panneau bois/parchemin (vars overridables par variante) ----- */
.card,
.sp-card {
    background-color: var(--sp-card-bg) !important;
    border: 1px solid var(--sp-card-border) !important;
    border-radius: var(--sp-radius-lg) !important;
    box-shadow: var(--sp-card-shadow);
    overflow: hidden;
    position: relative;
    color: var(--sp-text);
}
.card .card-title,
.sp-card .card-title { font-family: var(--sp-font-display); color: var(--sp-heading); }

.card .card-body,
.sp-card .card-body {
    padding: 1.5rem;
    background-color: var(--sp-surface);
}

/* ----- Badge & pill ----- */
.badge,
.badge.bg-primary-subtle {
    background-color: var(--sp-mahogany) !important;
    color: var(--sp-parchment) !important;
    font-family: var(--sp-font-display);
    font-weight: 500;
    letter-spacing: 0.04em;
    padding: 0.375rem 0.75rem;
    border-radius: 999px;
}

/* ----- Liste publication style citation ----- */
.list-unstyled li {
    padding-block: 1rem;
    border-color: var(--sp-tarnish) !important;
}

/* ----- Divider ornement (utilisable au sein des sections) ----- */
.sp-divider {
    text-align: center;
    margin: 2rem 0;
    height: 1.5rem;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24'%3E%3Cline x1='0' y1='12' x2='75' y2='12' stroke='%23B08D57' stroke-width='1'/%3E%3Cline x1='125' y1='12' x2='200' y2='12' stroke='%23B08D57' stroke-width='1'/%3E%3Ccircle cx='100' cy='12' r='4' fill='none' stroke='%23B08D57' stroke-width='1.5'/%3E%3Ccircle cx='100' cy='12' r='1.5' fill='%23B08D57'/%3E%3Cpath d='M100 4 v3 M100 17 v3 M92 12 h3 M105 12 h3' stroke='%23B08D57' stroke-width='1' fill='none'/%3E%3C/svg%3E");
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
}

/* ----- Engrenage décoratif (utilisable en pseudo ou en div) ----- */
.sp-gear {
    display: inline-block;
    width: 48px;
    height: 48px;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23B08D57'%3E%3Cpath d='M12 6.5c-3.04 0-5.5 2.46-5.5 5.5s2.46 5.5 5.5 5.5 5.5-2.46 5.5-5.5-2.46-5.5-5.5-5.5zm0 9a3.5 3.5 0 110-7 3.5 3.5 0 010 7zM22 12l-2.5-1.4.5-2.8-2.7-.6-1.2-2.6L13.4 5 12 2.5 10.6 5 7.9 4.6 6.7 7.2 4 7.8l.5 2.8L2 12l2.5 1.4-.5 2.8 2.7.6 1.2 2.6 2.7-.4L12 21.5l1.4-2.5 2.7.4 1.2-2.6 2.7-.6-.5-2.8L22 12z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
    animation: sp-gear-rotate 30s linear infinite;
}
.sp-gear-reverse { animation-direction: reverse; }
@keyframes sp-gear-rotate {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* ----- Cadre coin orné (à appliquer sur un wrapper .sp-frame) ----- */
.sp-frame {
    position: relative;
    padding: 2rem;
    border: 2px solid var(--sp-brass);
    border-radius: var(--sp-radius);
    background: var(--sp-surface);
}
.sp-frame::before,
.sp-frame::after {
    content: "";
    position: absolute;
    width: 24px;
    height: 24px;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238B4513' stroke-width='2'%3E%3Cpath d='M2 8 V2 H8 M16 2 H22 V8 M22 16 V22 H16 M8 22 H2 V16'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-size: contain;
}
.sp-frame::before { top: -2px; left: -2px; }
.sp-frame::after  { bottom: -2px; right: -2px; transform: rotate(180deg); }

/* ----- Footer ----- */
.sp-footer {
    background-color: var(--sp-ink);
    background-image: linear-gradient(180deg, #1a0e08 0%, var(--sp-ink) 100%);
    color: var(--sp-parchment);
    padding: 3rem 0 1.5rem;
    border-top: 3px double var(--sp-brass);
}
.sp-footer a { color: var(--sp-brass-light); }
.sp-footer a:hover { color: var(--sp-brass); }
.sp-footer h5, .sp-footer h6 { color: var(--sp-brass); }
.sp-footer small { color: var(--sp-brass-light); }
/* Footer fond sombre : forcer les <p>/.small/.text-muted en parchemin pour lisibilité */
.sp-footer p,
.sp-footer .small,
.sp-footer p.small,
.sp-footer .text-muted,
.sp-footer .lead { color: var(--sp-parchment) !important; }
.sp-footer i { color: var(--sp-brass-light); }

/* ----- Liens de pied de page : deux colonnes compactes -----
   Identique sur atelier / comptoir / manufacture (tous utilisent .sp-footer-links).
   Les ~10 liens ne tiennent pas sur une seule colonne -> deux colonnes, interligne
   serré. Règles autoritaires (!important) pour neutraliser les paddings/marges
   définis dans chaque main.css de variante et garder un rendu cohérent. */
.sp-footer .sp-footer-links {
    columns: 2;
    -webkit-columns: 2;
    column-gap: 1.5rem;
    font-size: 0.85rem;
    margin-bottom: 0;
}
.sp-footer .sp-footer-links li {
    break-inside: avoid;
    line-height: 1.25 !important;
    margin-bottom: 0.1rem !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
.sp-footer .sp-footer-links .footer-link,
.sp-footer .sp-footer-links a {
    display: inline-block;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1.25 !important;
    text-decoration: none;
}
/* Sur très petit écran, une seule colonne reste lisible */
@media (max-width: 575.98px) {
    .sp-footer .sp-footer-links { columns: 1; -webkit-columns: 1; }
}

/* ----- Hero générique steampunk (variantes peuvent override) ----- */
.sp-hero {
    padding: 6rem 0 5rem;
    position: relative;
    background-color: var(--sp-bg);
    overflow: hidden;
}
.sp-hero h1 {
    font-family: var(--sp-font-display);
    color: var(--sp-mahogany);
    margin-bottom: 1rem;
}
.sp-hero .lead {
    font-style: italic;
    color: var(--sp-ink-soft);
    max-width: 40rem;
}
.sp-hero .sp-tagline {
    font-family: var(--sp-font-display);
    color: var(--sp-brass);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    font-size: 0.875rem;
    margin-bottom: 1rem;
}
@media (max-width: 767.98px) {
    .sp-hero { padding: 3.5rem 0 2.5rem; }
}

/* ----- Form contact ----- */
.form-control {
    background-color: var(--sp-surface);
    border: 1px solid var(--sp-tarnish);
    border-radius: var(--sp-radius);
    color: var(--sp-text);
    font-family: var(--sp-font-body);
    padding: 0.625rem 0.875rem;
}
.form-control:focus {
    background-color: var(--sp-bone);
    border-color: var(--sp-brass);
    box-shadow: 0 0 0 0.2rem rgba(176, 141, 87, 0.25);
    color: var(--sp-text);
}
.form-label { font-family: var(--sp-font-display); color: var(--sp-heading); font-weight: 600; }

/* ----- Container plus serré pour respiration ----- */
.container, .container-fluid { max-width: 1140px; }

/* =========================================================================
   MODE NUIT STEAMPUNK — "atelier à la lampe à gaz"
   Un vrai dark : fonds brun-noir profonds, texte parchemin, laiton qui
   accroche la lueur. Posé via <html data-bs-theme="dark"> (theme-toggle.js).

   IMPORTANT — spécificité : chaque variante (main.css) réécrit les tokens
   --sp-* dans un :root (0,1,0) chargé APRÈS cette base. On utilise donc
   html[data-bs-theme="dark"] (0,1,1) qui bat :root quel que soit l'ordre,
   sinon le mode nuit serait écrasé par le :root clair de la variante.
   ========================================================================= */
html[data-bs-theme="dark"] {
    /* Tokens sémantiques (remappés par-dessus les :root clairs des variantes) */
    --sp-bg:             #15100A;
    --sp-bg-alt:         #1E160D;
    --sp-surface:        #241B10;
    --sp-section-alt-bg: #1E160D;
    --sp-text:           #E9D9B4;
    --sp-text-muted:     #B59A6C;
    --sp-heading:        #D8BA82;
    --sp-border:         #5A4427;
    --sp-shadow:         rgba(0, 0, 0, 0.55);

    --sp-card-bg:        #241B10;
    --sp-card-border:    #6B5234;
    --sp-card-shadow:
        0 6px 18px rgba(0, 0, 0, 0.5),
        inset 0 0 0 1px rgba(176, 141, 87, 0.25);

    --sp-nav-bg:           #0E0A05;
    --sp-nav-bg-gradient:  linear-gradient(180deg, #150F08 0%, #070402 100%);
    --sp-nav-text:         #D4B786;
    --sp-nav-brand:        #E0C48E;
    --sp-nav-hover:        #F4E4BC;
    --sp-nav-border:       #B08D57;

    /* Images plus assombries la nuit */
    --sp-img-filter: sepia(0.45) saturate(0.8) hue-rotate(-10deg) contrast(1.02) brightness(0.72);

    /* Texture : très légère lueur chaude au lieu du grain clair */
    --sp-body-pattern:
        radial-gradient(circle at 20% 20%, rgba(176, 141, 87, 0.06), transparent 55%),
        radial-gradient(circle at 80% 80%, rgba(184, 115, 51, 0.05), transparent 55%);

    /* Bootstrap 5.3 natif */
    --bs-body-bg:             #15100A;
    --bs-body-color:          #E9D9B4;
    --bs-emphasis-color:      #F4E4BC;
    --bs-border-color:        #3A2D1B;
    --bs-primary-bg-subtle:   #2A2012;
    --bs-secondary-bg-subtle: #221910;
}

/* Liens : laiton clair lisible (sinon acajou trop sombre sur fond nuit) */
html[data-bs-theme="dark"] a { color: var(--sp-brass-light); }
html[data-bs-theme="dark"] a:hover { color: var(--sp-heading); }

/* Utilities Bootstrap "claires" -> surfaces sombres (les _shared sections
   utilisent .bg-white/.bg-light/.text-dark/.text-primary partout) */
html[data-bs-theme="dark"] .bg-white,
html[data-bs-theme="dark"] .bg-light,
html[data-bs-theme="dark"] .bg-secondary-subtle {
    background-color: var(--sp-surface) !important;
    color: var(--sp-text);
}
html[data-bs-theme="dark"] .bg-primary-subtle,
html[data-bs-theme="dark"] .bg-info-subtle,
html[data-bs-theme="dark"] .bg-warning-subtle,
html[data-bs-theme="dark"] .bg-success-subtle,
html[data-bs-theme="dark"] .progress,
html[data-bs-theme="dark"] .bg-primary.bg-opacity-10,
html[data-bs-theme="dark"] .bg-success.bg-opacity-10,
html[data-bs-theme="dark"] .bg-info.bg-opacity-10,
html[data-bs-theme="dark"] .bg-warning.bg-opacity-10 {
    background-color: #2A2012 !important;
}
html[data-bs-theme="dark"] .text-dark { color: var(--sp-text) !important; }
html[data-bs-theme="dark"] .text-primary,
html[data-bs-theme="dark"] .text-primary-emphasis { color: var(--sp-heading) !important; }
html[data-bs-theme="dark"] .text-secondary { color: var(--sp-text-muted) !important; }

/* Outline buttons & héros génériques : texte laiton clair */
html[data-bs-theme="dark"] .btn-outline-primary,
html[data-bs-theme="dark"] .btn-outline-secondary,
html[data-bs-theme="dark"] .btn-outline-info,
html[data-bs-theme="dark"] .btn-outline-success,
html[data-bs-theme="dark"] .btn-sp-outline { color: var(--sp-heading); }
html[data-bs-theme="dark"] .btn-light {
    background-color: var(--sp-surface);
    color: var(--sp-text);
    border-color: var(--sp-border);
}
html[data-bs-theme="dark"] .sp-hero h1 { color: var(--sp-heading); }
html[data-bs-theme="dark"] .sp-hero .lead { color: var(--sp-text-muted); }
html[data-bs-theme="dark"] .form-control:focus { background-color: var(--sp-surface); color: var(--sp-text); }

/* =========================================================================
   AUDIT CONTRASTE — WCAG AA (themes/audit/). Corrige les collisions
   détectées sans toucher aux surfaces de marque (boutons, pilules).
   ========================================================================= */

/* Jour : bootstrap-overrides.css (chargé en dernier) force les liens de
   contenu à --bs-primary (#B08D57), illisible sur parchemin (ratio ~2.3).
   On gagne par la spécificité (body main a), pas par l'ordre de chargement. */
body main a:where(:not([class*="btn"]):not([class*="text-"]):not(.nav-link):not(.navbar-brand):not(.dropdown-item):not(.page-link):not(.breadcrumb-item):not(.is-active)) {
    color: #6B5238;
}

/* Jour : accordéon ouvert forcé à --bs-primary par bootstrap-overrides
   ((0,2,1)) -> encre brune lisible ((0,2,2) le bat quel que soit l'ordre). */
html .accordion-button:not(.collapsed) { color: #6B5238; }
html[data-bs-theme="dark"] .accordion-button:not(.collapsed) { color: var(--sp-heading); }

/* Nuit : tokens d'emphase restés sur les valeurs sombres du jour.
   --bs-primary-text-emphasis pilote les liens de contenu et le fil
   d'Ariane via bootstrap-overrides ; les alertes info/warning/success/
   danger composent texte-emphasis sur fond-subtle. */
html[data-bs-theme="dark"] {
    --sp-brass-icon: var(--sp-brass-light);
    --bs-primary-text-emphasis:   #D8BA82;
    --bs-secondary-text-emphasis: #D4B786;
    --bs-info-text-emphasis:      #DCA96F;
    --bs-info-bg-subtle:          #2A2012;
    --bs-info-border-subtle:      #6B5234;
    --bs-warning-text-emphasis:   #DBB56A;
    --bs-warning-bg-subtle:       #2A2012;
    --bs-success-text-emphasis:   #B5C48A;
    --bs-success-bg-subtle:       #232712;
    --bs-danger-text-emphasis:    #E0A296;
    --bs-danger-bg-subtle:        #2A1512;
}
