/* /Components/SchoolTypeSelector.razor.rz.scp.css */
/* Sélecteur de type d'école : 4 cartes cliquables.
   Fond + dégradé radial de coin (bas-droit) par type, comme les cartes de l'accueil.
   EG, MP et ETP : dégradé animé (pulsation). GE : dégradé statique. */

.type-selector[b-c2wco1jly5] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    padding: 14px;
    border-radius: 10px;
    background-color: var(--mud-palette-background-grey, #f5f5f5);
}

/* 2 colonnes sur écran étroit / dialog mobile */
@media (max-width: 600px) {
    .type-selector[b-c2wco1jly5] {
        grid-template-columns: repeat(2, 1fr);
    }
}

.type-card[b-c2wco1jly5] {
    position: relative;
    overflow: hidden;
    border-radius: 8px;
    padding: 16px 12px;
    min-height: 92px;
    cursor: pointer;
    border: 2px solid transparent;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: var(--mud-palette-surface, #fff);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .12);
    opacity: .9;
    transition: opacity .25s ease, box-shadow .25s ease, transform .1s ease, border-color .25s ease;
}

.type-card:hover[b-c2wco1jly5] {
    opacity: 1;
    box-shadow: 0 3px 10px rgba(0, 0, 0, .18);
}

.type-card:active[b-c2wco1jly5] {
    transform: scale(.98);
}

.type-card.selected[b-c2wco1jly5] {
    opacity: 1;
    border-color: var(--mud-palette-primary, #594ae2);
    box-shadow: 0 4px 14px rgba(0, 0, 0, .22);
}

.type-code[b-c2wco1jly5] {
    position: relative;
    z-index: 1;
    font-size: 1.35rem;
    font-weight: 700;
    line-height: 1.1;
}

.type-label[b-c2wco1jly5] {
    position: relative;
    z-index: 1;
    font-size: .72rem;
    margin-top: 4px;
    opacity: .85;
}

.type-check[b-c2wco1jly5] {
    position: absolute;
    top: 6px;
    right: 6px;
    z-index: 2;
    line-height: 0;
    color: var(--mud-palette-primary, #594ae2);
}

/* ---------- Fonds colorés (comme l'accueil) ---------- */
/* EG et MP : fond blanc (surface par défaut). */

.type-card.type-etp[b-c2wco1jly5] {
    background-color: #176139; /* vert */
    color: #fff;
}

.type-card.type-ge[b-c2wco1jly5] {
    background-color: #0d1b3e; /* bleu foncé */
    color: #fff;
}

/* Sur fond sombre : coche blanche + anneau de sélection blanc */
.type-card.type-etp .type-check[b-c2wco1jly5],
.type-card.type-ge .type-check[b-c2wco1jly5] {
    color: #fff;
}

.type-card.type-etp.selected[b-c2wco1jly5],
.type-card.type-ge.selected[b-c2wco1jly5] {
    border-color: #fff;
}

/* ---------- Dégradé radial de coin ---------- */

.type-card[b-c2wco1jly5]::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0;
    transition: opacity .35s ease;
    z-index: 0;
}

/* EG : dégradé orange */
.type-card.type-eg[b-c2wco1jly5]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(255, 140, 0, 0.60) 0%,
        rgba(255, 224, 178, 0.55) 24%,
        rgba(255, 255, 255, 0) 60%);
}

/* MP : dégradé vert */
.type-card.type-mp[b-c2wco1jly5]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(46, 125, 50, 0.60) 0%,
        rgba(200, 230, 201, 0.55) 24%,
        rgba(255, 255, 255, 0) 60%);
}

/* ETP : dégradé blanc */
.type-card.type-etp[b-c2wco1jly5]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(255, 255, 255, 0.85) 0%,
        rgba(255, 255, 255, 0.35) 26%,
        rgba(255, 255, 255, 0) 60%);
}

/* GE : dégradé blanc */
.type-card.type-ge[b-c2wco1jly5]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(255, 255, 255, 0.85) 0%,
        rgba(255, 255, 255, 0.30) 26%,
        rgba(255, 255, 255, 0) 60%);
}

/* ---------- Visibilité / animation ---------- */
/* Les 4 types : dégradé visible + pulsation. */
.type-card.type-eg[b-c2wco1jly5]::after,
.type-card.type-mp[b-c2wco1jly5]::after,
.type-card.type-etp[b-c2wco1jly5]::after,
.type-card.type-ge[b-c2wco1jly5]::after {
    opacity: 1;
    animation: type-corner-glow-b-c2wco1jly5 2.8s ease-in-out infinite;
}

.type-card:hover[b-c2wco1jly5]::after {
    opacity: 1;
}

@keyframes type-corner-glow-b-c2wco1jly5 {
    0%, 100% { opacity: 0.45; }
    50%      { opacity: 1; }
}
/* /Layout/SchoolLayout.razor.rz.scp.css */
/* Barre de menus / outils horizontale, sous le bandeau.
   Fine (hauteur réduite), fond clair discret, séparée du contenu par une
   bordure basse. Les boutons restent compacts. */
[b-2cbtrqz3r7] .school-submenu {
    min-height: 30px;
    height: 30px;
    background-color: #F5F5F5;
    border-bottom: 1px solid rgba(0, 0, 0, 0.10);
}

[b-2cbtrqz3r7] .school-submenu .mud-button-root {
    text-transform: none;
}
/* /Pages/AnneesScolaires/AnneesScolaires.razor.rz.scp.css */
/* Grille des années scolaires — lignes 26px (standard projet, cf. .ech-grid).
   La HAUTEUR de la fenêtre (5 lignes) n'est pas figée ici : elle est mesurée puis
   appliquée en JS (svtAnneesScolaires.ajusterEtCentrer), ce qui reste exact même si
   la police ou le thème change la hauteur réelle d'une ligne. */
.as-grid[b-oi8ll3qyzb]  .mud-table-container {
    overflow-y: auto;
}

.as-grid[b-oi8ll3qyzb]  th {
    height: 30px !important;
    padding: 0 12px !important;
}

.as-grid[b-oi8ll3qyzb]  td {
    height: 26px !important;
    padding: 0 12px !important;
}

/* Le menu d'actions (3 points) ne doit pas faire gonfler la ligne au-delà de 26px.
   MudMenu rend son activateur comme un MudIconButton : on le comprime en carré 22px. */
.as-grid[b-oi8ll3qyzb]  td .mud-button-root.mud-icon-button {
    height: 22px !important;
    min-height: 22px !important;
    width: 22px !important;
    padding: 0 !important;
}

.as-grid[b-oi8ll3qyzb]  td .mud-button-root.mud-icon-button .mud-icon-root {
    font-size: 16px !important;
}

/* Année en cours : léger fond vert, cohérent avec la puce Success de la colonne. */
.as-grid[b-oi8ll3qyzb]  tr.as-row-active {
    background-color: rgba(0, 200, 83, 0.14) !important;
}

/* Année de travail (consultation d'une année antérieure) : léger fond bleu, cohérent
   avec la coche bleue (Color.Info) et le bandeau « lecture seule ». */
.as-grid[b-oi8ll3qyzb]  tr.as-row-travail {
    background-color: rgba(33, 150, 243, 0.16) !important;
}
/* /Pages/Auth/AppareilNonAutorise.razor.rz.scp.css */
/* ------------------------------------------------------------------------
   Mise en page : panneau photo a GAUCHE, message dans l'espace restant.
   Regles jumelles de celles de Login.razor.css (panneau a droite) : toute
   modification ici doit y etre reportee. Le CSS scope interdit de les
   partager dans un seul fichier.
   ------------------------------------------------------------------------ */

/* Largeur du panneau = hauteur / nombre d'or, comme sur /login. */
.panneau-photo[b-nw0yozd3zz] {
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    width: calc(100vh / 1.618);
    overflow: hidden;
    z-index: 1;
}

/* <picture> est inline et sans hauteur propre : sans cette regle, le height: 100%
   de l'image ci-dessous n'aurait plus de reference et le panneau s'effondrerait. */
.panneau-photo picture[b-nw0yozd3zz] {
    display: block;
    height: 100%;
}

/* cover + min-width recadrent la photo au centre, quel que soit son format. */
.panneau-photo img[b-nw0yozd3zz] {
    display: block;
    height: 100%;
    width: auto;
    min-width: 100%;
    object-fit: cover;
}

.zone-contenu[b-nw0yozd3zz] {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: calc(100vw - (100vh / 1.618));
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    overflow-y: auto;
}

/* Bascule en colonne : photo en bandeau, message dessous.
   Deux declencheurs, car le probleme vient du RATIO, pas de la largeur seule :
   - portrait ou carre  -> calc(100vw - 100vh/1.618) devient minuscule, voire
     negatif (des que largeur/hauteur passe sous 0,618) ;
   - moins de 1100 px de large -> meme en paysage l'espace restant ne suffit
     plus a la carte du message (560 px + marges).
   On reste en position: fixed et on etire par left/right plutot que de repasser
   dans le flux : MainLayout enferme les pages non authentifiees dans un MudPaper
   de 500 px, dont un element en position relative heriterait la largeur. */
@media (max-width: 1100px), (max-aspect-ratio: 1/1) {
    .panneau-photo[b-nw0yozd3zz] {
        left: 0;
        right: 0;
        width: auto;
        /* 45vh plutot que 34 : on gagne en hauteur cadree, sans pour autant voir
           tout le masque. img6.jpg fait 600x800 ; sur un bandeau bien plus large
           que haut, cover l'agrandit jusqu'a couvrir la largeur (facteur ~1,4 en
           850 px de large), si bien que seuls ~40 % de sa hauteur restent
           visibles. Combine a object-position: left bottom ci-dessous, ce sont
           les 40 % du BAS : machoire, couronne de pointes et mention « GLA ».
           Pour voir aussi les yeux il faudrait object-fit: contain (image
           entiere, avec des bandes sur les cotes). */
        height: 45vh;
    }

    /* Plus de rognage en bandeau : le masque s'affiche entier, reduit a la hauteur
       du bandeau, mention « GLA » comprise. Il faut neutraliser le min-width: 100%
       de la regle de base, qui le forcerait a couvrir toute la largeur. */
    .panneau-photo img[b-nw0yozd3zz] {
        width: 100%;
        min-width: 0;
        object-fit: contain;
    }

    .zone-contenu[b-nw0yozd3zz] {
        left: 0;
        right: 0;
        top: 45vh;
        width: auto;
        height: 55vh;
        /* flex-start : avec center, un contenu plus haut que la zone deborderait
           vers le haut sans pouvoir etre atteint au defilement. */
        align-items: flex-start;
        padding: 24px 16px;
    }
}
/* /Pages/Auth/Login.razor.rz.scp.css */
/* Agrandit les caractères saisis (et les points du masque) du champ Mot de passe */
[b-7eno6p9xsa] .pwd-gros input {
    font-size: 2.3rem;
    letter-spacing: 0.16em;
}

/* ------------------------------------------------------------------------
   Voile (carte du formulaire) : animations pilotees par _classeVoile (Login.razor.cs).
   - voile-transparent : connexion reussie -> fondu jusqu'a la transparence totale,
     le fond d'ecran reste seul visible avant la navigation (DureeFonduMs = 800).
   - voile-tourne : identifiants refuses -> un tour complet rapide, puis la carte
     reprend sa place (DureeTourMs = 600).
   ------------------------------------------------------------------------ */
.carte-login[b-7eno6p9xsa] {
    transition: opacity 0.8s ease;
}

.carte-login.voile-transparent[b-7eno6p9xsa] {
    opacity: 0;
    pointer-events: none;
}

.carte-login.voile-tourne[b-7eno6p9xsa] {
    animation: voile-tourne-b-7eno6p9xsa 0.6s ease-in-out;
}

@keyframes voile-tourne-b-7eno6p9xsa {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* ------------------------------------------------------------------------
   Mise en page : panneau photo a DROITE, formulaire dans l'espace restant.
   Regles jumelles de celles de AppareilNonAutorise.razor.css (panneau a
   gauche) : toute modification ici doit y etre reportee. Le CSS scope
   interdit de les partager dans un seul fichier.
   ------------------------------------------------------------------------ */

/* Largeur du panneau = hauteur / nombre d'or. */
.panneau-photo[b-7eno6p9xsa] {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: calc(100vh / 1.618);
    overflow: hidden;
    z-index: 1;
}

/* <picture> est inline et sans hauteur propre : sans cette regle, le height: 100%
   de l'image ci-dessous n'aurait plus de reference et le panneau s'effondrerait. */
.panneau-photo picture[b-7eno6p9xsa] {
    display: block;
    height: 100%;
}

/* Fond plein cadre : reproduit background-size: cover / background-position: center,
   mais sur une balise img, qui sait choisir sa resolution (voir le <picture>). */
.fond-ecran[b-7eno6p9xsa] {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}

/* cover + min-width recadrent la photo au centre, quel que soit son format. */
.panneau-photo img[b-7eno6p9xsa] {
    display: block;
    height: 100%;
    width: auto;
    min-width: 100%;
    object-fit: cover;
}

.zone-formulaire[b-7eno6p9xsa] {
    position: fixed;
    top: 0;
    left: 0;
    height: 100vh;
    width: calc(100vw - (100vh / 1.618));
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    overflow-y: auto;
}

/* Panneau photo masque (AfficherPanneauPhoto = false) : le formulaire prend toute la
   largeur et se centre sur l'ecran. */
.zone-formulaire.sans-panneau[b-7eno6p9xsa] {
    width: 100vw;
}

/* Bascule en colonne : photo en bandeau, formulaire dessous.
   Deux declencheurs, car le probleme vient du RATIO, pas de la largeur seule :
   - portrait ou carre  -> calc(100vw - 100vh/1.618) devient minuscule, voire
     negatif (des que largeur/hauteur passe sous 0,618) ;
   - moins de 1100 px de large -> meme en paysage l'espace restant ne suffit
     plus a la carte du formulaire (500 px + marges).
   On reste en position: fixed et on etire par left/right plutot que de repasser
   dans le flux : MainLayout enferme les pages non authentifiees dans un MudPaper
   de 500 px, dont un element en position relative heriterait la largeur. */
@media (max-width: 1100px), (max-aspect-ratio: 1/1) {
    .panneau-photo[b-7eno6p9xsa] {
        left: 0;
        right: 0;
        width: auto;
        /* 34vh, et non les 45vh de /appareil-non-autorise : la carte du
           formulaire fait 582 px et ne tiendrait pas dans les 55vh restants
           (502 px utiles), obligeant a defiler des l'arrivee sur la page. */
        height: 34vh;
    }

    /* Plus de rognage en bandeau : cover n'en montrait qu'une tranche, et aucun
       ancrage (centre, haut, bas) ne cadrait correctement des sujets aussi varies.
       contain affiche la photo entiere, reduite a la hauteur du bandeau ; il faut
       alors neutraliser le min-width: 100% de la regle de base, qui la forcerait
       a couvrir toute la largeur. Les cotes laissent voir le fond d'ecran. */
    .panneau-photo img[b-7eno6p9xsa] {
        width: 100%;
        min-width: 0;
        object-fit: contain;
    }

    .zone-formulaire[b-7eno6p9xsa] {
        left: 0;
        right: 0;
        top: 34vh;
        width: auto;
        height: 66vh;
        /* flex-start : avec center, un contenu plus haut que la zone deborderait
           vers le haut sans pouvoir etre atteint au defilement. */
        align-items: flex-start;
        padding: 24px 16px;
    }

    /* Sans panneau : plus de bandeau photo en haut, le formulaire occupe tout l'ecran. */
    .zone-formulaire.sans-panneau[b-7eno6p9xsa] {
        top: 0;
        height: 100vh;
    }
}
/* /Pages/Economat/Echeancier.razor.rz.scp.css */
/* Page "Échéancier" (Economat) — grille bleue (même bleu que le bandeau #1b4f72),
   écritures blanches, éditeurs fondus dans les cellules. La grille défile
   horizontalement si les 10 colonnes de mois dépassent l'écran.
   NB : les classes ech-* sont posées sur des div HTML bruts (pas des composants
   MudBlazor) pour que l'attribut de scope du CSS isolé s'applique bien. */

/* Filtres au-dessus de la grille : côte à côte, centrés au milieu de la page */
/* Filtres dans une boîte compacte : bordure noire, pas de fond, centrée au milieu */
.ech-filtres[b-2140gdrbgq] {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 12px;
    width: fit-content;
    margin: 0 auto 12px;
    border: 1px solid #000000;
    border-radius: 4px;
    padding: 6px 12px;
}

/* Largeur fixe des sélecteurs (filtres + création) : le Style inline sur MudSelect
   n'atteint pas le conteneur qui s'étire, on force donc ici (racine + conteneur input). */
.ech-filtres[b-2140gdrbgq]  .mud-select,
.ech-addbar[b-2140gdrbgq]  .mud-select,
.ech-filtres[b-2140gdrbgq]  .mud-input-control,
.ech-addbar[b-2140gdrbgq]  .mud-input-control {
    width: 110px !important;
    flex: 0 0 auto !important;
}

.ech-grid[b-2140gdrbgq] {
    overflow-x: auto;
    /* petit dégagement pour que le trait bas du tableau ne soit pas rogné
       par le conteneur à défilement horizontal */
    padding-bottom: 3px;
}

.ech-grid[b-2140gdrbgq]  .mud-table-root {
    font-size: 0.875rem;
}

.ech-grid[b-2140gdrbgq]  th {
    background: #143c57 !important; /* bleu plus soutenu que les cellules */
    color: #ffffff !important;
    font-weight: 700 !important;
    white-space: nowrap;
    padding: 4px 10px !important;
}

.ech-grid[b-2140gdrbgq]  td {
    background: #1b4f72; /* bleu du bandeau */
    /* !important : MudBlazor pose sa propre couleur de texte sur .mud-table-cell,
       sinon Niveau / Statut / Total (texte brut des cellules) restent en noir */
    color: #ffffff !important;
    border-color: #3d7bab !important;
    padding: 0 8px !important;
    height: 26px !important;
    white-space: nowrap;
}

.ech-grid[b-2140gdrbgq]  tr:hover td {
    background: #24618c;
}

/* Éditeurs dans les cellules : texte blanc à la taille de la cellule, pas de soulignement */
.ech-grid[b-2140gdrbgq]  td .mud-input-slot,
.ech-grid[b-2140gdrbgq]  td .mud-input,
.ech-grid[b-2140gdrbgq]  td .mud-input > input {
    font-size: inherit !important;
    color: #ffffff !important;
    text-align: right;
}

.ech-grid[b-2140gdrbgq]  td .mud-input.mud-input-underline::before,
.ech-grid[b-2140gdrbgq]  td .mud-input.mud-input-underline::after {
    border-bottom: none !important;
}

.ech-grid[b-2140gdrbgq]  td .mud-input-control {
    margin-top: 0 !important;
}

.ech-grid[b-2140gdrbgq]  td .mud-input-slot {
    min-height: 20px;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

/* Le menu Actions (icone MoreVert) ne doit pas gonfler la hauteur de ligne */
.ech-grid[b-2140gdrbgq]  td .mud-button-root {
    padding: 2px !important;
    color: #ffffff;
}

/* Étiquette de la boîte de filtres */
.ech-filtres-label[b-2140gdrbgq] {
    font-weight: 600;
    white-space: nowrap;
}

/* Barre d'ajout sous la grille : boîte compacte (Niveau + Statut + bouton),
   même habillage que les filtres — bordure noire, pas de fond */
.ech-addbar[b-2140gdrbgq] {
    display: flex;
    align-items: center;
    gap: 12px;
    width: fit-content;
    border: 1px solid #000000;
    border-radius: 4px;
    padding: 6px 12px;
    margin: 16px auto 0; /* centrée au milieu de l'écran */
}
/* /Pages/Economat/FraisGeneraux.razor.rz.scp.css */
/* Grille des Frais Généraux : lignes à 26px (alignées sur les grilles
   Échéancier / Modalités de versement / Nature versement). */
.nat-grid[b-83t11s2r8y]  td {
    padding: 0 8px !important;
    height: 26px !important;
    white-space: nowrap;
}

/* Champs éditables des cellules (Ordre, Libellé, Montant) compactés pour tenir dans 26px. */
.nat-grid[b-83t11s2r8y]  td .mud-input-slot,
.nat-grid[b-83t11s2r8y]  td .mud-input-control {
    min-height: 20px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
/* /Pages/Economat/NaturesVersement.razor.rz.scp.css */
/* Grille des natures de versement : lignes à 26px (alignées sur les grilles
   Modalités de versement / Structures). */
.nat-grid[b-u32f8gq5b7]  td {
    padding: 0 8px !important;
    height: 26px !important;
    white-space: nowrap;
}

/* Champs éditables des cellules (Ordre, Libellé) compactés pour tenir dans 26px. */
.nat-grid[b-u32f8gq5b7]  td .mud-input-slot,
.nat-grid[b-u32f8gq5b7]  td .mud-input-control {
    min-height: 20px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
/* /Pages/Economat/TypesReduction.razor.rz.scp.css */
/* Grille des types de réduction : lignes à 26px (alignées sur les grilles
   Échéancier / Modalités de versement / Nature versement). */
.nat-grid[b-m9zq057v9i]  td {
    padding: 0 8px !important;
    height: 26px !important;
    white-space: nowrap;
}

/* Champs éditables des cellules (Ordre, Libellé) compactés pour tenir dans 26px. */
.nat-grid[b-m9zq057v9i]  td .mud-input-slot,
.nat-grid[b-m9zq057v9i]  td .mud-input-control {
    min-height: 20px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
/* /Pages/Economat/ZonesTransport.razor.rz.scp.css */
/* Grille "Transport par zone" — même habillage bleu que la page Échéancier (barème
   Modalités de versement). Le CSS isolé étant par composant, on recopie ici les règles
   .ech-* (posées sur des div HTML bruts pour que le scope s'applique). */

.ech-grid[b-zaeu5vyycv] {
    overflow-x: auto;
    padding-bottom: 3px;
}

.ech-grid[b-zaeu5vyycv]  .mud-table-root {
    font-size: 0.875rem;
}

.ech-grid[b-zaeu5vyycv]  th {
    background: #4d1501 !important; /* rouge plus soutenu que les lignes */
    color: #ffffff !important;
    font-weight: 700 !important;
    white-space: nowrap;
    padding: 4px 10px !important;
}

.ech-grid[b-zaeu5vyycv]  td {
    background: #701F01; /* rouge rouille de la barre d'état VS */
    color: #ffffff !important;
    border-color: #9a4a30 !important;
    padding: 0 8px !important;
    height: 26px !important;
    white-space: nowrap;
}

.ech-grid[b-zaeu5vyycv]  tr:hover td {
    background: #8a2a10;
}

.ech-grid[b-zaeu5vyycv]  td .mud-input-slot,
.ech-grid[b-zaeu5vyycv]  td .mud-input,
.ech-grid[b-zaeu5vyycv]  td .mud-input > input {
    font-size: inherit !important;
    color: #ffffff !important;
    text-align: right;
}

.ech-grid[b-zaeu5vyycv]  td .mud-input.mud-input-underline::before,
.ech-grid[b-zaeu5vyycv]  td .mud-input.mud-input-underline::after {
    border-bottom: none !important;
}

.ech-grid[b-zaeu5vyycv]  td .mud-input-control {
    margin-top: 0 !important;
}

.ech-grid[b-zaeu5vyycv]  td .mud-input-slot {
    min-height: 20px;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.ech-grid[b-zaeu5vyycv]  td .mud-button-root {
    padding: 2px !important;
    color: #ffffff;
}

/* Barre d'ajout sous la grille : boîte compacte (nom de zone + bouton) */
.ech-addbar[b-zaeu5vyycv] {
    display: flex;
    align-items: center;
    gap: 12px;
    width: fit-content;
    border: 1px solid #000000;
    border-radius: 4px;
    padding: 6px 12px;
    margin: 16px auto 0;
}
/* /Pages/Eleves/CreateEleve.razor.rz.scp.css */
/* Reproduction de la fenetre Access "Creation eleve".
   Palette gris-bleu, libelles a gauche en gras, champs compacts. */

.acc-window[b-pmrg3mkom7] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

/* Bandeau superieur : titre + bouton Fermer */
.acc-titlebar[b-pmrg3mkom7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-pmrg3mkom7] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-pmrg3mkom7] {
    border: 2px solid #000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #fff;
    background: #000;
    letter-spacing: 1px;
}

/* Lignes libelle + champ */
.acc-row[b-pmrg3mkom7] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 1px;
    min-height: 22px;
}

.acc-label[b-pmrg3mkom7] {
    flex: 0 0 130px;
    text-align: right;
    font-weight: 700;
    font-size: 0.78rem;
    color: #243b4a;
    white-space: nowrap;
}

.acc-label.narrow[b-pmrg3mkom7] {
    flex: 0 0 90px;
}

.acc-field[b-pmrg3mkom7] {
    flex: 1 1 auto;
    min-width: 0;
}

/* Champs compacts facon Access : fond blanc, bord fin */
.acc-field[b-pmrg3mkom7]  .mud-input-slot,
.acc-field[b-pmrg3mkom7]  .mud-select-input {
    font-size: calc(0.78rem + 2px); /* zones de saisie +2px ; labels (.acc-label) inchanges */
    padding-top: 1px;
    padding-bottom: 1px;
    background: #ffffff;
}

.acc-field[b-pmrg3mkom7]  .mud-input.mud-input-outlined .mud-input-slot {
    min-height: 22px;
    height: 22px;
}

/* NB : le fond jaune du champ Matricule (.acc-yellow) est défini globalement
   dans le <style> de wwwroot/index.html (un ::deep scopé n'atteint pas la racine
   MudBlazor, et css/app.css n'est pas chargé par index.html). */

/* Sections parents */
.acc-section-title[b-pmrg3mkom7] {
    text-align: center;
    font-weight: 700;
    color: #0d6e9c;
    border-top: 2px solid #1c2b36;
    border-bottom: 2px solid #1c2b36;
    margin: 8px 0 6px;
    padding: 1px 0;
}

.acc-section-title.correspondant[b-pmrg3mkom7] {
    color: #c0392b;
}

/* Colonne de boutons d'action */
.acc-actionbar[b-pmrg3mkom7] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    align-items: stretch;
}

.acc-photo[b-pmrg3mkom7] {
    background: #2f4fd0;
    color: #ffffff;
    text-align: center;
    font-size: 0.75rem;
    padding: 14px 6px;
    border-radius: 2px;
}

.acc-inscrire[b-pmrg3mkom7] {
    background: #fff79a;
    text-align: center;
    font-weight: 700;
    color: #1c2b36;
    padding: 2px 0;
}
/* /Pages/Fne/FactureNormalisee.razor.rz.scp.css */
/* ---- Grille « Suivi des factures » : colonnes resserrées ----
   Le défaut MudBlazor Dense met 16px à gauche / 24px à droite de chaque cellule : on
   ramène à 6px des deux côtés, en-têtes compris (sinon th et td se désalignent). */
.fne-grid[b-dtbwqhcaj0]  td,
.fne-grid[b-dtbwqhcaj0]  th {
    padding: 2px 6px !important;
}

/* Une ligne par facture : seule la colonne Erreur (tronquée à 60 car.) peut passer à la ligne. */
.fne-grid[b-dtbwqhcaj0]  td {
    white-space: nowrap;
}

.fne-grid[b-dtbwqhcaj0]  td[data-label="Erreur"] {
    white-space: normal;
}
/* /Pages/Home.razor.rz.scp.css */
/* Carte d'école : un dégradé radial apparaît dans l'angle inférieur droit.
   Sa couleur (et son animation) dépendent du type d'école, via la classe
   type-eg / type-etp / type-ge / type-mp posée sur le div.
   L'overlay est en pointer-events:none pour ne pas intercepter le clic de
   sélection d'école. */
.school-card-hover[b-mfr3hsc6ny] {
    position: relative;
    overflow: hidden;
    height: 100%;
    border-radius: inherit;
}

.school-card-hover[b-mfr3hsc6ny]::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0;
    transition: opacity .35s ease;
}

/* ---------- Couleur du dégradé de coin par type ---------- */

/* EG : fond blanc, dégradé orange (animé) */
.school-card-hover.type-eg[b-mfr3hsc6ny]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(255, 140, 0, 0.60) 0%,
        rgba(255, 224, 178, 0.55) 24%,
        rgba(255, 255, 255, 0) 60%);
}

