/* ============================================================
   PALETTE BUILDING GROUPE 21
   Bleu marine (primaire) / Terracotta (accent) / Blanc cassé (fond)
   Gris ardoise (texte secondaire) / Vert sauge (succès)
   ============================================================ */
:root {
    --bg-marine: #7A1F2B;
    --bg-marine-clair: #93303D;
    --bg-marine-fonce: #591620;
    --bg-terracotta: #C15A3E;
    --bg-terracotta-clair: #D4826A;
    --bg-terracotta-fonce: #A84A31;
    --bg-blanc-casse: #F4F1EC;
    --bg-gris-ardoise: #5B6672;
    --bg-gris-clair: #D6DADE;
    --bg-gris-clair-tint: #F1F2F4;
    --bg-vert-sauge: #6B8E63;
    --bg-vert-sauge-clair: #E3ECE1;
    --bg-terracotta-tint: #F3DCD4;
    --bg-marine-tint: #F3E3E1;

    /* Couleurs d'accent supplémentaires pour .bloc-accent-* (voir plus bas) */
    --bg-bleu: #3D6E8C;
    --bg-bleu-tint: #DEE9EF;
    --bg-violet: #6B4E71;
    --bg-violet-tint: #E6DEE7;
    --bg-jaune: #C79A3E;
    --bg-jaune-tint: #F3E7CF;
    --bg-gris: #5B6672;
    --bg-gris-tint: #E4E7EA;
    --bg-rouge: #B3402E;
    --bg-rouge-tint: #F3DCD6;

    /* Recolore les variables Bootstrap : tous les .btn-primary, liens,
       barres de progression, badges "primary" etc. suivent automatiquement */
    --bs-primary: var(--bg-marine);
    --bs-primary-rgb: 122, 31, 43;
    --bs-link-color: var(--bg-marine);
    --bs-link-color-rgb: 122, 31, 43;
    --bs-link-hover-color: var(--bg-marine-fonce);
    --bs-success: var(--bg-vert-sauge);
    --bs-success-rgb: 107, 142, 99;
    --bs-danger: var(--bg-terracotta);
    --bs-danger-rgb: 193, 90, 62;
}

body { background-color: var(--bg-blanc-casse) !important; }

/* --- Boutons --- */
.btn-primary {
    --bs-btn-bg: var(--bg-marine);
    --bs-btn-border-color: var(--bg-marine);
    --bs-btn-hover-bg: var(--bg-marine-fonce);
    --bs-btn-hover-border-color: var(--bg-marine-fonce);
    --bs-btn-active-bg: var(--bg-marine-fonce);
    --bs-btn-active-border-color: var(--bg-marine-fonce);
}
.btn-outline-primary {
    --bs-btn-color: var(--bg-marine);
    --bs-btn-border-color: var(--bg-marine);
    --bs-btn-hover-bg: var(--bg-marine);
    --bs-btn-hover-border-color: var(--bg-marine);
    --bs-btn-active-bg: var(--bg-marine);
}
.btn-danger {
    --bs-btn-bg: var(--bg-terracotta);
    --bs-btn-border-color: var(--bg-terracotta);
    --bs-btn-hover-bg: var(--bg-terracotta-fonce);
    --bs-btn-hover-border-color: var(--bg-terracotta-fonce);
}
.btn-outline-danger {
    --bs-btn-color: var(--bg-terracotta);
    --bs-btn-border-color: var(--bg-terracotta);
    --bs-btn-hover-bg: var(--bg-terracotta);
    --bs-btn-hover-border-color: var(--bg-terracotta);
}
.btn-success {
    --bs-btn-bg: var(--bg-vert-sauge);
    --bs-btn-border-color: var(--bg-vert-sauge);
}
.text-success { color: var(--bg-vert-sauge) !important; }
.text-danger { color: var(--bg-terracotta) !important; }
.bg-success { background-color: var(--bg-vert-sauge) !important; }
.bg-danger { background-color: var(--bg-terracotta) !important; }


