/* ============================================================
   MODE SOMBRE — Tarificateur Santé 2026
   Palette "bleu nuit" : fonds profonds, contrastes doux,
   accents lumineux, ombres et transitions discrètes.
   S'applique quand body.theme-sombre est présent.
   ============================================================ */

body.theme-sombre {
    /* Palette centralisée */
    --ts-fond: #0f1420;        /* fond de page */
    --ts-surface: #1a2232;     /* cartes, panneaux */
    --ts-surface-2: #232d42;   /* surfaces surélevées (inputs, hover) */
    --ts-surface-3: #2b3750;   /* hover d'input, boutons clairs */
    --ts-bord: #2e3a52;        /* bordures */
    --ts-bord-soft: #263148;   /* bordures discrètes */
    --ts-texte: #dbe2ee;       /* texte principal */
    --ts-texte-2: #93a1bb;     /* texte secondaire */
    --ts-bleu: #7da2ff;        /* accent bleu */
    --ts-bleu-fond: #1c2c4e;   /* fond bleuté (totaux, badges) */
    --ts-vert: #5fd39a;
    --ts-orange: #f0a35e;
    --ts-rouge: #f07a7a;
}

/* --- Base --- */
html.theme-sombre, body.theme-sombre {
    background: radial-gradient(1200px 600px at 20% -10%, #16203a 0%, #0f1420 55%) fixed !important;
    color: var(--ts-texte) !important;
}
body.theme-sombre ::selection { background: rgba(125,162,255,.30); }

/* Scrollbars discrètes */
body.theme-sombre ::-webkit-scrollbar { width: 10px; height: 10px; }
body.theme-sombre ::-webkit-scrollbar-track { background: var(--ts-fond); }
body.theme-sombre ::-webkit-scrollbar-thumb { background: #33405c; border-radius: 6px; border: 2px solid var(--ts-fond); }
body.theme-sombre ::-webkit-scrollbar-thumb:hover { background: #40507a; }

/* --- Cartes, modales, conteneurs --- */
body.theme-sombre .container,
body.theme-sombre .card,
body.theme-sombre .panel,
body.theme-sombre .modal-box,
body.theme-sombre .filters-container,
body.theme-sombre .stat-card,
body.theme-sombre .boite,
body.theme-sombre .info-panel,
body.theme-sombre .categorie-bloc,
body.theme-sombre #garantiesContainer,
body.theme-sombre .save-bar,
body.theme-sombre .toolbar,
body.theme-sombre .coef-headers {
    background: var(--ts-surface) !important;
    color: var(--ts-texte) !important;
    border-color: var(--ts-bord) !important;
    box-shadow: 0 6px 24px rgba(0,0,0,.35) !important;
}

/* --- Inputs, selects, textareas --- */
body.theme-sombre input,
body.theme-sombre select,
body.theme-sombre textarea {
    background: var(--ts-surface-2) !important;
    color: var(--ts-texte) !important;
    border-color: var(--ts-bord) !important;
    border-radius: 6px;
    transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
body.theme-sombre input:hover,
body.theme-sombre select:hover { border-color: #3d4c6e !important; }
body.theme-sombre input:focus,
body.theme-sombre select:focus,
body.theme-sombre textarea:focus {
    border-color: var(--ts-bleu) !important;
    box-shadow: 0 0 0 3px rgba(125,162,255,.18) !important;
    outline: none !important;
}
body.theme-sombre input::placeholder,
body.theme-sombre textarea::placeholder { color: #6b7a9e !important; }
body.theme-sombre input[type="color"] { background: transparent !important; padding: 0 !important; }
body.theme-sombre input[type="checkbox"],
body.theme-sombre input[type="radio"] { background: initial !important; accent-color: var(--ts-bleu); }
body.theme-sombre input[type="range"] { background: transparent !important; border: 0 !important; box-shadow: none !important; }
body.theme-sombre input:disabled,
body.theme-sombre input[readonly],
body.theme-sombre select:disabled {
    background: #1d2536 !important;
    color: var(--ts-texte-2) !important;
}

/* --- Tables --- */
body.theme-sombre table { background: var(--ts-surface) !important; color: var(--ts-texte) !important; }
body.theme-sombre thead,
body.theme-sombre th { background: #141b2b !important; color: var(--ts-texte-2) !important; border-color: var(--ts-bord) !important; }
body.theme-sombre td { background: transparent !important; border-color: var(--ts-bord-soft) !important; color: var(--ts-texte) !important; }
body.theme-sombre tbody tr:nth-child(even) td { background: rgba(255,255,255,0.025) !important; }
body.theme-sombre tbody tr:hover td { background: rgba(125,162,255,0.07) !important; }

/* --- Onglets --- */
body.theme-sombre .tabs { background: var(--ts-surface) !important; border-radius: 10px; }
body.theme-sombre .tab,
body.theme-sombre .tab-button { background: transparent !important; color: var(--ts-texte-2) !important; transition: color .15s, background .15s; }
body.theme-sombre .tab:hover,
body.theme-sombre .tab-button:hover { color: var(--ts-texte) !important; }
body.theme-sombre .tab.active,
body.theme-sombre .tab-button.active { background: var(--ts-bleu-fond) !important; color: #cdd9ff !important; box-shadow: inset 0 -2px 0 var(--ts-bleu); }
body.theme-sombre .tab-content,
body.theme-sombre .tab-content.active { background: var(--ts-surface) !important; color: var(--ts-texte) !important; }
body.theme-sombre .tab-content *,
body.theme-sombre .section-title,
body.theme-sombre .section-title * { color: var(--ts-texte); }
body.theme-sombre .section-title { border-bottom-color: var(--ts-bord) !important; }
body.theme-sombre .section-total.vide { color: var(--ts-texte-2) !important; }

/* --- Tarificateur : composants --- */
body.theme-sombre .garanties-list { background: var(--ts-surface) !important; }
body.theme-sombre .garanties-entete { background: #141b2b !important; color: var(--ts-texte-2) !important; border-bottom-color: var(--ts-bord) !important; }
body.theme-sombre .garanties-entete * { color: var(--ts-texte-2) !important; }
body.theme-sombre .section-total { background: var(--ts-bleu-fond) !important; color: #a9c3ff !important; border-radius: 6px; }
body.theme-sombre #bloc-equipement-verres { background: var(--ts-surface) !important; border-left-color: var(--ts-bord) !important; }
body.theme-sombre .bloc-equip-entete { background: linear-gradient(180deg, #202a40 0%, #172034 100%) !important; color: #a9c3ff !important; border-color: var(--ts-bord) !important; }
body.theme-sombre .bloc-equip-entete * { color: #a9c3ff !important; }
body.theme-sombre .garantie-cout { background: #16382b !important; color: #9fe8c4 !important; border-radius: 5px; }
body.theme-sombre .garantie-cout.indispo { background: #232d42 !important; color: var(--ts-texte-2) !important; }
body.theme-sombre .garantie-cout.vide { background: transparent !important; color: var(--ts-texte-2) !important; }
body.theme-sombre .unite-display { background: var(--ts-surface-2) !important; color: var(--ts-texte) !important; border-color: var(--ts-bord) !important; }
body.theme-sombre .result-card { background: var(--ts-surface) !important; color: var(--ts-texte) !important; border-left-color: var(--ts-bleu) !important; box-shadow: 0 6px 20px rgba(0,0,0,.3) !important; }
body.theme-sombre .result-card * { color: var(--ts-texte) !important; }
body.theme-sombre .result-card h3 { color: var(--ts-texte-2) !important; }
body.theme-sombre .results-grid { background: transparent !important; }

/* --- Capture large des blocs restants --- */
body.theme-sombre .demographie-bloc,
body.theme-sombre .infos-bloc,
body.theme-sombre .synthese-bloc,
body.theme-sombre .bloc,
body.theme-sombre fieldset,
body.theme-sombre .form-group,
body.theme-sombre .col,
body.theme-sombre .row > div { background-color: transparent !important; }
body.theme-sombre h1, body.theme-sombre h2, body.theme-sombre h3, body.theme-sombre h4,
body.theme-sombre label, body.theme-sombre p, body.theme-sombre span, body.theme-sombre div,
body.theme-sombre li, body.theme-sombre a { color: var(--ts-texte); }
body.theme-sombre hr { border-color: var(--ts-bord) !important; }
body.theme-sombre .garantie-row { background: var(--ts-surface) !important; color: var(--ts-texte) !important; border-color: var(--ts-bord-soft) !important; }
body.theme-sombre .garantie-row * { color: var(--ts-texte) !important; }
body.theme-sombre .garantie-row .garantie-label { color: var(--ts-texte) !important; }
body.theme-sombre .garantie-row input.garantie-val { background: var(--ts-surface-2) !important; color: var(--ts-texte) !important; border-color: var(--ts-bord) !important; }
body.theme-sombre .garantie-row input.garantie-val.lien-suiveur { background: #22305a !important; color: #a9c3ff !important; }
body.theme-sombre .garantie-row input.garantie-val.garantie-verrouillee { background: #1d2536 !important; color: var(--ts-texte-2) !important; }
body.theme-sombre .garantie-row .unite { background: var(--ts-surface-2) !important; color: var(--ts-texte) !important; border-color: var(--ts-bord) !important; }
body.theme-sombre .garantie-row .garantie-cout { color: var(--ts-texte) !important; }
body.theme-sombre .garantie-row .garantie-cout.vide { color: var(--ts-texte-2) !important; }
body.theme-sombre .garantie-row:hover { background: #202a40 !important; }
body.theme-sombre .categorie-bloc .garantie-row:nth-child(even) { background: #1e2739 !important; }
body.theme-sombre .categorie-bloc .garantie-row:nth-child(even):hover { background: #232f49 !important; }

/* --- Messages --- */
body.theme-sombre .message.info { background: #17304e !important; color: #bee3ff !important; border-color: #285a8f !important; }
body.theme-sombre .message.error { background: #47201f !important; color: #ffc9c9 !important; border-color: #8f2f2f !important; }
body.theme-sombre .message.success { background: #143829 !important; color: #b7f4d4 !important; border-color: #2f855a !important; }

/* --- Boutons --- */
body.theme-sombre .btn-light,
body.theme-sombre .btn-secondary {
    background: var(--ts-surface-2) !important; color: var(--ts-texte) !important; border-color: var(--ts-bord) !important;
    transition: background .15s ease, transform .1s ease;
}
body.theme-sombre .btn-light:hover,
body.theme-sombre .btn-secondary:hover { background: var(--ts-surface-3) !important; }
body.theme-sombre .btn-light:active,
body.theme-sombre .btn-secondary:active { transform: translateY(1px); }

/* --- Header (dégradé d'accent conservé) --- */
body.theme-sombre .header { color: white !important; }
body.theme-sombre .header * { color: white !important; }

/* --- Sidebar --- */
body.theme-sombre .sa-sidebar { background: var(--ts-surface) !important; color: var(--ts-texte) !important; box-shadow: 4px 0 20px rgba(0,0,0,.4) !important; }
body.theme-sombre .sa-sidebar .sa-item { color: var(--ts-texte) !important; border-radius: 8px; transition: background .15s; }
body.theme-sombre .sa-sidebar .sa-item:hover { background: var(--ts-surface-2) !important; }
body.theme-sombre .sa-sidebar .sa-item.active { background: var(--ts-bleu-fond) !important; }

/* --- Pastilles --- */
body.theme-sombre .compteur { background: var(--ts-surface-2) !important; color: var(--ts-texte) !important; }

/* --- Bouton de bascule du thème --- */
.theme-toggle-btn {
    background: rgba(255,255,255,0.15);
    border: 1px solid rgba(255,255,255,0.25);
    color: white;
    width: 38px; height: 38px;
    border-radius: 10px;
    cursor: pointer;
    font-size: 16px;
    display: inline-flex; align-items: center; justify-content: center;
    transition: background 0.15s, transform 0.15s;
}
.theme-toggle-btn:hover { background: rgba(255,255,255,0.25); transform: scale(1.05); }
.theme-toggle-btn:active { transform: scale(0.95); }

/* --- Panneau gauche "Informations Générales" --- */
body.theme-sombre .panneau-gauche-inner {
    background: var(--ts-surface) !important;
    color: var(--ts-texte) !important;
    box-shadow: 0 8px 30px rgba(0,0,0,0.45) !important;
    border-radius: 12px;
}
body.theme-sombre .panneau-gauche-inner .section-title,
body.theme-sombre .panneau-gauche-inner .garantie-label,
body.theme-sombre .panneau-gauche-inner label { color: var(--ts-texte) !important; }
body.theme-sombre .panneau-gauche-inner input,
body.theme-sombre .panneau-gauche-inner select {
    background: #141b2b !important;
    color: var(--ts-texte) !important;
    border-color: var(--ts-bord) !important;
}
body.theme-sombre .panneau-gauche-inner input.nom-societe { background: #141b2b !important; color: var(--ts-texte) !important; }
body.theme-sombre .panneau-toggle-btn { background: #141b2b !important; color: var(--ts-texte) !important; border-color: var(--ts-bord) !important; }

/* --- Panneau flottant de calcul --- */
body.theme-sombre #panneauCalcul { background: var(--ts-surface) !important; border-color: var(--ts-bord) !important; box-shadow: 0 12px 40px rgba(0,0,0,.5) !important; }
body.theme-sombre #panneauCalcul .pc-titre { color: var(--ts-texte-2) !important; }
body.theme-sombre #panneauCalcul .pc-toggle { background: #141b2b !important; color: var(--ts-texte) !important; border-color: var(--ts-bord) !important; }

/* ============================================================
   Composants récents : widget âge, tranches d'âge, modale types,
   simulateur (tableau unique), curseurs %, bascule tarification.
   ============================================================ */

/* --- Widget répartition par âge (#dn_widget) --- */
body.theme-sombre #dn_widget .workspace { background: var(--ts-surface) !important; border-color: var(--ts-bord) !important; box-shadow: 0 10px 34px rgba(0,0,0,.45) !important; }
body.theme-sombre #dn_widget .topbar { background: var(--ts-surface) !important; border-color: var(--ts-bord) !important; }
body.theme-sombre #dn_widget .panel { background: #141b2b !important; border-color: var(--ts-bord) !important; }
body.theme-sombre #dn_widget .summary { background: #141b2b !important; border-color: var(--ts-bord) !important; }
body.theme-sombre #dn_widget .table-panel { background: var(--ts-surface) !important; }
body.theme-sombre #dn_widget thead th { background: #141b2b !important; color: var(--ts-texte-2) !important; }
body.theme-sombre #dn_widget tbody th { background: var(--ts-surface) !important; color: var(--ts-texte) !important; }
body.theme-sombre #dn_widget tfoot th { background: var(--ts-surface) !important; color: var(--ts-texte) !important; }
body.theme-sombre #dn_widget .dial::before { background: var(--ts-surface) !important; }
body.theme-sombre #dn_widget .dial-value { color: var(--ts-texte) !important; }
body.theme-sombre #dn_widget .eyebrow { color: var(--ts-vert) !important; }
/* Cellules bleues (#356bf2) + inputs clairs du widget : accents conservés */

/* --- Colonne "Tranches d'âge" --- */
body.theme-sombre #blocTranchesAge { background: var(--ts-surface) !important; }
body.theme-sombre #blocTranchesAge .demo-titre { background: #141b2b !important; color: var(--ts-texte) !important; }
body.theme-sombre #blocTranchesAge .garantie-label { background: var(--ts-surface) !important; color: var(--ts-texte) !important; }
body.theme-sombre #switchTranchesAgeWrap { background: var(--ts-surface) !important; border: 1px solid var(--ts-bord-soft); border-radius: 8px; }

/* --- Séparateur Démographie / widget --- */
body.theme-sombre .demo-splitter::before { background: var(--ts-bord) !important; }
body.theme-sombre .demo-splitter:hover::before,
body.theme-sombre .demo-splitter.actif::before { background: var(--ts-bleu) !important; }

/* --- Modale "Types de population" --- */
body.theme-sombre .gt-modal-overlay { background: rgba(5,8,15,.62) !important; backdrop-filter: blur(3px); }
body.theme-sombre .gt-modal-box { background: var(--ts-surface) !important; color: var(--ts-texte) !important; box-shadow: 0 24px 70px rgba(0,0,0,.6) !important; border: 1px solid var(--ts-bord); }
body.theme-sombre .gt-modal-close { color: var(--ts-texte-2) !important; }
body.theme-sombre .gt-modal-close:hover { background: var(--ts-surface-2) !important; color: var(--ts-texte) !important; }

/* --- Répartition : blocs % avec curseur --- */
body.theme-sombre .pct-wrap { background: #141b2b !important; border-color: var(--ts-bord) !important; }
body.theme-sombre .pct-wrap .pct-in { border-color: var(--ts-bord) !important; }
body.theme-sombre .pct-wrap .pct-in[readonly] { background: #1c2740 !important; color: #a9c3ff !important; }
body.theme-sombre .pct-slider { accent-color: var(--ts-bleu); }
body.theme-sombre .pct-wrap.grp-retraite { background: #2b1f13 !important; border-color: #5d4326 !important; }
body.theme-sombre .pct-wrap.grp-retraite .pct-in { border-color: #5d4326 !important; }
body.theme-sombre .pct-wrap.grp-retraite .pct-in[readonly] { background: #3a2c1a !important; color: var(--ts-orange) !important; }
body.theme-sombre .pct-slider.grp-retraite { accent-color: var(--ts-orange); }
body.theme-sombre .pct-auto { color: #6b7a9e !important; }
body.theme-sombre .pct-wrap.grp-retraite .pct-auto { color: #b7855a !important; }

/* --- Simulateur : tableau unique --- */
body.theme-sombre .simu-tbl { border-radius: 10px; overflow: hidden; box-shadow: 0 8px 28px rgba(0,0,0,.35); }
body.theme-sombre .simu-tbl .simu-head th { background: linear-gradient(180deg, #1c2740, #141b2b) !important; color: #a9c3ff !important; }
body.theme-sombre .simu-tbl .simu-sin td { background: #172033 !important; }
body.theme-sombre .simu-tbl .simu-sin.simu-sin-titre td { background: #141b2b !important; color: #a9c3ff !important; }
body.theme-sombre .simu-tbl tbody.simu-opt tr:nth-child(even):not(.simu-total):not(.simu-head) { background: rgba(255,255,255,0.025) !important; }
body.theme-sombre .simu-tbl tbody.simu-opt tr:hover:not(.simu-total):not(.simu-head) td { background: rgba(125,162,255,0.08) !important; }
body.theme-sombre .simu-total td { background: var(--ts-bleu-fond) !important; color: #a9c3ff !important; }
body.theme-sombre .simu-in { background: var(--ts-surface-2) !important; color: var(--ts-texte) !important; border-color: var(--ts-bord) !important; }
body.theme-sombre .simu-in:focus { outline: none !important; border-color: var(--ts-bleu) !important; box-shadow: 0 0 0 3px rgba(125,162,255,.18) !important; }
body.theme-sombre .col-rz:hover { background: rgba(125,162,255,.25) !important; }

/* --- Bascule TARIFICATION EURO / % PMSS --- */
body.theme-sombre #TypeDeTarification { background: #141b2b !important; border-color: var(--ts-bord) !important; }
body.theme-sombre #TypeDeTarification .tt-knob { background: var(--ts-surface-3) !important; box-shadow: 0 1px 6px rgba(0,0,0,.55) !important; }
body.theme-sombre #TypeDeTarification .tt-opt { color: #6b7a9e !important; }
body.theme-sombre #TypeDeTarification.mode-euro .tt-euro { color: var(--ts-vert) !important; }
body.theme-sombre #TypeDeTarification.mode-pmss .tt-pmss { color: #a9c3ff !important; }
body.theme-sombre .simu-sp-final td { background: #141b2b !important; color: #a9c3ff !important; border-top-color: var(--ts-bord) !important; }
body.theme-sombre .simu-total-general td { background: #1c2433 !important; color: #dbe2ee !important; border-top-color: var(--ts-bord) !important; }