/* MP : fond blanc, dégradé vert (animé) */
.school-card-hover.type-mp[b-mfr3hsc6ny]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(46, 125, 50, 0.60) 0%,
        rgba(200, 230, 201, 0.55) 24%,
        rgba(255, 255, 255, 0) 60%);
}

/* ETP : fond vert, dégradé blanc (statique) */
.school-card-hover.type-etp[b-mfr3hsc6ny]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(255, 255, 255, 0.85) 0%,
        rgba(255, 255, 255, 0.35) 26%,
        rgba(255, 255, 255, 0) 60%);
}

/* GE : fond bleu foncé, dégradé blanc (statique) */
.school-card-hover.type-ge[b-mfr3hsc6ny]::after {
    background: radial-gradient(circle at 100% 100%,
        rgba(255, 255, 255, 0.85) 0%,
        rgba(255, 255, 255, 0.30) 26%,
        rgba(255, 255, 255, 0) 60%);
}

/* ---------- Visibilité / animation ---------- */

/* Les 4 types : dégradé visible en permanence + pulsation douce */
.school-card-hover.type-eg[b-mfr3hsc6ny]::after,
.school-card-hover.type-mp[b-mfr3hsc6ny]::after,
.school-card-hover.type-etp[b-mfr3hsc6ny]::after,
.school-card-hover.type-ge[b-mfr3hsc6ny]::after {
    opacity: 1;
    animation: corner-glow-b-mfr3hsc6ny 2.8s ease-in-out infinite;
}

/* Le survol renforce le dégradé dans tous les cas */
.school-card-hover:hover[b-mfr3hsc6ny]::after {
    opacity: 1;
}

@keyframes corner-glow-b-mfr3hsc6ny {
    0%, 100% { opacity: 0.45; }
    50%      { opacity: 1; }
}
/* /Pages/ListesClasse/ListesClasse.razor.rz.scp.css */
/* Page « Liste de classe » — même calque Access (palette gris-bleu + grille rouge) que
   /scolarites. Le CSS scopé ne traverse pas les composants MudBlazor : l'enveloppe et la
   grille sont re-déclarées ici (les règles GLOBALES de compacité 26px + matricule vivent
   dans wwwroot/index.html, via la classe .acc-grid-eleves). */

/* ---- Enveloppe façon Access ---- */
.acc-window[b-yrupak4137] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-yrupak4137] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-yrupak4137] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-yrupak4137] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;         /* écriture blanche / gras */
    background: #1a1a1a;    /* noir foncé */
    letter-spacing: 1px;
}

/* ---- Barre de filtres ---- */
.acc-filterbar[b-yrupak4137] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 2px 14px;   /* row-gap resserré : la 2e ligne (Matricule/N° Inscr) colle au-dessus */
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 8px 10px;
    margin-bottom: 4px;
}

/* Couleur selon le type d'école (classe posée par le code-behind, ClasseCouleurFiltres) :
   EG = beige clair (blanc cassé) ; ETP / GE / MP = orange léger. */
.acc-filterbar.filtres-eg[b-yrupak4137] {
    background: #faf6ec;
    border-color: #d9cfb8;
}

.acc-filterbar.filtres-orange[b-yrupak4137] {
    background: #ffe3c4;
    border-color: #f0b77d;
}

.acc-fgroup[b-yrupak4137] {
    display: flex;
    flex-direction: column;
    gap: 0;            /* contrôle collé sous son label (rapproché) */
}

/* 2e ligne de filtres (Matricule + N° Inscr) : conteneur pleine largeur => passe sous la
   1re ligne, aligné à gauche, sans consommer de row-gap supplémentaire. */
.lc-row2[b-yrupak4137] {
    flex-basis: 100%;
    display: flex;
    gap: 0 14px;
    align-items: flex-end;
}

.acc-flabel[b-yrupak4137] {
    font-weight: 700;
    font-size: 0.72rem;
    color: #243b4a;
    white-space: nowrap;
}

.acc-ffield[b-yrupak4137] {
    width: 190px;
}

.acc-fnarrow[b-yrupak4137] {
    width: 110px;
}

.acc-ffield[b-yrupak4137]  .mud-input-slot,
.acc-ffield[b-yrupak4137]  .mud-select-input {
    font-size: 0.78rem;
    padding-top: 1px;
    padding-bottom: 1px;
    background: #ffffff;
}

/* ---- Grille rouge (roster, façon Access) ---- */
.acc-grid[b-yrupak4137]  .mud-table-root {
    font-size: 0.78rem;
}

.acc-grid[b-yrupak4137]  th {
    background: #5f6b73 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    white-space: nowrap;
}

.acc-grid[b-yrupak4137]  td {
    background: #8a1327 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    border-color: #a83b4a !important;
    white-space: nowrap;
}

.acc-grid[b-yrupak4137]  tr:hover td {
    background: #a3182f !important;
}

/* Barre de défilement horizontale si les colonnes dépassent la largeur. */
.acc-grid-eleves[b-yrupak4137]  .mud-table-container {
    overflow-x: auto;
}

/* Table à largeur NATURELLE (layout auto) : chaque colonne s'adapte à son contenu (aucune
   troncature). La table déborde de la colonne bornée → le conteneur défile horizontalement. */
.acc-grid-eleves[b-yrupak4137]  .mud-table-root {
    width: max-content;
    min-width: 100%;
}

/* ---- Gel des 7 premières colonnes (N° Inscr · Matricule · Nom · Prénoms · Cycle · Niveau ·
   Classe) : elles restent visibles au défilement horizontal (position:sticky). Les offsets
   `left` sont MESURÉS au rendu par lcFreeze (index.html) et injectés en variables CSS
   --lc-fz-1..7 sur le wrapper → exacts même quand les colonnes s'élargissent au contenu. ---- */
.acc-grid-eleves[b-yrupak4137]  th:nth-child(-n+7),
.acc-grid-eleves[b-yrupak4137]  td:nth-child(-n+7) {
    position: sticky;
    z-index: 2;
}
.acc-grid-eleves[b-yrupak4137]  th:nth-child(-n+7) {
    z-index: 3;   /* l'en-tête figé passe au-dessus des cellules figées */
}
.acc-grid-eleves[b-yrupak4137]  th:nth-child(1), .acc-grid-eleves[b-yrupak4137]  td:nth-child(1) { left: var(--lc-fz-1, 0); }
.acc-grid-eleves[b-yrupak4137]  th:nth-child(2), .acc-grid-eleves[b-yrupak4137]  td:nth-child(2) { left: var(--lc-fz-2, 0); }
.acc-grid-eleves[b-yrupak4137]  th:nth-child(3), .acc-grid-eleves[b-yrupak4137]  td:nth-child(3) { left: var(--lc-fz-3, 0); }
.acc-grid-eleves[b-yrupak4137]  th:nth-child(4), .acc-grid-eleves[b-yrupak4137]  td:nth-child(4) { left: var(--lc-fz-4, 0); }
.acc-grid-eleves[b-yrupak4137]  th:nth-child(5), .acc-grid-eleves[b-yrupak4137]  td:nth-child(5) { left: var(--lc-fz-5, 0); }
.acc-grid-eleves[b-yrupak4137]  th:nth-child(6), .acc-grid-eleves[b-yrupak4137]  td:nth-child(6) { left: var(--lc-fz-6, 0); }
.acc-grid-eleves[b-yrupak4137]  th:nth-child(7), .acc-grid-eleves[b-yrupak4137]  td:nth-child(7) { left: var(--lc-fz-7, 0); }

/* Trait de césure à droite de la dernière colonne figée (repère visuel au défilement). */
.acc-grid-eleves[b-yrupak4137]  th:nth-child(7),
.acc-grid-eleves[b-yrupak4137]  td:nth-child(7) {
    border-right: 2px solid #5f6b73 !important;
}

/* Matricule : cellule sur fond jaune (look Access), texte foncé pour rester lisible. */
.acc-grid[b-yrupak4137]  td.acc-cell-matricule {
    background: #f5e08c !important;
    color: #1c2b36 !important;
}

/* Icônes (cases Inscrit / Actif) lisibles sur fond rouge. */
.acc-grid[b-yrupak4137]  td .mud-icon-root {
    color: #ffffff !important;
}

/* Sélecteurs éditables (Statut / Classe) : texte blanc, compact, aligné sur la cellule. */
.acc-grid[b-yrupak4137]  td .mud-input-slot,
.acc-grid[b-yrupak4137]  td .mud-select-input,
.acc-grid[b-yrupak4137]  td .mud-input {
    color: #ffffff !important;
    font-weight: 700;
    font-size: inherit !important;
}

.acc-grid[b-yrupak4137]  .acc-cell-select {
    width: 70px;
}

/* Champs de correction Nom / Prénoms (« Activer colonne ») : pleine largeur de leur colonne
   (le 70px générique ci-dessus serait trop étroit pour un nom). */
.acc-grid[b-yrupak4137]  .acc-cell-nom .acc-cell-select,
.acc-grid[b-yrupak4137]  .acc-cell-prenom .acc-cell-select {
    width: 100%;
}

/* Colonne Classe : le sélecteur fait EXACTEMENT la largeur de la colonne (comme dans la
   grille Versements/Scolarités), donc la flèche tombe à droite et le libellé (« TleD3 »,
   « NON DÉFINIE »…) n'est plus tronqué. */
.acc-grid[b-yrupak4137]  .acc-cell-classe {
    width: 88px;
}

/* Pas de trait de soulignement sous les sélecteurs Statut / Classe. */
.acc-grid[b-yrupak4137]  td .mud-input.mud-input-underline::before,
.acc-grid[b-yrupak4137]  td .mud-input.mud-input-underline::after {
    border-bottom: none !important;
}

/* Lignes compactes : rembourrage vertical réduit (le 26px final vient du global index.html). */
.acc-grid[b-yrupak4137]  td,
.acc-grid[b-yrupak4137]  th {
    padding-top: 1px !important;
    padding-bottom: 1px !important;
}

.acc-grid[b-yrupak4137]  td .mud-input-control {
    margin-top: 0 !important;
}

.acc-grid[b-yrupak4137]  td .mud-input-slot {
    min-height: 22px;
}

/* ---- Pied de grille ---- */
.acc-gridfoot[b-yrupak4137] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 4px 2px 0;
}

.acc-demo-note[b-yrupak4137] {
    font-style: italic;
    color: #8a5a00;
}

/* ==================== Grille (gauche) + Fiche Élève (droite) ==================== */

/* Rangée : grille à gauche (bornée → défilement horizontal), fiche à droite.
   align-items:flex-start → la fiche prend sa hauteur NATURELLE (≈ demi-page), alignée en
   haut avec la grille (plus d'étirement à la hauteur de la grille). */
.lc-layout[b-yrupak4137] {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    margin-top: 4px;
}

/* Colonne grille : prend l'espace restant ; min-width:0 est LA clé pour que le conteneur
   MudTable (overflow-x:auto) puisse être plus étroit que la table et défiler. */
.lc-grid-col[b-yrupak4137] {
    flex: 1 1 0;
    min-width: 0;
}

/* Colonne fiche : largeur fixe, à droite ; display:flex pour que le cadre s'étire en hauteur. */
.lc-fiche-col[b-yrupak4137] {
    flex: 0 0 auto;
    display: flex;
}

/* Cadre gris-bleu façon « Point de l'élève ». S'étire à la hauteur de la grille (flex child). */
.lc-fiche[b-yrupak4137] {
    background: #e8eef2;
    border: 1px solid #9fb0bb;
    width: 520px;
}

/* En-tête calqué sur le reçu de versement : école + année (gauche), logo (centre),
   titre + date (droite). */
.lc-entete[b-yrupak4137] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 12px;
    background: #cfd9df;
    border-bottom: 2px solid #9fb0bb;
}

.lc-entete-gauche[b-yrupak4137] {
    flex: 1 1 0;
    min-width: 0;
}

.lc-entete-logo[b-yrupak4137] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
}

.lc-entete-logo img[b-yrupak4137] {
    max-height: 56px;
    max-width: 90px;
    object-fit: contain;
}

.lc-entete-droite[b-yrupak4137] {
    flex: 1 1 0;
    min-width: 0;
    text-align: right;
}

.lc-entete-ecole[b-yrupak4137] {
    font-weight: 700;
    font-size: 1rem;
    color: #1c2b36;
}

.lc-entete-annee[b-yrupak4137],
.lc-entete-date[b-yrupak4137] {
    font-size: 0.72rem;
    color: #5a748a;
}

.lc-entete-titre[b-yrupak4137] {
    font-weight: 700;
    font-size: 0.95rem;
    color: #7a1f1f;
    letter-spacing: 1px;
}

/* Bandeau titre bord à bord (calque .svt-resume-titre). */
.lc-fiche-titre[b-yrupak4137] {
    padding: 6px 16px;
    font-weight: 700;
    font-size: 0.9rem;
    text-align: center;
    color: #1c2b36;
    background: #cfd9df;
    border-bottom: 2px solid #9fb0bb;
}

.lc-fiche-corps[b-yrupak4137] {
    display: flex;
    gap: 14px;
    padding: 8px 16px;
    align-items: flex-start;
}

/* Colonne photo : la photo + le bouton « Ajouter » empilés, centrés. */
.lc-photo-col[b-yrupak4137] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

/* Bouton d'ajout de photo : largeur du cadre photo. */
.lc-photo-btn[b-yrupak4137] {
    width: 132px;
}

/* Cadre PHOTO D'IDENTITÉ : ratio 35×45 mm (132×170 px ≈ 96 dpi). */
.lc-photo[b-yrupak4137] {
    flex: 0 0 auto;
    width: 132px;
    height: 170px;
    border: 1px solid #9fb0bb;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.lc-photo img[b-yrupak4137] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* Placeholder quand l'élève n'a pas de photo. */
.lc-photo-vide[b-yrupak4137] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    font-size: 0.72rem;
    color: #5a748a;
    text-align: center;
    padding: 6px;
}

/* Mini-fiche à droite de la photo : nom en tête + grille d'état civil. */
.lc-fiche-detail[b-yrupak4137] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
}

.lc-nom[b-yrupak4137] {
    font-weight: 700;
    font-size: 1rem;
    color: #7a1f1f;
    border-bottom: 1px solid #9fb0bb;
    padding-bottom: 4px;
}

/* Grille 2 colonnes de champs libellé/valeur (façon fiche d'identité). */
.lc-grid[b-yrupak4137] {
    display: grid;
    grid-template-columns: repeat(2, minmax(160px, 1fr));
    gap: 4px 20px;
    font-size: 0.82rem;
}

.lc-field[b-yrupak4137] {
    display: flex;
    gap: 8px;                 /* espace label↔valeur un peu élargi (était 4px) */
    align-items: baseline;
    border-bottom: 1px dotted #b9c6ce;
    padding: 1px 0;
}

/* Champ qui occupe toute la largeur (ex. Lieu de naissance, souvent long). */
.lc-field-large[b-yrupak4137] {
    grid-column: 1 / -1;
}

.lc-field span[b-yrupak4137] {
    flex: 0 0 76px;           /* label assez large pour « Lieu naiss. » sur 1 ligne (était 62px) */
    white-space: nowrap;      /* le label ne passe jamais sur 2 lignes */
    color: #5a748a;
}

.lc-field b[b-yrupak4137] {
    color: #1c2b36;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Bloc Tuteur : sous le corps (photo + détail), séparé par un trait pleine largeur
   (border-top bord à bord du cadre). */
/* Correspondants (Tuteur / Père / Mère) côte à côte, sous le corps de la fiche. */
.lc-parents[b-yrupak4137] {
    display: flex;
    gap: 18px;
    flex-wrap: wrap;                 /* passe à la ligne si la colonne fiche est trop étroite */
    border-top: 2px solid #9fb0bb;
    padding: 4px 16px 8px;
}

.lc-parent[b-yrupak4137] {
    flex: 1 1 180px;                 /* 3 colonnes égales, largeur mini avant retour à la ligne */
    min-width: 0;
}

.lc-tuteur-titre[b-yrupak4137] {
    font-weight: 700;
    font-size: 0.9rem;
    color: #7a1f1f;
    margin-bottom: 3px;
}

.lc-tuteur-corps[b-yrupak4137] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 0.82rem;
}

/* Ligne sélectionnée dans la grille rouge : bleu foncé (définie APRÈS .acc-grid td pour
   l'emporter à spécificité égale). */
[b-yrupak4137] .lc-ligne-sel td {
    background: #1b4f72 !important;
    color: #ffffff !important;
}

/* Survol de la ligne SÉLECTIONNÉE : garder le bleu (légèrement éclairci pour un retour de
   survol) au lieu de laisser le rouge de survol dominer. Spécificité 0,2,2 → bat
   « tr:hover td » (0,1,2) qui, sinon, masquait la sélection tant que le curseur reste dessus. */
.acc-grid[b-yrupak4137]  tr.lc-ligne-sel:hover td {
    background: #24628f !important;
}

/* ==================== Aperçu avant impression (liste de classe) ====================
   Rendu ÉCRAN uniquement. L'isolation à l'impression (masquer tout sauf .lc-feuille) est
   gérée globalement par @media print dans wwwroot/index.html (classe body lc-print-liste). */
.lc-preview-overlay[b-yrupak4137] {
    position: fixed;
    inset: 0;
    z-index: 1400;
    background: rgba(20, 30, 40, 0.55);
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 16px;
    overflow: auto;
}

.lc-preview-panel[b-yrupak4137] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 210mm;
    max-width: 100%;
}

/* Modèles larges (appel, trombinoscope) : aperçu en A4 paysage. */
.lc-preview-panel--paysage[b-yrupak4137] {
    width: 297mm;
}

.lc-preview-toolbar[b-yrupak4137] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 6px 10px;
}

.lc-preview-titre[b-yrupak4137] {
    font-weight: 700;
    color: #1c2b36;
}

/* Sélecteur de modèle dans la barre d'aperçu (écran seulement). */
.lc-preview-modele[b-yrupak4137] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.lc-preview-modele-label[b-yrupak4137] {
    font-weight: 700;
    font-size: 0.8rem;
    color: #1c2b36;
    white-space: nowrap;
}

.lc-preview-modele-field[b-yrupak4137] {
    width: 180px;
    background: #ffffff;
}

/* Feuille A4 blanche (WYSIWYG). print-color-adjust:exact → l'ombrage des en-têtes/lignes
   paires est conservé à l'impression. */
.lc-feuille[b-yrupak4137] {
    background: #ffffff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 12mm 14mm;   /* liste remontée : moins d'espace en haut */
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
    font-size: 11px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

/* Feuille en A4 paysage (appel, trombinoscope) : dimensions inversées. */
.lc-feuille--paysage[b-yrupak4137] {
    width: 297mm;
    min-height: 210mm;
}

.lc-feuille-entete[b-yrupak4137] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-bottom: 2px solid #333;
    padding-bottom: 8px;
    margin-bottom: 6px;
}

/* Gauche : ministère / DREN. */
.lc-feuille-ministere[b-yrupak4137] {
    flex: 1 1 0;
    min-width: 0;
}

.lc-feuille-min-titre[b-yrupak4137] {
    font-weight: 700;
    font-size: 12px;
    white-space: nowrap;
}

.lc-feuille-dren[b-yrupak4137] {
    font-size: 11px;
    color: #444;
    text-transform: uppercase;
}

/* Droite : école + année scolaire. */
.lc-feuille-ecole-droite[b-yrupak4137] {
    flex: 1 1 0;
    min-width: 0;
    text-align: right;
}

.lc-feuille-nom[b-yrupak4137] {
    font-weight: 700;
    font-size: 15px;
    text-transform: uppercase;
}

.lc-feuille-annee[b-yrupak4137] {
    font-size: 11px;
    color: #444;
}

.lc-feuille-logo[b-yrupak4137] {
    flex: 0 0 auto;
}

.lc-feuille-logo img[b-yrupak4137] {
    max-height: 60px;
    max-width: 100px;
    object-fit: contain;
}

/* Ligne titre (classe) + stats, sur une seule ligne. */
.lc-feuille-barre[b-yrupak4137] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 8px;
}

.lc-feuille-titre[b-yrupak4137] {
    font-weight: 700;
    font-size: 14px;
    color: #7a1f1f;
    letter-spacing: 1px;
}

/* Date d'édition, en bas de la liste. */
.lc-feuille-pied[b-yrupak4137] {
    margin-top: 10px;
    text-align: right;
    font-size: 11px;
    color: #444;
}

.lc-feuille-table[b-yrupak4137] {
    width: 100%;
    border-collapse: collapse;
    font-size: 11px;
}

.lc-feuille-table th[b-yrupak4137],
.lc-feuille-table td[b-yrupak4137] {
    border: 1px solid #555;
    padding: 3px 5px;
    text-align: left;
    white-space: nowrap;
}

.lc-feuille-table th[b-yrupak4137] {
    background: #e4e4e4;
    font-weight: 700;
}

.lc-feuille-table tbody tr:nth-child(even) td[b-yrupak4137] {
    background: #f4f4f4;
}

.lc-feuille-table .c-num[b-yrupak4137] {
    width: 34px;
    text-align: right;
}

.lc-feuille-table .c-sexe[b-yrupak4137] {
    width: 42px;
    text-align: center;
}

/* Nom & Prénoms : seule colonne autorisée à passer à la ligne (contenu long). */
.lc-feuille-table .c-nom[b-yrupak4137] {
    white-space: normal;
}

/* Colonnes vides (Appel / Notes) : étroites, à remplir à la main. En-tête plus haut pour
   écrire une date / un intitulé d'évaluation. */
.lc-feuille-table .c-vide[b-yrupak4137] {
    width: 26px;
}

.lc-feuille-table th.c-vide[b-yrupak4137] {
    height: 40px;
}

/* Fiche de notes : lignes plus hautes pour écrire à la main + Matricule/Nom resserrés
   (point 3 : libérer de la place pour les 10 colonnes de saisie). */
.lc-feuille-table--saisie td[b-yrupak4137] {
    padding-top: 7px;
    padding-bottom: 7px;
}

.lc-feuille-table--saisie .c-mat[b-yrupak4137],
.lc-appel-table .c-mat[b-yrupak4137] {
    width: 72px;
    font-size: 9px;
    letter-spacing: -0.2px;
}

.lc-feuille-table--saisie .c-nom[b-yrupak4137],
.lc-appel-table .c-nom[b-yrupak4137] {
    width: 150px;
    white-space: normal;
    font-size: 10px;
}

/* ---- Cahier d'appel hebdomadaire (LISTE DE PRÉSENCE), paysage ---- */

/* Bande « Semaine du… » + « Prof. Principal » sous la barre titre/stats. */
.lc-appel-band[b-yrupak4137] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 6px;
    font-size: 12px;
    font-weight: 700;
}

.lc-appel-table[b-yrupak4137] {
    table-layout: fixed;   /* colonnes de créneaux toutes étroites et régulières */
}

/* En-têtes des jours (LUNDI…) et des créneaux (7 à 8…). */
.lc-appel-table .lc-appel-jour[b-yrupak4137] {
    text-align: center;
    font-style: italic;
    font-size: 12px;
}

.lc-appel-table .lc-appel-creneau[b-yrupak4137] {
    text-align: center;
    font-size: 8px;
    line-height: 1;
    padding: 2px 0;
    font-weight: 700;
}

/* Cases vides à cocher : étroites, hauteur d'écriture. */
.lc-appel-table .lc-appel-case[b-yrupak4137] {
    width: 16px;
    height: 22px;
    padding: 0;
}

/* Trait plus marqué entre deux jours (toutes les 9 colonnes après N°/Mat/Nom). */
.lc-appel-table .lc-appel-jour + .lc-appel-jour[b-yrupak4137],
.lc-appel-table .lc-appel-creneau:nth-child(9n + 1)[b-yrupak4137] {
    border-left: 2px solid #333;
}

.lc-feuille-vide[b-yrupak4137] {
    text-align: center;
    font-style: italic;
    padding: 12px;
}

/* ---- Trombinoscope : grille de cartes photo + Nom & Prénoms + Matricule. ---- */
.lc-tromb[b-yrupak4137] {
    display: grid;
    grid-template-columns: repeat(6, 1fr);   /* paysage : 6 cartes par ligne */
    gap: 8px;
}

.lc-tromb-carte[b-yrupak4137] {
    border: 1px solid #555;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 4px;
    text-align: center;
    break-inside: avoid;   /* ne pas couper une carte entre deux pages */
}

/* Cadre photo d'identité (ratio 35×45). */
.lc-tromb-photo[b-yrupak4137] {
    width: 100%;
    aspect-ratio: 35 / 45;
    border: 1px solid #999;
    background: #f4f4f4;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    margin-bottom: 4px;
}

.lc-tromb-photo img[b-yrupak4137] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.lc-tromb-nom[b-yrupak4137] {
    font-weight: 700;
    font-size: 10px;
    line-height: 1.15;
}

.lc-tromb-mat[b-yrupak4137] {
    font-size: 9px;
    color: #444;
}

.lc-feuille-totaux[b-yrupak4137] {
    display: flex;
    gap: 28px;
    justify-content: flex-end;
    font-size: 12px;
    white-space: nowrap;
}

/* ============ Panneau « Action en masse » (bas de grille) ============ */
.lc-bulk[b-yrupak4137] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 6px;
    padding: 4px 2px;
}

/* Libelle commun aux barres « Action en masse » et « Activer colonne ».
   La largeur FIXE est ce qui aligne les deux deroulantes l'une SOUS l'autre : sans elle,
   chaque deroulante demarre a la fin de son texte. Mesure reelle (Roboto 13px / 600) :
   « Action en masse : » = 106,79px, « Activer colonne : » = 100,80px -> les deroulantes
   etaient decalees de 6px. 115px contient le plus long avec une marge de securite si
   Roboto n'est pas charge (repli Arial, legerement plus large).
   nowrap : le libelle ne doit jamais passer sur 2 lignes, ce qui casserait l'alignement. */