.sidebar.bg-dark,
.sidebar .bg-dark,
.accordion-item.bg-dark {
    background-color: var(--bg-marine) !important;
}
.sidebar .nav-link.active {
    background-color: var(--bg-terracotta);
}
.sidebar .nav-link:hover {
    background-color: rgba(255,255,255,0.1);
}
.card-stat {
    border: none;
    border-radius: 12px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
}
.submenu-link {
    display: block;
    padding: 6px 12px 6px 32px;
    color: rgba(255,255,255,0.75);
    text-decoration: none;
    font-size: 0.9rem;
}
.submenu-link:hover {
    background-color: rgba(255,255,255,0.08);
    color: #fff;
}
.submenu-link.actif {
    background-color: rgba(255,255,255,0.12);
    color: #fff !important;
    font-weight: 600;
    border-left: 3px solid var(--bg-terracotta);
    padding-left: 29px;
}
.submenu-link-2 {
    padding-left: 48px;
    font-size: 0.84rem;
}
button.submenu-link[aria-expanded="true"] .bi-chevron-down {
    transform: rotate(180deg);
}
button.submenu-link .bi-chevron-down {
    transition: transform .15s ease;
}
.accordion-button:not(.collapsed) {
    color: #fff;
    background-color: rgba(255,255,255,0.08) !important;
    box-shadow: none;
}
.accordion-button::after {
    filter: invert(1);
}
.accordion-button {
    font-size: 0.92rem;
}
.modele-vignette {
    transition: transform 0.15s ease, box-shadow 0.15s ease;
    border-radius: 10px;
    padding: 6px;
}
.modele-vignette:hover {
    transform: translateY(-3px);
    box-shadow: 0 4px 10px rgba(0,0,0,0.12);
    background-color: #f8f9fa;
}
.rubrique-titre {
    background-color: var(--bg-marine-tint);
    border-left: 4px solid var(--bg-marine);
    padding: 8px 12px;
    margin: 15px 0 10px 0;
    border-radius: 4px;
}
.rubrique-titre h6 {
    margin: 0;
    color: var(--bg-marine);
    font-weight: 600;
}
.select-locataires {
    background-color: var(--bg-terracotta-tint);
    border: 2px solid var(--bg-terracotta);
    font-weight: 500;
}
.btn-purple {
    background-color: var(--bg-terracotta) !important;
    border: 1px solid var(--bg-terracotta-fonce) !important;
    color: #fff !important;
    font-weight: 600;
    font-size: 0.85rem;
}
.btn-purple:hover {
    background-color: var(--bg-terracotta-fonce) !important;
    color: #fff !important;
}

/* Taille de police uniforme sur tout le projet (tableaux, formulaires, cartes) */
body, table, .form-control, .form-select, .card-stat {
    font-size: 0.9rem;
}
h3 { font-size: 1.3rem; }
h5 { font-size: 1.05rem; }
h6 { font-size: 0.95rem; }

/* Empêche les boutons d'action (Voir/Modifier/Supprimer, etc.) de retourner
   à la ligne dans toutes les listes du site */
td.text-end {
    white-space: nowrap;
}
td.text-end .btn {
    margin-left: 2px;
}

/* Menu latéral : toujours pleine hauteur d'écran, peu importe la longueur du contenu de la page */
@media (min-width: 768px) {
    #sidebarMenu.offcanvas-md {
        position: fixed !important;
        top: 0;
        left: 0;
        height: 100vh !important;
        overflow-y: auto;
        z-index: 100;
    }
    .contenu-principal {
        margin-left: 280px;
    }
}
.accordion-button:focus,
.accordion-button:active,
.nav-link:focus,
.nav-link:active,
.submenu-link:focus,
.submenu-link:active,
.sidebar a:focus,
.sidebar button:focus {
    box-shadow: none !important;
    outline: none !important;
}

/* Différenciation visuelle des blocs (fiche apprenant, tableau de bord...) :
   une fine bordure de couleur à gauche pour distinguer les sections d'un
   même onglet ou les 4 cases Père/Mère/Tuteur 1/Tuteur 2 entre elles. */
/* Décor retiré (v106) : plus de bande colorée à gauche ni de dégradé sur
   les blocs « bloc-accent-* ». Les classes restent dans les gabarits mais
   n'ont plus d'effet visuel — les blocs gardent l'aspect d'une carte simple. */
.bloc-accent-marine, .bloc-accent-vert, .bloc-accent-terracotta, .bloc-accent-marine-clair,
.bloc-accent-bleu, .bloc-accent-violet, .bloc-accent-jaune, .bloc-accent-gris, .bloc-accent-rouge, .bloc-accent-gris-clair {
    border-left: none !important;
    background-image: none !important;
}

/* Titres de page/liste — léger gras (Bootstrap met déjà 500 par défaut, on monte un peu) */
h3 { font-weight: 600; }

/* ------------------------------------------------------------------
   Impression (Ctrl+P / bouton « Imprimer ») — règles communes à tous les
   états : les blocs de filtres / recherche ne s'impriment jamais (ni leurs
   champs, ni le cadre qui les entoure), et les décors d'écran des blocs
   (bande colorée à gauche, ombre, dégradé) sont retirés.
   ------------------------------------------------------------------ */
@media print {
    .filtres-liste, .zone-non-imprimable, .zone-actions-liste,
    input[type="search"] { display: none !important; }
    /* Boutons (Imprimer, Filtrer, Voir...) : inutiles sur papier */
    button, .btn, [onclick*="print"] { display: none !important; }
    /* Cadre (carte) dont le contenu est un formulaire de filtres */
    .card:has(> form.filtres-liste),
    .card:has(> .zone-non-imprimable),
    .card:has(> form[method="get"]:only-child) { display: none !important; }
    .card-stat,
    .bloc-accent-marine, .bloc-accent-vert, .bloc-accent-terracotta, .bloc-accent-marine-clair,
    .bloc-accent-bleu, .bloc-accent-violet, .bloc-accent-jaune, .bloc-accent-gris, .bloc-accent-rouge,
    .bloc-accent-gris-clair {
        border: none !important;
        box-shadow: none !important;
        background-image: none !important;
    }
}

