/* ==========================================================================
   Overrides Color Admin — BankIris
   ==========================================================================
   Le thème Color Admin v5.5.2 (Default Flat) rend les .btn-light
   avec un texte blanc sur fond gris très clair → illisibilité.
   On force ici un contraste correct pour tous les btn-light de l'app.
   -------------------------------------------------------------------------- */

.btn.btn-light {
    background-color: #f4f6f8;
    border-color: #d8dce0;
    color: #2c3e50;
}

.btn.btn-light:hover:not(:disabled),
.btn.btn-light:focus:not(:disabled) {
    background-color: #e6e9ec;
    border-color: #c5cad0;
    color: #1a232c;
}

.btn.btn-light:active:not(:disabled),
.btn.btn-light.active {
    background-color: #d8dce0 !important;
    border-color: #b3b9bf !important;
    color: #1a232c !important;
}

.btn.btn-light:disabled,
.btn.btn-light.disabled {
    background-color: #f4f6f8;
    border-color: #e1e5e8;
    color: #9aa3ab;
    opacity: 0.7;
}

/* Icône poubelle : on garde le rouge mais lisible. */
.btn.btn-light.text-danger {
    color: #d63031 !important;
}
.btn.btn-light.text-danger:hover:not(:disabled) {
    background-color: #fde2e2;
    border-color: #f5b3b3;
    color: #b51d1f !important;
}

/* ==========================================================================
   Drop zone — upload de PDFs par drag & drop ou click.
   ========================================================================== */
.bk-dropzone {
    position: relative;
    border: 2px dashed #cbd5e1;
    border-radius: 0.5rem;
    background-color: #f8fafc;
    padding: 2rem 1rem;
    text-align: center;
    cursor: pointer;
    transition: background-color .15s, border-color .15s;
}
.bk-dropzone:hover {
    background-color: #f1f5f9;
    border-color: #94a3b8;
}
.bk-dropzone.is-dragover {
    background-color: #ccfbf1;
    border-color: #14b8a6;
    border-style: solid;
}
.bk-dropzone .bk-dropzone-input {
    /* L'InputFile natif couvre toute la zone — clic n'importe où l'ouvre. */
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}
.bk-dropzone-icon {
    font-size: 2.5rem;
    color: #14b8a6;
    margin-bottom: 0.5rem;
}

/* Pile de fichiers ajoutés sous la dropzone. */
.bk-file-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.375rem;
    background: #fff;
    margin-top: 0.5rem;
}
.bk-file-row + .bk-file-row { margin-top: 0.375rem; }
.bk-file-row .bk-file-name {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bk-file-row .bk-file-size {
    color: #64748b;
    font-size: 0.85em;
}

/* ==========================================================================
   Filtres Excel-like sur les en-têtes de colonne (Date, Catégorie)
   ========================================================================== */
.bk-filter-th { position: relative; }

.bk-filter-icon {
    cursor: pointer;
    opacity: 0.45;
    margin-left: 0.35rem;
    font-size: 0.85em;
    transition: opacity .12s, color .12s;
}
.bk-filter-icon:hover { opacity: 1; }
.bk-filter-icon.active {
    opacity: 1;
    color: #14b8a6;
}

.bk-filter-popup {
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1040;
    min-width: 300px;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 0.5rem;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15);
    padding: 0.75rem;
    margin-top: 0.25rem;
    color: #1e293b;
    font-weight: normal;
    text-align: left;
    user-select: none;
}
.bk-filter-popup-backdrop {
    position: fixed;
    inset: 0;
    z-index: 1039;
    background: transparent;
}
.bk-filter-popup .filter-list {
    max-height: 260px;
    overflow-y: auto;
    border: 1px solid #e2e8f0;
    border-radius: 0.25rem;
    padding: 0.25rem 0.5rem;
}
.bk-filter-popup .filter-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.2rem 0.1rem;
    font-size: 0.875rem;
}
.bk-filter-popup .filter-row .filter-row-count {
    margin-left: auto;
    color: #64748b;
    font-size: 0.8em;
}
.bk-filter-popup .filter-row label {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin: 0;
    cursor: pointer;
}
.bk-filter-popup .filter-divider {
    border-top: 1px solid #e2e8f0;
    margin: 0.4rem 0;
}