.lc-bulk-label[b-yrupak4137] {
    font-weight: 600;
    font-size: 13px;
    flex: 0 0 auto;
    width: 115px;
    white-space: nowrap;
}

/* ============ Panneau « Activer colonne » (édition inline de correction) ============ */
.lc-activer[b-yrupak4137] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    padding: 2px 2px 4px;
}

.lc-activer-hint[b-yrupak4137] {
    font-size: 12px;
    font-style: italic;
    color: #8a5a00;
}

/* ============ Liste pour Prof (modèle PDF NDLacs « LISTE-DE-CLASSE.pdf ») ============
   Calée au point près sur le PDF : toutes les mesures sont en pt (1pt CSS = 1pt PDF) et les
   positions de l'en-tête sont celles relevées dans le PDF (A4 = 595,4 × 842 pt). Les marges
   viennent de la feuille (padding) : à l'impression, @page est posé à 0 (cf. lcImprimerListe). */
.lc-feuille--cases[b-yrupak4137] {
    padding: 14pt 26.1pt 10pt 22.2pt;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 8pt;
    color: #000;
}

/* En-tête : zones placées en absolu dans un bloc de 70pt (le tableau démarre à 84pt du haut). */
.lcc-entete[b-yrupak4137] {
    position: relative;
    z-index: 0;   /* contexte d'empilement : l'ombre du cadre titre reste au-dessus de la feuille */
    height: 70pt;
}

.lcc-ecole[b-yrupak4137] {
    position: absolute;
    left: 1pt;
    top: 0;
    font-family: Tahoma, Verdana, Arial, sans-serif;
    font-size: 9pt;
    font-weight: 700;
    line-height: 13.5pt;
    text-transform: uppercase;
    white-space: nowrap;
}

/* Cadre « LISTE DE CLASSE : 6è 1 » avec ombre portée pleine (décalée de 3pt). L'ombre est un
   fond (et non un box-shadow) pour être imprimée à coup sûr. */
.lcc-titre[b-yrupak4137] {
    position: absolute;
    left: 206.6pt;
    top: 20pt;
    width: 181.5pt;
    height: 18pt;
    box-sizing: border-box;
    border: 0.5pt solid #000;
    background: #fff;
    display: flex;
    align-items: center;
    white-space: nowrap;
}

.lcc-titre[b-yrupak4137]::before {
    content: "";
    position: absolute;
    left: 3pt;
    top: 3pt;
    width: 100%;
    height: 100%;
    background: #000;
    z-index: -1;
}

.lcc-titre-lib[b-yrupak4137] {
    font-family: Tahoma, Verdana, Arial, sans-serif;
    font-size: 12pt;
    font-weight: 700;
    padding-left: 1pt;
    letter-spacing: 0.3pt;
}

.lcc-titre-classe[b-yrupak4137] {
    position: absolute;
    left: 131pt;
    font-family: Tahoma, Verdana, Arial, sans-serif;
    font-size: 10pt;
    font-weight: 700;
}

.lcc-annee[b-yrupak4137] {
    position: absolute;
    right: 3.5pt;
    top: 3pt;
    font-size: 8pt;
    white-space: nowrap;
}

/* Tableau Effectif / Red (Total · Filles · Garçons), coin haut droit. */
.lcc-effectif[b-yrupak4137] {
    position: absolute;
    left: 404.3pt;
    top: 17pt;
    width: 141pt;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 8pt;
}

.lcc-effectif th[b-yrupak4137],
.lcc-effectif td[b-yrupak4137] {
    border: 0.5pt solid #000;
    padding: 0 2pt;
    line-height: 1;
    white-space: nowrap;
    text-align: center;
}

.lcc-effectif th[b-yrupak4137] {
    height: 16.3pt;
    font-weight: 400;
}

.lcc-effectif td[b-yrupak4137] {
    height: 12pt;
    font-weight: 700;
}

.lcc-effectif th:nth-child(1)[b-yrupak4137], .lcc-effectif td:nth-child(1)[b-yrupak4137] { width: 35.5pt; }
.lcc-effectif th:nth-child(2)[b-yrupak4137], .lcc-effectif td:nth-child(2)[b-yrupak4137] { width: 34pt; }
.lcc-effectif th:nth-child(3)[b-yrupak4137], .lcc-effectif td:nth-child(3)[b-yrupak4137] { width: 32.3pt; }
.lcc-effectif th:nth-child(4)[b-yrupak4137], .lcc-effectif td:nth-child(4)[b-yrupak4137] { width: 39.3pt; }

/* Libellés de ligne (Effectif / Red) : à gauche, maigres. */
.lcc-effectif td:first-child[b-yrupak4137] {
    text-align: left;
    padding-left: 3.5pt;
    font-weight: 400;
}

.lcc-educateur[b-yrupak4137],
.lcc-prof[b-yrupak4137] {
    position: absolute;
    top: 57pt;
    font-size: 8pt;
    white-space: nowrap;
}

.lcc-educateur[b-yrupak4137] { left: 1pt; }
.lcc-prof[b-yrupak4137] { left: 293.8pt; }

/* Tableau des élèves : 6 colonnes renseignées + 8 cases vides (largeurs dans le colgroup). */
.lcc-table[b-yrupak4137] {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 8pt;
}

.lcc-table th[b-yrupak4137],
.lcc-table td[b-yrupak4137] {
    border: 0.75pt solid #000;
    padding: 0 0 0 2pt;
    line-height: 1;
    text-align: left;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: clip;
}

.lcc-table th[b-yrupak4137] {
    height: 17.3pt;
    font-weight: 400;
}

.lcc-table td[b-yrupak4137] {
    height: 15pt;
}

.lcc-table .lcc-mat[b-yrupak4137] { padding-left: 5pt; }
.lcc-table .lcc-nom-th[b-yrupak4137] { padding-left: 11pt; word-spacing: 14pt; }
.lcc-table .lcc-dnais[b-yrupak4137] { padding-left: 0; }
.lcc-table .lcc-s[b-yrupak4137] { padding-left: 4.6pt; }

.lcc-table .lcc-num[b-yrupak4137] {
    text-align: right;
    padding: 0 2.4pt 0 0;
}

/* Nom  Prénoms séparés par deux espaces (comme le PDF) ; tronqué au bord de la colonne. */
.lcc-table .lcc-nom[b-yrupak4137] {
    padding-left: 3.4pt;
    white-space: pre;
}

.lcc-table .lcc-c[b-yrupak4137] {
    text-align: center;
    padding: 0;
}

.lcc-pied[b-yrupak4137] {
    margin-top: 2pt;
    padding-right: 12pt;
    text-align: right;
    font-size: 7pt;
}

/* ==================== Pagination de l'aperçu (feuilles A4 multiples) ====================
   Une .lc-feuille par page ; à l'écran seule la page courante est affichée. L'impression
   clone .lc-feuilles hors de l'overlay (lcImprimerListe, index.html) et y montre TOUTES les
   pages, une par feuille de papier. */
.lc-feuilles[b-yrupak4137] {
    position: relative;   /* repère de la feuille de mesure (absolue, invisible) */
}

.lc-feuille--cachee[b-yrupak4137] {
    display: none;
}

/* Feuille de mesure : toute la liste dans UNE feuille, invisible et à hauteur de contenu,
   le temps que lcMesurerPages relève la hauteur réelle des lignes. */
.lc-feuille--mesure[b-yrupak4137] {
    position: absolute;
    left: 0;
    top: 0;
    visibility: hidden;
    min-height: 0 !important;
    height: auto !important;
    max-width: none !important;
    pointer-events: none;
}

/* Barre d'aperçu : navigation Page x / y. */
.lc-preview-pages[b-yrupak4137] {
    display: flex;
    align-items: center;
    gap: 2px;
    background: #ffffff;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 0 4px;
}

.lc-preview-pages-num[b-yrupak4137] {
    font-size: 0.8rem;
    color: #1c2b36;
    white-space: nowrap;
    padding: 0 6px;
}

.lc-preview-pages-info[b-yrupak4137] {
    font-size: 0.8rem;
    font-style: italic;
    color: #1c2b36;
}

/* Bandeau : élèves de la sélection écartés de l'impression (non inscrits / inactifs). */
.lc-preview-exclus[b-yrupak4137] {
    background: #fff4e5;
    border: 1px solid #f0b46a;
    border-radius: 4px;
    padding: 4px 10px;
    font-size: 0.8rem;
    color: #8a5a00;
}

/* Numéro de page dans le pied (à gauche, la date reste à droite). */
.lc-feuille-page[b-yrupak4137] {
    float: left;
}

/* ================== Attestation de fréquentation (A4 portrait) ==================
   Calque du modèle Access (Desktop\Trajan\AttestationDeFrequentation.pdf) : libellés en police
   à chasse fixe, valeurs en gras, titre souligné. HTML pur, imprimé seul (index.html). */
.att-feuille[b-yrupak4137] {
    background: #fff; color: #111;
    width: 210mm; max-width: 100%; min-height: 297mm;
    padding: 14mm 16mm 16mm 18mm; box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0,0,0,.35);
    font-family: Calibri, "Segoe UI", Arial, sans-serif;
    font-size: 15px;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
}
.att-entete[b-yrupak4137] { display: flex; justify-content: space-between; align-items: flex-start; }
.att-ministere[b-yrupak4137] { text-align: center; font-weight: 700; line-height: 1.15; }
.att-rci[b-yrupak4137] { font-size: 12px; }
.att-min[b-yrupak4137] { font-size: 8px; }
.att-devise[b-yrupak4137] { text-align: center; font-size: 11px; font-family: Arial, sans-serif; line-height: 1.4; }
.att-devise-mots[b-yrupak4137] { font-style: italic; }
.att-titre-bloc[b-yrupak4137] {
    display: flex; align-items: center; gap: 18px;
    margin-top: 2mm; padding-bottom: 3mm; border-bottom: 2px solid #111;
}
.att-logo[b-yrupak4137] { height: 26mm; max-width: 30mm; object-fit: contain; }
.att-titre-textes[b-yrupak4137] { flex: 1 1 auto; text-align: center; font-family: "Courier New", Courier, monospace; }
.att-titre[b-yrupak4137] { font-weight: 700; font-size: 19px; text-decoration: underline; letter-spacing: .5px; }
.att-sous-titre[b-yrupak4137] { font-size: 12px; }
.att-corps[b-yrupak4137] { margin-top: 6mm; }
.att-ligne[b-yrupak4137] { margin: 0 0 4.2mm; min-height: 1.2em; }
.att-lib[b-yrupak4137] { font-family: "Courier New", Courier, monospace; font-size: 14px; }
.att-retrait[b-yrupak4137] { padding-left: 5mm; }
.att-retrait2[b-yrupak4137] { padding-left: 14mm; }
.att-val-a[b-yrupak4137] { margin-left: 10mm; }
.att-deux[b-yrupak4137] { display: flex; gap: 22mm; }
.att-signature[b-yrupak4137] { margin: 22mm 0 0 92mm; }
.att-signataire-titre[b-yrupak4137] {
    margin-top: 9mm; font-family: "Courier New", Courier, monospace; font-weight: 700; font-size: 15px;
}
.att-signataire-nom[b-yrupak4137] {
    margin-top: 22mm; font-family: "Courier New", Courier, monospace; font-weight: 700; font-size: 15px;
}
/* /Pages/Notes/Bulletins.razor.rz.scp.css */
/* ===================== Bulletin trimestriel de notes =====================
   Feuille A4 PORTRAIT, une par élève. HTML pur (aucun composant MudBlazor) : le CSS scopé
   Blazor s'y applique proprement et l'impression n'a rien à démêler. L'aperçu EST la page
   imprimée — c'est la même feuille à l'écran et sur le papier.
   print-color-adjust: exact garde les ombrages (bilans, totaux) à l'impression. */

.bl-feuille[b-5sun27w2ha] {
    background: #fff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    /* Padding vertical SYMÉTRIQUE (6 mm en haut ET en bas) : combiné au centrage flex ci-dessous,
       il garantit marge sup = marge inf. 6 mm (et non 8) préserve la hauteur utile — le bulletin
       doit tenir sur UNE page ; à l'impression la feuille fait 281 mm, contenu ≤ 269 mm. */
    padding: 6mm 10mm;
    margin: 0 auto 18px;
    box-sizing: border-box;
    /* Le contenu (un seul enfant : « .bl-page ») est centré verticalement dans la feuille : il ne
       colle plus au bord supérieur, le blanc se répartit également en haut et en bas. « safe » =
       repli en haut si un bulletin très rempli dépassait, pour ne jamais rogner l'en-tête. */
    display: flex;
    flex-direction: column;
    justify-content: safe center;
    /* Fond blanc de la feuille A4. Le filigrane n'est PAS positionné ici mais sur « .bl-page »,
       qui a la hauteur du contenu — sinon il se centrerait sur les 297 mm et tomberait trop bas
       quand le contenu est court. */
    position: relative;
    box-shadow: 0 6px 24px rgba(0,0,0,.35); /* écran seulement */
    font-family: Calibri, Segoe UI, Arial, sans-serif;
    font-size: 11.5px;
    line-height: 1.25;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
    /* Une page par élève : la liasse s'imprime d'un coup. */
    page-break-after: always;
    break-after: page;
}

.bl-feuille:last-child[b-5sun27w2ha] {
    page-break-after: auto;
    break-after: auto;
}

.bl-lib[b-5sun27w2ha] { color: #333; }

/* Bloc à la hauteur du CONTENU (≠ la feuille, forcée à 297 mm). C'est le contexte de
   positionnement ET d'empilement du filigrane : son z-index négatif reste au-dessus du fond
   blanc de la feuille et sous le contenu, et le grand caractère se centre verticalement sur le
   contenu réel — jamais sur le blanc du bas de page. */
.bl-page[b-5sun27w2ha] { position: relative; isolation: isolate; }

/* ---------- Série en filigrane (lycée) ----------
   Grande lettre de série (A / C / D…) posée DERRIÈRE tout le contenu : z-index négatif dans le
   contexte d'empilement de .bl-page, donc au-dessus du fond blanc et sous la table. Elle
   transparaît dans les cellules laissées transparentes et se fond sous les lignes ombrées —
   l'effet « filigrane » recherché. pointer-events: none : jamais dans le chemin d'un clic.
   print-color-adjust: exact la fait aussi sortir au papier. */
.bl-filigrane[b-5sun27w2ha] {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: -1;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    pointer-events: none;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.bl-filigrane span[b-5sun27w2ha] {
    font-family: Calibri, Segoe UI, Arial, sans-serif;
    font-weight: 800;
    font-size: 120mm;
    line-height: 1;
    letter-spacing: 4px;
    color: #1b4f72;      /* bleu de l'en-tête, atténué */
    opacity: .09;
    white-space: nowrap;
    user-select: none;
}

/* ---------- En-tête ---------- */
.bl-entete[b-5sun27w2ha] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 8px;
}

/* margin-top négatif : la tutelle « RÉPUBLIQUE… » remonte au-dessus du cartouche du titre
   (flanque le titre par la gauche, à la manière des états officiels ivoiriens). PLAFONNÉ à -5 mm
   (et pas -8) pour garder une marge d'impression sûre : padding haut 6 mm + marge @page 8 mm − 5 mm
   ≈ 9 mm du bord ; à -8 mm on tombait à ~6 mm (risque de rognage en haut). La devise suit (-5 mm). */
.bl-tutelle[b-5sun27w2ha] { flex: 1 1 0; min-width: 0; margin-top: -5mm; }
/* inline-block + position:relative : sert de repère pour CENTRER le trait sous le texte et le CALER
   sur le bas de la ligne « RÉPUBLIQUE… » — donc à la même hauteur que le trait de la devise. */
.bl-tutelle-1[b-5sun27w2ha] { position: relative; display: inline-block; font-weight: 700; font-size: 12px; color: #000; white-space: nowrap; }
/* Bloc à largeur du contenu (= « MINISTÈRE… », la plus large) et centré : « ET DE L'ALPHABÉTISATION »
   se centre ainsi sous « MINISTÈRE DE L'ÉDUCATION NATIONALE ». */
.bl-tutelle-min[b-5sun27w2ha] { width: fit-content; text-align: center; }
.bl-tutelle-2[b-5sun27w2ha] { font-weight: 700; font-size: 8.5px; color: #000; }
/* Trait centré sous RÉPUBLIQUE : même LARGEUR que la devise (gabarit « - Discipline - » invisible,
   mêmes métriques 11,5 px italique) et même HAUTEUR (soulignement du bas de ligne, en absolu).
   Absolu = n'occupe aucune place, « MINISTÈRE » ne bouge pas. Régler la hauteur via « bottom ». */
.bl-tutelle-trait[b-5sun27w2ha] { position: absolute; left: 50%; bottom: 1px; transform: translateX(-50%); line-height: 0; }
.bl-tutelle-trait span[b-5sun27w2ha] {
    display: inline-block;
    font-style: italic;
    font-weight: 700;
    font-size: 11.5px;
    line-height: 0;
    color: transparent;
    border-bottom: 1px solid #000;
    padding-bottom: 1px;
}

/* Devise nationale, en haut à DROITE, au même niveau que « RÉPUBLIQUE… » (même remontée) et
   juste au-dessus de « Année scolaire » : italique gras, un poil plus grande (11,5 px > 10 px). */
.bl-entete-devise[b-5sun27w2ha] {
    font-style: italic;
    font-weight: 700;
    font-size: 11.5px;
    margin-top: -5mm;
    margin-bottom: 4px;
    white-space: nowrap;
}

.bl-titre-boite[b-5sun27w2ha] {
    flex: 0 0 auto;
    border: 2px solid #111;
    padding: 5px 14px;
    text-align: center;
}

.bl-titre[b-5sun27w2ha] { font-weight: 700; font-size: 13px; letter-spacing: .3px; }
.bl-periode[b-5sun27w2ha] { font-weight: 700; font-size: 12px; }

.bl-annee[b-5sun27w2ha] { flex: 1 1 0; min-width: 0; text-align: right; font-size: 10px; }
/* Bloc calé à droite mais à contenu CENTRÉ : sa largeur = la ligne la plus large (la devise),
   donc « Année scolaire » se centre sous la devise et « 2025-2026 » sous « Année scolaire ». */
.bl-annee-bloc[b-5sun27w2ha] { display: inline-block; text-align: center; }
/* Trait sous la devise, borné aux tirets (« - Discipline - »). Même style que sous RÉPUBLIQUE. */
.bl-devise-trait[b-5sun27w2ha] { border-bottom: 1px solid #000; padding-bottom: 1px; }
.bl-annee-val[b-5sun27w2ha] { font-weight: 700; font-size: 11px; }

/* ---------- Identité de l'établissement ---------- */
.bl-ecole[b-5sun27w2ha] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 6px;
}

/* Logo DANS le bloc « bl-tutelle-min » (largeur = « MINISTÈRE… ») : centré sous « ET DE
   L'ALPHABÉTISATION ». Régler l'aération via margin-top. */
.bl-logo[b-5sun27w2ha] { margin-top: 2mm; text-align: center; }

.bl-logo img[b-5sun27w2ha] {
    max-height: 16mm;
    max-width: 24mm;
    object-fit: contain;
    display: inline-block;
}

.bl-ecole-lignes[b-5sun27w2ha] { flex: 1 1 auto; min-width: 0; }

.bl-ecole-ligne[b-5sun27w2ha] {
    display: flex;
    align-items: baseline;
    gap: 4px;
    padding: 1px 0;
}

.bl-ecole-nom[b-5sun27w2ha] { flex: 1 1 auto; }
.bl-ecole-code[b-5sun27w2ha] { margin-left: auto; }

/* ---------- Identité de l'élève ---------- */
.bl-identite[b-5sun27w2ha] {
    display: flex;
    align-items: stretch;
    gap: 6px;
    margin-bottom: 6px;
}

.bl-identite-corps[b-5sun27w2ha] {
    flex: 1 1 auto;
    min-width: 0;
    border: 2px solid #111;
    padding: 3px;
    display: flex;
}

/* Liseré arrondi INTÉRIEUR : sur l'état Trajan le bloc d'identité est encadré une seconde
   fois, d'un trait fin à coins arrondis, en retrait du cadre épais.
   C'est aussi lui qui centre le texte : le bloc est haut comme la photo (4 cm) alors que les
   cinq lignes n'en occupent que la moitié — sans le justify-content, tout reste collé en haut
   et il reste une bande vide sous « N° d'ordre ». */
.bl-identite-cadre[b-5sun27w2ha] {
    flex: 1 1 auto;
    min-width: 0;
    border: 1px solid #111;
    border-radius: 8px;
    padding: 6px 10px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.bl-eleve-nom[b-5sun27w2ha] { font-size: 13px; margin-bottom: 5px; }
.bl-eleve-nom b[b-5sun27w2ha] { font-size: 14.5px; margin-left: 6px; }

/* Trois colonnes, comme l'état Trajan : identité / naissance / situation. */
.bl-identite-grille[b-5sun27w2ha] {
    display: grid;
    grid-template-columns: 1fr 1.3fr 1fr;
    row-gap: 3px;
    column-gap: 8px;
}

.bl-identite-grille > div[b-5sun27w2ha] { display: flex; gap: 4px; }
.bl-identite-grille b[b-5sun27w2ha] { font-weight: 700; }

/* La photo de l'élève, cadrée et rognée pour remplir l'encadré (l'état Trajan ne laisse pas
   de blanc autour). Sans photo, l'encadré reste dessiné : on y colle la photo papier.
   Dimensions RELEVÉES SUR L'ÉTAT TRAJAN : 3,199 cm × 4 cm, à ne pas laisser s'étirer sur la
   hauteur du bloc d'identité — d'où le align-self. */
.bl-photo[b-5sun27w2ha] {
    flex: 0 0 3.199cm;
    height: 4cm;
    align-self: flex-start;
    border: 2px solid #111;
    overflow: hidden;
}

.bl-photo img[b-5sun27w2ha] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* ---------- Corps ---------- */
.bl-table[b-5sun27w2ha] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.bl-table th[b-5sun27w2ha],
.bl-table td[b-5sun27w2ha] {
    border: 1px solid #111;
    padding: 2px 3px;
    text-align: center;
    vertical-align: middle;
    overflow: hidden;
}

.bl-table th[b-5sun27w2ha] { font-weight: 700; font-size: 10.5px; }

/* Les largeurs ne sont PAS ici : elles vivent dans le <colgroup> de la table, seul endroit
   que « table-layout: fixed » respecte (voir le commentaire du .razor).
   Ne reste donc que ce qui échappe à la règle générale : DISCIPLINES est la seule colonne
   ferrée à gauche, et les appréciations sont en italique. Rang, APPRECIATIONS et NOM ET
   PRENOMS sont centrés comme le reste — choix de Keita, l'état Trajan les ferre à gauche. */
.c-disc[b-5sun27w2ha] { text-align: left !important; }
.c-appr[b-5sun27w2ha] { font-style: italic; }

/* Colonne « Résultats Annuels » (3e trimestre) : moyenne annuelle (italique) et rang, en DEUX
   sous-colonnes séparées, comme « Moy. Trimest. ». */
.c-annuel[b-5sun27w2ha] { text-align: center; }
.c-moy-an[b-5sun27w2ha], .c-rang-an[b-5sun27w2ha] { text-align: center; }
.bl-moy-an[b-5sun27w2ha] { font-style: italic; }
/* Bloc annuel des lignes de bilan (« Annuels : … / 20   Rang : … »). */
.bl-bilan-an[b-5sun27w2ha] { text-align: center; }
.bl-bilan-an .bl-bilan-an-rang[b-5sun27w2ha] { margin-left: 14px; }

/* Le bloc composite. L'indentation des composantes est ce qui dit, à l'œil, que Comp.
   Française appartient au Français — et sur l'état Trajan les traits qui séparent l'agrégat
   de ses composantes, puis les composantes entre elles, DÉMARRENT à cette indentation : ils
   ne touchent pas le bord gauche du tableau. Seul le trait qui ferme le bloc le traverse.
   D'où le découpage : on efface les bordures horizontales portées par les cellules, et c'est
   le bloc décalé (.bl-sous) qui redessine le haut et le côté gauche. */
.bl-agregat .c-disc[b-5sun27w2ha] { border-bottom: none; }

.bl-composante .c-disc[b-5sun27w2ha] {
    border-top: none;
    border-bottom: none;
    padding: 0;
}

.bl-composante-fin .c-disc[b-5sun27w2ha] { border-bottom: 1px solid #111; }

.bl-sous[b-5sun27w2ha] {
    display: block;
    margin-left: 16px;
    border-top: 1px solid #111;
    border-left: 1px solid #111;
    padding: 2px 3px 2px 6px;
}

/* Ligne de bilan de groupe : barre grisée qui ferme le bloc. Pas de traits séparateurs
   INTERNES (la barre est d'un seul tenant) ; on garde seulement les bords extérieurs. */
.bl-bilan td[b-5sun27w2ha] {
    background: #d9d9d9;
    font-weight: 700;
    border-left: none;
    border-right: none;
}
.bl-bilan td:first-child[b-5sun27w2ha] { border-left: 1px solid #111; }
.bl-bilan td:last-child[b-5sun27w2ha] { border-right: 1px solid #111; }

.bl-bilan-moy[b-5sun27w2ha] { text-align: center; }
.bl-bilan-rang[b-5sun27w2ha] { text-align: center; }
.bl-bilan-rang .bl-lib[b-5sun27w2ha] { font-weight: 700; margin-right: 18px; }

.bl-totaux td[b-5sun27w2ha] {
    background: #d9d9d9;
    font-weight: 700;
}

.bl-totaux .c-disc[b-5sun27w2ha] { text-align: right !important; }

/* ---------- Les deux bandeaux de trois cases ---------- */
.bl-trio[b-5sun27w2ha] {
    display: grid;
    grid-template-columns: 1fr 1fr 1.15fr;
    border: 2px solid #111;
    border-top: none;
}

.bl-trio-bas[b-5sun27w2ha] { margin-top: 6px; border-top: 2px solid #111; }

/* ---------- Bandeaux + BILAN ANNUEL (3e trimestre) ---------- */
/* Bandeau titre pleine largeur (« BILAN DU 3è TRIMESTRE » / « BILAN ANNUEL »), collé au bloc
   au-dessus via border-top: none. */
.bl-bandeau[b-5sun27w2ha] {
    border: 2px solid #111;
    border-top: none;
    text-align: center;
    font-weight: 700;
    font-size: 11px;
    letter-spacing: .3px;
    padding: 2px;
}
/* Bloc du BILAN ANNUEL : moyenne générale annuelle (large) + résultats de classe annuels, alignés
   sous le trio (2fr couvre Assiduité+Moyenne, 1.15fr couvre Résultats). */
.bl-annuel-bloc[b-5sun27w2ha] {
    display: grid;
    grid-template-columns: 2fr 1.15fr;
    border: 2px solid #111;
    border-top: none;
}
.bl-mga[b-5sun27w2ha] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: center;
    gap: 3px;
}
.bl-mga-titre[b-5sun27w2ha] { font-weight: 700; font-size: 11px; letter-spacing: .3px; }
.bl-mga-val[b-5sun27w2ha] { font-size: 13px; }
.bl-mga-rang[b-5sun27w2ha] { font-size: 12px; margin-left: 12px; }

/* Rappel des 2 trimestres passés, sous la moyenne trimestrielle : 2 colonnes compactes. */
.bl-rappel[b-5sun27w2ha] { margin-top: 5px; font-size: 9px; }
.bl-rappel-titre[b-5sun27w2ha] { font-weight: 700; text-decoration: underline; margin-bottom: 1px; }
.bl-rappel-grid[b-5sun27w2ha] { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.bl-rappel-lib[b-5sun27w2ha] { font-weight: 700; }

.bl-case[b-5sun27w2ha] {
    border-right: 1px solid #111;
    padding: 4px 6px;
    min-height: 62px;
}

.bl-case:last-child[b-5sun27w2ha] { border-right: none; }

.bl-case-titre[b-5sun27w2ha] { text-align: center; font-weight: 700; margin-bottom: 3px; }
.bl-souligne[b-5sun27w2ha] { text-decoration: underline; }

.bl-abs[b-5sun27w2ha] { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.bl-abs-l[b-5sun27w2ha] { min-width: 90px; }
.bl-educ[b-5sun27w2ha] { margin-top: 8px; }

.bl-moyenne[b-5sun27w2ha] { text-align: center; }
.bl-moy-val[b-5sun27w2ha] { font-size: 14px; font-weight: 700; margin: 6px 0; }
/* Rang inline à côté de la moyenne : plus petit et non gras (le rang lui-même reste en <b>). */
.bl-moy-rang[b-5sun27w2ha] { font-size: 11px; font-weight: 400; margin-left: 8px; }

.bl-res-l[b-5sun27w2ha] { display: flex; justify-content: space-between; gap: 8px; font-size: 10.5px; }

.bl-tranches[b-5sun27w2ha] {
    width: 100%;
    border-collapse: collapse;
    margin-top: 4px;
    font-size: 8px;
    table-layout: fixed;
}

.bl-tranches td[b-5sun27w2ha] {
    border: 1px solid #111;
    text-align: center;
    padding: 1px;
}

.bl-tranches-val td[b-5sun27w2ha] { font-weight: 700; font-size: 10px; }

/* ---------- Mentions ---------- */
.bl-sous-titre[b-5sun27w2ha] { font-weight: 700; text-decoration: underline; margin-top: 3px; }
.bl-coche[b-5sun27w2ha] { display: flex; align-items: center; gap: 5px; }

.bl-case-a-cocher[b-5sun27w2ha] {
    display: inline-block;
    width: 9px;
    height: 9px;
    border: 1.4px solid #111;
    flex: 0 0 auto;
}

/* Colonne « Appréciations » calquée sur l'encadré signataire voisin : le titre « Professeur
   Principal » est descendu, et le bloc NOM + « Signature: » est collé AU BAS (comme « bl-dir-bas »).
   Les deux cases s'étirant à la même hauteur dans la grille, le NOM s'aligne avec le nom du
   directeur et « Signature: » avec « ville le date ». */
.bl-appreciations[b-5sun27w2ha] { display: flex; flex-direction: column; }
.bl-app-bas[b-5sun27w2ha] { margin-top: auto; }
.bl-pp[b-5sun27w2ha] { margin-bottom: 2px; }
.bl-app-nom[b-5sun27w2ha] { margin-bottom: 2px; }

.bl-directeur[b-5sun27w2ha] { text-align: center; display: flex; flex-direction: column; }
/* Nom du chef + ville/date poussés vers le BAS de l'encadré (contre le dernier trait du bulletin). */
.bl-dir-bas[b-5sun27w2ha] { margin-top: auto; }
.bl-dir-nom[b-5sun27w2ha] { font-weight: 700; margin-bottom: 2px; text-transform: uppercase; }
.bl-dir-lieu[b-5sun27w2ha] { }

/* ---------- Décision du conseil de classe (3e trimestre) ---------- */
.bl-decision[b-5sun27w2ha] {
    display: flex;
    align-items: center;
    gap: 8px;
    border: 2px solid #111;
    padding: 3px 8px;
    margin-top: 6px;
}
.bl-decision-lib[b-5sun27w2ha] { font-weight: 700; text-decoration: underline; white-space: nowrap; }
.bl-decision-input[b-5sun27w2ha] {
    flex: 1 1 auto;
    border: none;
    border-bottom: 1px dotted #999;
    background: transparent;
    font-family: inherit;
    font-size: 12px;
    font-style: italic;
    font-weight: 700;
    color: #111;
    padding: 1px 4px;
}
.bl-decision-input:focus[b-5sun27w2ha] { outline: none; border-bottom-color: #1b4f72; }
.bl-decision-reset[b-5sun27w2ha] {
    flex: 0 0 auto;
    border: 1px solid #bbb;
    background: #f4f4f4;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
    line-height: 1;
    padding: 2px 5px;
}
@media print { .bl-noprint[b-5sun27w2ha] { display: none !important; } }

/* ---------- Pied ---------- */
.bl-pied[b-5sun27w2ha] { margin-top: 6px; text-align: center; }
.bl-devise[b-5sun27w2ha] { font-style: italic; font-weight: 700; }
.bl-mention[b-5sun27w2ha] { font-size: 9px; }

/* ---------- Curseur de zoom (aperçu écran) ----------
   Pilule flottante en bas à droite, façon lecteur PDF. Placée en position: fixed, hors de la
   liasse : elle n'existe pas au moment de l'impression (masquée + display:none ci-dessous). */
.bl-zoombar[b-5sun27w2ha] {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 1300;
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 2px 10px;
    background: #fff;
    color: #1b4f72;
    border: 1px solid rgba(0,0,0,.12);
    border-radius: 24px;
    box-shadow: 0 4px 18px rgba(0,0,0,.28);
}

/* La largeur du MudSlider ne se règle que depuis l'intérieur du composant : ::deep franchit
   l'isolation scopée pour l'atteindre. */
.bl-zoombar[b-5sun27w2ha]  .bl-zoom-slider { width: 130px; margin: 0 6px; }

.bl-zoom-val[b-5sun27w2ha] {
    min-width: 44px;
    text-align: center;
    font-weight: 700;
    font-size: 12px;
    font-variant-numeric: tabular-nums;
}

/* Ceinture et bretelles : la barre ne doit jamais partir au papier. */
@media print {
    .bl-zoombar[b-5sun27w2ha] { display: none !important; }
}
/* /Pages/Notes/ConseilClassePv.razor.rz.scp.css */
/* Bandeau IDENTIQUE au sous-hub (le CSS est scopé par page, on recopie les mêmes règles). */

.acc-window[b-lkrp65jeuv] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-lkrp65jeuv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-lkrp65jeuv] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-lkrp65jeuv] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}
/* /Pages/Notes/ConseilClasses.razor.rz.scp.css */
/* Cartes et bandeau IDENTIQUES au hub /notes-bulletins (NotesBulletins.razor.css) :
   le CSS étant scopé par page, on recopie les mêmes règles ici pour un rendu identique. */

/* Bandeau (repris de /scolarites, /rapports). */
.acc-window[b-nykk7rqycv] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-nykk7rqycv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-nykk7rqycv] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-nykk7rqycv] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* Familles + cartes cliquables (repris du hub Économat). */
.rpt-famille[b-nykk7rqycv] {
    margin-top: 10px;
    margin-bottom: 8px;
    font-weight: 600;
    color: #1565C0;
}

.rpt-cartes[b-nykk7rqycv] {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.rpt-carte[b-nykk7rqycv] {
    width: 260px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: box-shadow .15s ease, border-color .15s ease;
}

.rpt-carte:hover[b-nykk7rqycv] {
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    border-color: #1976D2;
}

.rpt-carte-titre[b-nykk7rqycv] {
    font-weight: 700;
    font-size: 1.05rem;
}

.rpt-carte-desc[b-nykk7rqycv] {
    font-size: .82rem;
    color: #666666;
    line-height: 1.25;
}

.rpt-carte-disabled[b-nykk7rqycv] {
    opacity: .5;
    cursor: default;
    pointer-events: none;
}
/* /Pages/Notes/ConseilOrdreMerite.razor.rz.scp.css */
/* Bandeau IDENTIQUE au sous-hub (le CSS est scopé par page, on recopie les mêmes règles). */

.acc-window[b-s4f2fqhkm3] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-s4f2fqhkm3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-s4f2fqhkm3] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-s4f2fqhkm3] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}
/* /Pages/Notes/ConseilResultats.razor.rz.scp.css */
/* Bandeau IDENTIQUE au sous-hub (le CSS est scopé par page, on recopie les mêmes règles). */

.acc-window[b-7v21fv0ot9] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-7v21fv0ot9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-7v21fv0ot9] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-7v21fv0ot9] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}
/* /Pages/Notes/LivretScolaire.razor.rz.scp.css */
/* ===================== Livret scolaire (synthèse annuelle) =====================
   Feuille A4 PORTRAIT, une par élève. HTML pur : le CSS scopé Blazor s'y applique et l'aperçu
   EST la page imprimée. L'isolation d'impression (index.html) cible « bl-liasse »/« bl-feuille »,
   partagées avec les bulletins ; ici on n'ajoute que le VISUEL, propre au livret (lv-*). */

