/*
 * ============================================================
 *  BATIFREE DARK THEME
 *  DevExpress XAF Blazor — Fluent mode (dark)
 *
 *  Principe
 *  ────────
 *  Ce fichier ne contient AUCUNE règle de construction : toute la
 *  structure (boutons, grille, formulaires, popups, onglets…) reste
 *  dans batifree-light.css. Ici on redéfinit uniquement les tokens
 *  de couleur, puis quelques exceptions là où une couleur était
 *  écrite en dur dans le thème light.
 *
 *  Ordre de chargement (appsettings.json, groupe "Batifree Dark") :
 *    1. _content/DevExpress.ExpressApp.Blazor/dx.dark.css
 *    2. css/batifree-light.css      (structure + tokens light)
 *    3. css/batifree-dark.css       (ce fichier — doit être EN DERNIER)
 *
 *  Sections
 *  ────────
 *  1.  Neutres, marque, sémantiques (tokens --batifree-*)
 *  2.  Alias sémantiques (texte, encre, filtres d'icônes)
 *  3.  Tokens DevExpress (--dxds-*, --bs-*) dépendant du mode
 *  4.  Page, backdrop
 *  5.  Exceptions (couleurs codées en dur côté light)
 *
 *  Palette : neutres teintés teal (teinte ≈ 190°) autour de
 *  --batifree-dark-teal (#164147, inchangé : sidebar). L'orange
 *  #ff5a00 est conservé tel quel ; seules ses teintes pâles
 *  (primary-10/20/30/40) deviennent des teintes sombres.
 * ============================================================
 */


/* ============================================================
   1. TOKENS --batifree-*  (mêmes noms que le thème light)
   Sélecteurs identiques à ceux du bloc 1 de batifree-light.css.
   ============================================================ */
[data-bs-theme=dark],
.dxbl-theme-fluent-mode-dark,
.dxbl-theme-dark {
    color-scheme: dark;

    /* ── Neutres (échelle inversée, teintée teal) ───────────── */
    --batifree-neutral-0: #14262a;   /* cartes, popups, lignes impaires */
    --batifree-neutral-5: #112124;
    --batifree-neutral-10: #0e1c1f;  /* page, champs, lignes paires */
    --batifree-neutral-20: #1b3237;  /* hover */
    --batifree-neutral-30: #244046;  /* bordures, fonds désactivés */
    --batifree-neutral-40: #2d4f56;
    --batifree-neutral-50: #3a626a;
    --batifree-neutral-60: #4b7680;
    --batifree-neutral-70: #5f8790;  /* texte désactivé */
    --batifree-neutral-80: #8aa9af;  /* texte secondaire, placeholder */
    --batifree-neutral-90: #a9c1c5;
    --batifree-neutral-100: #d3e0e2; /* texte courant */
    --batifree-neutral-110: #e1eaeb;
    --batifree-neutral-120: #edf3f3;
    --batifree-neutral-130: #f4f8f8; /* titres */
    --batifree-neutral-140: #fafcfc;

    /* ── Marque — orange (teintes pâles → teintes sombres) ──── */
    --batifree-primary-10: #33261f;
    --batifree-primary-20: #432b1d;
    --batifree-primary-30: #5c3520;
    --batifree-primary-40: #a9663f;  /* texte désactivé sur primary-20 */

    /* ── Marque — violet ────────────────────────────────────── */
    --batifree-secondary-10: #2b2640;
    --batifree-secondary-20: #3d3558;
    --batifree-secondary-30: #4f4570;
    --batifree-secondary-40: #6e6390;
    --batifree-secondary-100: #7a6fa0;
    --batifree-secondary-110: #6a5f90;
    --batifree-secondary-120: #5b5180;

    /* ── Danger ─────────────────────────────────────────────── */
    --batifree-danger-10: #3a1618;
    --batifree-danger-20: #5a2124;
    --batifree-danger-40: #8f3a3e;
    --batifree-danger-90: #d93036;   /* fond de bouton (texte blanc 4.7:1) */
    --batifree-danger-110: #b3262b;
    --batifree-danger-130: #ff9ea1;  /* texte sur fond danger-10 */

    /* ── Info ───────────────────────────────────────────────── */
    --batifree-info-10: #0f1f33;
    --batifree-info-20: #12283f;
    --batifree-info-30: #173352;
    --batifree-info-40: #1f4a78;
    --batifree-info-50: #2a6199;
    --batifree-info-90: #2368b8;
    --batifree-info-100: #1c5698;
    --batifree-info-110: #164579;

    /* ── Success ────────────────────────────────────────────── */
    --batifree-success-10: #0f2a1b;
    --batifree-success-20: #12301f;
    --batifree-success-30: #17402a;
    --batifree-success-40: #1f5a3a;
    --batifree-success-50: #2a7a4e;
    --batifree-success-60: #2f8f5b;
    --batifree-success-90: #1a7f4b;
    --batifree-success-100: #176b40;
    --batifree-success-110: #125a35;

    /* ── Warning ────────────────────────────────────────────── */
    --batifree-warning-10: #2b2109;
    --batifree-warning-20: #36290f;
    --batifree-warning-30: #4a3a12;
    --batifree-warning-40: #6b4f12;

    /* ── Ombres ─────────────────────────────────────────────── */
    --batifree-shadow-sm: 0 4px 10px rgba(0, 0, 0, 0.25);
}