/* ------------------------------------------------------------------
   Listes et états : pas de couleur de fond sur les en-têtes de tableau
   ni sur les titres de regroupement (classe, période, semestre...).
   Préfixe « html body » + !important : l'emporte sur les <style> propres
   à chaque page, à l'écran comme à l'impression. Bulletins, cartes,
   factures et reçus ne sont pas concernés (autres classes).
   ------------------------------------------------------------------ */
html body table[class*="tableau-"][class*="-impression"] th,
html body .tableau-tresorerie th,
html body .tableau-non-a-jour th,
html body .tableau-etat th,
html body .tableau-recap th,
html body .tableau-soldes th {
    background: transparent !important;
    background-color: transparent !important;
    color: #000000 !important;
    font-weight: 700;
}
html body .groupe-classe .titre-groupe,
html body .bloc-classe-detail .titre-classe,
html body .bloc-classe-soldes .titre-classe {
    background: transparent !important;
    color: #000000 !important;
    border-radius: 0 !important;
    border-bottom: 2px solid #000000;
    padding-left: 0 !important;
    padding-right: 0 !important;
}
html body tr.ligne-entete-classe td,
html body tr.ligne-entete-semestre td,
html body tr.ligne-entete-periode td {
    background: transparent !important;
    background-color: transparent !important;
    color: #000000 !important;
    font-weight: 700;
}

/* ------------------------------------------------------------------
   Listes : coins carrés (v107) — cadres contenant un tableau, cadres de
   filtres / recherche, zone imprimable des listes et tableaux eux-mêmes.
   Les autres cartes (tableau de bord, fiches), boutons, badges, champs et
   fenêtres gardent leurs arrondis.
   ------------------------------------------------------------------ */
html body .card:has(table),
html body .card:has(.filtres-liste),
html body .card:has(> form[method="get"]),
html body .zone-impression-liste,
html body .table-responsive,
html body .card:has(table) > .card-header,
html body .card:has(table) > .card-footer,
html body table.table {
    border-radius: 0 !important;
}

/* ------------------------------------------------------------------
   Style de liste unique à l'écran (v108), calqué sur la liste des
   professeurs : fond blanc, pas de bordures verticales ni de cadre noir,
   simple filet gris clair entre les lignes, survol léger.
   Écran seulement : à l'impression, les états gardent leur quadrillage
   noir. Bulletins, cartes, factures, reçus, bilan / compte de résultat et
   PV de délibération ne sont pas concernés.
   ------------------------------------------------------------------ */
@media screen {
    html body table[class*="tableau-"][class*="-impression"],
    html body table.tableau-tresorerie,
    html body table.tableau-non-a-jour,
    html body table.tableau-etat,
    html body table.tableau-recap,
    html body table.tableau-soldes {
        border: 0 !important;
        border-collapse: collapse !important;
        background: #FFFFFF;
        margin-bottom: 0;
    }
    html body table[class*="tableau-"][class*="-impression"] > :is(thead, tbody, tfoot) > tr > :is(th, td),
    html body table.tableau-tresorerie > :is(thead, tbody, tfoot) > tr > :is(th, td),
    html body table.tableau-non-a-jour > :is(thead, tbody, tfoot) > tr > :is(th, td),
    html body table.tableau-etat > :is(thead, tbody, tfoot) > tr > :is(th, td),
    html body table.tableau-recap > :is(thead, tbody, tfoot) > tr > :is(th, td),
    html body table.tableau-soldes > :is(thead, tbody, tfoot) > tr > :is(th, td) {
        border: 0 !important;
        border-bottom: 1px solid #DEE2E6 !important;
        padding: .5rem .5rem;
        vertical-align: middle;
    }
    html body table[class*="tableau-"][class*="-impression"] > thead > tr > th,
    html body table.tableau-tresorerie > thead > tr > th,
    html body table.tableau-non-a-jour > thead > tr > th,
    html body table.tableau-etat > thead > tr > th,
    html body table.tableau-recap > thead > tr > th,
    html body table.tableau-soldes > thead > tr > th {
        border-bottom: 1px solid #C9CED4 !important;
        font-weight: 700;
    }
    html body table[class*="tableau-"][class*="-impression"] > tbody > tr:hover > td,
    html body table.tableau-tresorerie > tbody > tr:hover > td,
    html body table.tableau-non-a-jour > tbody > tr:hover > td,
    html body table.tableau-etat > tbody > tr:hover > td,
    html body table.tableau-recap > tbody > tr:hover > td,
    html body table.tableau-soldes > tbody > tr:hover > td {
        background-color: rgba(0, 0, 0, .035);
    }
}