.lv-feuille[b-z8r0z0vjom] {
    background: #fff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 10mm;
    margin: 0 auto 18px;
    box-sizing: border-box;
    position: relative;
    box-shadow: 0 6px 24px rgba(0,0,0,.35); /* écran seulement */
    font-family: Calibri, Segoe UI, Arial, sans-serif;
    font-size: 11.5px;
    line-height: 1.25;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
    page-break-after: always;
    break-after: page;
}

.lv-feuille:last-child[b-z8r0z0vjom] { page-break-after: auto; break-after: auto; }

.bl-lib[b-z8r0z0vjom] { color: #333; }

/* ---------- En-tête ---------- */
.lv-entete[b-z8r0z0vjom] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-bottom: 8px;
}

.lv-entete-g[b-z8r0z0vjom] { flex: 1 1 0; min-width: 0; }
/* « REPUBLIQUE… » + trait centré dessous (gabarit « - Discipline - » invisible pour la largeur). */
.lv-rep[b-z8r0z0vjom] { position: relative; display: inline-block; font-weight: 700; font-size: 12px; white-space: nowrap; margin-bottom: 2px; }
.lv-rep-trait[b-z8r0z0vjom] { position: absolute; left: 50%; bottom: -1px; transform: translateX(-50%); line-height: 0; }
.lv-rep-trait span[b-z8r0z0vjom] {
    display: inline-block;
    font-style: italic;
    font-weight: 700;
    font-size: 11.5px;
    line-height: 0;
    color: transparent;
    border-bottom: 1px solid #000;
    padding-bottom: 1px;
}
/* Bloc largeur du contenu (= « MINISTERE… ») centré : les lignes plus courtes se centrent dessous. */
.lv-tutelle-min[b-z8r0z0vjom] { width: fit-content; text-align: center; }
.lv-min[b-z8r0z0vjom] { font-weight: 700; font-size: 8.5px; }
.lv-ecole-nom[b-z8r0z0vjom] { font-weight: 700; font-size: 12px; margin-top: 3px; }
.lv-adresse[b-z8r0z0vjom] { font-size: 9px; margin-top: 2px; }

/* Logo + boîte « LIVRET SCOLAIRE » descendus un peu (margin-top). */
.lv-entete-c[b-z8r0z0vjom] { flex: 0 0 auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 4px; margin-top: 6mm; }
.lv-logo img[b-z8r0z0vjom] { max-height: 16mm; max-width: 26mm; object-fit: contain; display: inline-block; }
.lv-titre-boite[b-z8r0z0vjom] {
    border: 2px solid #111;
    padding: 6px 16px;
    font-weight: 700;
    font-size: 14px;
    letter-spacing: .5px;
    white-space: nowrap;
}

.lv-entete-d[b-z8r0z0vjom] { flex: 1 1 0; min-width: 0; text-align: right; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
/* Devise nationale en haut à droite (au niveau de « REPUBLIQUE… »), trait sous « - Discipline - ». */
.lv-devise[b-z8r0z0vjom] { font-style: italic; font-weight: 700; font-size: 11.5px; white-space: nowrap; margin-bottom: 2px; }
.lv-devise-trait[b-z8r0z0vjom] { border-bottom: 1px solid #000; padding-bottom: 1px; }
/* « Année scolaire » + photo descendues un peu, sous la devise. */
.lv-annee-lib[b-z8r0z0vjom] { font-size: 10px; margin-top: 6mm; }
.lv-photo[b-z8r0z0vjom] { width: 3.199cm; height: 4cm; border: 2px solid #111; overflow: hidden; }
.lv-photo img[b-z8r0z0vjom] { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---------- Identité de l'élève ---------- */
.lv-identite[b-z8r0z0vjom] {
    display: grid;
    grid-template-columns: 1.15fr 1fr 1fr;
    column-gap: 10px;
    row-gap: 2px;
    margin: 4px 0 6px;
}

.lv-id-col > div[b-z8r0z0vjom] { display: flex; gap: 4px; padding: 1px 0; }
.lv-id-col b[b-z8r0z0vjom] { font-weight: 700; }

/* ---------- Tableau des disciplines ---------- */
.lv-table[b-z8r0z0vjom] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.lv-table th[b-z8r0z0vjom],
.lv-table td[b-z8r0z0vjom] {
    border: 1px solid #111;
    padding: 2px 3px;
    text-align: center;
    vertical-align: middle;
    overflow: hidden;
}

.lv-table th[b-z8r0z0vjom] { font-weight: 700; font-size: 10px; }

/* Chiffres (moyennes ET rangs) sur UNE seule ligne : les colonnes ont été calibrées pour que
   même le rang le plus long (« 20è ex ») tienne. Seules les colonnes de texte se replient. */
.lv-table td[b-z8r0z0vjom] { white-space: nowrap; }
.lv-c-disc[b-z8r0z0vjom] { text-align: left !important; white-space: normal; }
/* Le TITRE de colonne « DISCIPLINES » est centré ; les noms de matières restent ferrés à gauche. */
.lv-table thead .lv-c-disc[b-z8r0z0vjom] { text-align: center !important; }
.lv-c-appr[b-z8r0z0vjom] { font-style: italic; white-space: normal; }
.lv-c-prof[b-z8r0z0vjom] { text-align: left; font-size: 9px; white-space: normal; }
.lv-rang[b-z8r0z0vjom] { font-size: 10px; }

/* ---------- Synthèse : moyennes/rangs/sanctions + résultats annuels ---------- */
/* Grille 62 % / reste : le bord gauche de « Résultats annuels » tombe pile à 62 %, comme la
   frontière Rang annuel / APPRECIATIONS du tableau au-dessus. */
.lv-synthese[b-z8r0z0vjom] {
    display: grid;
    grid-template-columns: 62% 1fr;
    align-items: stretch;
    margin-top: 6px;
}

.lv-synth-tab[b-z8r0z0vjom] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.lv-synth-tab th[b-z8r0z0vjom],
.lv-synth-tab td[b-z8r0z0vjom] {
    border: 1px solid #111;
    padding: 3px 6px;
    text-align: center;
    font-size: 11px;
}

.lv-synth-tab th[b-z8r0z0vjom] { font-weight: 700; }
.lv-synth-lib[b-z8r0z0vjom] { text-align: right !important; font-weight: 700; width: 90px; }

.lv-annuel[b-z8r0z0vjom] {
    border: 1px solid #111;
    border-left: none;              /* le bord de la table sert de séparateur (pas de double trait) */
    padding: 4px 8px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 3px;
}

.lv-annuel-titre[b-z8r0z0vjom] { text-align: center; font-weight: 700; text-decoration: underline; margin-bottom: 2px; }
.lv-annuel b[b-z8r0z0vjom] { font-weight: 700; }

/* ---------- Bas : appréciation + décision | signataire ---------- */
.lv-bas[b-z8r0z0vjom] {
    display: grid;
    grid-template-columns: 62% 1fr;   /* trait g/d à 62 %, aligné sur « Résultats annuels » */
    border: 1px solid #111;
    border-top: none;
    /* Collé au bloc synthèse (pas de marge) : le trait vertical central rejoint le bord gauche de
       « Résultats annuels » sans rupture — il touche bien en haut. */
    margin-top: 0;
    min-height: 34mm;
}

.lv-bas-g[b-z8r0z0vjom] { border-right: 1px solid #111; padding: 4px 8px; display: flex; flex-direction: column; }
.lv-bas-d[b-z8r0z0vjom] { padding: 4px 8px; text-align: center; display: flex; flex-direction: column; }

.lv-bas-titre[b-z8r0z0vjom] { text-align: center; font-weight: 700; text-decoration: underline; margin: 2px 0; }
.lv-bas-vide[b-z8r0z0vjom] { flex: 0 0 12mm; }
.lv-souligne[b-z8r0z0vjom] { text-decoration: underline; }

/* Décision : texte éditable (input sans allure de formulaire) + petit bouton de réinit hors impression. */
.lv-decision[b-z8r0z0vjom] { display: flex; align-items: center; gap: 6px; justify-content: center; margin: 2px 0 4px; }
.lv-decision-input[b-z8r0z0vjom] {
    flex: 1 1 auto;
    border: none;
    border-bottom: 1px dotted #999;
    background: transparent;
    text-align: center;
    font-family: inherit;
    font-size: 12px;
    font-style: italic;
    font-weight: 700;
    color: #111;
    padding: 1px 2px;
}
.lv-decision-input:focus[b-z8r0z0vjom] { outline: none; border-bottom-color: #1b4f72; }
.lv-decision-reset[b-z8r0z0vjom] {
    flex: 0 0 auto;
    border: 1px solid #bbb;
    background: #f4f4f4;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
    line-height: 1;
    padding: 2px 5px;
}

.lv-pp[b-z8r0z0vjom] { margin-top: auto; }
.lv-pp b[b-z8r0z0vjom] { font-weight: 700; }
.lv-signature[b-z8r0z0vjom] { margin-top: 8px; }

.lv-signataire[b-z8r0z0vjom] { margin-top: auto; }
.lv-chef-nom[b-z8r0z0vjom] { font-weight: 700; text-transform: uppercase; margin-bottom: 2px; }

/* Masqué à l'impression (bouton de réinitialisation de la décision). */
@media print {
    .lv-noprint[b-z8r0z0vjom] { display: none !important; }
}

/* ---------- Curseur de zoom (aperçu écran) ---------- */
.lv-zoombar[b-z8r0z0vjom] {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 1300;
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 2px 10px;
    background: #fff;
    color: #1b4f72;
    border: 1px solid rgba(0,0,0,.12);
    border-radius: 24px;
    box-shadow: 0 4px 18px rgba(0,0,0,.28);
}

.lv-zoombar[b-z8r0z0vjom]  .lv-zoom-slider { width: 130px; margin: 0 6px; }

.lv-zoom-val[b-z8r0z0vjom] {
    min-width: 44px;
    text-align: center;
    font-weight: 700;
    font-size: 12px;
    font-variant-numeric: tabular-nums;
}

@media print {
    .lv-zoombar[b-z8r0z0vjom] { display: none !important; }
}
/* /Pages/Notes/NotesBulletins.razor.rz.scp.css */
/* Bandeau (repris de /scolarites, /rapports) — CSS scopé par page. */
.acc-window[b-x3dhwdcu5t] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-x3dhwdcu5t] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-x3dhwdcu5t] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-x3dhwdcu5t] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* Familles + cartes cliquables (repris du hub Économat). */
.rpt-famille[b-x3dhwdcu5t] {
    margin-top: 10px;
    margin-bottom: 8px;
    font-weight: 600;
    color: #1565C0;
}

.rpt-cartes[b-x3dhwdcu5t] {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.rpt-carte[b-x3dhwdcu5t] {
    width: 260px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: box-shadow .15s ease, border-color .15s ease;
}

.rpt-carte:hover[b-x3dhwdcu5t] {
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    border-color: #1976D2;
}

.rpt-carte-titre[b-x3dhwdcu5t] {
    font-weight: 700;
    font-size: 1.05rem;
}

.rpt-carte-desc[b-x3dhwdcu5t] {
    font-size: .82rem;
    color: #666666;
    line-height: 1.25;
}

.rpt-carte-disabled[b-x3dhwdcu5t] {
    opacity: .5;
    cursor: default;
    pointer-events: none;
}
/* /Pages/Notes/RapportApprocheGenre.razor.rz.scp.css */
/* Bandeau (repris de /scolarites, /rapports) — CSS scopé par page. */
.acc-window[b-t7c5xy19gv] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-t7c5xy19gv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-t7c5xy19gv] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-t7c5xy19gv] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* Barre de sélection (période + boutons). */
.rp-barre[b-t7c5xy19gv] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.rp-periode[b-t7c5xy19gv] {
    max-width: 200px;
}

/* Tableau « Approche genre » : quadrillage, compact, scroll horizontal si besoin. */
.ag-scroll[b-t7c5xy19gv] {
    overflow-x: auto;
    border: 1px solid #9fb0bb;
    background: #ffffff;
}

.ag-table[b-t7c5xy19gv] {
    border-collapse: collapse;
    font-size: 0.8rem;
    color: #1c2b36;
    white-space: nowrap;
}

.ag-table th[b-t7c5xy19gv],
.ag-table td[b-t7c5xy19gv] {
    border: 1px solid #6b7d88;
    padding: 3px 8px;
    text-align: center;
    vertical-align: middle;
}

.ag-table thead th[b-t7c5xy19gv] {
    background: #d9e2e8;
    font-weight: 700;
}

/* Colonne des niveaux : à gauche, figée horizontalement. */
.ag-table .ag-lib[b-t7c5xy19gv] {
    text-align: left;
    font-weight: 600;
    background: #eef3f6;
    position: sticky;
    left: 0;
    z-index: 1;
}

/* Sous-totaux de niveau ET de cycle : gras + grisés (même gris). */
.ag-table tr.ag-sous-total td[b-t7c5xy19gv],
.ag-table tr.ag-sous-total .ag-lib[b-t7c5xy19gv],
.ag-table tr.ag-total-cycle td[b-t7c5xy19gv],
.ag-table tr.ag-total-cycle .ag-lib[b-t7c5xy19gv] {
    font-weight: 700;
    background: #cfd9e0;
}
/* /Pages/Notes/RapportEffectifs.razor.rz.scp.css */
/* Bandeau (repris de /scolarites, /rapports) — CSS scopé par page. */
.acc-window[b-tbghed7ncg] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-tbghed7ncg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-tbghed7ncg] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-tbghed7ncg] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* Barre de sélection (période + boutons). */
.rp-barre[b-tbghed7ncg] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.rp-periode[b-tbghed7ncg] {
    max-width: 200px;
}

/* Liste des croisements du récapitulatif. */
.rp-liste[b-tbghed7ncg] {
    margin: 4px 0 8px;
    padding-left: 20px;
    font-size: 0.85rem;
    line-height: 1.5;
}

/* Le tableau est large (jusqu'à ~30 colonnes) : on le fait défiler horizontalement dans son cadre. */
.eff-scroll[b-tbghed7ncg] {
    overflow-x: auto;
    border: 1px solid #9fb0bb;
    background: #ffffff;
}

.eff-table[b-tbghed7ncg] {
    border-collapse: collapse;
    font-size: 0.72rem;
    color: #1c2b36;
    white-space: nowrap;
}

.eff-table th[b-tbghed7ncg],
.eff-table td[b-tbghed7ncg] {
    border: 1px solid #6b7d88;
    padding: 2px 5px;
    text-align: center;
    vertical-align: middle;
}

/* En-tête : fond gris, gras, collé en haut au défilement vertical. */
.eff-table thead th[b-tbghed7ncg] {
    background: #d9e2e8;
    font-weight: 700;
}

/* Colonne des libellés de ligne (Garçons, Filles…) : à gauche, en gras. */
.eff-table .eff-lib[b-tbghed7ncg] {
    text-align: left;
    font-weight: 700;
    background: #eef3f6;
    position: sticky;
    left: 0;
    z-index: 1;
}

/* Ligne TOTAL (garçons + filles) : grisée et en gras pour la démarquer. */
.eff-table tr.eff-ltot td[b-tbghed7ncg],
.eff-table tr.eff-ltot .eff-lib[b-tbghed7ncg] {
    background: #cfd9e0;
    font-weight: 700;
}
/* /Pages/Notes/RapportListeEleves.razor.rz.scp.css */
/* Barre de sélection (période + Afficher). */
.rp-barre[b-0bfs7zjlig] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.rp-periode[b-0bfs7zjlig] {
    max-width: 200px;
}

/* En-tête de classe (classe + prof principal + éducateur). */
.rp-classe-entete[b-0bfs7zjlig] {
    display: flex;
    align-items: baseline;
    gap: 20px;
    margin: 10px 0 4px;
    padding-bottom: 4px;
    border-bottom: 2px solid var(--mud-palette-primary);
}

.rp-classe-nom[b-0bfs7zjlig] {
    font-size: 1.05rem;
    font-weight: 700;
}

.rp-classe-info[b-0bfs7zjlig] {
    font-size: 0.85rem;
    color: var(--mud-palette-text-secondary);
}

/* Tableau de la liste. */
.rp-tablewrap[b-0bfs7zjlig] {
    overflow-x: auto;
}

.rp-table[b-0bfs7zjlig] {
    border-collapse: collapse;
    width: 100%;
    font-size: 0.82rem;
}

.rp-table th[b-0bfs7zjlig],
.rp-table td[b-0bfs7zjlig] {
    border: 1px solid var(--mud-palette-lines-default);
    padding: 3px 8px;
    text-align: center;
    white-space: nowrap;
}

.rp-table thead th[b-0bfs7zjlig] {
    background: var(--mud-palette-background-grey);
    font-weight: 600;
}

.rp-table .rp-left[b-0bfs7zjlig] {
    text-align: left;
}

.rp-table .rp-moy[b-0bfs7zjlig] {
    font-weight: 600;
}
/* /Pages/Notes/RapportMajors.razor.rz.scp.css */
/* Barre de sélection (période + Afficher). */
.rp-barre[b-40h7ylvgn2] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.rp-periode[b-40h7ylvgn2] {
    max-width: 200px;
}

/* Tableau des majors, façon état imprimé. */
.rp-tablewrap[b-40h7ylvgn2] {
    overflow-x: auto;
}

.rp-table[b-40h7ylvgn2] {
    border-collapse: collapse;
    width: 100%;
    font-size: 0.82rem;
}

.rp-table th[b-40h7ylvgn2],
.rp-table td[b-40h7ylvgn2] {
    border: 1px solid var(--mud-palette-lines-default);
    padding: 3px 8px;
    text-align: center;
    white-space: nowrap;
}

.rp-table thead th[b-40h7ylvgn2] {
    background: var(--mud-palette-background-grey);
    font-weight: 600;
}