/* ============================================================
   2. ALIAS SÉMANTIQUES
   Introduits dans batifree-light.css (valeurs light identiques
   à l'ancien rendu) ; redéfinis ici pour le dark.
   --batifree-white reste #fffefd : texte posé sur un fond de
   marque (orange, danger…), il ne doit jamais s'assombrir.
   ============================================================ */
[data-bs-theme=dark],
.dxbl-theme-fluent-mode-dark,
.dxbl-theme-dark {
    --batifree-solid-bg: var(--batifree-neutral-0);
    --batifree-text-strong: #f4f8f8;

    /* Texte "encre" (était dark-teal en light) */
    --batifree-ink: #e1eaeb;
    --batifree-ink-on-tint: #ffe4d6;     /* sur teintes orange (boutons secondaires) */
    --batifree-ink-on-violet: #c9c1de;   /* sur teintes violet (boutons tertiaires) */

    /* Icônes PNG sombres : filtres → clair */
    --batifree-filter-ink: brightness(0) invert(1);
    --batifree-filter-disabled-primary: brightness(0) invert(1) opacity(0.35);
    --batifree-filter-placeholder: brightness(0) saturate(0%) invert(57%);
    --batifree-filter-placeholder-active: brightness(0) invert(1);
    --batifree-filter-placeholder-disabled: brightness(0) saturate(0%) invert(35%);
}


/* ============================================================
   3. TOKENS DEVEXPRESS DÉPENDANTS DU MODE
   Le mapping --dxds-* → --batifree-* (section 2b du light) est
   réutilisé tel quel : il suit automatiquement les tokens
   redéfinis ci-dessus. Ne sont redéclarés ici que les tokens
   pour lesquels "fond" et "texte" partageaient la même
   variable --batifree-* (texte sémantique clair sur fond sombre)
   ou qui contenaient une couleur en dur.
   ============================================================ */
[data-bs-theme=dark],
.dxbl-theme-fluent-mode-dark,
.dxbl-theme-dark {
    /* ── Texte — orange (hover/pressed plus clairs en dark) ─── */
    --dxds-color-content-primary-default-hovered: #ff7a33;
    --dxds-color-content-primary-default-active: #ff8f55;

    /* ── Texte — violet ─────────────────────────────────────── */
    --dxds-color-content-secondary-default-rest: #a99fc4;
    --dxds-color-content-secondary-default-hovered: #bcb3d2;
    --dxds-color-content-secondary-default-active: #cdc6df;

    /* ── Texte — danger / info / success / warning ──────────── */
    --dxds-color-content-danger-default-rest: #ff6b6f;
    --dxds-color-content-danger-default-hovered: #ff8588;
    --dxds-color-content-danger-default-active: #ffa0a2;
    --dxds-color-content-info-default-rest: #58a6ff;
    --dxds-color-content-info-default-hovered: #7ab8ff;
    --dxds-color-content-info-default-active: #9bc9ff;
    --dxds-color-content-success-default-rest: #4cc38a;
    --dxds-color-content-success-default-hovered: #6fd6a2;
    --dxds-color-content-success-default-active: #8fe0b8;
    --dxds-color-content-warning-default-rest: #f5a524;
    --dxds-color-content-warning-default-hovered: #ffb84d;
    --dxds-color-content-warning-default-active: #ffc978;

    /* ── Fond danger "pressed" (le token light pointait vers
          danger-130, devenu une couleur de texte) ──────────── */
    --dxds-color-surface-danger-default-active: #8f1f24;

    /* ── Fonds utilitaires (pastels en dur côté light) ──────── */
    --dxds-color-surface-utility-blue-default-rest: #12283f;
    --dxds-color-surface-utility-blue-subdued-rest: #0f1f33;
    --dxds-color-surface-utility-cyan-default-rest: #0f2f35;
    --dxds-color-surface-utility-cyan-subdued-rest: #0c2428;
    --dxds-color-surface-utility-green-default-rest: #12301f;
    --dxds-color-surface-utility-green-subdued-rest: #0f2a1b;
    --dxds-color-surface-utility-indigo-subdued-rest: #1a1f3d;
    --dxds-color-surface-utility-pink-subdued-rest: #33182b;
    --dxds-color-surface-utility-red-subdued-rest: #2b1214;
    --dxds-color-surface-utility-teal-subdued-rest: #0f2a28;
    --dxds-color-surface-utility-yellow-subdued-rest: #2b2109;

    /* ── Backdrop et ombres ─────────────────────────────────── */
    --dxds-color-surface-backdrop-default-rest: rgba(3, 10, 12, 0.65);
    --dxds-color-shadow-ambient: rgba(0, 0, 0, 0.30);
    --dxds-color-shadow-key: rgba(0, 0, 0, 0.40);
    --dxds-color-shadow-ambient-darker: rgba(0, 0, 0, 0.40);
    --dxds-color-shadow-key-darker: rgba(0, 0, 0, 0.55);

    /* ── Bootstrap : valeurs RGB / emphasis en dur côté light ─ */
    --bs-light-rgb: 14, 28, 31;
    --bs-primary-text-emphasis: #ffbb99;
    --bs-secondary-text-emphasis: #c9c1de;
}