/* Bouton swap débit/crédit — discret, apparaît au hover sur la ligne. */
.bk-swap-btn {
    border: 0;
    background: transparent;
    padding: 0 0.25rem;
    color: #94a3b8;
    cursor: pointer;
    opacity: 0;
    transition: opacity .12s, color .12s;
    line-height: 1;
}
tr:hover .bk-swap-btn { opacity: 1; }
.bk-swap-btn:hover { color: #14b8a6; }

/* Sélecteur de taxonomie (Classique / Analyse RAC) — pendant teal. */
.btn.btn-outline-teal {
    background-color: transparent;
    border-color: #14b8a6;
    color: #0f766e;
}
.btn.btn-outline-teal:hover:not(:disabled) {
    background-color: #ccfbf1;
    border-color: #0d9488;
    color: #115e59;
}
.btn.btn-outline-teal.active,
.btn.btn-outline-teal:active:not(:disabled),
.btn-check:checked + .btn.btn-outline-teal {
    background-color: #14b8a6 !important;
    border-color: #0d9488 !important;
    color: #fff !important;
}

/* ===== Titres de rubriques sidebar (Extraction / Vérifications / Aide / …) =====
   Style ColorAdmin par défaut = 11px gris pâle très discret, indistinct des items.
   On affirme le contraste avec un petit bandeau teal façon « pill pleine largeur » :
   fond teal subtil + texte teal clair uppercase + bordure droite arrondie pour
   marquer franchement la séparation entre rubriques. */
.app-sidebar .menu .menu-header {
    margin: 16px 0 4px;
    padding: 7px 20px;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    line-height: 1.5;
    color: #5eead4;                          /* teal-300, lisible sur sidebar dark */
    background: rgba(20, 184, 166, 0.18);    /* teal-500 à 18 % d'opacité */
    border-radius: 0;                        /* pleine largeur, pas de pill */
}
/* Premier menu-header : margin-top serré, le sidebar a déjà son padding-top. */
.app-sidebar .menu > .menu-header:first-child {
    margin-top: 8px;
}

/* ===== Icônes colorées par module (sidebar + titres de pages h1) ===== */
/* Bleu, vert, rouge, violet, orange, cyan — logique métier (cf. MainLayout). */
/* Règle générale (sans préfixe .menu-icon) → s'applique partout où la classe */
/* est utilisée : icône sidebar, icône devant le h1.page-header de chaque page. */
.bk-icon-home       { color: #0d9488; }  /* teal — tableau de bord (HOME 2026-05-21) */
.bk-icon-releve     { color: #3b82f6; }  /* bleu — transactions/banque */
.bk-icon-bulletin   { color: #10b981; }  /* vert — revenu qui rentre */
.bk-icon-avis       { color: #ef4444; }  /* rouge — fiscalité */
.bk-icon-historique { color: #8b5cf6; }  /* violet — archive */
.bk-icon-croisement { color: #f59e0b; }  /* orange — consolidation / vérification */
.bk-icon-coherence  { color: #6366f1; }  /* indigo — cohérence interne (vérification multi-bulletins) */
.bk-icon-coherence-releve { color: #8b5cf6; }  /* violet — cohérence relevé bancaire (COH-R, 2026-05-12) */
.bk-icon-guide      { color: #0284c7; }  /* cyan — doc, neutre vs métier */
.bk-icon-credits    { color: #ca8a04; }  /* or/jaune — pièces de monnaie (CRED-5) */
.bk-icon-demelage   { color: #ec4899; }  /* rose — action de tri / démêlage (DEM-7) */
.bk-icon-dossiers   { color: #0d9488; }  /* teal foncé — conteneur dossier (DEM-7) */

/* ===== Badges du header — tenant courant + solde crédits (CRED-6.2) ===== */
/* Plus visibles que les badges Bootstrap par défaut : 600 weight, padding généreux,
   font-size légèrement augmenté pour que l'info clé (solde) soit lisible au scan. */
.bk-header-badge {
    font-size: 0.92rem !important;
    font-weight: 600 !important;
    padding: 0.42rem 0.75rem !important;
    line-height: 1.1 !important;
    border-width: 1.5px !important;
    letter-spacing: 0.01em;
}
.bk-header-badge i { font-size: 0.95em; }

/* Palette dédiée du badge crédits : tons or/ambre (cohérent avec l'icône fa-coins
   qui est déjà en or via .bk-icon-credits) — visuellement très différent du teal
   du badge tenant. */
.bk-credits-badge-ok {
    background-color: #fef3c7 !important;  /* amber-100 */
    color: #854d0e !important;              /* amber-800 */
    border-color: #fbbf24 !important;       /* amber-400 */
}
.bk-credits-badge-warning {
    background-color: #ffedd5 !important;  /* orange-100 */
    color: #9a3412 !important;              /* orange-800 */
    border-color: #fb923c !important;       /* orange-400 */
}
.bk-credits-badge-danger {
    background-color: #fee2e2 !important;  /* red-100 */
    color: #991b1b !important;              /* red-800 */
    border-color: #f87171 !important;       /* red-400 */
}
.bk-credits-badge-unlimited {
    background-color: #fef9c3 !important;  /* yellow-100, plus clair pour différencier d'OK */
    color: #713f12 !important;              /* yellow-900 */
    border-color: #facc15 !important;       /* yellow-400 */
}

/* Item actif sidebar : variante saturée pour le surlignage de l'entrée courante. */
.menu-item.active .menu-icon .bk-icon-home       { color: #0f766e; }
.menu-item.active .menu-icon .bk-icon-releve     { color: #2563eb; }
.menu-item.active .menu-icon .bk-icon-bulletin   { color: #059669; }
.menu-item.active .menu-icon .bk-icon-avis       { color: #dc2626; }
.menu-item.active .menu-icon .bk-icon-historique { color: #7c3aed; }
.menu-item.active .menu-icon .bk-icon-croisement { color: #d97706; }
.menu-item.active .menu-icon .bk-icon-coherence  { color: #4f46e5; }
.menu-item.active .menu-icon .bk-icon-coherence-releve { color: #7c3aed; }
.menu-item.active .menu-icon .bk-icon-guide      { color: #0369a1; }
.menu-item.active .menu-icon .bk-icon-credits    { color: #a16207; }
.menu-item.active .menu-icon .bk-icon-demelage   { color: #db2777; }
.menu-item.active .menu-icon .bk-icon-dossiers   { color: #0f766e; }

/* ===== Padding-top sidebar pour décoller la 1re entrée du logo (HOME 2026-05-21) ===== */
/* Sans cette marge, l'entrée « Tableau de bord » est collée à la bordure du
   header sidebar (logo BankIris). Marge appliquée au container du menu plutôt
   qu'à la 1re entrée individuelle pour rester robuste si on change l'ordre. */
.app-sidebar .menu {
    padding-top: 8px;
}

/* ===== Barre sticky Enregistrer en bas des modules d'extraction (2026-05-21) ===== */
/* Pattern « sauvegarde toujours à portée de clic » — l'utilisateur peut scroller
   dans son extraction sans devoir remonter en haut pour cliquer Enregistrer.
   Reste collée au bas du viewport tant qu'on est dans la zone des résultats.
   Fond teal pastel + bordure haute teal pour que le btn-light « Mettre à jour »
   (gris clair) ressorte au lieu de se confondre avec un fond blanc. */
.bk-save-bar {
    position: sticky;
    bottom: 0;
    background: #f0fdfa;                              /* teal-50 */
    border-top: 2px solid #5eead4;                    /* teal-300 */
    box-shadow: 0 -3px 10px rgba(20, 184, 166, 0.08); /* teal-500 doux */
    padding: 0.65rem 1rem;
    margin-top: 1.5rem;
    display: flex;
    justify-content: flex-end;
    z-index: 100;
}

/* ===== Cards modules de la page d'accueil (HOME 2026-05-21) ===== */
/* La card N'EST PAS un lien plein — les actions sont portées par les boutons
   du footer (1 ou 2 selon le module). On garde un hover-lift très discret pour
   suggérer une zone d'intérêt visuel, mais sans laisser croire que la card
   entière est cliquable (le cursor reste default sauf sur les boutons). */
.bk-module-card {
    transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.bk-module-card:hover {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.08) !important;
}
.bk-module-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 10px;
    background: #f3f4f6;          /* gray-100 */
    font-size: 22px;
}

/* ===== Sous-cards par période dans une card de compte (RmcAccountCard) ===== */
/* Refonte 2026-05-12 : chaque bank_account_period a sa propre mini-card pour
   améliorer la lisibilité visuelle quand un compte couvre plusieurs mois.
   Le mental model est « 1 relevé mensuel = 1 entité visuelle distincte »,
   comme un classeur papier où chaque mois est sur sa propre feuille. */
.bk-period-subcard {
    border: 1px solid #d1d5db;          /* gray-300 */
    border-radius: 6px;
    background-color: #ffffff;
    overflow: hidden;                   /* arrondis appliqués au tableau interne */
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
}
.bk-period-subcard-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.25rem 0.5rem;
    padding: 0.55rem 0.9rem;
    background-color: #f3f4f6;          /* gray-100 — distinct du fond table */
    border-bottom: 2px solid #14b8a6;   /* teal-500 — accent du module Relevé */
    font-size: 0.95rem;
}
.bk-period-subcard-header .badge {
    font-weight: 600;
    font-size: 0.78rem;
}
/* Le mini-tableau dans la sous-card colle au header : pas de margin top */
.bk-period-subcard .table {
    margin-bottom: 0;
}
/* Sur mobile : on relâche un peu le padding du header pour gagner de la place */
@media (max-width: 575.98px) {
    .bk-period-subcard-header {
        padding: 0.4rem 0.6rem;
        font-size: 0.88rem;
    }
}

/* ===== Impression PDF (rapport courtier — module Croisement) ===== */
/* Approche WYSIWYG via window.print() — l'utilisateur choisit « Enregistrer au format PDF »
   dans la boîte d'impression. Pas de dépendance lib PDF côté serveur. */
@media print {
    /* Cache la chrome de l'app : header, sidebar, blocs marqués bk-print-hide */
    #header, #sidebar, .bk-print-hide,
    .form-check-switch, #blazor-error-ui {
        display: none !important;
    }
    /* Le contenu prend toute la largeur sans scroll */
    #app, #content, .app-content {
        position: static !important;
        margin: 0 !important;
        padding: 0 !important;
        height: auto !important;
        overflow: visible !important;
    }
    body, html {
        background: #fff !important;
        height: auto !important;
    }
    /* Cartes : retirer ombres / fond gris pour un rendu papier propre */
    .card {
        page-break-inside: avoid;
        border: 1px solid #e5e7eb !important;
        box-shadow: none !important;
        margin-bottom: 0.6rem !important;
    }
    .card-header.bg-component {
        background: #f3f4f6 !important;
    }
    /* Titres : ne pas couper */
    h1, h2, h3, .page-header { page-break-after: avoid; }
    /* Tableaux : préserver lisibilité */
    table { page-break-inside: auto; }
    tr    { page-break-inside: avoid; page-break-after: auto; }
    thead { display: table-header-group; }
    /* Couleurs de fond Bootstrap (badges) : forcer l'impression couleur */
    .badge, .table-warning, .table-danger, .table-secondary {
        -webkit-print-color-adjust: exact !important;
        print-color-adjust: exact !important;
    }
    /* Liens : pas d'underline sur fond blanc, on enlève les icônes inutiles */
    a { color: inherit !important; text-decoration: none !important; }
}