.rp-table .rp-left[b-40h7ylvgn2] {
    text-align: left;
}

/* Cellules fusionnées (rowspan) : centrées verticalement. */
.rp-table .rp-niveau[b-40h7ylvgn2] {
    font-weight: 700;
    vertical-align: middle;
}

.rp-table .rp-classe[b-40h7ylvgn2] {
    font-weight: 600;
    vertical-align: middle;
}

/* Colonne Nom : un peu plus étroite, texte à gauche, retour à la ligne autorisé. */
.rp-table .rp-nom[b-40h7ylvgn2] {
    width: 220px;
    white-space: normal;
    text-align: left;
}

.rp-table .rp-moy[b-40h7ylvgn2] {
    font-weight: 600;
}

/* Trait plus marqué au changement de niveau. */
.rp-table tr.rp-sep td[b-40h7ylvgn2] {
    border-top: 2px solid var(--mud-palette-text-secondary);
}
/* /Pages/Notes/RapportsPeriodiques.razor.rz.scp.css */
/* Cartes et bandeau IDENTIQUES au hub /notes-bulletins (NotesBulletins.razor.css) :
   le CSS étant scopé par page, on recopie les mêmes règles ici pour un rendu identique. */

/* Bandeau (repris de /scolarites, /rapports). */
.acc-window[b-2717ptjjbj] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-2717ptjjbj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-2717ptjjbj] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-2717ptjjbj] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* Familles + cartes cliquables (repris du hub Économat). */
.rpt-famille[b-2717ptjjbj] {
    margin-top: 10px;
    margin-bottom: 8px;
    font-weight: 600;
    color: #1565C0;
}

.rpt-cartes[b-2717ptjjbj] {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.rpt-carte[b-2717ptjjbj] {
    width: 260px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: box-shadow .15s ease, border-color .15s ease;
}

.rpt-carte:hover[b-2717ptjjbj] {
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    border-color: #1976D2;
}

.rpt-carte-titre[b-2717ptjjbj] {
    font-weight: 700;
    font-size: 1.05rem;
}

.rpt-carte-desc[b-2717ptjjbj] {
    font-size: .82rem;
    color: #666666;
    line-height: 1.25;
}

.rpt-carte-disabled[b-2717ptjjbj] {
    opacity: .5;
    cursor: default;
    pointer-events: none;
}
/* /Pages/Notes/RapportStatsDetail.razor.rz.scp.css */
/* Barre de sélection (période + statut + Afficher). */
.rp-barre[b-kbxef2s4r8] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.rp-periode[b-kbxef2s4r8] {
    max-width: 200px;
}

.rp-statut[b-kbxef2s4r8] {
    max-width: 180px;
}

/* Titre de section par niveau. */
.rp-niveau-titre[b-kbxef2s4r8] {
    margin: 14px 0 6px;
    font-weight: 700;
    font-size: 1rem;
    color: #1565C0;
}

/* Tableau des résultats, façon état imprimé. */
.rp-tablewrap[b-kbxef2s4r8] {
    overflow-x: auto;
}

.rp-table[b-kbxef2s4r8] {
    border-collapse: collapse;
    width: 100%;
    font-size: 0.82rem;
}

.rp-table th[b-kbxef2s4r8],
.rp-table td[b-kbxef2s4r8] {
    border: 1px solid var(--mud-palette-lines-default);
    padding: 3px 8px;
    text-align: center;
    vertical-align: middle;
    white-space: nowrap;
}

.rp-table thead th[b-kbxef2s4r8] {
    background: var(--mud-palette-background-grey);
    font-weight: 600;
}

.rp-table .rp-left[b-kbxef2s4r8] {
    text-align: left;
}

.rp-table .rp-moy[b-kbxef2s4r8] {
    font-weight: 600;
}

/* Libellé de classe fusionné (rowspan) sur les lignes G / F / T. */
.rp-table .rp-niveau[b-kbxef2s4r8] {
    text-align: center;
    vertical-align: middle;
    font-weight: 700;
}

/* Ligne T d'une classe (sous-total de la classe) : légèrement mise en avant. */
.rp-table tr.rp-classe-total td[b-kbxef2s4r8] {
    font-weight: 600;
    background: #f5f5f5;
}

/* Ligne Total (par niveau et établissement) mise en évidence. */
.rp-table tr.rp-total td[b-kbxef2s4r8] {
    font-weight: 700;
    background: var(--mud-palette-background-grey);
}

/* Trait plus marqué au changement de bloc. */
.rp-table tr.rp-sep td[b-kbxef2s4r8] {
    border-top: 2px solid var(--mud-palette-text-secondary);
}
/* /Pages/Notes/RapportStatsResultats.razor.rz.scp.css */
/* Barre de sélection (période + Afficher). */
.rp-barre[b-ivg4afzyq5] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.rp-periode[b-ivg4afzyq5] {
    max-width: 200px;
}

/* Tableau récapitulatif des résultats, façon état imprimé. */
.rp-tablewrap[b-ivg4afzyq5] {
    overflow-x: auto;
}

.rp-table[b-ivg4afzyq5] {
    border-collapse: collapse;
    width: 100%;
    font-size: 0.82rem;
}

.rp-table th[b-ivg4afzyq5],
.rp-table td[b-ivg4afzyq5] {
    border: 1px solid var(--mud-palette-lines-default);
    padding: 3px 8px;
    text-align: center;
    vertical-align: middle;
    white-space: nowrap;
}

.rp-table thead th[b-ivg4afzyq5] {
    background: var(--mud-palette-background-grey);
    font-weight: 600;
}

.rp-table .rp-left[b-ivg4afzyq5] {
    text-align: left;
}

/* Colonne Niveau fusionnée (rowspan) sur les lignes G + F : libellé centré verticalement. */
.rp-table .rp-niveau[b-ivg4afzyq5] {
    text-align: center;
    vertical-align: middle;
    font-weight: 700;
}

.rp-table .rp-moy[b-ivg4afzyq5] {
    font-weight: 600;
}

/* Ligne Total (par niveau et établissement) mise en évidence. */
.rp-table tr.rp-total td[b-ivg4afzyq5] {
    font-weight: 700;
    background: var(--mud-palette-background-grey);
}

/* Trait plus marqué au changement de niveau. */
.rp-table tr.rp-sep td[b-ivg4afzyq5] {
    border-top: 2px solid var(--mud-palette-text-secondary);
}
/* /Pages/Notes/RapportSynthese.razor.rz.scp.css */
/* Bandeau (repris de /scolarites, /rapports) — CSS scopé par page. */
.acc-window[b-ivguult4ts] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-ivguult4ts] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-ivguult4ts] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-ivguult4ts] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* Barre de sélection (période + boutons). */
.rp-barre[b-ivguult4ts] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.rp-periode[b-ivguult4ts] {
    max-width: 200px;
}

/* Liste des sections incluses dans la synthèse. */
.rp-liste[b-ivguult4ts] {
    margin: 4px 0 8px;
    padding-left: 20px;
    font-size: 0.85rem;
    line-height: 1.5;
}
/* /Pages/Notes/RecapMoyennes.razor.rz.scp.css */
/* Feuille A4 PAYSAGE (297 x 210). L'aperçu écran EST le document imprimé : une seule feuille,
   pas de modal — d'où la largeur fixe en mm et le défilement horizontal du conteneur parent.
   print-color-adjust: exact garde les ombrages d'en-tête au papier. */
.rm-feuille[b-2za4pmroz6] {
    background: #fff;
    color: #111;
    width: 297mm;
    min-height: 210mm;
    padding: 8mm 10mm 12mm;
    box-sizing: border-box;
    margin: 0 auto;
    box-shadow: 0 6px 24px rgba(0,0,0,.35); /* décor d'écran, neutralisé à l'impression */
    font-size: 9px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

/* ---- En-tête SIMPLE : le document ne sort pas de l'école, donc pas d'en-tête officiel. ---- */
.rm-entete[b-2za4pmroz6] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 6px;
}

.rm-entete-gauche[b-2za4pmroz6] { flex: 1 1 0; min-width: 0; }
.rm-ecole[b-2za4pmroz6] { font-weight: 700; font-size: 12px; text-transform: uppercase; }
.rm-ville[b-2za4pmroz6] { font-size: 10px; color: #444; text-transform: uppercase; }

.rm-entete-centre[b-2za4pmroz6] { flex: 0 0 auto; text-align: center; }

.rm-titre[b-2za4pmroz6] {
    display: inline-block;
    font-weight: 700;
    font-size: 12px;
    letter-spacing: .5px;
    border: 1px solid #111;
    padding: 2px 10px;
}

.rm-classe[b-2za4pmroz6] { font-weight: 700; font-size: 13px; margin-top: 2px; }

.rm-entete-droite[b-2za4pmroz6] { flex: 1 1 0; min-width: 0; text-align: right; font-size: 10px; }
.rm-periode[b-2za4pmroz6] { font-weight: 700; font-size: 12px; margin: 1px 0; }

/* ---- Tableau principal. table-layout fixed : 19 colonnes doivent tenir en 277mm utiles. ---- */
.rm-table[b-2za4pmroz6] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.rm-table th[b-2za4pmroz6],
.rm-table td[b-2za4pmroz6] {
    border: 1px solid #444;
    padding: 1px 2px;
    text-align: center;
    vertical-align: middle;
    overflow: hidden;
    white-space: nowrap;
}

.rm-table thead th[b-2za4pmroz6] {
    background: #e8e8e8;
    font-weight: 700;
    font-size: 9px;
}

.rm-table tbody tr:nth-child(even)[b-2za4pmroz6] { background: #f6f6f6; }

/* Ferrage à gauche du nom des élèves, du libellé « Coefficients » et des intitulés du bloc
   statistique. Le sélecteur DOIT être qualifié : « .rm-table td » (0,1,1) l'emporte sur une
   simple classe (0,1,0), donc un « .c-gauche { text-align: left } » seul est écrasé par le
   centrage général et ne sert à rien. L'en-tête, lui, reste centré. */
.rm-table td.c-gauche[b-2za4pmroz6] { text-align: left; }
.c-no[b-2za4pmroz6]  { width: 3.2%; }
.c-nom[b-2za4pmroz6] { width: 12%; text-overflow: ellipsis; }
.c-red[b-2za4pmroz6] { width: 2.6%; font-size: 8px; }
.c-mat[b-2za4pmroz6] { width: 5.1%; }
.c-coef[b-2za4pmroz6] { width: 4.5%; font-weight: 700; }
.c-tot[b-2za4pmroz6] { width: 5%; font-weight: 700; }
.c-moy[b-2za4pmroz6] { width: 4.4%; font-weight: 700; }
.c-rg[b-2za4pmroz6]  { width: 4%; }

/* Un redoublant se repère au premier coup d'œil — c'est tout l'intérêt de la colonne. */
.rm-redoublant[b-2za4pmroz6] { color: #b00020; font-weight: 700; }

/* Dans une cellule matière : la moyenne au-dessus, son rang en petit dessous. */
.rm-val[b-2za4pmroz6]  { display: block; }
.rm-rang[b-2za4pmroz6] { display: block; font-size: 7px; color: #555; }

/* Ligne des coefficients, juste sous les en-têtes. */
.rm-coefs td[b-2za4pmroz6] {
    background: #f0f0f0;
    font-weight: 700;
    font-style: italic;
}

/* ---- Statistiques par matière : même gabarit de colonnes que le tableau principal. ---- */
.rm-stats[b-2za4pmroz6] { margin-top: 6px; }
.rm-stats td[b-2za4pmroz6] { font-size: 8px; }
.c-libelle[b-2za4pmroz6] { width: 17.8%; padding-left: 4px; }   /* = c-no + c-nom + c-red */
.rm-stats-titre td[b-2za4pmroz6] { background: #e8e8e8; font-weight: 700; }
.rm-stats-fort td[b-2za4pmroz6] { font-weight: 700; }

/* ---- Encadré des moyennes générales. ---- */
.rm-encadre[b-2za4pmroz6] {
    margin-top: 8px;
    border: 2px solid #0b6b6b;
    padding: 4px 6px;
}

.rm-encadre-titre[b-2za4pmroz6] {
    text-align: center;
    font-weight: 700;
    font-size: 10px;
    border-bottom: 1px solid #0b6b6b;
    padding-bottom: 2px;
    margin-bottom: 4px;
}

.rm-encadre-corps[b-2za4pmroz6] {
    display: flex;
    gap: 18px;
    align-items: flex-start;
    font-size: 9px;
}

/* Chaque bloc est une GRILLE, et ses lignes passent en display:contents pour que leurs cellules
   participent à la grille du bloc. Avec un simple flex par ligne, la position des nombres
   dépendait de la longueur du libellé — « M >= 10 : » et « 8,50 <= M < 9,50 : » ne tombaient
   pas dans la même colonne. */
.rm-bloc[b-2za4pmroz6] {
    flex: 0 0 auto;
    display: grid;
    align-content: start;
    column-gap: 8px;
    line-height: 1.5;
    grid-template-columns: auto minmax(34px, auto);
}

.rm-bloc > div[b-2za4pmroz6] { display: contents; }
.rm-bloc span[b-2za4pmroz6] { color: #333; }
.rm-bloc b[b-2za4pmroz6] { text-align: right; }

/* Tranches : libellé + effectif + pourcentage. */
.rm-bloc-tranches[b-2za4pmroz6] { grid-template-columns: auto 26px 50px; }
.rm-bloc-tranches i[b-2za4pmroz6] { font-style: normal; text-align: right; color: #333; }

/* La ligne de total porte son filet sur ses propres cellules : en display:contents, le div
   lui-même ne dessine plus rien. */
.rm-bloc-tranches > .rm-total-tranches > *[b-2za4pmroz6] {
    border-top: 1px solid #0b6b6b;
    margin-top: 2px;
    padding-top: 2px;
    font-weight: 700;
}

/* Extrêmes : le nom de l'élève se lit à gauche, collé à son libellé. */
.rm-bloc-extremes[b-2za4pmroz6] {
    flex: 1 1 auto;
    grid-template-columns: auto 1fr;
    column-gap: 10px;
}

.rm-bloc-extremes span[b-2za4pmroz6] { text-decoration: underline; color: #1b4f72; }
.rm-bloc-extremes b[b-2za4pmroz6] { text-align: left; }

.rm-pied[b-2za4pmroz6] { margin-top: 8px; text-align: right; font-size: 9px; color: #444; }

/* ---------- Curseur de zoom (aperçu écran) ----------
   Pilule flottante en bas à droite, façon lecteur PDF (jumeau des bulletins). Placée en
   position: fixed, hors de la feuille : elle n'existe pas au moment de l'impression (le récap
   ne rend visible que « .rm-feuille », et display:none ci-dessous en ceinture et bretelles). */
.rm-zoombar[b-2za4pmroz6] {
    position: fixed;
    right: 22px;
    bottom: 22px;
    z-index: 1300;
    display: flex;
    align-items: center;
    gap: 2px;
    padding: 2px 10px;
    background: #fff;
    color: #1b4f72;
    border: 1px solid rgba(0,0,0,.12);
    border-radius: 24px;
    box-shadow: 0 4px 18px rgba(0,0,0,.28);
}

/* La largeur du MudSlider ne se règle que depuis l'intérieur du composant : ::deep franchit
   l'isolation scopée pour l'atteindre. */
.rm-zoombar[b-2za4pmroz6]  .rm-zoom-slider { width: 130px; margin: 0 6px; }

.rm-zoom-val[b-2za4pmroz6] {
    min-width: 44px;
    text-align: center;
    font-weight: 700;
    font-size: 12px;
    font-variant-numeric: tabular-nums;
}

/* Ceinture et bretelles : la barre ne doit jamais partir au papier. */
@media print {
    .rm-zoombar[b-2za4pmroz6] { display: none !important; }
}
/* /Pages/Notes/SaisieNotes.razor.rz.scp.css */
/* Saisie des notes & moyennes — grille « recueil » façon tableur, CSS scopé par page. */

.sn-entete[b-lug4wmc4c2] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 18px;
    margin: 4px 0 10px;
    font-size: 0.82rem;
    color: #1c2b36;
}

.sn-entete b[b-lug4wmc4c2] {
    color: #1b4f72;
}

/* Profs resolus en direct sous la barre de filtres (avant « Creer la liste »). */
.sn-profs[b-lug4wmc4c2] {
    display: flex;
    flex-wrap: wrap;
    gap: 22px;
    font-size: 0.85rem;
    color: #1c2b36;
}

    .sn-profs b[b-lug4wmc4c2] {
        color: #1b4f72;
    }

/* Liste des valeurs refusées à l'import : compacte, elle peut être longue. */
.sn-anomalies[b-lug4wmc4c2] {
    margin: 2px 0 0;
    padding-left: 18px;
    max-height: 150px;
    overflow-y: auto;
}

.sn-gridwrap[b-lug4wmc4c2] {
    overflow-x: auto;
    border: 1px solid #9fb0bb;
    background: #ffffff;
}

table.sn-grid[b-lug4wmc4c2] {
    border-collapse: collapse;
    width: 100%;
    font-size: 0.8rem;
}

    .sn-grid th[b-lug4wmc4c2],
    .sn-grid td[b-lug4wmc4c2] {
        border: 1px solid #cfd8dc;
        padding: 2px 4px;
        text-align: center;
        white-space: nowrap;
    }

    .sn-grid thead th[b-lug4wmc4c2] {
        background: #1b4f72;
        color: #ffffff;
        font-weight: 600;
    }

    .sn-grid .sn-nom[b-lug4wmc4c2],
    .sn-grid .sn-prenoms[b-lug4wmc4c2] {
        text-align: left;
    }

/* Troncature « … » du nom et des prénoms. Le `max-width` est porté par un <span> en block,
   PAS par la cellule : en table-layout auto, un td s'élargit au contenu et ignore max-width,
   alors qu'un bloc interne le respecte — et il plafonne du même coup la largeur de colonne.
   (max-width = largeur du <th> moins les 8px de padding horizontal de la cellule.) */
.sn-grid .sn-nom > span[b-lug4wmc4c2],
.sn-grid .sn-prenoms > span[b-lug4wmc4c2] {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sn-grid .sn-nom > span[b-lug4wmc4c2] {
    max-width: 104px;
}

.sn-grid .sn-prenoms > span[b-lug4wmc4c2] {
    max-width: 140px;
}

/* Ligne des barèmes = la « case jaune » du classeur Trajan. */
.sn-grid tr.sn-bareme td[b-lug4wmc4c2] {
    background: #fff7cd;
    color: #5d4b00;
}

.sn-baremesel[b-lug4wmc4c2] {
    width: 48px;
    font-size: 0.75rem;
    border: 1px solid #cfd8dc;
    background: #fffef5;
    padding: 1px 2px;
}

.sn-note[b-lug4wmc4c2] {
    width: 44px;
    border: 1px solid #cfd8dc;
    border-radius: 2px;
    text-align: center;
    font-size: 0.8rem;
    padding: 1px 2px;
}

    .sn-note:focus[b-lug4wmc4c2] {
        outline: 2px solid #1976d2;
        background: #e3f2fd;
    }

.sn-grid td.sn-moy[b-lug4wmc4c2] {
    font-weight: 700;
    background: #eef4f8;
}

.sn-grid .sn-nc[b-lug4wmc4c2] {
    color: #b71c1c;
    font-style: italic;
}

/* Lignes alternées (zébrage discret). `:not(.sn-moy)` laisse la colonne Moy garder son fond
   bleuté ; sans ce filtre, le zébrage (spécificité supérieure) l'écraserait. */
.sn-grid tbody tr:nth-child(even) td:not(.sn-moy)[b-lug4wmc4c2] {
    background: #f4f6f8;
}

/* Survol : même spécificité (0,3,3) que le zébrage, donc DÉFINI APRÈS pour l'emporter —
   sinon le survol serait invisible une ligne sur deux (piège de cascade, Recette 7). */
.sn-grid tbody tr:hover td:not(.sn-moy)[b-lug4wmc4c2] {
    background: #e1eef7;
}

.sn-grid tbody tr:hover td.sn-moy[b-lug4wmc4c2] {
    background: #d3e4f0;
}

/* Ligne de l'élève EN COURS DE SAISIE (celle qui contient le focus). `:focus-within` suffit,
   aucun JS ni état Blazor à tenir. Défini APRÈS le survol pour l'emporter à spécificité égale :
   quand on est sur la ligne, « je saisis ici » prime sur « je survole ». */
.sn-grid tbody tr:focus-within td:not(.sn-moy)[b-lug4wmc4c2] {
    background: #CC3702;
    color: #ffffff;
}

.sn-grid tbody tr:focus-within td.sn-moy[b-lug4wmc4c2] {
    background: #A32C02;
    color: #ffffff;
}

/* La cellule saisie garde un fond clair pour rester lisible sur l'orange. */
.sn-grid tbody tr:focus-within .sn-note[b-lug4wmc4c2] {
    background: #fff3ef;
}

/* ==================== Aperçu avant impression (feuille A4 paysage) ==================== */

.sn-preview-overlay[b-lug4wmc4c2] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.55);
    z-index: 2000;
    overflow: auto;
    padding: 20px;
    display: flex;
    justify-content: center;
    align-items: flex-start;
}

.sn-preview-panel[b-lug4wmc4c2] {
    width: 297mm;
    max-width: 100%;
}

.sn-preview-toolbar[b-lug4wmc4c2] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: #1b4f72;
    color: #fff;
    padding: 6px 10px;
}

.sn-preview-titre[b-lug4wmc4c2] {
    font-weight: 600;
}

/* Feuille A4 PAYSAGE. print-color-adjust:exact garde l'ombrage des en-têtes à l'impression ;
   le box-shadow est un décor d'écran, neutralisé par la règle @media print globale. */
.sn-feuille[b-lug4wmc4c2] {
    background: #fff;
    color: #111;
    width: 297mm;
    max-width: 100%;
    min-height: 210mm;
    padding: 8mm 10mm 12mm;
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0,0,0,.35);
    font-size: 11px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.sn-feuille-entete[b-lug4wmc4c2] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-bottom: 2px solid #333;
    padding-bottom: 8px;
    margin-bottom: 6px;
}

.sn-feuille-ministere[b-lug4wmc4c2] {
    flex: 1 1 0;
    min-width: 0;
}

.sn-feuille-min-titre[b-lug4wmc4c2] {
    font-weight: 700;
    font-size: 12px;
    white-space: nowrap;
}

.sn-feuille-dren[b-lug4wmc4c2] {
    font-size: 11px;
    color: #444;
    text-transform: uppercase;
}

.sn-feuille-logo[b-lug4wmc4c2] {
    flex: 0 0 auto;
}

    .sn-feuille-logo img[b-lug4wmc4c2] {
        max-height: 60px;
        max-width: 100px;
        object-fit: contain;
    }

.sn-feuille-ecole-droite[b-lug4wmc4c2] {
    flex: 1 1 0;
    min-width: 0;
    text-align: right;
}

.sn-feuille-nom[b-lug4wmc4c2] {
    font-weight: 700;
    font-size: 15px;
    text-transform: uppercase;
}

.sn-feuille-annee[b-lug4wmc4c2] {
    font-size: 11px;
    color: #444;
}

.sn-feuille-barre[b-lug4wmc4c2] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 4px;
}

.sn-feuille-titre[b-lug4wmc4c2] {
    font-weight: 700;
    font-size: 14px;
    color: #7a1f1f;
    letter-spacing: 1px;
}

.sn-feuille-totaux[b-lug4wmc4c2] {
    display: flex;
    gap: 24px;
    justify-content: flex-end;
    font-size: 12px;
    white-space: nowrap;
}

.sn-feuille-sous-barre[b-lug4wmc4c2] {
    display: flex;
    gap: 28px;
    font-size: 11px;
    color: #333;
    margin-bottom: 8px;
}

table.sn-feuille-table[b-lug4wmc4c2] {
    border-collapse: collapse;
    width: 100%;
    font-size: 10px;
    table-layout: fixed;
}

    .sn-feuille-table th[b-lug4wmc4c2],
    .sn-feuille-table td[b-lug4wmc4c2] {
        border: 1px solid #666;
        padding: 2px 3px;
        text-align: center;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .sn-feuille-table thead th[b-lug4wmc4c2] {
        background: #e8eef3;
        font-weight: 700;
    }

    .sn-feuille-table .c-gauche[b-lug4wmc4c2] {
        text-align: left;
    }

    .sn-feuille-table .c-moy[b-lug4wmc4c2] {
        font-weight: 700;
        background: #f2f6f9;
    }

    /* Colonnes : N° / Matricule / Nom / Prénoms / Sexe fixes, les 10 notes se partagent le reste. */
    .sn-feuille-table th:nth-child(1)[b-lug4wmc4c2] { width: 24px; }
    .sn-feuille-table th:nth-child(2)[b-lug4wmc4c2] { width: 74px; }
    .sn-feuille-table th:nth-child(3)[b-lug4wmc4c2] { width: 120px; }
    .sn-feuille-table th:nth-child(4)[b-lug4wmc4c2] { width: 150px; }
    .sn-feuille-table th:nth-child(5)[b-lug4wmc4c2] { width: 30px; }

.sn-feuille-table tr.sn-feuille-bareme td[b-lug4wmc4c2] {
    background: #fff7cd;
    font-weight: 700;
}

    .sn-feuille-table tr.sn-feuille-bareme td:first-child[b-lug4wmc4c2] {
        text-align: right;
    }

.sn-feuille-table tbody tr:nth-child(even) td[b-lug4wmc4c2] {
    background: #f7f9fa;
}

.sn-feuille-pied[b-lug4wmc4c2] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin-top: 10px;
    font-size: 11px;
    color: #444;
}

.sn-feuille-visa[b-lug4wmc4c2] {
    min-width: 200px;
    text-align: center;
    border-top: 1px solid #666;
    padding-top: 2px;
    margin-top: 26px;
}

.sn-stats[b-lug4wmc4c2] {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin-top: 10px;
    font-size: 0.82rem;
    color: #1c2b36;
}

    .sn-stats b[b-lug4wmc4c2] {
        color: #1b4f72;
    }
/* /Pages/Orange/PaiementsOrange.razor.rz.scp.css */
/* Grille des paiements Orange : lignes compactées (30px). Un peu plus haut que le
   standard 26px du projet car les cellules portent des CHIPS (statut, A/M, lien payeur),
   plus hauts qu'un simple texte. Page hors .acc-window -> le CSS scopé suffit. */
.pmt-grid[b-d6uxewghpd]  td {
    padding: 0 8px !important;
    height: 30px !important;
}

/* En-têtes alignés sur le même padding horizontal que les cellules. */
.pmt-grid[b-d6uxewghpd]  th {
    padding-left: 8px !important;
    padding-right: 8px !important;
}

/* Chips (statut, A/M, lien payeur) compactés pour tenir dans la hauteur de ligne. */
.pmt-grid[b-d6uxewghpd]  td .mud-chip {
    height: 22px !important;
    margin: 0 2px 0 0 !important;
}

.pmt-grid[b-d6uxewghpd]  td .mud-chip .mud-chip-content {
    font-size: 11px !important;
}

/* Bouton d'actions (menu 3 points) : dégonflé pour ne pas imposer sa hauteur à la ligne. */
.pmt-grid[b-d6uxewghpd]  td .mud-icon-button {
    padding: 2px !important;
}
/* /Pages/RapportsStatistiques/EffectifsClasses.razor.rz.scp.css */
/* ===== Bandeau (repris de /scolarites) ===== */
.acc-window[b-rr2q70tezo] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-rr2q70tezo] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-rr2q70tezo] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-rr2q70tezo] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* ===== Métadonnées ===== */
.rag-meta[b-rr2q70tezo] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 20px;
    margin: 4px 2px 10px;
    font-size: 0.8rem;
    color: #1c2b36;
}