/* ============================================================
   4. PAGE, BACKDROP
   Le fond de page est plus sombre que les cartes (neutral-10)
   pour conserver l'élévation du thème light (cartes plus claires
   que la page).
   ============================================================ */
:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark),
:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) body {
    background-color: var(--batifree-neutral-10);
    color: var(--batifree-neutral-100);
}

:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) .dxbl-modal-dialog-backdrop,
:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) .modal-backdrop {
    background-color: rgba(3, 10, 12, 0.65) !important;
}


/* ============================================================
   5. EXCEPTIONS — couleurs codées en dur dans batifree-light.css
   ============================================================ */

/* Onglets Contact / Facturation / Chantier (violet) — section 19 */
:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) .batifree-cfc-tabs dxbl-scroll-viewer ul[role="tablist"]::after {
    background: #2b2640 !important;
}

:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) .batifree-cfc-tabs dxbl-scroll-viewer ul[role="tablist"] > li:has(dxbl-tab-item.dxbl-active)::after {
    background: #9d92b8 !important;
}

:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) .batifree-cfc-tabs dxbl-tab-item.dxbl-tabs-item:not(.dxbl-active):hover {
    background: rgba(157, 146, 184, 0.12) !important;
}

:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) .batifree-cfc-tabs dxbl-tab-item.dxbl-tabs-item:not(.dxbl-active):active {
    background: rgba(157, 146, 184, 0.20) !important;
}

:is([data-bs-theme=dark], .dxbl-theme-fluent-mode-dark, .dxbl-theme-dark) .cardstack-arrow:hover:not(:disabled) {
    background: rgba(255, 90, 0, 0.15);
}

/* ============================================================
   5b. COMPOSANTS .razor.css avec fond codé en dur
   (le CSS scopé Blazor a une spécificité (0,2,0) → préfixe body)
   ============================================================ */
body.dxbl-theme-dark .batifree-multistat-card {
    background: var(--batifree-neutral-0);
}

/* ============================================================
   6. SIDEBAR (sidebar.css est chargé APRÈS ce fichier et déclare
   ses tokens sur :root → body.dxbl-theme-dark (0,1,1) l'emporte)
   Tokens dérivés redéclarés en littéral car var() est résolu sur :root.
   ============================================================ */
body.dxbl-theme-dark {
    --sidebar-surface: #0a1517;
    --sidebar-field-surface: #10232a;
    --sidebar-field-surface-hover: #17313a;
    --sidebar-field-border: #1f3a41;
    --sidebar-field-border-hover: #2a4b54;
    --sidebar-field-border-focus: #a9663f;
    --sidebar-text-on-dark: #e1eaeb;
    --sidebar-text-placeholder: #7f9296;
    --sidebar-text-muted: #7f9296;
    --sidebar-nav-icon-hover-filter: none;
    --sidebar-nav-item-text: #e1eaeb;
    --sidebar-nav-item-hover-surface: #33261f;
    --sidebar-nav-item-hover-text: #ffe4d6;
    --sidebar-nav-item-pressed-surface: #432b1d;
    --sidebar-nav-item-selected-surface: #ff5a00;
    --sidebar-nav-item-selected-text: #fffefd;
    --sidebar-nav-subitem-text: #b4c3c6;
    --sidebar-nav-section-text: #7f9296;
    --sidebar-tooltip-surface: #14262a;
    --sidebar-tooltip-border: #244046;
    --sidebar-tooltip-text: #e1eaeb;
}

/* ============================================================
   END OF BATIFREE DARK THEME
   ============================================================
*/