/* ===== Tableau à l'écran ===== */
.rag-ecran[b-rr2q70tezo] {
    background: #ffffff;
    border: 1px solid #9fb0bb;
    padding: 8px;
    overflow-x: auto;
}

/* ===== Aperçu A4 (overlay) ===== */
.rag-preview-overlay[b-rr2q70tezo] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .55);
    display: flex;
    justify-content: center;
    align-items: flex-start;
    overflow: auto;
    padding: 20px;
    z-index: 1400;
}

.rag-preview-panel[b-rr2q70tezo] {
    width: 210mm;
    max-width: 100%;
}

.rag-preview-toolbar[b-rr2q70tezo] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    background: #eeeeee;
    padding: 6px 8px;
    border-radius: 4px 4px 0 0;
}

/* ===== Feuille A4 ===== */
.rag-feuille[b-rr2q70tezo] {
    background: #fff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 12mm 14mm;
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .35);
    font-size: 11px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.rag-feuille-entete[b-rr2q70tezo] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-bottom: 2px solid #333;
    padding-bottom: 8px;
    margin-bottom: 6px;
}

.rag-feuille-ministere[b-rr2q70tezo] { flex: 1 1 0; min-width: 0; }
.rag-feuille-min-titre[b-rr2q70tezo] { font-weight: 700; font-size: 12px; white-space: nowrap; }
.rag-feuille-dren[b-rr2q70tezo] { font-size: 11px; color: #444; text-transform: uppercase; }
.rag-feuille-ecole-droite[b-rr2q70tezo] { flex: 1 1 0; min-width: 0; text-align: right; }
.rag-feuille-nom[b-rr2q70tezo] { font-weight: 700; font-size: 15px; text-transform: uppercase; }
.rag-feuille-annee[b-rr2q70tezo] { font-size: 11px; color: #444; }
.rag-feuille-logo[b-rr2q70tezo] { flex: 0 0 auto; }
.rag-feuille-logo img[b-rr2q70tezo] { max-height: 60px; max-width: 100px; object-fit: contain; }

.rag-feuille-barre[b-rr2q70tezo] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 8px;
}

.rag-feuille-titre[b-rr2q70tezo] { font-weight: 700; font-size: 12px; color: #7a1f1f; letter-spacing: .5px; white-space: nowrap; }
.rag-feuille-totaux[b-rr2q70tezo] { display: flex; gap: 20px; justify-content: flex-end; font-size: 11px; white-space: nowrap; }
.rag-feuille-pied[b-rr2q70tezo] { margin-top: 10px; text-align: right; font-size: 11px; color: #444; }
/* /Pages/RapportsStatistiques/EffectifsClassesTable.razor.rz.scp.css */
/* Effectifs par classe / par niveau — même rendu écran et feuille A4. */

.eff-wrap[b-wwnd6wft8i] {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
    align-items: flex-start;
}

.eff-table[b-wwnd6wft8i] {
    border-collapse: collapse;
    font-size: 11px;
    color: #111;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.eff-table th[b-wwnd6wft8i],
.eff-table td[b-wwnd6wft8i] {
    border: 1px solid #333;
    padding: 2px 8px;
    text-align: center;
    white-space: nowrap;
}

.eff-table thead th[b-wwnd6wft8i] {
    background: #f0f0f0;
    font-weight: 700;
}

.eff-lbl[b-wwnd6wft8i] { text-align: left; }
.eff-tot[b-wwnd6wft8i] { background: #f4f4f4; font-weight: 700; }

/* Bandeau de cycle. */
.eff-cycle-h td[b-wwnd6wft8i] {
    background: #e3ebf3;
    font-weight: 700;
    text-align: left;
    letter-spacing: .5px;
}

/* Sous-total niveau (léger) et sous-total cycle (plus marqué). */
.eff-niveau-t td[b-wwnd6wft8i] { background: #f7f9fb; font-weight: 700; }
.eff-cycle-t td[b-wwnd6wft8i] { background: #dfe8f2; font-weight: 700; }

/* Total général. */
.eff-grand td[b-wwnd6wft8i] {
    background: #cfd9df;
    font-weight: 700;
}

/* La table récap est un peu plus étroite ; largeur mini de la 1re colonne. */
.eff-recap .eff-lbl[b-wwnd6wft8i] { min-width: 150px; }
.eff-table td:not(.eff-lbl)[b-wwnd6wft8i],
.eff-table th:not(.eff-lbl)[b-wwnd6wft8i] { min-width: 58px; }
/* /Pages/RapportsStatistiques/ElevesAffectes.razor.rz.scp.css */
/* ===== Bandeau ===== */
.acc-window[b-otqphk8qad] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-otqphk8qad] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-otqphk8qad] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-otqphk8qad] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* ===== Métadonnées ===== */
.rag-meta[b-otqphk8qad] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 20px;
    margin: 4px 2px 10px;
    font-size: 0.8rem;
    color: #1c2b36;
}

/* ===== Liste à l'écran ===== */
.rag-ecran[b-otqphk8qad] {
    background: #ffffff;
    border: 1px solid #9fb0bb;
    padding: 8px;
    overflow-x: auto;
}

/* ===== Aperçu A4 (overlay) ===== */
.rag-preview-overlay[b-otqphk8qad] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .55);
    display: flex;
    justify-content: center;
    align-items: flex-start;
    overflow: auto;
    padding: 20px;
    z-index: 1400;
}

.rag-preview-panel[b-otqphk8qad] {
    width: 210mm;
    max-width: 100%;
}

.rag-preview-toolbar[b-otqphk8qad] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    background: #eeeeee;
    padding: 6px 8px;
    border-radius: 4px 4px 0 0;
}

/* ===== Feuille A4 ===== */
.rag-feuille[b-otqphk8qad] {
    background: #fff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 12mm 14mm;
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .35);
    font-size: 11px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.rag-feuille-entete[b-otqphk8qad] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-bottom: 2px solid #333;
    padding-bottom: 8px;
    margin-bottom: 6px;
}

.rag-feuille-ministere[b-otqphk8qad] { flex: 1 1 0; min-width: 0; }
.rag-feuille-min-titre[b-otqphk8qad] { font-weight: 700; font-size: 12px; white-space: nowrap; }
.rag-feuille-dren[b-otqphk8qad] { font-size: 11px; color: #444; text-transform: uppercase; }
.rag-feuille-ecole-droite[b-otqphk8qad] { flex: 1 1 0; min-width: 0; text-align: right; }
.rag-feuille-nom[b-otqphk8qad] { font-weight: 700; font-size: 15px; text-transform: uppercase; }
.rag-feuille-annee[b-otqphk8qad] { font-size: 11px; color: #444; }
.rag-feuille-logo[b-otqphk8qad] { flex: 0 0 auto; }
.rag-feuille-logo img[b-otqphk8qad] { max-height: 60px; max-width: 100px; object-fit: contain; }

.rag-feuille-barre[b-otqphk8qad] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 8px;
}

/* Titre long : on autorise le retour à la ligne (contrairement aux autres rapports). */
.rag-feuille-titre[b-otqphk8qad] { font-weight: 700; font-size: 11px; color: #7a1f1f; letter-spacing: .3px; }
.rag-feuille-totaux[b-otqphk8qad] { display: flex; gap: 20px; justify-content: flex-end; font-size: 11px; white-space: nowrap; }
.rag-feuille-pied[b-otqphk8qad] { margin-top: 10px; text-align: right; font-size: 11px; color: #444; }
/* /Pages/RapportsStatistiques/ElevesAffectesTable.razor.rz.scp.css */
/* Liste nominative des élèves affectés — écran + feuille A4. */

.aff-niveau[b-b1r275j4ti] { margin-bottom: 14px; }

.aff-niveau-t[b-b1r275j4ti] {
    font-weight: 700;
    font-size: 13px;
    color: #1c2b36;
    background: #dfe8f2;
    border: 1px solid #9fb0bb;
    padding: 3px 8px;
    margin-bottom: 6px;
}

/* Un bloc classe ne se coupe pas au milieu à l'impression si possible. */
.aff-classe[b-b1r275j4ti] {
    margin: 0 0 10px;
    break-inside: avoid;
}

.aff-classe-t[b-b1r275j4ti] {
    font-weight: 700;
    font-size: 11.5px;
    color: #7a1f1f;
    margin: 4px 0 2px;
}

.aff-table[b-b1r275j4ti] {
    border-collapse: collapse;
    width: 100%;
    font-size: 10.5px;
    color: #111;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.aff-table th[b-b1r275j4ti],
.aff-table td[b-b1r275j4ti] {
    border: 1px solid #333;
    padding: 1px 6px;
    text-align: center;
    white-space: nowrap;
}

.aff-table thead th[b-b1r275j4ti] { background: #f0f0f0; font-weight: 700; }

.aff-n[b-b1r275j4ti] { width: 34px; }
.aff-nom[b-b1r275j4ti] { text-align: left; }
.aff-lieu[b-b1r275j4ti] { text-align: left; }
/* /Pages/RapportsStatistiques/ElevesNonAffectes.razor.rz.scp.css */
/* ===== Bandeau ===== */
.acc-window[b-mlkqbt6mqp] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-mlkqbt6mqp] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-mlkqbt6mqp] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-mlkqbt6mqp] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* ===== Métadonnées ===== */
.rag-meta[b-mlkqbt6mqp] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 20px;
    margin: 4px 2px 10px;
    font-size: 0.8rem;
    color: #1c2b36;
}

/* ===== Liste à l'écran ===== */
.rag-ecran[b-mlkqbt6mqp] {
    background: #ffffff;
    border: 1px solid #9fb0bb;
    padding: 8px;
    overflow-x: auto;
}

/* ===== Aperçu A4 (overlay) ===== */
.rag-preview-overlay[b-mlkqbt6mqp] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .55);
    display: flex;
    justify-content: center;
    align-items: flex-start;
    overflow: auto;
    padding: 20px;
    z-index: 1400;
}

.rag-preview-panel[b-mlkqbt6mqp] {
    width: 210mm;
    max-width: 100%;
}

.rag-preview-toolbar[b-mlkqbt6mqp] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    background: #eeeeee;
    padding: 6px 8px;
    border-radius: 4px 4px 0 0;
}

/* ===== Feuille A4 ===== */
.rag-feuille[b-mlkqbt6mqp] {
    background: #fff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 12mm 14mm;
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .35);
    font-size: 11px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.rag-feuille-entete[b-mlkqbt6mqp] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-bottom: 2px solid #333;
    padding-bottom: 8px;
    margin-bottom: 6px;
}

.rag-feuille-ministere[b-mlkqbt6mqp] { flex: 1 1 0; min-width: 0; }
.rag-feuille-min-titre[b-mlkqbt6mqp] { font-weight: 700; font-size: 12px; white-space: nowrap; }
.rag-feuille-dren[b-mlkqbt6mqp] { font-size: 11px; color: #444; text-transform: uppercase; }
.rag-feuille-ecole-droite[b-mlkqbt6mqp] { flex: 1 1 0; min-width: 0; text-align: right; }
.rag-feuille-nom[b-mlkqbt6mqp] { font-weight: 700; font-size: 15px; text-transform: uppercase; }
.rag-feuille-annee[b-mlkqbt6mqp] { font-size: 11px; color: #444; }
.rag-feuille-logo[b-mlkqbt6mqp] { flex: 0 0 auto; }
.rag-feuille-logo img[b-mlkqbt6mqp] { max-height: 60px; max-width: 100px; object-fit: contain; }

.rag-feuille-barre[b-mlkqbt6mqp] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 8px;
}

/* Titre long : retour à la ligne autorisé. */
.rag-feuille-titre[b-mlkqbt6mqp] { font-weight: 700; font-size: 11px; color: #7a1f1f; letter-spacing: .3px; }
.rag-feuille-totaux[b-mlkqbt6mqp] { display: flex; gap: 20px; justify-content: flex-end; font-size: 11px; white-space: nowrap; }
.rag-feuille-pied[b-mlkqbt6mqp] { margin-top: 10px; text-align: right; font-size: 11px; color: #444; }
/* /Pages/RapportsStatistiques/RapportsStatistiques.razor.rz.scp.css */
/* Bandeau (repris de /scolarites, /rapports) — CSS scopé par page. */
.acc-window[b-deoa9uiobb] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-deoa9uiobb] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-deoa9uiobb] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-deoa9uiobb] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* Familles + cartes cliquables (repris du hub Économat). */
.rpt-famille[b-deoa9uiobb] {
    margin-top: 10px;
    margin-bottom: 8px;
    font-weight: 600;
    color: #1565C0;
}

.rpt-cartes[b-deoa9uiobb] {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.rpt-carte[b-deoa9uiobb] {
    width: 260px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: box-shadow .15s ease, border-color .15s ease;
}

.rpt-carte:hover[b-deoa9uiobb] {
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    border-color: #1976D2;
}

.rpt-carte-titre[b-deoa9uiobb] {
    font-weight: 700;
    font-size: 1.05rem;
}

.rpt-carte-desc[b-deoa9uiobb] {
    font-size: .82rem;
    color: #666666;
    line-height: 1.25;
}

.rpt-carte-disabled[b-deoa9uiobb] {
    opacity: .5;
    cursor: default;
    pointer-events: none;
}
/* /Pages/RapportsStatistiques/RepartitionAgeGenre.razor.rz.scp.css */
/* ===== Bandeau (repris de /scolarites) ===== */
.acc-window[b-nyj8ix2s95] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-nyj8ix2s95] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-nyj8ix2s95] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-nyj8ix2s95] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;
    background: #1a1a1a;
    letter-spacing: 1px;
}

/* ===== Barre de configuration (bornes du filtre d'âge) ===== */
.rag-config[b-nyj8ix2s95] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 8px 10px;
    margin-bottom: 8px;
}

.rag-config-lbl[b-nyj8ix2s95] {
    font-weight: 600;
    color: #1c2b36;
}

/* ===== Métadonnées (compteurs) ===== */
.rag-meta[b-nyj8ix2s95] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 20px;
    margin: 4px 2px 10px;
    font-size: 0.8rem;
    color: #1c2b36;
}

/* ===== Tableau à l'écran ===== */
.rag-ecran[b-nyj8ix2s95] {
    background: #ffffff;
    border: 1px solid #9fb0bb;
    padding: 8px;
    overflow-x: auto;   /* la grille large peut défiler horizontalement à l'écran */
}

/* ===== Élèves à vérifier (dates de naissance suspectes) ===== */
.rag-anom[b-nyj8ix2s95] {
    margin: 12px 2px 4px;
    border: 1px solid #e0b400;
    border-radius: 4px;
    background: #fff8e1;
    padding: 8px 10px;
}

.rag-anom-titre[b-nyj8ix2s95] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    font-weight: 700;
    color: #8a6d00;
    margin-bottom: 2px;
}

.rag-anom-note[b-nyj8ix2s95] {
    font-size: 0.78rem;
    color: #6b5900;
    margin-bottom: 8px;
}

.rag-anom-scroll[b-nyj8ix2s95] { overflow-x: auto; }

.rag-anom-table[b-nyj8ix2s95] {
    border-collapse: collapse;
    background: #fff;
    font-size: 0.8rem;
}

.rag-anom-table th[b-nyj8ix2s95],
.rag-anom-table td[b-nyj8ix2s95] {
    border: 1px solid #d9c77a;
    padding: 2px 8px;
    text-align: center;
    white-space: nowrap;
}

.rag-anom-table thead th[b-nyj8ix2s95] { background: #fdecb0; font-weight: 700; }
.rag-anom-nom[b-nyj8ix2s95] { text-align: left; }
.rag-anom-pb[b-nyj8ix2s95] { font-weight: 700; color: #a11; }

/* ===== Aperçu A4 (overlay plein écran) ===== */
.rag-preview-overlay[b-nyj8ix2s95] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .55);
    display: flex;
    justify-content: center;
    align-items: flex-start;
    overflow: auto;
    padding: 20px;
    z-index: 1400;
}

.rag-preview-panel[b-nyj8ix2s95] {
    width: 210mm;
    max-width: 100%;
}

.rag-preview-toolbar[b-nyj8ix2s95] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    background: #eeeeee;
    padding: 6px 8px;
    border-radius: 4px 4px 0 0;
}

/* ===== Feuille A4 (en-tête officiel ivoirien) ===== */
.rag-feuille[b-nyj8ix2s95] {
    background: #fff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 12mm 14mm;
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0, 0, 0, .35);   /* écran seulement */
    font-size: 11px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.rag-feuille-entete[b-nyj8ix2s95] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-bottom: 2px solid #333;
    padding-bottom: 8px;
    margin-bottom: 6px;
}

.rag-feuille-ministere[b-nyj8ix2s95] { flex: 1 1 0; min-width: 0; }
.rag-feuille-min-titre[b-nyj8ix2s95] { font-weight: 700; font-size: 12px; white-space: nowrap; }
.rag-feuille-dren[b-nyj8ix2s95] { font-size: 11px; color: #444; text-transform: uppercase; }
.rag-feuille-ecole-droite[b-nyj8ix2s95] { flex: 1 1 0; min-width: 0; text-align: right; }
.rag-feuille-nom[b-nyj8ix2s95] { font-weight: 700; font-size: 15px; text-transform: uppercase; }
.rag-feuille-annee[b-nyj8ix2s95] { font-size: 11px; color: #444; }
.rag-feuille-logo[b-nyj8ix2s95] { flex: 0 0 auto; }
.rag-feuille-logo img[b-nyj8ix2s95] { max-height: 60px; max-width: 100px; object-fit: contain; }

.rag-feuille-barre[b-nyj8ix2s95] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 8px;
}

/* Titre réduit + insécable : tient sur une seule ligne, stats à droite sur la même barre. */
.rag-feuille-titre[b-nyj8ix2s95] { font-weight: 700; font-size: 11px; color: #7a1f1f; letter-spacing: 0; white-space: nowrap; }
.rag-feuille-totaux[b-nyj8ix2s95] { display: flex; gap: 20px; justify-content: flex-end; font-size: 11px; white-space: nowrap; }
.rag-feuille-pied[b-nyj8ix2s95] { margin-top: 10px; text-align: right; font-size: 11px; color: #444; }

/* Annexe imprimable « Élèves à vérifier » : sur une nouvelle page à l'impression. */
.rag-annexe[b-nyj8ix2s95] { margin-top: 14px; break-before: page; }
.rag-annexe-titre[b-nyj8ix2s95] { font-weight: 700; font-size: 12px; color: #7a1f1f; letter-spacing: .5px; margin-bottom: 6px; }
.rag-annexe-table[b-nyj8ix2s95] {
    border-collapse: collapse;
    width: 100%;
    font-size: 10px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
.rag-annexe-table th[b-nyj8ix2s95],
.rag-annexe-table td[b-nyj8ix2s95] { border: 1px solid #333; padding: 2px 6px; text-align: center; white-space: nowrap; }
.rag-annexe-table thead th[b-nyj8ix2s95] { background: #f0f0f0; font-weight: 700; }
.rag-annexe-nom[b-nyj8ix2s95] { text-align: left; }
/* /Pages/RapportsStatistiques/RepartitionAgeGenreTable.razor.rz.scp.css */
/* Grille « Répartition par année de naissance (approche genre) ».
   Même rendu à l'écran et sur la feuille A4 imprimée. */

.rag-table[b-zh7gfvaeve] {
    border-collapse: collapse;
    width: 100%;
    font-size: 11px;
    color: #111;
    table-layout: fixed;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.rag-table th[b-zh7gfvaeve],
.rag-table td[b-zh7gfvaeve] {
    border: 1px solid #333;
    padding: 1px 2px;
    text-align: center;
    vertical-align: middle;
    overflow: hidden;
    white-space: nowrap;
}

.rag-table thead th[b-zh7gfvaeve] {
    background: #f0f0f0;
    font-weight: 700;
    font-size: 10px;
}

.rag-cycle[b-zh7gfvaeve] {
    letter-spacing: 1px;
}

.rag-col-annee[b-zh7gfvaeve] {
    width: 42px;
}

.rag-annee[b-zh7gfvaeve] {
    font-weight: 700;
    background: #fafafa;
}

.rag-genre[b-zh7gfvaeve] {
    font-weight: 700;
    width: 28px;
}

.rag-num[b-zh7gfvaeve] {
    width: 26px;
}

/* Colonnes vides (0) laissées blanches → seules les valeurs ressortent, comme l'état d'origine. */
.rag-b[b-zh7gfvaeve] { font-weight: 700; }

/* Sous-totaux S/T1, S/T2 et colonne TOTAL : légèrement grisés + gras. */
.rag-st[b-zh7gfvaeve] { background: #f4f4f4; }
.rag-tot[b-zh7gfvaeve] { background: #ececec; }

/* Bloc TOTAL GÉNÉRAL en pied. */
.rag-tg[b-zh7gfvaeve] { background: #eef3f8; }
.rag-tg-lbl[b-zh7gfvaeve] {
    font-weight: 700;
    letter-spacing: .5px;
    background: #e3ebf3;
    text-align: center;
}
.rag-tg-total td[b-zh7gfvaeve] { background: #dfe8f2; }
/* /Pages/Rapports/Rapports.razor.rz.scp.css */
/* Hub des rapports (Économat) : familles + cartes cliquables. */

.rpt-famille[b-8tfuoyj19x] {
    margin-top: 10px;
    margin-bottom: 8px;
    font-weight: 600;
    color: #1565C0;
}

.rpt-cartes[b-8tfuoyj19x] {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.rpt-carte[b-8tfuoyj19x] {
    width: 230px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: box-shadow .15s ease, border-color .15s ease;
}

.rpt-carte:hover[b-8tfuoyj19x] {
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    border-color: #1976D2;
}

.rpt-carte-active[b-8tfuoyj19x] {
    border-color: #1976D2;
    box-shadow: 0 0 0 2px rgba(25, 118, 210, .35);
    background: #f3f8ff;
}

.rpt-carte-titre[b-8tfuoyj19x] {
    font-weight: 700;
    font-size: 1.05rem;
}

.rpt-carte-desc[b-8tfuoyj19x] {
    font-size: .82rem;
    color: #666666;
    line-height: 1.25;
}

/* Familles pas encore disponibles : grisées et non cliquables. */
.rpt-carte-disabled[b-8tfuoyj19x] {
    opacity: .5;
    cursor: default;
    pointer-events: none;
}

/* Bilan de la génération des relances (Avis aux parents), à côté du titre du panneau. */
.rpt-message-relances[b-8tfuoyj19x] {
    background: #fff59d;
    border: 2px solid #f9a825;
    border-radius: 6px;
    color: #c62828;
    font-weight: 600;
    padding: 6px 14px;
    line-height: 1.35;
}

/* Panneau de configuration du rapport sélectionné. */
.rpt-config[b-8tfuoyj19x] {
    background: #fafafa;
    border: 1px solid #e0e0e0;
}
/* /Pages/Rapports/RapportsRecouvrement.razor.rz.scp.css */
/* Sous-page Recouvrement du hub Économat : mêmes cartes que /rapports (copie du CSS scopé). */

.rpt-famille[b-g2fua14k5i] {
    margin-top: 10px;
    margin-bottom: 8px;
    font-weight: 600;
    color: #1565C0;
}

.rpt-cartes[b-g2fua14k5i] {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
}

.rpt-carte[b-g2fua14k5i] {
    width: 230px;
    border: 1px solid #d9d9d9;
    border-radius: 8px;
    padding: 14px;
    cursor: pointer;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 6px;
    transition: box-shadow .15s ease, border-color .15s ease;
}

.rpt-carte:hover[b-g2fua14k5i] {
    box-shadow: 0 2px 10px rgba(0, 0, 0, .12);
    border-color: #1976D2;
}

.rpt-carte-active[b-g2fua14k5i] {
    border-color: #1976D2;
    box-shadow: 0 0 0 2px rgba(25, 118, 210, .35);
    background: #f3f8ff;
}

.rpt-carte-titre[b-g2fua14k5i] {
    font-weight: 700;
    font-size: 1.05rem;
}

.rpt-carte-desc[b-g2fua14k5i] {
    font-size: .82rem;
    color: #666666;
    line-height: 1.25;
}

/* Familles pas encore disponibles : grisées et non cliquables. */
.rpt-carte-disabled[b-g2fua14k5i] {
    opacity: .5;
    cursor: default;
    pointer-events: none;
}

/* Panneau de configuration du rapport sélectionné. */
.rpt-config[b-g2fua14k5i] {
    background: #fafafa;
    border: 1px solid #e0e0e0;
}
/* /Pages/Schools/SchoolHome.razor.rz.scp.css */
/* Fond de la page d'accueil d'école : photo de paysage en plein écran.
   L'image n'est plus choisie ici : c'est FondEcranService qui la designe (meme photo
   que /login pour ce poste et ce jour). Pour changer le lot d'images, editer le
   tableau _images de ce service. Les photos sont en JPEG q85 ; les PNG sans perte
   sont archives dans E:\Images_bank. */
.school-home-bg[b-9dvqomimhe] {
    position: relative;
    /* Suit la hauteur du bandeau (variable posee sur .school-shell dans index.html :
       marges + bandeau), pour que la photo descende jusqu'au bas du tiroir quelle que
       soit l'epaisseur du bandeau. 179.33px = valeur d'origine, en repli. */
    min-height: calc(100vh - var(--mud-appbar-height, 179.33px));
    /* L'image n'est plus un background : c'est un <picture> pose par SchoolHome.razor,
       seul moyen de servir une variante allegee aux petits ecrans. Elle est ancree
       ci-dessous en .school-home-img. */
}

/* Image de fond : sous le contenu. Le z-index doit rester explicite — sans lui, le
   <picture> etant peint apres, il passerait devant le contenu et le masquerait. */
.school-home-bg > picture[b-9dvqomimhe] {
    display: block;
    position: absolute;
    inset: 0;
    z-index: 0;
}

/* object-fit: cover reproduit background-size: cover ; center, background-position.
   Pas de position: fixed : le fond defile avec le contenu, comme avant. */
.school-home-img[b-9dvqomimhe] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

/* Le contenu passe au-dessus de l'image. Deux precautions :
   - :not(picture) exclut l'image de fond, sans quoi cette regle lui imposerait
     position: relative et z-index: 2 et la ferait passer devant tout ;
   - ::deep est indispensable : sans lui le CSS scope ajoute l'attribut b-... sur
     l'element cible, or les composants MudBlazor (ici le MudText de la date) n'en
     portent pas. La date restait alors en z-index auto, donc SOUS l'image. */
.school-home-bg[b-9dvqomimhe] >  *:not(picture) {
    position: relative;
    z-index: 2;
}
/* /Pages/Scolarites/Scolarites.razor.rz.scp.css */
/* Page "ScolaritÃ©s" â€” reprend le calque Access (palette gris-bleu) de CreateEleve
   pour l'enveloppe, et ajoute la barre de filtres + la grille rouge (liste Ã©lÃ¨ves). */

/* ---- Enveloppe (repris de CreateEleve, car le CSS scoped ne traverse pas les composants) ---- */
.acc-window[b-pj1uc1d38q] {
    background: #d9e2e8;
    border: 1px solid #9fb0bb;
    padding: 10px 14px 14px;
    color: #1c2b36;
    font-size: 0.8rem;
}

.acc-titlebar[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.acc-title[b-pj1uc1d38q] {
    font-weight: 700;
    font-size: 1.2rem;
    color: #1c2b36;
}

.acc-year[b-pj1uc1d38q] {
    border: 2px solid #000000;
    border-radius: 4px;
    padding: 2px 16px;
    font-weight: 700;
    font-style: italic;
    color: #ffffff;         /* écriture blanche / gras */
    background: #1a1a1a;    /* noir foncé */
    letter-spacing: 1px;
}

/* ---- Barre de filtres ---- */
.acc-filterbar[b-pj1uc1d38q] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 8px 14px;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 8px 10px;
    margin-bottom: 4px;
}

/* Couleur selon le type d'école (classe posée par le code-behind, ClasseCouleurFiltres) :
   EG = beige clair (blanc cassé) ; ETP / GE / MP = orange léger. */
.acc-filterbar.filtres-eg[b-pj1uc1d38q] {
    background: #faf6ec;
    border-color: #d9cfb8;
}

.acc-filterbar.filtres-orange[b-pj1uc1d38q] {
    background: #ffe3c4;
    border-color: #f0b77d;
}

.acc-fgroup[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    gap: 0;            /* champ collé sous son label (remonte légèrement) */
}

/* Déroulante CodeParent + bouton Effacer dans la même rangée : stretch donne au bouton la
   hauteur de la ligne (le bouton porte my-1 pour retrancher les marges du champ). */
.sc-cp-effacer[b-pj1uc1d38q] {
    display: flex;
    align-items: stretch;
    gap: 14px;
}

/* Partie gauche de la barre : les filtres (2 lignes), même disposition qu'avant. */
.sc-filtres-champs[b-pj1uc1d38q] {
    flex: 1 1 600px;
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 8px 14px;
}

/* Partie droite : encadré jaune « Ajouter aux échéanciers de : … » (échéance oubliée,
   ex. timbres), sur la hauteur des deux lignes de filtres. */
.sc-ajout-ech[b-pj1uc1d38q] {
    flex: 0 0 auto;
    align-self: stretch;
    margin-left: auto;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 6px;
    background: #fff59d;
    border: 2px solid #e0b000;
    border-radius: 4px;
    padding: 6px 10px;
}

.sc-ajout-ech-titre[b-pj1uc1d38q] {
    font-size: 0.78rem;
    font-weight: 700;
    color: #5a4500;
    white-space: nowrap;
}

.sc-ajout-ech-titre b[b-pj1uc1d38q] {
    color: #8a1327;
}

.sc-ajout-ech-ligne[b-pj1uc1d38q] {
    display: flex;
    align-items: flex-end;
    gap: 0 10px;
}

/* 2e ligne de filtres (Matricule + N° Inscription) : conteneur pleine largeur => passe sous
   la 1re ligne, aligné à gauche. */
.sc-row2[b-pj1uc1d38q] {
    flex-basis: 100%;
    display: flex;
    gap: 0 14px;
    align-items: flex-end;
}

.acc-flabel[b-pj1uc1d38q] {
    font-weight: 700;
    font-size: 0.72rem;
    color: #243b4a;
    white-space: nowrap;
}

.acc-ffield[b-pj1uc1d38q] {
    width: 190px;
}

.acc-fnarrow[b-pj1uc1d38q] {
    width: 110px;
}

.acc-ffield[b-pj1uc1d38q]  .mud-input-slot,
.acc-ffield[b-pj1uc1d38q]  .mud-select-input {
    font-size: 0.78rem;
    padding-top: 1px;
    padding-bottom: 1px;
    background: #ffffff;
}

/* ---- Grille rouge (liste des Ã©lÃ¨ves, faÃ§on Access) ---- */
.acc-grid[b-pj1uc1d38q]  .mud-table-root {
    font-size: 0.78rem;
}

.acc-grid[b-pj1uc1d38q]  th {
    background: #5f6b73 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    white-space: nowrap;
}

.acc-grid[b-pj1uc1d38q]  td {
    background: #8a1327 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    border-color: #a83b4a !important;
    white-space: nowrap;
}

.acc-grid[b-pj1uc1d38q]  tr:hover td {
    background: #a3182f !important;
}

/* Grille élèves : barre de défilement horizontale si les colonnes dépassent la largeur
   (pour voir d'éventuelles colonnes supplémentaires à droite). */
.acc-grid-eleves[b-pj1uc1d38q]  .mud-table-container {
    overflow-x: auto;
}

/* Table a largeur NATURELLE : elle deborde du conteneur borne -> defilement horizontal reel
   (sinon la table se comprime a la largeur du conteneur et rien ne defile). */
.acc-grid-eleves[b-pj1uc1d38q]  .mud-table-root {
    width: max-content;
    min-width: 100%;
}

/* Cases Ã  cocher "Inscrit" lisibles sur fond rouge */
.acc-grid[b-pj1uc1d38q]  td .mud-icon-root {
    color: #ffffff !important;
}

/* SÃ©lecteurs Ã©ditables (Statut / Niveau / Classe) : texte blanc, compact, fond transparent.
   IMPORTANT : MudBlazor pose font-size 1rem sur .mud-input et 0.875rem sur les cellules
   (.mud-table-cell) â€” Â« inherit Â» aligne le texte des sÃ©lecteurs sur celui de la cellule,
   ni plus gros (troncature dans les colonnes Ã©troites), ni plus petit. */
.acc-grid[b-pj1uc1d38q]  td .mud-input-slot,
.acc-grid[b-pj1uc1d38q]  td .mud-select-input,
.acc-grid[b-pj1uc1d38q]  td .mud-input {
    color: #ffffff !important;
    font-weight: 700;
    font-size: inherit !important;
}

.acc-grid[b-pj1uc1d38q]  .acc-cell-select {
    width: 70px;
}

/* Colonne Classe un peu plus large (libellés « TleD3 », « 2nde C2 »…). */
.acc-grid[b-pj1uc1d38q]  .acc-cell-classe {
    width: 88px;
}

.acc-grid[b-pj1uc1d38q]  .acc-cell-input {
    width: 70px;
}

/* Telephone du tuteur : editable en ligne, occupe la largeur de la colonne (10 chiffres) */
.acc-grid[b-pj1uc1d38q]  .acc-cell-tel {
    width: 90px;
}

/* Pas de trait de soulignement sous les sÃ©lecteurs Statut / Niveau */
.acc-grid[b-pj1uc1d38q]  td .mud-input.mud-input-underline::before,
.acc-grid[b-pj1uc1d38q]  td .mud-input.mud-input-underline::after {
    border-bottom: none !important;
}

/* Lignes compactes : on rÃ©duit le rembourrage vertical des cellules et des champs */
.acc-grid[b-pj1uc1d38q]  td,
.acc-grid[b-pj1uc1d38q]  th {
    padding-top: 1px !important;
    padding-bottom: 1px !important;
}

.acc-grid[b-pj1uc1d38q]  td .mud-input-control {
    margin-top: 0 !important;
}

.acc-grid[b-pj1uc1d38q]  td .mud-input-slot {
    min-height: 22px;
}

/* ---- Pied de grille ---- */
.acc-gridfoot[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 4px 2px 0;
}

.acc-demo-note[b-pj1uc1d38q] {
    font-style: italic;
    color: #8a5a00;
}

/* ==================== Versements de l'Ã©lÃ¨ve sÃ©lectionnÃ© ==================== */

/* Ligne sÃ©lectionnÃ©e dans la grille rouge */
[b-pj1uc1d38q] .svt-ligne-sel td {
    background: #1b4f72 !important;
    color: #ffffff !important;
}

/* Survol de la ligne SÉLECTIONNÉE : garder le bleu (légèrement éclairci pour un retour de
   survol) au lieu de laisser le rouge de survol dominer. Spécificité 0,2,2 → bat
   « tr:hover td » (0,1,2) qui, sinon, masquait la sélection tant que le curseur reste dessus. */
.acc-grid[b-pj1uc1d38q]  tr.svt-ligne-sel:hover td {
    background: #24628f !important;
}

/* Debiteur : reliquat de l'an passe non reporte. Lisere rouge a gauche de la ligne (en plus de
   l'icone dans la cellule Nom). box-shadow inset -> survit au survol et a la selection. */
[b-pj1uc1d38q] .svt-ligne-dette td:first-child {
    box-shadow: inset 3px 0 0 0 #c0392b;
}

.svt-titre[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    margin-top: 12px;
    padding: 4px 10px;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px 4px 0 0;
    font-size: 0.95rem;
    color: #7a1f1f;
}

.svt-titre-niveau[b-pj1uc1d38q] {
    margin-left: 12px;
    color: #b02525;
    font-weight: 700;
}

/* Zone synthÃ¨se + saisie cÃ´te Ã  cÃ´te */
.svt-zone[b-pj1uc1d38q] {
    display: flex;
    gap: 10px;
    align-items: stretch;
}

/* Bloc synthÃ¨se (Total Frais / PayÃ© / Reste) â€” calque des cadres de gauche Access */
.svt-resume[b-pj1uc1d38q] {
    flex: 0 0 230px;
    background: #e8eef2;
    border: 1px solid #9fb0bb;
    padding: 14px 16px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    justify-content: flex-start;   /* titre « Point de l'élève » collé en haut de la zone */
    font-size: 0.85rem;
}

/* Rangee du bas : Detail des versements aligne sous la zone bleue, meme largeur.
   Marge negative : remonte le chatbot + Detail des versements vers la zone bleue. */
.svt-zone-bas[b-pj1uc1d38q] {
    margin-top: -6px;
}

.svt-resume-spacer[b-pj1uc1d38q] {
    flex: 0 0 230px;
}

/* Hote de la bulle d'assistance (Sophia) : reference de positionnement pour la bulle
   ancree (position: absolute dans ChatWidget). min-height pour garder de la place a la
   bulle meme quand la grille detail est courte. */
.svt-chat-host[b-pj1uc1d38q] {
    position: relative;
    min-height: 90px;
}

/* Bouton « Modifier » (mode edition du versement) : ecriture rouge, plus visible que le
   texte par defaut sur le fond jaune (Color.Warning). */
.svt-btn-modif[b-pj1uc1d38q]  .mud-button-label {
    color: #c62828 !important;
    font-weight: 700;
}

.svt-detail-col[b-pj1uc1d38q] {
    flex: 1 1 60%;
    min-width: 0;
}

/* Titre du bloc synthese : « Point de l'eleve » avec un trait bord a bord (les marges
   negatives annulent le padding 14/16 du bloc pour que le trait touche les deux bords). */
.svt-resume-titre[b-pj1uc1d38q] {
    margin: -14px -16px 10px;
    padding: 6px 16px;
    font-weight: 700;
    font-size: 0.9rem;
    text-align: center;
    color: #1c2b36;
    background: #cfd9df;
    border-bottom: 2px solid #9fb0bb;
}

.svt-resume-ligne[b-pj1uc1d38q] {
    display: flex;
    justify-content: space-between;
    gap: 10px;
}

.svt-resume-ligne b[b-pj1uc1d38q] {
    color: #1c2b36;
}

.svt-reste b[b-pj1uc1d38q] {
    color: #b02525;
    font-size: 1.05rem;
}

/* Ligne Transport du bloc synthèse : libellé au-dessus, sélecteur de zone dessous,
   séparée par un filet léger du reste de la synthèse. */
.svt-resume-transport[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 6px;
    padding-top: 8px;
    border-top: 1px solid #b8c6cf;
}

.svt-resume-transport label[b-pj1uc1d38q] {
    font-weight: 600;
    color: #1c2b36;
}

/* Compacte le sélecteur de zone (bat la règle .acc-window 22px par spécificité scopée). */
.svt-resume-transport[b-pj1uc1d38q]  .mud-input-slot,
.svt-resume-transport[b-pj1uc1d38q]  .mud-select-input,
.svt-resume-transport[b-pj1uc1d38q]  input {
    font-size: 14px !important;
    min-height: 28px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.svt-resume-transport[b-pj1uc1d38q]  .mud-input-control-input-container,
.svt-resume-transport[b-pj1uc1d38q]  .mud-input.mud-input-outlined {
    min-height: 30px !important;
}

/* Sous-form bleu ciel de saisie (calque Access) */
.svt-saisie[b-pj1uc1d38q] {
    flex: 1 1 60%;
    background: #bfddf0; /* bleu ciel Access */
    border: 1px solid #7fa8c8;
    padding: 18px 14px;
    min-height: 170px; /* +0,5 cm */
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* Grille echeancier de l'eleve, a droite de la zone bleue (calque Access) */
.svt-echeancier-slot[b-pj1uc1d38q] {
    flex: 0 0 27%;
    min-width: 250px;
}

.svt-ech-titre[b-pj1uc1d38q] {
    padding: 3px 10px;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-bottom: none;
    font-weight: 700;
    font-size: 0.85rem;
}

.svt-ech-grid[b-pj1uc1d38q] {
    border: 1px solid #9fb0bb;
    background: #ffffff;
    max-height: 220px;
    overflow-y: auto;
    overflow-x: hidden; /* pas de debordement horizontal */
}

.svt-ech-vide[b-pj1uc1d38q] {
    padding: 10px;
    font-style: italic;
    color: #5a748a;
}

/* Table HTML pure : le CSS isole s'applique directement (pas de composant MudBlazor).
   Police et marges resserrees pour loger 5 colonnes (Echeance/Montant/Paye/Statut/Reste). */
.svt-ech-table[b-pj1uc1d38q] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.66rem;
    table-layout: fixed; /* largeurs de colonnes contraintes -> pas de debordement */
}

.svt-ech-table th[b-pj1uc1d38q] {
    position: sticky;
    top: 0;
    background: #5f6b73;
    color: #ffffff;
    font-weight: 700;
    text-align: left;
    padding: 2px 3px;
    white-space: nowrap;
}

.svt-ech-table td[b-pj1uc1d38q] {
    padding: 2px 3px;
    border-bottom: 1px solid #dce4e9;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Largeurs fixes (total 100 %). Echeance = colonne texte tronquee ; Montant, Reduc. et
   Reste resserrees ; Paye et Statut gardent leur place. */
.svt-ech-table th:nth-child(1)[b-pj1uc1d38q],
.svt-ech-table td:nth-child(1)[b-pj1uc1d38q] { width: 26%; }   /* Echeance */
.svt-ech-table th:nth-child(2)[b-pj1uc1d38q],
.svt-ech-table td:nth-child(2)[b-pj1uc1d38q] { width: 14%; }   /* Montant (du net) */
.svt-ech-table th:nth-child(3)[b-pj1uc1d38q],
.svt-ech-table td:nth-child(3)[b-pj1uc1d38q] { width: 13%; }   /* Reduc. */
.svt-ech-table th:nth-child(4)[b-pj1uc1d38q],
.svt-ech-table td:nth-child(4)[b-pj1uc1d38q] { width: 14%; }   /* Paye */
.svt-ech-table th:nth-child(5)[b-pj1uc1d38q],
.svt-ech-table td:nth-child(5)[b-pj1uc1d38q] { width: 19%; }   /* Statut */
.svt-ech-table th:nth-child(6)[b-pj1uc1d38q],
.svt-ech-table td:nth-child(6)[b-pj1uc1d38q] { width: 14%; }   /* Reste */

/* Part retranchee par les reductions : en vert, comme une remise */
.svt-ech-reduc[b-pj1uc1d38q] {
    color: #1e7d32;
}

/* Lignes modifiees par la reduction qu'on vient d'accorder / d'annuler : surbrillance
   jaune qui s'estompe (la classe est retiree par le code apres l'animation). */
.svt-ech-touchee td[b-pj1uc1d38q] {
    animation: svt-ech-flash-b-pj1uc1d38q 4s ease-out;
}

@keyframes svt-ech-flash-b-pj1uc1d38q {
    0%, 40% { background: #ffe082; }
    100%    { background: transparent; }
}

.svt-ech-num[b-pj1uc1d38q] {
    text-align: right;
    font-weight: 600;
}

/* Echeance en retard : libelle et montants en rouge */
.svt-ech-retard td[b-pj1uc1d38q] {
    color: #b02525;
}

/* Pastille de statut Paye / Partiel / Non paye (compacte pour degager de la place) */
.svt-ech-statut[b-pj1uc1d38q] {
    display: inline-block;
    min-width: 46px;
    text-align: center;
    border-radius: 8px;
    padding: 0 4px;
    font-weight: 700;
    font-size: 0.6rem;
}

.svt-ech-paye[b-pj1uc1d38q] {
    background: #d9efd9;
    color: #1e7d32;
}

.svt-ech-partiel[b-pj1uc1d38q] {
    background: #ffe9c7;
    color: #9a6200;
}

.svt-ech-nonpaye[b-pj1uc1d38q] {
    background: #f6d7db;
    color: #b02525;
}

/* Ecritures des champs de saisie (Inscription, Espece...) : plus petites que le
   22px global de .acc-window (index.html), et listes deroulantes moins hautes */
.svt-saisie[b-pj1uc1d38q]  .mud-input-slot,
.svt-saisie[b-pj1uc1d38q]  .mud-select-input,
.svt-saisie[b-pj1uc1d38q]  input {
    font-size: 14px !important;
    min-height: 30px !important;
}

.svt-saisie[b-pj1uc1d38q]  .mud-input-control {
    margin-top: 0 !important;
}

/* Conteneur MONTANT + Nouveau : envoye a droite, au meme niveau que Ref. operation,
   bordure invisible */
.svt-montant-box[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-left: auto;
    border: 1px solid transparent;
    border-radius: 4px;
    padding: 2px 0;
}

.svt-montant-label[b-pj1uc1d38q] {
    font-weight: 700;
    color: #5a748a;
    letter-spacing: 1px;
}

/* MONTANT : compact, colle au bouton Nouveau */
.svt-montant[b-pj1uc1d38q] {
    width: 150px;
}

.svt-montant-box[b-pj1uc1d38q]  .mud-input-control {
    width: 150px !important;
    flex: 0 0 auto !important;
}

/* MONTANT : gros, gras, ecriture rouge sur fond blanc, separateur de milliers
   (Format="#,0" + culture fr cote composant). Cible via le div parent
   svt-ligne-montant : le CSS isole ne pose pas son scope sur les composants MudBlazor. */
.svt-ligne-montant[b-pj1uc1d38q]  .svt-montant input {
    font-size: 30px !important;
    font-weight: 700 !important;
    color: #b02525 !important;
    text-align: right;
    background: #ffffff !important;
}

.svt-ligne-montant[b-pj1uc1d38q]  .svt-montant .mud-input-slot,
.svt-ligne-montant[b-pj1uc1d38q]  .svt-montant .mud-input {
    background: #ffffff !important;
    min-height: 42px !important;
}

/* MONTANT + Nouveau dans la même rangée : stretch donne au bouton la hauteur du champ
   (le bouton porte my-1 pour retrancher les marges du champ Dense). */
.svt-montant-nouveau[b-pj1uc1d38q] {
    display: flex;
    align-items: stretch;
    gap: 8px;
}

/* Le champ montant est plus large que les autres controles de la ligne */
.svt-ligne-montant[b-pj1uc1d38q]  .svt-montant {
    width: 200px !important;
}


.svt-saisie-champs[b-pj1uc1d38q] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 12px;
}

.svt-champ[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    min-width: 150px;
}

.svt-champ label[b-pj1uc1d38q] {
    font-size: 0.72rem;
    color: #5a748a;
    margin-bottom: 2px;
}

.svt-champ-ref[b-pj1uc1d38q] {
    flex: 0 0 auto;
    min-width: 120px;
    max-width: 140px;
}

/* VALIDER : pousse au bord droit, meme axe vertical que le bloc MONTANT/Nouveau */
.svt-btn-valider[b-pj1uc1d38q],
.svt-btn-recu[b-pj1uc1d38q] {
    margin-bottom: 2px;
}

/* VALIDER : en bas, au milieu du panneau */
.svt-valider-box[b-pj1uc1d38q] {
    align-self: center;
    margin-top: 8px;
    margin-left: 64px; /* decalage vers la droite (a partir de Valider) */
    display: flex;
    align-items: center;
}

/* Case SMS : collee au bouton SMS, sans rembourrage superflu */
.svt-chk-sms[b-pj1uc1d38q] {
    margin-left: 2px;
}

.svt-chk-sms[b-pj1uc1d38q]  .mud-button-root,
.svt-chk-sms[b-pj1uc1d38q]  .mud-icon-button {
    padding: 4px;
}

/* Disposition Access : 2 colonnes (Date/Ref a gauche ; MONTANT puis Nature/Mode a droite) */
.svt-cols[b-pj1uc1d38q] {
    display: flex;
    gap: 28px;
    align-items: flex-start;
}

.svt-col-gauche[b-pj1uc1d38q] {
    flex: 0 0 190px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* Cadre « Rame » (Fournie + Mode) — calque du groupe encadré du formulaire Access. */
.svt-rame-group[b-pj1uc1d38q] {
    border: 1px solid #c76a1c; /* orange Access */
    border-radius: 3px;
    padding: 0 8px 4px;
    margin: 0;
}

.svt-rame-group > legend[b-pj1uc1d38q] {
    font-size: 0.72rem;
    font-weight: 700;
    color: #5a748a;
    padding: 0 4px;
    width: auto;
    margin: 0;
}

/* Ligne libelle + controle a l'interieur du cadre Rame et pour « Mois ». */
.svt-rame-ligne[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.svt-rame-ligne > label[b-pj1uc1d38q] {
    min-width: 54px;
    text-align: left;
    font-size: 0.75rem;
    color: #5a748a;
}

/* Largeur des controles de la colonne gauche (Mode rame). */
.svt-col-gauche[b-pj1uc1d38q]  .mud-input-control {
    width: 96px !important;
    flex: 0 0 auto;
}

.svt-col-gauche[b-pj1uc1d38q]  .mud-input-slot,
.svt-col-gauche[b-pj1uc1d38q]  .mud-select-input {
    min-height: 24px !important;
    padding-top: 2px !important;
    padding-bottom: 2px !important;
}

/* Cases empilees verticalement : Tenue de sport / Carnet corresp. / Macaron. */
.svt-articles-box[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    border: 1px solid #7fa8c8;
    border-radius: 3px;
    padding: 1px 8px;
}

.svt-articles-box[b-pj1uc1d38q]  .mud-checkbox,
.svt-rame-ligne[b-pj1uc1d38q]  .mud-checkbox {
    margin: 0;
}

/* Rembourrage reduit de la case : rapproche les lignes (conteneur plus bas). */
.svt-articles-box[b-pj1uc1d38q]  .mud-checkbox .mud-icon-button {
    padding: 2px;
}

/* Libelles sur UNE seule ligne (pas de retour a la ligne). */
.svt-articles-box[b-pj1uc1d38q]  .mud-checkbox .mud-typography,
.svt-rame-ligne[b-pj1uc1d38q]  .mud-checkbox .mud-typography {
    font-size: 0.75rem;
    color: #34495e;
    white-space: nowrap;
}

.svt-col-droite[b-pj1uc1d38q] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 8px;
    align-items: flex-end;
}

/* Ligne libelle + controle (libelle a gauche, comme dans Access) */
.svt-ligne[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Resserre l'espace vertical au-dessus : remonte Mode de paiement et Ref. operation
   vers Nature du versement (qui, elle, ne bouge pas). Le gap de .svt-col-droite est
   de 8px ; ce margin negatif l'annule presque entierement. */
.svt-ligne-resserre[b-pj1uc1d38q] {
    margin-top: -6px;
}

.svt-ligne > label[b-pj1uc1d38q] {
    min-width: 120px;
    text-align: right;
    font-size: 0.75rem;
    color: #5a748a;
}

.svt-ligne[b-pj1uc1d38q]  .mud-input-control {
    width: 160px !important;
    flex: 0 0 auto;
}

/* Cadre Rame → contrôle « Mode » (déroulante Nature/4000) : un peu plus large + caractères
   plus petits. Ciblé via le wrapper .svt-rame-mode (div de MA page → portée scopée fiable). */
.svt-rame-mode[b-pj1uc1d38q]  .mud-input-control {
    width: 130px !important;
}

.svt-rame-mode[b-pj1uc1d38q]  .mud-select-input,
.svt-rame-mode[b-pj1uc1d38q]  input {
    font-size: 14px !important;
}

/* Listes deroulantes (Nature, Mode) : hauteur reduite */
.svt-ligne[b-pj1uc1d38q]  .mud-input-slot,
.svt-ligne[b-pj1uc1d38q]  .mud-select-input {
    min-height: 24px !important;
    padding-top: 2px !important;
    padding-bottom: 2px !important;
}

.svt-ligne-montant[b-pj1uc1d38q]  .mud-input-control {
    width: 150px !important;
}

/* Grille DÃ©tail des versements */
.svt-detail-titre[b-pj1uc1d38q] {
    margin-top: 10px;
    padding: 3px 10px;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-bottom: none;
    font-weight: 700;
    font-size: 0.85rem;
}

.svt-detail[b-pj1uc1d38q] {
    margin-bottom: 4px;
}

/* ============ Panneau Réductions (pleine largeur, entre la zone bleue et le détail) ============ */
.svt-reduc-zone[b-pj1uc1d38q] {
    margin-top: 8px;
}

/* Titre facon svt-ech-titre / svt-detail-titre (bandeau gris) */
.svt-reduc-titre[b-pj1uc1d38q] {
    padding: 3px 10px;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-bottom: none;
    font-weight: 700;
    font-size: 0.85rem;
}

.svt-reduc-body[b-pj1uc1d38q] {
    border: 1px solid #9fb0bb;
    background: #ffffff;
    padding: 8px 10px;
}

/* Ligne de saisie : Type + Montant OU % + bouton Accorder, sur une ligne */
.svt-reduc-saisie[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}

.svt-reduc-saisie label[b-pj1uc1d38q] {
    font-size: 0.8rem;
    font-weight: 600;
    color: #1c2b36;
}

.svt-reduc-type[b-pj1uc1d38q] { width: 150px; }
.svt-reduc-montant[b-pj1uc1d38q] { width: 120px; }
.svt-reduc-pct[b-pj1uc1d38q] { width: 90px; }
.svt-reduc-ref[b-pj1uc1d38q] { width: 200px; }
.svt-reduc-btn[b-pj1uc1d38q] { margin-left: 6px; }

/* Champs de saisie plus petits que le 22px global de .acc-window (index.html) ;
   16px (14px avant le 11/11/2026, jugé trop petit). */
.svt-reduc-saisie[b-pj1uc1d38q]  .mud-input-slot,
.svt-reduc-saisie[b-pj1uc1d38q]  .mud-select-input,
.svt-reduc-saisie[b-pj1uc1d38q]  input {
    font-size: 16px !important;
    min-height: 30px !important;
}

.svt-reduc-vide[b-pj1uc1d38q] {
    padding: 8px;
    font-style: italic;
    color: #5a748a;
    font-size: 0.72rem;
}

/* Table HTML pure (le CSS isole s'applique directement, pas de composant MudBlazor) */
.svt-reduc-table[b-pj1uc1d38q] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.72rem;
}

.svt-reduc-table th[b-pj1uc1d38q] {
    background: #5f6b73;
    color: #ffffff;
    font-weight: 700;
    text-align: left;
    padding: 2px 6px;
    white-space: nowrap;
}

.svt-reduc-table td[b-pj1uc1d38q] {
    padding: 2px 6px;
    border-bottom: 1px solid #dce4e9;
    white-space: nowrap;
}

.svt-reduc-num[b-pj1uc1d38q] {
    text-align: right;
    font-weight: 600;
}

.svt-reduc-act[b-pj1uc1d38q] {
    text-align: center;
    width: 44px;
}

/* ==================== Aperçu + impression du REÇU DE PAIEMENT ====================
   Calque du pattern « EnteteDeListe » : feuille A4 HTML (aucun composant MudBlazor dedans),
   isolée à l'impression par la classe body « svt-print-recu » (@media print, index.html). */
.recu-overlay[b-pj1uc1d38q] {
    position: fixed;
    inset: 0;
    z-index: 1400;
    background: rgba(20, 30, 40, 0.55);
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 16px;
    overflow: auto;
}

/* Impression directe (sans aperçu) : la feuille est rendue mais invisible à l'écran ;
   le @media print « svt-print-recu » (index.html) la rend visible sur papier. */
.recu-overlay.recu-overlay-cache[b-pj1uc1d38q] {
    visibility: hidden;
    pointer-events: none;
    background: none;
}

.recu-panel[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 210mm;
    max-width: 100%;
}

.recu-toolbar[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 6px 10px;
}

.recu-toolbar-titre[b-pj1uc1d38q] {
    font-weight: 700;
    color: #1c2b36;
}

/* Feuille A4 blanche. */
.recu-feuille[b-pj1uc1d38q] {
    background: #ffffff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 10mm 10mm;
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
    /* Corps du reçu : 13px (≈ 10 pt imprimé) au lieu de 11px — illisible sur certains postes. */
    font-size: 13px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

/* En-tête officiel (calque EnteteDeListe). */
.recu-entete[b-pj1uc1d38q] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    border-bottom: 2px solid #333;
    padding-bottom: 8px;
    margin-bottom: 6px;
}

.recu-ministere[b-pj1uc1d38q] { flex: 1 1 0; min-width: 0; }
.recu-min-titre[b-pj1uc1d38q] { font-weight: 700; font-size: 14px; white-space: nowrap; }
.recu-dren[b-pj1uc1d38q] { font-size: 13px; color: #444; text-transform: uppercase; }
.recu-ecole-droite[b-pj1uc1d38q] { flex: 1 1 0; min-width: 0; text-align: right; }
.recu-nom[b-pj1uc1d38q] { font-weight: 700; font-size: 18px; text-transform: uppercase; }
.recu-annee[b-pj1uc1d38q] { font-size: 13px; color: #444; }
.recu-logo[b-pj1uc1d38q] { flex: 0 0 auto; }
.recu-logo img[b-pj1uc1d38q] { max-height: 68px; max-width: 100px; object-fit: contain; }

.recu-barre[b-pj1uc1d38q] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 6px;
}

.recu-titre[b-pj1uc1d38q] {
    font-weight: 700;
    font-size: 20px;
    color: #7a1f1f;
    letter-spacing: 1px;
}

.recu-date[b-pj1uc1d38q] { font-size: 13px; color: #444; }

/* Bandeau identité de l'élève. */
.recu-eleve[b-pj1uc1d38q] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 3px 24px;
    border: 1px solid #999;
    background: #f4f4f4;
    padding: 5px 10px;
    margin-bottom: 8px;
    font-size: 14px;
}

.recu-champ[b-pj1uc1d38q] { display: flex; gap: 8px; align-items: baseline; }
.recu-champ span[b-pj1uc1d38q] { flex: 0 0 92px; color: #555; }
.recu-champ b[b-pj1uc1d38q] { color: #111; }

.recu-section-titre[b-pj1uc1d38q] {
    font-weight: 700;
    font-size: 14px;
    color: #1c2b36;
    border-bottom: 1px solid #999;
    margin: 6px 0 3px;
    padding-bottom: 2px;
}

.recu-table[b-pj1uc1d38q] {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.recu-table th[b-pj1uc1d38q],
.recu-table td[b-pj1uc1d38q] {
    border: 1px solid #555;
    /* Interligne resserré (police agrandie) : 12 versements + 10 échéances et plus tiennent sur UNE page A4. */
    padding: 1px 4px;
    line-height: 1.3;
    text-align: left;
    white-space: nowrap;
}

/* Police agrandie : la grille des versements (7 colonnes avec « Réf. FNE ») ne tient plus en
   largeur si tout reste sur une ligne. Nature / Mode / Référence passent à la ligne au besoin ;
   Date (2e colonne) et l'avant-dernière (Réf. FNE, ou Référence sans FNE ; Reste dans
   l'échéancier) restent sur une ligne, comme N° et les montants. CSS seul : pas de .razor. */
.recu-table td[b-pj1uc1d38q] {
    white-space: normal;
    overflow-wrap: anywhere;
}
.recu-table td:nth-child(2)[b-pj1uc1d38q],
.recu-table td:nth-last-child(2)[b-pj1uc1d38q],
.recu-table td.r-num[b-pj1uc1d38q],
.recu-table td.r-montant[b-pj1uc1d38q] {
    white-space: nowrap;
    overflow-wrap: normal;
}

.recu-table th[b-pj1uc1d38q] { background: #e4e4e4; font-weight: 700; }
.recu-table tbody tr:nth-child(even) td[b-pj1uc1d38q] { background: #f4f4f4; }
.recu-table .r-num[b-pj1uc1d38q] { width: 28px; text-align: right; }
.recu-table .r-montant[b-pj1uc1d38q] { text-align: right; }
.recu-retard[b-pj1uc1d38q] { color: #b0140f; font-weight: 700; }
.recu-vide[b-pj1uc1d38q] { text-align: center; font-style: italic; padding: 10px; }

/* Synthèse : bloc aligné à droite. */
/* Bas du reçu : articles (gauche, cases empilées) + synthèse (droite) — calque Access. */
/* align-items flex-start : « Rame » démarre au niveau de « TOTAL À PAYER » (comme le PDF). */
.recu-bas[b-pj1uc1d38q] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 20px;
    margin-top: 6px;
}

.recu-articles[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 14px;
}

.recu-article[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.recu-case[b-pj1uc1d38q] {
    display: inline-block;
    width: 14px;
    height: 14px;
    border: 1px solid #333;
    background: #fff;
    position: relative;
    flex: 0 0 auto;
}

.recu-article.coche .recu-case[b-pj1uc1d38q]::after {
    content: "\2715"; /* ✕ */
    position: absolute;
    top: -3px;
    left: 1px;
    font-size: 14px;
    line-height: 14px;
    color: #000;
}

.recu-synthese[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    width: 55%;
    font-size: 14px;
}

.recu-synthese > div[b-pj1uc1d38q] {
    display: flex;
    justify-content: space-between;
    border-bottom: 1px dotted #b9c6ce;
    padding: 2px 0;
}

.recu-synthese-reste[b-pj1uc1d38q] {
    font-weight: 700;
    border-top: 2px solid #333;
    border-bottom: 2px solid #333 !important;
    padding: 3px 0 !important;
    color: #7a1f1f;
}

/* Pied du reçu : timbre FNE (certification DGI) à gauche + signature à droite. */
.recu-pied-fne[b-pj1uc1d38q] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
}

.recu-fne[b-pj1uc1d38q] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 12px;
}

.recu-fne-qr[b-pj1uc1d38q] {
    width: 84px;
    height: 84px;
    image-rendering: pixelated; /* modules du QR nets, pas de flou d'interpolation */
}

.recu-fne-texte[b-pj1uc1d38q] {
    font-size: 12px;
    line-height: 1.45;
}

.recu-fne-titre[b-pj1uc1d38q] {
    font-weight: 700;
    font-size: 12.5px;
}

.recu-fne-mention[b-pj1uc1d38q] {
    color: #666;
    font-size: 10.5px;
}

/* Zone signature. */
.recu-signature[b-pj1uc1d38q] {
    margin-top: 12px;
    width: 45%;
    margin-left: auto;
    text-align: center;
    font-size: 13px;
}

/* Nom de la caissière (utilisateur connecté), entre le libellé et le trait de signature. */
.recu-caissiere[b-pj1uc1d38q] {
    margin-top: 2px;
    font-weight: 700;
}

.recu-signature-ligne[b-pj1uc1d38q] {
    margin-top: 34px;
    border-top: 1px solid #333;
    padding-top: 3px;
    color: #555;
}

/* ==================== État des versements du jour (aperçu + impression) ====================
   Réutilise le chrome .recu-overlay/.recu-panel/.recu-toolbar ; feuille A4 portrait dédiée,
   isolée à l'impression par la classe body « svt-print-journee » (@media print, index.html). */
.journee-feuille[b-pj1uc1d38q] {
    background: #ffffff;
    color: #111;
    width: 210mm;
    max-width: 100%;
    min-height: 297mm;
    padding: 8mm 10mm 14mm;
    box-sizing: border-box;
    box-shadow: 0 6px 24px rgba(0, 0, 0, 0.35);
    font-size: 10px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

/* En-tête façon Access (école à gauche, année/imprimé le à droite). */
.journee-entete[b-pj1uc1d38q] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-bottom: 8px;
}

.journee-nom[b-pj1uc1d38q] {
    font-weight: 700;
    font-size: 14px;
    text-transform: uppercase;
}

.journee-meta[b-pj1uc1d38q] {
    text-align: right;
    font-size: 11px;
}

.journee-titre[b-pj1uc1d38q] {
    text-align: center;
    font-weight: 700;
    font-size: 13px;
    margin: 4px 0 10px;
}

.journee-niveau[b-pj1uc1d38q] {
    font-style: italic;
    font-size: 11px;
    margin: 8px 0 2px;
    border-bottom: 1px solid #999;
}

.journee-table[b-pj1uc1d38q] {
    width: 100%;
    border-collapse: collapse;
    font-size: 10px;
    margin-bottom: 2px;
}

.journee-table th[b-pj1uc1d38q],
.journee-table td[b-pj1uc1d38q] {
    border: 1px solid #666;
    padding: 2px 4px;
    text-align: left;
    white-space: nowrap;
}

.journee-table th[b-pj1uc1d38q] {
    background: #e4e4e4;
    font-weight: 700;
}

.journee-table tbody tr:nth-child(even) td[b-pj1uc1d38q] {
    background: #f5f5f5;
}

.journee-table .j-num[b-pj1uc1d38q] { width: 34px; text-align: right; }
.journee-table .j-classe[b-pj1uc1d38q] { width: 48px; }
.journee-table .j-montant[b-pj1uc1d38q] { text-align: right; }
.journee-table .j-reste[b-pj1uc1d38q] { font-weight: 700; }
.journee-table .j-nat[b-pj1uc1d38q] { width: 60px; }
.journee-table .j-mode[b-pj1uc1d38q] { width: 38px; text-align: center; }
.journee-table .j-rame[b-pj1uc1d38q] { width: 34px; text-align: center; }
.journee-table .j-auteur[b-pj1uc1d38q] { width: 60px; }

/* Ligne « Total {niveau} » du pied de tableau. */
.journee-table tfoot .journee-total td[b-pj1uc1d38q] {
    background: #d9d9d9;
    font-weight: 700;
    border-top: 2px solid #333;
}

/* Case Rame vide (à cocher à la main pour l'instant ; viendra de la saisie). */
.journee-case[b-pj1uc1d38q] {
    display: inline-block;
    width: 11px;
    height: 11px;
    border: 1px solid #333;
    background: #fff;
    position: relative;
}

/* Rame fournie : case cochée (croix noire, façon report Access). */
.journee-case.coche[b-pj1uc1d38q]::after {
    content: "\2715"; /* ✕ */
    position: absolute;
    top: -4px;
    left: 1px;
    font-size: 11px;
    line-height: 11px;
    color: #000;
}

.journee-grandtotal[b-pj1uc1d38q] {
    display: flex;
    gap: 40px;
    justify-content: flex-end;
    margin-top: 12px;
    font-size: 12px;
    border-top: 2px solid #333;
    padding-top: 6px;
}

/* Totaux par mode de paiement : petit tableau calé à droite, sous le TOTAL GÉNÉRAL, jamais
   coupé entre deux pages à l'impression. */
.journee-modes[b-pj1uc1d38q] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    margin-top: 10px;
    break-inside: avoid;
    page-break-inside: avoid;
}

.journee-modes-titre[b-pj1uc1d38q] {
    font-weight: 700;
    font-size: 12px;
    margin-bottom: 3px;
}

.journee-table.journee-modes-table[b-pj1uc1d38q] {
    width: auto;
    min-width: 300px;
    font-size: 11px;
}

.journee-modes-table th:first-child[b-pj1uc1d38q],
.journee-modes-table td:first-child[b-pj1uc1d38q] {
    min-width: 140px;
}

.journee-vide[b-pj1uc1d38q] {
    text-align: center;
    font-style: italic;
    padding: 20px;
    color: #555;
}

/* Droit VerrouVers refusé : zone de saisie des versements neutralisée (visuel + souris).
   Le bouton Valider est en plus explicitement Disabled, et la garde serveur/JS complète. */
.svt-saisie-bloquee[b-pj1uc1d38q] {
    pointer-events: none;
    opacity: 0.55;
    filter: grayscale(0.3);
}

/* ==================== Liste des NON À JOUR (aperçu + impression) ====================
   Feuille « journee-feuille naj-feuille » : gabarit A4 + impression de l'état du jour.
   Une classe par page (en-tête répété), comme l'état Access « Élèves non à jour ». */
.naj-classe + .naj-classe[b-pj1uc1d38q] {
    break-before: page;
    page-break-before: always;
    /* À l'écran : séparation visible entre deux classes. */
    margin-top: 14mm;
    padding-top: 8mm;
    border-top: 2px dashed #bbb;
}

@media print {
    .naj-classe + .naj-classe[b-pj1uc1d38q] {
        margin-top: 0;
        padding-top: 0;
        border-top: none;
    }
}

.naj-titre[b-pj1uc1d38q] {
    display: inline-block;
    margin: 2px 0 10px 32%;
    padding: 3px 18px;
    border: 1px solid #333;
    box-shadow: 3px 3px 0 #333;
    font-size: 14px;
}

.naj-table .naj-statut[b-pj1uc1d38q] { width: 40px; text-align: center; }
.naj-table .naj-mention[b-pj1uc1d38q] { width: 80px; }

.naj-resume[b-pj1uc1d38q] {
    font-weight: 400;
    margin-left: 8px;
}
/* /Pages/Structures/Matieres.razor.rz.scp.css */
/* Page "Matières" — même grille compacte façon Access que la page Structures
   (le CSS scoped ne traverse pas les composants, d'où la reprise locale). */

.mat-grid[b-cihiokx0tc]  .mud-table-root {
    font-size: 0.875rem;
}

/* Table large (colonnes de niveaux) : défilement horizontal plutôt qu'écrasement. */
.mat-grid[b-cihiokx0tc]  .mud-table-container {
    overflow-x: auto;
}

/* Colonnes de niveaux : cases à cocher CENTRÉES, padding gauche = droite. */
.mat-grid[b-cihiokx0tc]  .niveau-col {
    padding-left: 4px !important;
    padding-right: 4px !important;
    text-align: center !important;
}

.mat-grid[b-cihiokx0tc]  .niveau-col .mud-checkbox {
    display: flex !important;
    justify-content: center !important;
    margin: 0 !important;
}

.mat-grid[b-cihiokx0tc]  .niveau-col .mud-checkbox .mud-icon-button {
    padding: 4px !important;
}

.mat-grid[b-cihiokx0tc]  th {
    background: #5f6b73 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    white-space: nowrap;
    padding: 4px 10px !important;
}

/* Lignes compactes 26px, comme la grille de l'échéancier (standard du projet) :
   padding vertical NUL + hauteur fixée. */
.mat-grid[b-cihiokx0tc]  td {
    background: #ffffff;
    border-color: #c3ccd3 !important;
    padding: 0 10px !important;
    height: 26px !important;
    white-space: nowrap;
}

/* ---- Lignes alternées : les paires en vert léger, les impaires blanches. Le fond va sur le
   `td` et non sur le `tr` — MudBlazor peint déjà la cellule. ---- */
.mat-grid[b-cihiokx0tc]  tbody tr:nth-child(odd) td {
    background: #ffffff;
}

.mat-grid[b-cihiokx0tc]  tbody tr:nth-child(even) td {
    background: #eaf5ea;
}

/* Survol : la règle des lignes paires porte un :nth-child de plus, elle bat donc le survol
   générique. Sans cette variante dédiée, une ligne paire ne réagirait plus à la souris. */
.mat-grid[b-cihiokx0tc]  tbody tr:hover td {
    background: #eef3f6;
}

.mat-grid[b-cihiokx0tc]  tbody tr:nth-child(even):hover td {
    background: #d9ebd9;
}

.mat-grid[b-cihiokx0tc]  td .mud-input-slot,
.mat-grid[b-cihiokx0tc]  td .mud-select-input,
.mat-grid[b-cihiokx0tc]  td .mud-input {
    font-size: inherit !important;
}

.mat-grid[b-cihiokx0tc]  td .mud-input.mud-input-underline::before,
.mat-grid[b-cihiokx0tc]  td .mud-input.mud-input-underline::after {
    border-bottom: none !important;
}

.mat-grid[b-cihiokx0tc]  td .mud-input-control {
    margin-top: 0 !important;
}

/* 20px : les éditeurs doivent tenir dans les 26px de la cellule. */
.mat-grid[b-cihiokx0tc]  td .mud-input-slot {
    min-height: 20px !important;
}

.mat-addbar[b-cihiokx0tc] {
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 6px 10px;
    margin-top: 8px;
}
/* /Pages/Structures/MatieresGrille.razor.rz.scp.css */
/* Lignes compactes 26px (standard projet) + scroll horizontal (grille a 17 colonnes). */
.mn-grid[b-39bws0okt5]  td {
    padding: 0 6px !important;
    height: 26px !important;
}

.mn-grid[b-39bws0okt5]  td .mud-input-slot {
    min-height: 20px !important;
}

/* La grille est large : on scrolle horizontalement plutot que d'ecraser les colonnes. */
.mn-grid[b-39bws0okt5]  .mud-table-container {
    overflow-x: auto;
}

.mn-grid[b-39bws0okt5]  .mn-table table {
    min-width: 1450px;
}

.mn-libelle[b-39bws0okt5] {
    font-size: 0.85rem;
    white-space: nowrap;
}

/* ---- Lignes alternées. La teinte porte sur les lignes PAIRES ; les impaires restent blanches.
   Le fond va sur le `td` et non sur le `tr` : MudBlazor peint déjà la cellule, une couleur
   posée sur la ligne passerait dessous. ---- */
.mn-grid[b-39bws0okt5]  tbody tr:nth-child(odd) td {
    background: #ffffff;
}

.mn-grid--orange[b-39bws0okt5]  tbody tr:nth-child(even) td {
    background: #fdf0e3;
}

.mn-grid--gris[b-39bws0okt5]  tbody tr:nth-child(even) td {
    background: #f0f2f4;
}

/* Survol : la règle des lignes paires bat le survol générique en spécificité (elle porte un
   :nth-child en plus), il faut donc une variante dédiée sinon la ligne paire ne réagirait
   plus au passage de la souris. */
.mn-grid[b-39bws0okt5]  tbody tr:hover td {
    background: #e8eef2;
}

.mn-grid--orange[b-39bws0okt5]  tbody tr:nth-child(even):hover td {
    background: #f8e2ca;
}

.mn-grid--gris[b-39bws0okt5]  tbody tr:nth-child(even):hover td {
    background: #e2e6ea;
}

/* Colonne « Envoyer aux classes » : case à cocher centrée (MudCheckBox ne se centre pas seul). */
.mn-grid[b-39bws0okt5]  .mn-sel-col .mud-checkbox {
    display: flex !important;
    justify-content: center !important;
    margin: 0 !important;
}
/* /Pages/Structures/ProfPrincipaux.razor.rz.scp.css */
/* Compacte un peu la hauteur des lignes : padding vertical des cellules réduit + la marge
   réservée au label flottant récupérée (les MudSelect n'ont pas de label) + input-slot plus bas.
   Grille → CSS scopé ::deep via le wrapper .pp-grid (cf. skill mudblazor-grilles-champs-css). */
.pp-grid[b-3k5kniywgf]  td {
    padding-top: 2px !important;
    padding-bottom: 2px !important;
}

/* Selects sans label : on récupère la marge du label flottant (gain de hauteur principal). */
.pp-grid[b-3k5kniywgf]  .mud-input-control {
    margin-top: 0 !important;
}

/* Zone de saisie du select un peu plus basse (défaut MudBlazor Dense+Outlined ≈ 37px). */
.pp-grid[b-3k5kniywgf]  .mud-input-slot,
.pp-grid[b-3k5kniywgf]  .mud-select .mud-input-slot {
    min-height: 30px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}
/* /Pages/Structures/Structures.razor.rz.scp.css */
/* Page "Structures pédagogiques" — grilles compactes façon Access (palette gris-bleu
   de CreateEleve / Scolarités) : en-tête plein, lignes bordées, éditeurs fondus
   dans les cellules (même taille de texte que la cellule). */

.str-grid[b-1r6bba62lt]  .mud-table-root {
    font-size: 0.875rem;
}

.str-grid[b-1r6bba62lt]  th {
    background: #5f6b73 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    white-space: nowrap;
    padding: 4px 10px !important;
}

.str-grid[b-1r6bba62lt]  td {
    background: #ffffff;
    border-color: #c3ccd3 !important;
    padding: 0 10px !important;
    height: 26px !important;
    white-space: nowrap;
}

.str-grid[b-1r6bba62lt]  tr:hover td {
    background: #eef3f6;
}

/* Éditeurs dans les cellules : texte à la taille de la cellule, pas de soulignement */
.str-grid[b-1r6bba62lt]  td .mud-input-slot,
.str-grid[b-1r6bba62lt]  td .mud-select-input,
.str-grid[b-1r6bba62lt]  td .mud-input {
    font-size: inherit !important;
}

.str-grid[b-1r6bba62lt]  td .mud-input.mud-input-underline::before,
.str-grid[b-1r6bba62lt]  td .mud-input.mud-input-underline::after {
    border-bottom: none !important;
}

.str-grid[b-1r6bba62lt]  td .mud-input-control {
    margin-top: 0 !important;
}

.str-grid[b-1r6bba62lt]  td .mud-input-slot {
    min-height: 20px;
}

/* Barre de filtres (onglet Classes) : plus discrète que la barre d'ajout */
.str-filtres[b-1r6bba62lt] {
    background: #eef3f6;
    border: 1px solid #c3ccd3;
    border-radius: 4px;
    padding: 6px 10px;
}

/* Bandeau des totaux d'effectif (pied de l'onglet Classes) */
.str-totaux[b-1r6bba62lt] {
    background: #1b4f72;
    color: #ffffff;
    border-radius: 4px;
    padding: 8px 14px;
}

/* Barre d'ajout sous chaque grille */
.str-addbar[b-1r6bba62lt] {
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 6px 10px;
    margin-top: 8px;
}
/* /Pages/Structures/Villes.razor.rz.scp.css */
/* Page "Villes" — grille compacte blanche façon Access
   (le CSS scoped ne traverse pas les composants, d'où la reprise locale). */

.ville-grid[b-7b6ip14hos]  .mud-table-root {
    font-size: 0.875rem;
}

.ville-grid[b-7b6ip14hos]  th {
    background: #5f6b73 !important;
    color: #ffffff !important;
    font-weight: 700 !important;
    white-space: nowrap;
    padding: 3px 10px !important;
}

.ville-grid[b-7b6ip14hos]  td {
    background: #ffffff;
    border-color: #c3ccd3 !important;
    padding: 0 10px !important;
    white-space: nowrap;
    height: 26px;
}

.ville-grid[b-7b6ip14hos]  tbody tr:hover td {
    background: #eef3f6;
}

.ville-grid[b-7b6ip14hos]  td .mud-input-slot,
.ville-grid[b-7b6ip14hos]  td .mud-input {
    font-size: inherit !important;
}

.ville-grid[b-7b6ip14hos]  td .mud-input.mud-input-underline::before,
.ville-grid[b-7b6ip14hos]  td .mud-input.mud-input-underline::after {
    border-bottom: none !important;
}

/* Ligne basse : on supprime les marges verticales du champ MudBlazor. */
.ville-grid[b-7b6ip14hos]  td .mud-input-control,
.ville-grid[b-7b6ip14hos]  td .mud-input-control-input-container {
    margin-top: 0 !important;
}

.ville-grid[b-7b6ip14hos]  td .mud-input-slot {
    min-height: 18px;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.ville-addbar[b-7b6ip14hos] {
    background: #cfd9df;
    border: 1px solid #9fb0bb;
    border-radius: 4px;
    padding: 6px 10px;
    margin-top: 8px;
}
/* /Pages/Wave/PaiementsWave.razor.rz.scp.css */
/* Grille des paiements Wave : lignes compactées (30px). Un peu plus haut que le standard
   26px du projet car les cellules portent des CHIPS (statut, A/M). Calque de PaiementsOrange. */
.pmt-grid[b-5p3v0fgmfy]  td {
    padding: 0 8px !important;
    height: 30px !important;
}

/* En-têtes alignés sur le même padding horizontal que les cellules. */
.pmt-grid[b-5p3v0fgmfy]  th {
    padding-left: 8px !important;
    padding-right: 8px !important;
}

/* Chips (statut, A/M) compactés pour tenir dans la hauteur de ligne. */
.pmt-grid[b-5p3v0fgmfy]  td .mud-chip {
    height: 22px !important;
    margin: 0 2px 0 0 !important;
}

.pmt-grid[b-5p3v0fgmfy]  td .mud-chip .mud-chip-content {
    font-size: 11px !important;
}

/* Bouton d'actions (menu 3 points) : dégonflé pour ne pas imposer sa hauteur à la ligne. */
.pmt-grid[b-5p3v0fgmfy]  td .mud-icon-button {
    padding: 2px !important;
}
