/* /Components/Agenda/FicheTacheAgenda.razor.rz.scp.css */
/* Fiche d'une tâche (prompt Agenda 3). Modale pilotée par l'état C# : la molette ne fait pas défiler la page de fond (skill ui-blazor
   D1 c). Couleurs des marques : celles des rendez-vous de l'agenda (tokens Bootstrap, aucune couleur propre). */
.modal[b-14y1gbtcgl],
.modal-body[b-14y1gbtcgl] {
    overscroll-behavior: contain;
}

.fiche-tache-lib[b-14y1gbtcgl] {
    resize: vertical;
    white-space: pre-wrap;
}

.fiche-tache-groupe legend[b-14y1gbtcgl] {
    font-size: .8rem;
}

.fiche-tache-marque[b-14y1gbtcgl] {
    flex: 0 0 auto;
}

.fiche-tache-marque path[b-14y1gbtcgl] {
    fill: none;
    stroke: var(--bs-white);
    stroke-width: 2.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.fiche-tache-importante circle[b-14y1gbtcgl] {
    fill: var(--bs-warning);
}

.fiche-tache-terminee circle[b-14y1gbtcgl] {
    fill: var(--bs-success);
}

/* Le fieldset des champs ne sert qu'à les désactiver ensemble (lecture seule, enregistrement en cours) : aucun cadre. */
.fiche-tache-champs[b-14y1gbtcgl] {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

/* Lecture seule : le fieldset désactivé grise les champs ; le texte reste lisible. */
.fiche-tache-champs:disabled .form-control[b-14y1gbtcgl],
.fiche-tache-champs:disabled .form-select[b-14y1gbtcgl] {
    opacity: 1;
}

/* Récurrence (prompt Agenda 4) : jours de la semaine en boutons à bascule compacts (7 tiennent sur une ligne à 375 px), règle d'une
   occurrence sur un fond teinté de la couleur de marque (tokens d'app.css, thème sombre compris). */
.fiche-tache-jour[b-14y1gbtcgl] {
    min-width: 2.1rem;
}

.fiche-tache-serie[b-14y1gbtcgl] {
    background-color: color-mix(in srgb, var(--creagidem-navy) 6%, var(--creagidem-surface));
}

/* « Ajouter des personnes » (prompt Agenda 5) : liste des collaborateurs à cocher, sur deux colonnes dès 576 px, bornée en hauteur (le
   réglage TOUS peut lister des dizaines de commerciaux) ; même fond que la règle d'une série. */
.fiche-tache-personnes[b-14y1gbtcgl] {
    background-color: color-mix(in srgb, var(--creagidem-navy) 4%, var(--creagidem-surface));
}

.fiche-tache-personnes-liste[b-14y1gbtcgl] {
    display: grid;
    grid-template-columns: 1fr;
    column-gap: 1rem;
    max-height: 13rem;
    overflow-y: auto;
    overscroll-behavior: contain;
}

@media (min-width: 576px) {
    .fiche-tache-personnes-liste[b-14y1gbtcgl] {
        grid-template-columns: 1fr 1fr;
    }
}

.fiche-tache-personnes-liste .form-check[b-14y1gbtcgl] {
    min-width: 0;
    margin-bottom: .15rem;
}

.fiche-tache-personnes-liste .form-check-label[b-14y1gbtcgl] {
    overflow-wrap: anywhere;
}

.btn-close-sm[b-14y1gbtcgl] {
    font-size: .7rem;
}
/* /Components/Dossier/CopieDossier.razor.rz.scp.css */
/* D1c du skill ui-blazor : sans le JS Modal de Bootstrap, rien ne verrouille le défilement de la page derrière la fenêtre. */
.cp-modale[b-5h35gbc9ly],
.cp-modale .modal-body[b-5h35gbc9ly] {
    overscroll-behavior: contain;
}
/* /Components/Dossier/CourriersDossier.razor.rz.scp.css */
/* Choix du modèle d'un nouveau courrier : l'arbre défile dans la fenêtre (lignes « mc-* » dans app.css, comme l'écran des
   modèles). */
.cd-arbre[b-mf3m9akcj6] {
    max-height: 55vh;
    min-height: 12rem;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.cd-modale .modal[b-mf3m9akcj6],
.cd-modale .modal-body[b-mf3m9akcj6] {
    overscroll-behavior: contain;
}

@media (max-width: 767.98px) {
    .cd-arbre[b-mf3m9akcj6] {
        max-height: none;
    }
}
/* /Components/Dossier/EmailsDossier.razor.rz.scp.css */
/* « Voir » d'un mail de l'historique (prompt Mail interne 5). */
.ed-modale .modal[b-gqszmfiqel],
.ed-modale .modal-body[b-gqszmfiqel] {
    overscroll-behavior: contain;
}

.ed-entete dt[b-gqszmfiqel] {
    font-weight: 600;
}

.ed-entete dd[b-gqszmfiqel] {
    margin-bottom: .35rem;
    overflow-wrap: anywhere;
}

/* Corps du mail : papier blanc quel que soit le thème (les couleurs écrites dans le mail sont faites pour un fond blanc, comme
   .mp-papier de la mise en page), défilement propre sur un tableau large. */
.ed-corps[b-gqszmfiqel] {
    background-color: #ffffff;
    color: #000000;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: .75rem 1rem;
    overflow-x: auto;
    overflow-wrap: anywhere;
}

.ed-corps[b-gqszmfiqel]  p {
    margin: 0 0 .5em;
}

.ed-corps[b-gqszmfiqel]  img {
    max-width: 100%;
    height: auto;
}

/* Lien sur le papier blanc : le navy de la marque dans les deux thèmes (le lien du thème sombre est clair). */
.ed-corps[b-gqszmfiqel]  a {
    color: var(--creagidem-navy);
}

.ed-corps[b-gqszmfiqel]  .mail-image-non-conservee {
    display: inline-block;
    padding: 0 .4em;
    border: 1px dashed #adb5bd;
    border-radius: .25rem;
    color: #6c757d;
    font-size: .8em;
    font-style: italic;
}
/* /Components/Editions/ChoixPolice.razor.rz.scp.css */
.choix-police[b-kv111ymb3u] {
    position: relative;
}

.choix-police-liste[b-kv111ymb3u] {
    position: absolute;
    z-index: 20;
    left: 0;
    right: 0;
    max-height: 16rem;
    overflow-y: auto;
    background-color: var(--creagidem-surface);
}

.choix-police-liste .list-group-item[b-kv111ymb3u] {
    font-size: 1rem;
}
/* /Components/Editions/CouleurSaisie.razor.rz.scp.css */
.couleur-saisie[b-d6lm9louhj] {
    width: 6.5rem;
    font-family: var(--bs-font-monospace);
    text-transform: uppercase;
}

.couleur-raccourci[b-d6lm9louhj] {
    width: 1.6rem;
    height: 1.6rem;
    padding: 0;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-sm);
}

.couleur-raccourci.active[b-d6lm9louhj] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 1px;
}

.couleur-raccourci:disabled[b-d6lm9louhj] {
    opacity: .65;
}
/* /Components/Editions/GalerieImagesDocument.razor.rz.scp.css */
.galerie-images[b-ojjg06dlfb] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(8.5rem, 1fr));
    gap: .5rem;
    max-height: 18rem;
    overflow-y: auto;
    padding: .125rem;
}

.galerie-image[b-ojjg06dlfb] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    min-width: 0;
    padding: .375rem;
    text-align: left;
    background-color: var(--creagidem-surface);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    color: var(--bs-body-color);
}

.galerie-image:hover[b-ojjg06dlfb] {
    border-color: var(--creagidem-accent);
}

.galerie-image.choisie[b-ojjg06dlfb] {
    border-color: var(--creagidem-accent);
    outline: 2px solid var(--creagidem-accent);
}

/* Damier : la transparence d'un PNG se voit. */
.galerie-vignette[b-ojjg06dlfb] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 4rem;
    background-color: var(--creagidem-surface);
    background-image: linear-gradient(45deg, var(--bs-secondary-bg) 25%, transparent 25%), linear-gradient(-45deg, var(--bs-secondary-bg) 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, var(--bs-secondary-bg) 75%), linear-gradient(-45deg, transparent 75%, var(--bs-secondary-bg) 75%);
    background-size: 12px 12px;
    background-position: 0 0, 0 6px, 6px -6px, -6px 0;
}

.galerie-vignette img[b-ojjg06dlfb] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.galerie-nom[b-ojjg06dlfb] {
    font-size: .8rem;
    font-weight: 600;
}

.galerie-taille[b-ojjg06dlfb] {
    font-size: .75rem;
    color: var(--bs-secondary-color);
}
/* /Components/Editions/SelecteurAgenceEdition.razor.rz.scp.css */
/* Sélecteur général / agence (prompt G3, composant partagé depuis G4) : liste maison fermée par un fond transparent. */
.sel-agence[b-u4k6c4nlhh] {
    position: relative;
}

.sel-agence-bouton[b-u4k6c4nlhh] {
    min-height: 2.5rem;
}

.sel-agence-fond[b-u4k6c4nlhh] {
    position: fixed;
    inset: 0;
    z-index: 29;
}

.sel-agence-liste[b-u4k6c4nlhh] {
    position: absolute;
    z-index: 30;
    left: 0;
    right: 0;
    max-height: 22rem;
    overflow-y: auto;
    background-color: var(--creagidem-surface);
}

.sel-agence-etat[b-u4k6c4nlhh] {
    color: var(--bs-secondary-color);
}

.list-group-item.active .sel-agence-etat[b-u4k6c4nlhh] {
    color: inherit;
    opacity: .85;
}
/* /Components/Exploitation/FenetreDemandeStationnement.razor.rz.scp.css */
/* Fiche de la demande de stationnement (prompt Exploitation 5b) : mise en page seulement - couleurs par les jetons d'app.css et les classes de
   Bootstrap (ui-blazor A1, A9). Groupes encadrés et titrés comme la fenêtre du legacy (captures ds-neuve-*.png). */

/* Modale D1 sans le JS de Bootstrap : rien ne verrouille le défilement de la page (ui-blazor D1 c). */
.ds-modale[b-zc5zh1ak7h],
.ds-modale .modal-body[b-zc5zh1ak7h] {
    overscroll-behavior: contain;
}

.ds-groupe[b-zc5zh1ak7h] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    padding: .5rem 1rem 1rem;
    min-width: 0;
}

/* Couleur : .text-primary d'app.css (texte de marque, lisible dans les deux thèmes). */
.ds-legende[b-zc5zh1ak7h] {
    float: none;
    width: auto;
    padding: 0 .5rem;
    margin-bottom: .25rem;
    font-size: .95rem;
    font-weight: 600;
}

/* Étiquettes « Véhicule n » / « Date n » de largeur égale (les champs s'alignent, comme la capture). */
.ds-etiquette[b-zc5zh1ak7h] {
    min-width: 6rem;
    font-weight: 600;
}

/* Date et durée : la date garde la place d'une date lisible (JJ/MM/AAAA et le calendrier), la durée passe dessous si la ligne est trop étroite. */
.ds-date-champ[b-zc5zh1ak7h] {
    flex: 1 1 13rem;
    width: auto;
}

.ds-duree[b-zc5zh1ak7h] {
    flex: 1 1 7.5rem;
    width: auto;
}

/* Messages du legacy sur deux lignes (RC) : le style de la page ne traverse pas le CSS isolé. */
.exploitation-message[b-zc5zh1ak7h] {
    white-space: pre-line;
}

/* Question du legacy posée dans la fiche : la saisie dessous reste lisible mais inactive. */
.ds-question[b-zc5zh1ak7h] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.ds-saisie:disabled[b-zc5zh1ak7h] {
    opacity: .7;
}

.ds-instantane-texte[b-zc5zh1ak7h] {
    min-width: 12rem;
}
/* /Components/Exploitation/FenetrePropositionSousTraitance.razor.rz.scp.css */
/* Fiche de la proposition de sous-traitance (prompt Exploitation 6c) : même cadre que la fiche de la DS (groupes encadrés et titrés) - mise en page
   seulement, couleurs par les jetons d'app.css et les classes de Bootstrap (ui-blazor A1, A9). Organisation de la capture pst-fiche.png. */

/* Modale D1 sans le JS de Bootstrap : rien ne verrouille le défilement de la page (ui-blazor D1 c). */
.pst-modale[b-5yorizdbeb],
.pst-modale .modal-body[b-5yorizdbeb] {
    overscroll-behavior: contain;
}

.pst-groupe[b-5yorizdbeb] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    padding: .5rem 1rem 1rem;
    min-width: 0;
}

/* Couleur : .text-primary d'app.css (texte de marque, lisible dans les deux thèmes). */
.pst-legende[b-5yorizdbeb] {
    float: none;
    width: auto;
    padding: 0 .5rem;
    margin-bottom: .25rem;
    font-size: .95rem;
    font-weight: 600;
}

/* Messages du legacy sur deux lignes (RC) : le style de la page ne traverse pas le CSS isolé. */
.exploitation-message[b-5yorizdbeb] {
    white-space: pre-line;
}

/* Question posée dans la fiche : la saisie dessous reste lisible mais inactive. */
.pst-question[b-5yorizdbeb] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.pst-saisie:disabled[b-5yorizdbeb] {
    opacity: .7;
}

/* Étage, sous-sol : courts, côte à côte avec « RdC + » et « - » (comme la capture) ; le portage garde la même largeur. */
.pst-entier[b-5yorizdbeb] {
    width: 5.5rem;
    flex: 0 0 auto;
}

/* Champ date caché du calendrier : présent (showPicker exige un élément rendu), invisible, hors tabulation ; ancré à droite du groupe pour que le
   sélecteur du navigateur s'ouvre sous les boutons. */
.pst-date-choix[b-5yorizdbeb] {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 1px;
    height: 1px;
    padding: 0;
    border: 0;
    opacity: 0;
    pointer-events: none;
}
/* /Components/Exploitation/ListeMoyensDisponibles.razor.rz.scp.css */
/* Liste des moyens disponibles (prompt Exploitation 3b) : mise en page seulement - couleurs par les jetons d'app.css et les classes de Bootstrap
   (ui-blazor A1, A9). */

.moyens-disponibles[b-3tc0qfp2nf] {
    border-radius: var(--bs-border-radius);
}

/* La liste défile seule dans la fenêtre (plein écran sous 576 px : plus courte, la zone des affectés suit dessous). */
.moyens-disponibles-liste[b-3tc0qfp2nf] {
    max-height: 22rem;
    overflow-y: auto;
    overscroll-behavior: contain;
}

@media (max-width: 991.98px) {
    .moyens-disponibles-liste[b-3tc0qfp2nf] {
        max-height: 14rem;
    }
}

.moyen-disponible[b-3tc0qfp2nf] {
    padding-top: .35rem;
    padding-bottom: .35rem;
}

.moyen-disponible-choix[b-3tc0qfp2nf] {
    cursor: pointer;
    border-radius: var(--bs-border-radius-sm);
    padding: .15rem .25rem;
    overflow-wrap: anywhere;
}

.moyen-disponible-choix:hover[b-3tc0qfp2nf],
.moyen-disponible-choix:focus-visible[b-3tc0qfp2nf] {
    background-color: var(--bs-tertiary-bg);
}

.moyen-disponible-inactif .moyen-disponible-choix[b-3tc0qfp2nf] {
    cursor: not-allowed;
}

.moyen-disponible-inactif .moyen-libelle[b-3tc0qfp2nf] {
    color: var(--bs-secondary-color);
}

.moyen-poignee[b-3tc0qfp2nf] {
    flex-shrink: 0;
}

.min-w-0[b-3tc0qfp2nf] {
    min-width: 0;
}

/* Le libellé garde une largeur lisible ; les marques (hors liste, occupé, rôle) passent dessous quand la place manque. */
.moyen-libelle[b-3tc0qfp2nf] {
    flex: 1 1 6rem;
    min-width: 6rem;
    overflow-wrap: anywhere;
}

/* Une marque longue (« occupé - commandes n° … ») passe à la ligne plutôt que de déborder sous le bouton « Chef ». */
.moyen-disponible .badge[b-3tc0qfp2nf] {
    white-space: normal;
    text-align: start;
}
/* /Components/Exploitation/SelecteurMoyen.razor.rz.scp.css */
/* Sélecteur d'un moyen (prompt Exploitation 3) : mise en page seulement - couleurs par les jetons d'app.css et les classes de Bootstrap
   (ui-blazor A1, A9). */

.selecteur-moyen-champ[b-49h574tn2m] {
    padding-right: 2rem;
    cursor: pointer;
}

.selecteur-moyen-champ:disabled[b-49h574tn2m] {
    cursor: not-allowed;
}

.selecteur-moyen-chevron[b-49h574tn2m] {
    position: absolute;
    top: 50%;
    right: .75rem;
    transform: translateY(-50%);
    pointer-events: none;
    color: var(--bs-secondary-color);
    font-size: .8rem;
}

/* Dans le flux : la liste pousse ce qui suit et reste entière dans une modale à corps défilant (375 px compris). */
.selecteur-moyen-liste[b-49h574tn2m] {
    margin-top: .25rem;
    max-height: 15rem;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.selecteur-moyen-liste .list-group-item[b-49h574tn2m] {
    cursor: pointer;
    padding-top: .4rem;
    padding-bottom: .4rem;
    overflow-wrap: anywhere;
}
/* /Components/Exploitation/ZoneGlisser.razor.rz.scp.css */
/* Zone de glisser-déposer des fenêtres des moyens (prompt Exploitation 3b) : mise en page seulement - couleurs par les jetons d'app.css et les
   classes de Bootstrap (ui-blazor A1, A9). Les zones de dépôt (.affectation-depot, data-depot) sont rendues par la page et par la liste des
   disponibles : ::deep. */

/* Pendant un glisser : les zones qui acceptent le dépôt sont soulignées ; celle survolée est marquée (classe posée par le module). */
.zone-glisser.glisser-en-cours[b-2xcnbyn1yu]  .affectation-depot[data-depot-actif="oui"] {
    outline: 2px dashed var(--creagidem-accent);
    outline-offset: 2px;
}

.zone-glisser[b-2xcnbyn1yu]  .affectation-depot.depot-survol {
    background-color: var(--bs-tertiary-bg);
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 2px;
}

.zone-glisser[b-2xcnbyn1yu]  [draggable="true"] {
    cursor: grab;
    -webkit-user-select: none;
    user-select: none;
}

.zone-glisser[b-2xcnbyn1yu]  [draggable="true"]:active {
    cursor: grabbing;
}
/* /Components/Layout/AppShellChrome.razor.rz.scp.css */
.app-navbar[b-65e1ixm2d1] {
    background-color: var(--creagidem-navy);
    min-height: var(--creagidem-navbar-height);
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* Pas de background-color propre sur .app-body : hérite de <body> (déjà thémé clair/sombre via
   --bs-body-bg, règle Bootstrap standard, app.css) — même pattern que .login-card (app.css).
   Pas de min-height ici (ADR-0050) : .app-main (AdminLTE, ADR-0048) est déjà étiré par la grille
   .app-wrapper sur toute la hauteur disponible. */

.app-body[b-6ad4i5j3qy] {
    padding: 1.5rem 1rem;
}

@media (min-width: 768px) {
    .app-body[b-6ad4i5j3qy] {
        padding: 1.5rem 2rem;
    }
}

#blazor-error-ui[b-6ad4i5j3qy] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-6ad4i5j3qy] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* Sidebar de navigation gauche (remplace le ruban horizontal, ADR-0050) : structure/JS AdminLTE
   natifs (paquet ColorlibHQ.AdminLTE.AspNetCore, ADR-0048) pilotés uniquement par des classes/
   attributs (data-lte-toggle, .nav-item/.nav-link/.nav-treeview/.menu-open) — aucun JS maison.
   Note d'isolation CSS Blazor : RibbonTabView/RibbonButtonView/RibbonEntryView sont des composants
   enfants séparés dont le contenu n'est stylable depuis ce fichier qu'avec ::deep (même contrainte
   que RibbonButtonView.razor.css avant ce prompt, désormais consolidée ici pour éviter de dupliquer
   la même règle "grisé" dans 3 fichiers). */

.app-sidebar-creagidem[b-7qqh1upck5] {
    background-color: var(--creagidem-navy);
}

/* Noeuds dépliables (onglet, bouton à méga-menu, entrée à enfants) : <button type="button">, pas
   <a href="#"> (constaté à la vérification réelle de ce prompt : un lien "#" change l'URL courante,
   ce que NavigationManager.LocationChanged de AppShellChrome.razor intercepte, provoquant un
   nouveau rendu qui réinitialise la classe "menu-open" posée par le JS AdminLTE côté client — même
   raison que les onglets `<button>` du ruban avant ce prompt). Ecart volontaire par rapport au
   rendu par défaut du composant SidebarNavItem du paquet (qui utilise `<a href="#">`), nécessaire
   ici pour cohabiter avec le rendu serveur Blazor. Réinitialisation des styles natifs de bouton. */
.app-sidebar-creagidem[b-7qqh1upck5]  button.nav-link {
    width: 100%;
    background: transparent;
    border: 0;
    text-align: left;
    font: inherit;
}

/* Marque CREAGIDEM (déplacée depuis AppShellChrome.razor en tête de sidebar, ADR-0050 décision 3) */
.app-brand-creagi[b-7qqh1upck5] {
    color: #fff;
}

.app-brand-dem[b-7qqh1upck5] {
    color: var(--creagidem-accent);
}

/* Convention "grisé, jamais masqué" (ADR-0032, étendue par ADR-0036 puis reprise ici à l'identique) :
   l'entrée reste visible et à sa place, simplement inactive visuellement. Portée sur .app-sidebar-
   creagidem (écrit directement dans NavMenu.razor) pour ne pas déteindre sur d'autres .nav-link de
   l'application (ex. onglets Bootstrap de ClientDetail.razor/DevisDgtList.razor). */
.app-sidebar-creagidem[b-7qqh1upck5]  .nav-link.disabled {
    color: #9aa0a6;
    cursor: not-allowed;
}

    .app-sidebar-creagidem[b-7qqh1upck5]  .nav-link.disabled .nav-icon {
        color: #9aa0a6;
    }

    .app-sidebar-creagidem[b-7qqh1upck5]  .nav-link.disabled:hover {
        background: transparent;
    }

/* Deuxième état grisé (ADR-0074 décision 3, prompt 4/7) : entrée construite mais dont le droit legacy
   manque. Elle reste au même endroit, de la même couleur que l'état "pas encore disponible" — c'est
   le cadenas (et l'info-bulle, qui porte le message exact de verifDroit()) qui distingue les deux,
   pour ne pas laisser croire qu'un écran n'existe pas alors qu'il est seulement refusé. */
.app-sidebar-creagidem[b-7qqh1upck5]  .nav-link.disabled .ribbon-cadenas {
    margin-left: .4rem;
    font-size: .75em;
    opacity: .85;
}
/* /Components/Layout/RappelsTaches.razor.rz.scp.css */
/* Rappels de l'agenda (prompt Agenda 8) : pile en haut à droite, sous l'en-tête d'AdminLTE (63 px mesurés, skill ui-blazor A3), au-dessus
   des fenêtres (une fiche ouverte n'empêche pas de voir un rappel). Cartes Bootstrap : surface du thème (blanche en clair, celle de
   Bootstrap en sombre - aucune règle de thème locale, A9). Sur téléphone, la pile prend la largeur moins la gouttière. */
.rappels-taches[b-5ahuukqtx2] {
    position: fixed;
    top: calc(63px + .5rem);
    right: 1rem;
    z-index: 1090;
    width: 22rem;
    max-width: calc(100vw - 2rem);
    max-height: calc(100vh - 63px - 1rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.rappel-tache[b-5ahuukqtx2] {
    border-left: 4px solid var(--creagidem-accent);
    margin-bottom: 0;
}

.rappel-tache-titre[b-5ahuukqtx2],
.rappel-tache-icone[b-5ahuukqtx2] {
    color: var(--creagidem-texte-marque);
}

.rappel-tache-pastille[b-5ahuukqtx2] {
    flex: 0 0 auto;
    width: .75rem;
    height: .75rem;
    border-radius: 50%;
    border: 1px solid var(--bs-border-color);
}

/* Libellé d'une visite sur plusieurs lignes (client, adresse, téléphone) : lignes gardées, mots longs coupés. */
.rappel-tache-libelle[b-5ahuukqtx2] {
    white-space: pre-line;
    overflow-wrap: anywhere;
    font-size: .875rem;
}

@media (max-width: 575.98px) {
    .rappels-taches[b-5ahuukqtx2] {
        right: 1rem;
        left: 1rem;
        width: auto;
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-t354q1s59n],
.components-reconnect-repeated-attempt-visible[b-t354q1s59n],
.components-reconnect-failed-visible[b-t354q1s59n],
.components-pause-visible[b-t354q1s59n],
.components-resume-failed-visible[b-t354q1s59n],
.components-rejoining-animation[b-t354q1s59n] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-retrying[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-failed[b-t354q1s59n],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-t354q1s59n] {
    display: block;
}


#components-reconnect-modal[b-t354q1s59n] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-t354q1s59n 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-t354q1s59n 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-t354q1s59n 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-t354q1s59n]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-t354q1s59n 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-t354q1s59n {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-t354q1s59n {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-t354q1s59n {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-t354q1s59n] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-t354q1s59n] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-t354q1s59n] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-t354q1s59n] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-t354q1s59n] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-t354q1s59n] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-t354q1s59n] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-t354q1s59n 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-t354q1s59n] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-t354q1s59n {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/AgendaCommercial.razor.rz.scp.css */
/* Agenda commercial (prompt Agenda 2). Le DOM de la grille est posé par Event Calendar (sans l'attribut de portée de Blazor) : les
   règles l'atteignent par ::deep depuis .agenda-carte. Aucune couleur propre à l'écran : les variables --ec-* de la bibliothèque sont
   reliées aux tokens d'app.css et de Bootstrap (ui-blazor A1, A9), qui changent d'eux-mêmes en thème sombre - aucune règle
   [data-bs-theme="dark"] ici. Seules les couleurs des types de tâches (TYPE_TACHE_AGENDA.couleurFond) viennent des données ; le
   dégradé des tuiles (prompt Agenda 3) n'est qu'un voile blanc posé par-dessus. */

.agenda-groupe[b-6nmvs0lh9y] {
    min-width: 0;
}

.agenda-date[b-6nmvs0lh9y] {
    width: 9.5rem;
}

.agenda-collaborateur[b-6nmvs0lh9y] {
    width: 16rem;
    max-width: 100%;
}

.agenda-vue[b-6nmvs0lh9y] {
    width: 12rem;
}

.agenda-pas[b-6nmvs0lh9y] {
    width: 7rem;
}

@media (max-width: 575.98px) {
    .agenda-groupe[b-6nmvs0lh9y] {
        width: 100%;
    }

    .agenda-collaborateur[b-6nmvs0lh9y] {
        flex: 1 1 10rem;
        width: auto;
    }

    .agenda-vue[b-6nmvs0lh9y],
    .agenda-pas[b-6nmvs0lh9y] {
        width: 100%;
    }
}

.agenda-calendrier[b-6nmvs0lh9y] {
    min-height: 420px;
}

/* Variables de la bibliothèque (liste : event-calendar.min.css, bloc .ec). color-scheme suit celui qu'AdminLTE pose sur <html>
   (ascenseurs clairs ou sombres) au lieu du « light » figé par la bibliothèque. */
.agenda-carte[b-6nmvs0lh9y]  .ec {
    color-scheme: inherit;
    --ec-bg-color: var(--creagidem-surface);
    --ec-text-color: var(--bs-body-color);
    --ec-border-color: var(--bs-border-color);
    --ec-button-bg-color: var(--creagidem-surface);
    --ec-button-border-color: var(--bs-border-color);
    --ec-button-text-color: var(--bs-body-color);
    --ec-button-active-bg-color: var(--bs-tertiary-bg);
    --ec-button-active-border-color: var(--bs-border-color);
    --ec-popup-bg-color: var(--creagidem-surface);
    --ec-today-bg-color: color-mix(in srgb, var(--creagidem-accent) 14%, var(--creagidem-surface));
    --ec-highlight-color: color-mix(in srgb, var(--creagidem-navy) 10%, var(--creagidem-surface));
    --ec-now-indicator-color: var(--bs-danger);
    --ec-event-bg-color: var(--creagidem-navy);
    --ec-event-text-color: var(--bs-white);
}

/* Week-end en fond distinct (vue 7 jours et mois), comme le fond bleuté du legacy ; le jour courant garde sa teinte. */
.agenda-carte[b-6nmvs0lh9y]  .ec-sat:not(.ec-today),
.agenda-carte[b-6nmvs0lh9y]  .ec-sun:not(.ec-today) {
    background-color: color-mix(in srgb, var(--creagidem-navy) 7%, var(--creagidem-surface));
}

.agenda-carte[b-6nmvs0lh9y]  .ec-day-head.ec-today,
.agenda-carte[b-6nmvs0lh9y]  .ec-col-head.ec-today {
    color: var(--creagidem-texte-marque);
    font-weight: 600;
}

/* Dégradé des rendez-vous (ADR-0170 déc. 2) : clair en haut, couleur du type en bas, comme au legacy. La couleur du type est posée
   par la bibliothèque en background-color ; le voile blanc est une image de fond par-dessus. Force choisie par le serveur
   (LectureAgenda.Rendu, mêmes valeurs) pour garder le contraste du texte sur toute la hauteur - aucune classe = aplat. */
.agenda-carte[b-6nmvs0lh9y]  .ec-event.agenda-degrade-60 {
    background-image: linear-gradient(to bottom, rgb(255 255 255 / .6), rgb(255 255 255 / 0));
}

.agenda-carte[b-6nmvs0lh9y]  .ec-event.agenda-degrade-45 {
    background-image: linear-gradient(to bottom, rgb(255 255 255 / .45), rgb(255 255 255 / 0));
}

.agenda-carte[b-6nmvs0lh9y]  .ec-event.agenda-degrade-30 {
    background-image: linear-gradient(to bottom, rgb(255 255 255 / .3), rgb(255 255 255 / 0));
}

.agenda-carte[b-6nmvs0lh9y]  .ec-event.agenda-degrade-15 {
    background-image: linear-gradient(to bottom, rgb(255 255 255 / .15), rgb(255 255 255 / 0));
}

/* Contenu d'un rendez-vous (AgendaCommercial.razor.js, contenu()) : titre en tête, trigramme en pastille à droite (mode « Tous »),
   texte de la tâche dessous, marques « importante » / « terminée » en fin de ligne de titre - ou en bas à droite quand la tuile est
   assez haute (ADR-0170 déc. 3 ; requête de conteneur sur la tuile des vues horaires, seuil ci-dessous). */
.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    height: 100%;
    overflow: hidden;
    font-size: .75rem;
    line-height: 1.2;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv:not(.agenda-rdv-mois) {
    container: agenda-rdv / size;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-entete {
    display: flex;
    align-items: flex-start;
    gap: .25rem;
    min-width: 0;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-titre {
    flex: 1 1 auto;
    min-width: 0;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-heures {
    flex: 0 0 auto;
    white-space: nowrap;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-trigramme {
    flex: 0 0 auto;
    padding: 0 .3rem;
    border-radius: .25rem;
    background-color: var(--creagidem-navy);
    color: var(--bs-white);
    font-weight: 700;
    font-size: .7rem;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-lib {
    white-space: pre-line;
    overflow: hidden;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-marques {
    flex: 0 0 auto;
    display: flex;
    gap: .15rem;
}

/* Seuil mesuré à l'écran (prompt Agenda 3, 1600 x 1000) : contenu d'une tuile de 30 min = 17 px, d'1 h = 38 px ; ligne de titre
   14 px + marques 14 px + écart. En dessous du seuil, les marques restent en fin de ligne de titre. */
@container agenda-rdv (min-height: 34px) {
    .agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-marques {
        position: absolute;
        right: 0;
        bottom: 0;
    }
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-mois {
    flex-direction: row;
    align-items: center;
    gap: .25rem;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-mois .agenda-rdv-entete {
    flex: 1 1 auto;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-marque circle {
    stroke: var(--bs-white);
    stroke-width: 1.5;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-marque path {
    fill: none;
    stroke: var(--bs-white);
    stroke-width: 2.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-terminee circle {
    fill: var(--bs-success);
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-importante circle {
    fill: var(--bs-warning);
}

/* Occurrence d'une série (prompt Agenda 4) : pastille de la couleur de marque, flèches de répétition blanches. */
.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-recurrente circle {
    fill: var(--creagidem-navy);
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-recurrente path {
    stroke-width: 2.2;
}

/* Ligne d'une tâche pour plusieurs personnes (prompt Agenda 5) : pastille de l'accent, silhouettes de la couleur de marque (contraste
   4,5 entre les deux ; le blanc sur l'accent n'atteindrait pas 3). */
.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-partagee circle {
    fill: var(--creagidem-accent);
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-partagee path {
    stroke: var(--creagidem-navy);
    stroke-width: 1.9;
}

/* Rendez-vous venu de Google / Microsoft (prompt Agenda 6a2) : repère discret - pastille blanche bordée de la couleur de marque, petit
   nuage de la couleur de marque (contraste 12 sur le blanc, lisible sur toutes les couleurs de type). */
.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-externe circle {
    fill: var(--bs-white);
    stroke: var(--creagidem-navy);
    stroke-width: 1.5;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-externe path {
    stroke: var(--creagidem-navy);
    stroke-width: 1.8;
}

/* Question d'un geste sur une tâche partagée (prompt Agenda 5) : la molette ne fait pas défiler la page de fond (ui-blazor D1 c). */
.modal[b-6nmvs0lh9y],
.modal-body[b-6nmvs0lh9y] {
    overscroll-behavior: contain;
}

/* Un clic sur un rendez-vous ouvre sa fiche (prompt Agenda 3). */
.agenda-carte[b-6nmvs0lh9y]  .ec-event {
    cursor: pointer;
}

/* Menu contextuel (prompt Agenda 3b) : liste de .dropdown-item de Bootstrap rendue par Razor, placé à l'endroit du clic droit (position fixe,
   coordonnées gardées dans la fenêtre par le composant) au-dessus d'un fond transparent qui le referme. Couleurs de Bootstrap et des tokens
   d'app.css (thème sombre compris). */
.agenda-menu-fond[b-6nmvs0lh9y] {
    position: fixed;
    inset: 0;
    z-index: 1060;
}

/* Pas la classe .dropdown-menu : le gestionnaire clavier de Bootstrap (document, flèches et Échap sur tout .dropdown-menu) y cherche
   un bouton de bascule absent et lève une erreur (mesuré au prompt Agenda 3b). Variables de .dropdown-menu de Bootstrap 5.3, lues par
   ses .dropdown-item (survol et focus en teinte tertiaire), fond de surface d'app.css. */
.agenda-menu[b-6nmvs0lh9y] {
    --bs-dropdown-link-color: var(--bs-body-color);
    --bs-dropdown-link-hover-color: var(--bs-body-color);
    --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);
    --bs-dropdown-link-active-color: var(--bs-body-color);
    --bs-dropdown-link-active-bg: var(--bs-tertiary-bg);
    --bs-dropdown-link-disabled-color: var(--bs-tertiary-color);
    --bs-dropdown-item-padding-x: 1rem;
    --bs-dropdown-item-padding-y: .375rem;
    position: fixed;
    z-index: 1061;
    min-width: 15rem;
    max-width: calc(100vw - 16px);
    padding: .5rem 0;
    color: var(--bs-body-color);
    background-color: var(--creagidem-surface);
    background-clip: padding-box;
    border: var(--bs-border-width) solid var(--bs-border-color-translucent);
    border-radius: var(--bs-border-radius);
    box-shadow: var(--bs-box-shadow);
}

.agenda-menu:focus[b-6nmvs0lh9y] {
    outline: none;
}

.agenda-menu .dropdown-item[b-6nmvs0lh9y] {
    cursor: pointer;
}

.agenda-menu .dropdown-item.disabled[b-6nmvs0lh9y] {
    cursor: default;
}

.agenda-menu-icone[b-6nmvs0lh9y] {
    color: var(--creagidem-texte-marque);
}

.agenda-menu .disabled .agenda-menu-icone[b-6nmvs0lh9y] {
    color: inherit;
}

/* Bascule active (ADR-0172 déc. 1) : icône pleine à la couleur de la marque de la tuile (.agenda-rdv-importante / -terminee), libellé
   et coche dans la variante « texte » de la même couleur (contraste sur la surface, thème sombre compris). */
.agenda-menu .agenda-menu-actif[b-6nmvs0lh9y] {
    font-weight: 600;
}

.agenda-menu .agenda-menu-actif-importante .agenda-menu-icone[b-6nmvs0lh9y] {
    color: var(--bs-warning);
}

.agenda-menu .agenda-menu-actif-importante[b-6nmvs0lh9y],
.agenda-menu .agenda-menu-actif-importante:hover[b-6nmvs0lh9y],
.agenda-menu .agenda-menu-actif-importante:focus[b-6nmvs0lh9y] {
    color: var(--bs-warning-text-emphasis);
}

.agenda-menu .agenda-menu-actif-terminee .agenda-menu-icone[b-6nmvs0lh9y] {
    color: var(--bs-success);
}

.agenda-menu .agenda-menu-actif-terminee[b-6nmvs0lh9y],
.agenda-menu .agenda-menu-actif-terminee:hover[b-6nmvs0lh9y],
.agenda-menu .agenda-menu-actif-terminee:focus[b-6nmvs0lh9y] {
    color: var(--bs-success-text-emphasis);
}

.agenda-menu-coche[b-6nmvs0lh9y] {
    font-size: 1rem;
}

/* Calendriers supplémentaires (prompt Agenda 7) : cases de la barre d'outils (pastille de la couleur du calendrier, nom tronqué), créneaux
   en lecture seule dans la grille - bordure en tirets (on ne les déplace pas), pas de curseur de lien ; un créneau anonymisé
   (« NON DISPONIBLE ») a les couleurs du thème (variables Bootstrap, thème sombre compris) et des hachures discrètes. */
.agenda-supp-pastille[b-6nmvs0lh9y] {
    display: inline-block;
    flex: 0 0 auto;
    width: .8rem;
    height: .8rem;
    border-radius: 50%;
    border: 1px solid var(--bs-border-color);
}

.agenda-supp-nom[b-6nmvs0lh9y] {
    display: inline-block;
    max-width: 14rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    vertical-align: bottom;
}

.agenda-supp-mention[b-6nmvs0lh9y] {
    font-style: italic;
}

.agenda-carte[b-6nmvs0lh9y]  .ec-event.agenda-externe {
    cursor: default;
    outline: 1px dashed var(--bs-emphasis-color);
    outline-offset: -2px;
}

.agenda-carte[b-6nmvs0lh9y]  .ec-event.agenda-externe-anonyme {
    background-image: repeating-linear-gradient(135deg, transparent 0 6px, var(--bs-border-color-translucent) 6px 12px);
}

/* Repère « calendrier supplémentaire » : pastille de la surface, petit calendrier de la couleur du texte (lisible sur toute couleur de
   calendrier et sur le gris des indisponibilités). */
.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-supp circle {
    fill: var(--creagidem-surface);
    stroke: var(--bs-emphasis-color);
    stroke-width: 1.5;
}

.agenda-carte[b-6nmvs0lh9y]  .agenda-rdv-supp path {
    stroke: var(--bs-emphasis-color);
    stroke-width: 1.6;
}
/* /Components/Pages/ClientDetail.razor.rz.scp.css */
/* Fenêtres de la fiche (choix d'une recopie, lot FC2 ; suppression d'un contact et homonymes, lot FC4) : la modale défile dans son corps
   (modal-dialog-scrollable) sans entraîner la page (skill ui-blazor D1 c). */
.modal[b-agfm24e8so],
.modal-body[b-agfm24e8so] {
    overscroll-behavior: contain;
}

/* En-têtes des deux blocs d'adresse (lot FC4, ADR-0245 déc. 2) : « Client société » à droite du titre du bloc de devis, en face des boutons de recopie
   (btn-sm) de la facturation - même hauteur minimale, celle d'un bouton btn-sm (police 0.875rem x 1.5, marges 0.25rem, bordures 1px), pour que les
   lignes de champs des deux blocs partent à la même hauteur. */
.actions-entete-bloc[b-agfm24e8so] {
    min-height: calc(1.3125rem + 0.5rem + 2px);
}

/* Lot FC6 (M11, ADR-0247 déc. 5) : « Client société » et « Client anglophone » empilés dans cette hauteur (police small, 14 px x 1.1 = 15,4 px par
   case, 30,8 px pour les deux) - côte à côte, ils ne tenaient pas sur la ligne du titre à 1280 px (514 px pour 437, mesuré) et décalaient les lignes. */
.cases-entete-bloc .form-check[b-agfm24e8so] {
    min-height: 0;
    line-height: 1.1;
}

.cases-entete-bloc .form-check-input[b-agfm24e8so] {
    margin-top: 0.05em;
}

/* Bande des onglets (lot FC3, ADR-0244 déc. 5 ; lot FC4, ADR-0245 déc. 3 : à partir de 576 px seulement - sous 576 px la page défile de toute façon) :
   hauteur minimale réservée, celle de l'onglet le plus haut hors contacts, pour que la page ne saute pas d'un onglet à l'autre. Mesurée au FC3 dans le
   navigateur (hauteur de chaque volet affiché, Société jusqu'au titre « Contacts », Chromium et Firefox identiques) au plus étroit de chaque palier,
   marge haute du volet (pt-4, 24 px) comprise : Comptabilité est le plus haut partout - 394 px de 576 à 991 px, 353 px à 992 px (308 px à 1280 px). */
@media (min-width: 576px) {
    .onglets-client[b-agfm24e8so] {
        min-height: 26.5rem;
    }
}

@media (min-width: 992px) {
    .onglets-client[b-agfm24e8so] {
        min-height: 24rem;
    }
}

/* Contacts (R15, lot FC3) : largeur minimale du tableau ici plutôt qu'en style en ligne (900 px faisait défiler le tableau à l'ordinateur) ; tenue
   par la largeur utile au-delà de 768 px, en dessous le tableau défile dans son conteneur .table-responsive, jamais la page (A3). Lot FC4 : la colonne
   des marques et des actions s'ajoute en saisie. */
.contacts-client[b-agfm24e8so] {
    min-width: 40rem;
}

/* Avertissements après Enregistrer (lot FC5, M13) : pile de cartes en haut à droite, sous l'en-tête collant d'AdminLTE (63 px, skill A3 / E9), au-dessus
   du contenu mais sous les fenêtres de la fiche (1055 : le détail du solde la recouvre) ; pleine largeur moins les gouttières sur téléphone,
   défilement dans la pile si elle dépasse la fenêtre ; vide, elle ne prend aucune place. */
.avertissements-fiche[b-agfm24e8so] {
    position: fixed;
    top: calc(63px + 1rem);
    right: 1rem;
    z-index: 1045;
    width: min(24rem, calc(100vw - 2rem));
    max-height: calc(100vh - 63px - 2rem);
    overflow-y: auto;
}

/* Contact marqué « supprimé » (lot FC4) : valeurs barrées, en attente d'Enregistrer. */
.contact-supprime input[b-agfm24e8so],
.contact-supprime select[b-agfm24e8so] {
    text-decoration: line-through;
}
/* /Components/Pages/Clients.razor.rz.scp.css */
/* Recherche client v2 (ADR-0089, corrigée par ADR-0090). Aucune couleur de marque ici : la palette
   est celle d'app.css (règle A1). Ce fichier ne porte que ce que la virtualisation impose - une
   fenêtre de défilement bornée, des lignes de hauteur strictement uniforme, et la grille qui
   remplace le <table>. */

/* ---- Hauteur adaptative (ADR-0090 décision 2) ----

   La liste ne mesure plus une hauteur figée : elle prend ce qui reste sous les filtres et le
   panneau. La chaîne flex part de .app-body (app.css, sélectionné par :has(> .page-pleine-hauteur))
   et doit être continue jusqu'au conteneur qui défile — d'où les règles ci-dessous sur la <Card>.

   `::deep` est nécessaire : le <div class="card"> et son .card-body sont rendus par le composant
   AdminLTE <Card>, ils ne portent donc pas l'attribut de portée de ce fichier.

   Pas de JS : la colonne flex se réajuste seule au redimensionnement de la fenêtre. Un
   ResizeObserver n'aurait rien apporté. */
.clients-zone-liste[b-c2x36jel5b] {
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
}

.clients-zone-liste[b-c2x36jel5b]  .card,
.clients-zone-liste[b-c2x36jel5b]  .card > .card-body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    margin-bottom: 0;
}

/* Fenêtre de défilement : Virtualize mesure la hauteur visible de ce conteneur pour décider combien
   de lignes demander. Sans hauteur bornée ni overflow-y, il n'a rien à mesurer et rend tout. Le
   `min-height` évite qu'une fenêtre très basse réduise la liste à rien - à ce point-là, c'est la
   page qui défile. */
.clients-viewport[b-c2x36jel5b] {
    /* `position: relative` n'est pas décoratif : sans lui, ce conteneur n'est pas un bloc conteneur,
       et les `.visually-hidden` de Bootstrap - qui sont `position: absolute !important` - se
       rattachent à la <Card> (elle, `position: relative`). Un élément absolu dont le bloc conteneur
       est **au-dessus** du conteneur défilant n'est pas rogné par lui : les libellés cachés des
       chevrons des 62 lignes rendues débordaient donc de 2 554 px, et c'est la page entière qui
       défilait de 2 071 px alors que la liste, elle, tenait bien dans ses 446 px. Mesuré, pas
       supposé : `position: relative` posé, le document retombe à la hauteur de la fenêtre. */
    position: relative;
    flex: 1 1 auto;
    min-height: 12rem;
    overflow-y: auto;
    overflow-x: auto;

    /* Trame de fond au pas d'une ligne (41 px) - voir « Lignes squelettes » plus bas : c'est elle
       qui remplace le blanc dans l'instant où Virtualize n'a **rien** posé dans la bande visible.
       Les lignes, elles, sont opaques et la recouvrent entièrement.
       Elle est portée par le conteneur défilant et non par `.clients-grille` : la grille mesure
       1 139 800 px de haut, et Chromium ne rastérise pas un dégradé sur une boîte de cette taille -
       relevé, la trame n'y apparaissait pas du tout. Ici, la zone de fond fait la hauteur visible.
       Contrepartie assumée : la trame ne défile pas avec le contenu. Sans importance, elle ne se
       voit que là où il n'y a aucune ligne. */
    background-image: repeating-linear-gradient(
        to bottom,
        transparent 0 15px,
        var(--bs-secondary-bg) 15px 26px,
        transparent 26px 41px);
}

/* En mobile la carte de filtres occupe presque toute la hauteur : la colonne flex est désactivée
   (app.css), la page défile jusqu'à la liste, et la liste défile ensuite chez elle. */
@media (max-width: 767.98px) {
    .clients-viewport[b-c2x36jel5b] {
        max-height: 55vh;
    }
}

/* Le conteneur des cartes mobiles n'est pas dans une <Card> : il lui faut son propre cadre. */
.clients-viewport-cartes[b-c2x36jel5b] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: .5rem;
}

/* ---- Grille desktop (remplace le <table>, voir le commentaire du .razor) ---- */

/* Les colonnes sont déclarées une seule fois et héritées par l'en-tête comme par les lignes :
   c'est ce qui les garde alignées sans table. En dessous de cette largeur minimale, le conteneur
   défile horizontalement plutôt que d'écraser les colonnes (règle A3). */
.clients-grille[b-c2x36jel5b] {
    min-width: 68rem;
}

.clients-ligne[b-c2x36jel5b] {
    /* Fond opaque obligatoire : sans lui, la trame de fond de la grille transparaîtrait sous les
       vraies lignes. Les états survol/sélection ci-dessous le remplacent. */
    background-color: var(--bs-card-bg);
    display: grid;
    grid-template-columns:
        2.25rem 5rem 6.5rem minmax(7rem, 1.2fr) minmax(6rem, 1fr) 4.25rem
        minmax(7rem, 1fr) minmax(9rem, 1.4fr) 3rem 3rem minmax(6rem, .9fr) 4.25rem;
    align-items: center;
    /* Hauteur strictement constante (= ItemSize côté C#) : une ligne qui s'agrandit parce qu'un
       texte passe à la ligne décale tout le reste et fait sauter le défilement. */
    height: 41px;
    border-bottom: 1px solid var(--bs-border-color);
}

.clients-cellule[b-c2x36jel5b] {
    display: flex;
    align-items: center;
    gap: .25rem;
    min-width: 0;
    padding: 0 .35rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.clients-cellule > a[b-c2x36jel5b] {
    overflow: hidden;
    text-overflow: ellipsis;
}

/* En-tête figé pendant le défilement interne. Le fond opaque est indispensable : sans lui, les
   lignes défilent visiblement sous l'en-tête (constaté sur capture). `--bs-card-bg` n'est définie
   que sur `.card` (app.css) : la grille est donc enveloppée dans une <Card>, sans quoi la variable
   est vide et le fond retombe sur transparent. */
.clients-entete[b-c2x36jel5b] {
    position: sticky;
    top: 0;
    z-index: 2;
    font-weight: 600;
    background-color: var(--bs-card-bg);
    border-bottom-width: 2px;
}

.clients-entete .clients-cellule:not(:first-child)[b-c2x36jel5b] {
    cursor: pointer;
    user-select: none;
}

.clients-ligne:not(.clients-entete):not(.clients-squelette) .clients-cellule:not(:first-child)[b-c2x36jel5b] {
    cursor: pointer;
}

.clients-ligne:not(.clients-entete):not(.clients-squelette):hover[b-c2x36jel5b] {
    background-color: var(--bs-tertiary-bg);
}

.clients-ligne-active[b-c2x36jel5b] {
    background-color: var(--bs-secondary-bg);
}

.clients-chevron[b-c2x36jel5b] {
    line-height: 1;
    transition: transform .15s ease-in-out;
}

.clients-chevron-ouvert[b-c2x36jel5b] {
    transform: rotate(90deg);
}

/* ---- Lignes squelettes (ADR-0090 décision 1) ----

   Deux mécanismes, parce qu'il y a **deux** moments de vide différents, mesurés à l'écran :

   1. `Placeholder` de Virtualize - ces lignes-ci. Rendues pour les index de la bande visible dont la
      fenêtre n'est pas encore revenue (relevé : 22 lignes squelettes en place 51 ms après un saut).
      Barres grises pleine cellule, même hauteur que ItemSize, animées.

   2. La **trame de fond de la grille** (`.clients-grille`), pour l'instant où Virtualize n'a rien
      posé du tout. Relevé sur capture : juste après un saut de la barre de défilement, Virtualize
      n'a pas encore déplacé son bloc de lignes - elles restent à leur ancienne position (mesuré :
      `top` de -499 959 px), la bande visible ne contient que l'espaceur, et il n'y a donc **aucune**
      ligne à remplacer par un Placeholder. La réponse à « la fenêtre précédente reste-t-elle
      affichée ? » est donc non : elle reste dans le DOM, pas à l'écran. Ce trou-là ne se comble ni
      par le Placeholder ni par l'overscan - seule une trame peinte par le conteneur lui-même le
      couvre. */
.clients-barre[b-c2x36jel5b] {
    display: block;
    width: 100%;
    height: .7rem;
    border-radius: .25rem;
    background-color: var(--bs-secondary-bg);
    animation: clients-pulsation-b-c2x36jel5b 1.1s ease-in-out infinite;
}

/* Les trois colonnes de cases à cocher n'ont pas de texte : une barre pleine largeur y mentirait
   sur le contenu à venir. */
.clients-barre-case[b-c2x36jel5b] {
    width: 1rem;
    height: 1rem;
    border-radius: .2rem;
}

@keyframes clients-pulsation-b-c2x36jel5b {
    0%, 100% { opacity: .4; }
    50% { opacity: .85; }
}

@media (prefers-reduced-motion: reduce) {
    .clients-barre[b-c2x36jel5b] {
        animation: none;
        opacity: .6;
    }
}

/* ---- Cartes mobiles ---- */

/* Même exigence de hauteur uniforme que les lignes : 112 px + la marge de 8 px de `mb-2`
   = les 120 px déclarés en ItemSize. 104 px ne suffisaient pas - le contenu de la carte mesurait
   107 px pour 102 px utiles et se faisait rogner (relevé scrollHeight/clientHeight). */
.clients-carte[b-c2x36jel5b] {
    height: 112px;
}

.clients-carte .card-body[b-c2x36jel5b] {
    overflow: hidden;
}

.min-w-0[b-c2x36jel5b] {
    min-width: 0;
}

/* ---- Panneau d'informations ---- */

/* Le panneau est **au-dessus** de la liste (ADR-0090 décision 3) et occupe une hauteur **fixe**,
   ouvert comme fermé : `min-height` ne suffisait pas - relevé, le panneau passait de 104 à 150 px à
   l'ouverture d'un chevron et la fenêtre de liste perdait 46 px, soit une ligne. Hauteur ferme +
   défilement interne : le contenu à venir (« les derniers devis, etc. », en attente de la capture
   de Davy) s'ajoutera en sections sans jamais déplacer la liste. Fermé, la place n'est pas perdue :
   elle porte le rappel d'usage. */
/* Panneau escamotable (ADR-0091 décision 1), à hauteur dynamique (ADR-0093 décision 3). La classe
   n'est posée que lorsque le panneau est déployé **et** qu'un client est sélectionné : c'est le seul
   cas où il a quelque chose à réserver. Replié, ou sans sélection, le panneau ne fait qu'une ligne
   (identité du client, ou rappel d'usage) et rend ses ~10 rem à la liste.

   Quand elle s'applique, la hauteur reste **fixe** (et non un min-height) pour la raison mesurée au
   prompt précédent : sans elle, le panneau grandissait à l'arrivée du contenu du tiroir et la liste
   perdait des lignes sous le curseur. Le critère côté C# est la sélection, pas le contenu chargé :
   la hauteur est prise dès le clic sur le chevron et ne bouge plus. Le contenu qui dépasse défile
   dans la carte. */
.clients-panneau-deploye[b-c2x36jel5b] {
    /* Réglée sur le cas le plus chargé - un client qui affiche les **sept** sections (trois
       téléphones, e-mail, solde, client payeur et les quatre « derniers ») : relevé 251 px de
       contenu à 1600 px de large. Au-delà, la carte défile chez elle plutôt que de manger la liste.
       Chaque pixel ici est un pixel de moins pour les lignes - d'où le bouton de repli. */
    height: 15.75rem;
}

.clients-panneau[b-c2x36jel5b]  .card {
    height: 100%;
    margin-bottom: 0;
}

.clients-panneau[b-c2x36jel5b]  .card > .card-body {
    overflow-y: auto;
}

.clients-panneau-vide[b-c2x36jel5b] {
    height: 100%;
}

/* Le bouton de repli ne doit pas déplacer les autres actions quand son icône change de sens. */
.clients-repli[b-c2x36jel5b] {
    line-height: 1;
}

/* ---- Tiroir du chevron (ADR-0092) ----

   Une grille auto-ajustée plutôt que les positions absolues du legacy (qui décale ses champs à la
   main dans DécalagePositions / AjusteHauteurSiPasClientImporté quand une section est masquée) :
   ici une section absente disparaît simplement de la grille, et les suivantes se replacent seules.
   `auto-fit` + `minmax` donne 4 colonnes en grand écran, 2 en tablette, 1 au téléphone, sans
   media query. */
.clients-tiroir[b-c2x36jel5b] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr));
    gap: .25rem 1rem;
}

.clients-tiroir-bloc[b-c2x36jel5b] {
    min-width: 0;
    border-left: 2px solid var(--bs-border-color);
    padding-left: .5rem;
}

/* « Client Importé depuis … » (ADR-0093 décision 4) : une ligne à part entière, sur toute la
   largeur de la grille, entre le premier groupe et les quatre « derniers » - la position de
   LIB_ImportClient dans le legacy (x=6, y=86, 450 px de large). `grid-column: 1 / -1` la sort du
   flux de colonnes sans avoir à connaître leur nombre, qui varie avec la largeur de l'écran. */
.clients-tiroir-import[b-c2x36jel5b] {
    grid-column: 1 / -1;
    min-width: 0;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.clients-tiroir-titre[b-c2x36jel5b] {
    font-size: .7rem;
    line-height: 1.3;
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--bs-secondary-color);
    font-weight: 600;
}

/* Interligne resserré : sept sections dans un panneau qui prend sa hauteur sur la liste. */
.clients-tiroir-bloc .small[b-c2x36jel5b] {
    line-height: 1.35;
}

/* « ST MANDRIER SUR MER --> ST MANDRIER SUR MER » tient rarement sur une ligne : deux lignes au
   plus, puis les points de suspension. */
.clients-tiroir-detail[b-c2x36jel5b] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* En mobile la largeur ne permet pas de tronquer sans perdre l'information : les lignes passent à la
   ligne et le panneau prend la hauteur qu'il lui faut (relevé : « 27828 - MONACO… »,
   « Particulier - Client fac… »). */
@media (max-width: 767.98px) {
    .clients-panneau[b-c2x36jel5b],
    .clients-panneau-deploye[b-c2x36jel5b],
    .clients-panneau-vide[b-c2x36jel5b] {
        height: auto;
    }

    .clients-panneau[b-c2x36jel5b]  .card {
        height: auto;
    }

    .clients-panneau .text-truncate[b-c2x36jel5b] {
        white-space: normal;
        overflow: visible;
    }

    /* Au téléphone les sections du tiroir s'empilent et le cadre de gauche n'a plus rien à séparer :
       il ne ferait qu'un liseré vertical sur toute la colonne (exigence D du prompt : « sections
       empilées sans cadre »). Un filet horizontal entre les sections suffit. */
    .clients-tiroir-bloc[b-c2x36jel5b] {
        border-left: 0;
        padding-left: 0;
        padding-top: .35rem;
        border-top: 1px solid var(--bs-border-color);
    }

    .clients-tiroir-bloc:first-child[b-c2x36jel5b] {
        border-top: 0;
    }
}
/* /Components/Pages/Configuration/AgendasSupplementaires.razor.rz.scp.css */
/* Règle 9 du skill ui-blazor : nos modales sont pilotées par état et n'utilisent pas le JS Modal de
   Bootstrap — rien ne verrouille le défilement de la page de fond. La molette doit défiler le
   contenu de la modale, jamais la page derrière. CSS isolé : ne s'applique qu'aux modales de cet
   écran (choix du fournisseur et confirmation de suppression). */
.modal[b-p7ey4518hr],
.modal-body[b-p7ey4518hr] {
    overscroll-behavior: contain;
}

/* Pastille de couleur d'un agenda : le legacy peint le **fond** d'une colonne vide de la table
   (`TABLE_LISTE_AGENDA[i].CouleurFond..CouleurFond = …couleurAgenda`) ; ici un carré arrondi, pour
   ne pas poser du texte sur une couleur arbitraire. Aucune couleur n'est définie ici : elle vient
   de la donnée (attribut style), la palette de marque reste dans app.css (règle 6). */
.agenda-pastille-couleur[b-p7ey4518hr] {
    display: inline-block;
    width: 1.1rem;
    height: 1.1rem;
    border-radius: .25rem;
    border: 1px solid rgba(0, 0, 0, .25);
    vertical-align: middle;
}

/* Valeur stockée qui n'est pas un `#RRGGBB` : un damier, jamais une couleur inventée à sa place. */
.agenda-pastille-couleur-invalide[b-p7ey4518hr] {
    background-image: linear-gradient(45deg, rgba(0, 0, 0, .18) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, .18) 75%),
                      linear-gradient(45deg, rgba(0, 0, 0, .18) 25%, transparent 25%, transparent 75%, rgba(0, 0, 0, .18) 75%);
    background-size: .55rem .55rem;
    background-position: 0 0, .275rem .275rem;
}
/* /Components/Pages/Configuration/Alarmes.razor.rz.scp.css */
/* Champ de seuil : largeur bornée sur grand écran, pleine largeur en mobile. */
.alarmes-seuil[b-xgivj7j618] {
    max-width: 22rem;
}
/* /Components/Pages/Configuration/CarteSignatures.razor.rz.scp.css */
/* Liste des signatures : même rendu que la liste des identités (ConfigurationMailsSignatures.razor.css), tokens seulement. La box-shadow
   d'état de .table (table-hover) est neutralisée sur la ligne active pour que le fond sélectionné reste visible au survol. */
.sign-liste tbody tr[b-77y66gimir] {
    cursor: pointer;
}

.sign-liste tbody tr.sign-ligne-active > td[b-77y66gimir] {
    background-color: var(--bs-primary-bg-subtle);
    box-shadow: inset 0 0 0 transparent;
}

.sign-liste tbody tr.sign-ligne-active > td:first-child[b-77y66gimir] {
    box-shadow: inset 3px 0 0 var(--creagidem-accent);
}

.sign-liste tbody tr:focus-visible[b-77y66gimir] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: -2px;
}

/* Nom : une ligne, coupé par des points de suspension (valeur complète en info-bulle). */
.sign-cellule[b-77y66gimir] {
    max-width: 24rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Mobile : une carte par signature, sélection au toucher. */
.sign-carte[b-77y66gimir] {
    display: block;
    width: 100%;
    padding: .75rem 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background-color: transparent;
    color: var(--bs-body-color);
}

.sign-carte-texte[b-77y66gimir] {
    overflow-wrap: anywhere;
}

.sign-carte-active[b-77y66gimir] {
    background-color: var(--bs-primary-bg-subtle);
    box-shadow: inset 3px 0 0 var(--creagidem-accent);
}

.sign-carte:focus-visible[b-77y66gimir] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 2px;
}

/* Type : « CreaSign » en accent (marque du produit de signature), « Mails » neutre bordé. */
.sign-type-badge[b-77y66gimir] {
    font-weight: 600;
}

.sign-type-creasign[b-77y66gimir] {
    color: var(--creagidem-texte-marque);
    background-color: transparent;
    border: 1px solid var(--creagidem-accent);
}

.sign-type-mails[b-77y66gimir] {
    color: var(--bs-secondary-color);
    background-color: transparent;
    border: 1px solid var(--bs-border-color);
}

.sign-type[b-77y66gimir] {
    font-weight: 600;
}

/* Modales pilotées par état (skill ui-blazor D1 c) : la molette défile le contenu, jamais la page de fond. */
.modal[b-77y66gimir],
.modal-body[b-77y66gimir] {
    overscroll-behavior: contain;
}
/* /Components/Pages/Configuration/ConfigurationMailsSignatures.razor.rz.scp.css */
/* Largeur de lecture sur grand écran ; pleine largeur en mobile (max-width seulement). */
.mail-page[b-lc992srj68] {
    max-width: 80rem;
}

/* Ligne sélectionnée : même rendu que la liste des modèles SMS (ConfigurationSms.razor.css), tokens seulement. La box-shadow d'état de
   .table (table-hover) est neutralisée sur la ligne active pour que le fond sélectionné reste visible au survol. */
.mail-liste tbody tr[b-lc992srj68] {
    cursor: pointer;
}

.mail-liste tbody tr.mail-ligne-active > td[b-lc992srj68] {
    background-color: var(--bs-primary-bg-subtle);
    box-shadow: inset 0 0 0 transparent;
}

.mail-liste tbody tr.mail-ligne-active > td:first-child[b-lc992srj68] {
    box-shadow: inset 3px 0 0 var(--creagidem-accent);
}

.mail-liste tbody tr:focus-visible[b-lc992srj68] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: -2px;
}

/* Libellé, nom, e-mail : une ligne, coupés par des points de suspension (valeur complète en info-bulle). */
.mail-cellule[b-lc992srj68] {
    max-width: 13rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Mobile : une carte par identité, sélection au toucher. */
.mail-carte[b-lc992srj68] {
    display: block;
    width: 100%;
    padding: .75rem 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background-color: transparent;
    color: var(--bs-body-color);
}

/* Une adresse longue se coupe où il faut plutôt que d'élargir la page. */
.mail-carte-texte[b-lc992srj68] {
    overflow-wrap: anywhere;
}

.mail-carte-active[b-lc992srj68] {
    background-color: var(--bs-primary-bg-subtle);
    box-shadow: inset 3px 0 0 var(--creagidem-accent);
}

.mail-carte:focus-visible[b-lc992srj68] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 2px;
}

/* État : même forme que l'écran « Mots de passe » (ConfigurationMotsDePasse.razor.css). */
.mail-etat[b-lc992srj68] {
    font-weight: 600;
}

.mail-etat-neutre[b-lc992srj68] {
    color: var(--bs-secondary-color);
    background-color: transparent;
    border: 1px solid var(--bs-border-color);
}

.mail-fournisseur[b-lc992srj68] {
    font-weight: 600;
}

.mail-smtp-lecture dd[b-lc992srj68] {
    overflow-wrap: anywhere;
}

/* Modales pilotées par état (skill ui-blazor D1 c) : la molette défile le contenu, jamais la page de fond. */
.modal[b-lc992srj68],
.modal-body[b-lc992srj68] {
    overscroll-behavior: contain;
}

/* État de connexion (prompt Mail interne 4a) : badge et date sur deux lignes, sans élargir le tableau ; un badge long revient à la ligne. */
.mail-cellule-etat[b-lc992srj68] {
    min-width: 8.5rem;
}

.mail-cellule-etat .badge[b-lc992srj68] {
    white-space: normal;
    text-align: start;
}

.mail-depuis[b-lc992srj68] {
    white-space: nowrap;
}
/* /Components/Pages/Configuration/ConfigurationMotsDePasse.razor.rz.scp.css */
/* Largeur de lecture sur grand écran ; pleine largeur en mobile (max-width seulement). */
.mdp-page[b-d3rw0uvov4] {
    max-width: 80rem;
}

/* Les deux colonnes s'alignent en hauteur sur grand écran (cadres de la capture). */
.mdp-carte[b-d3rw0uvov4] {
    flex: 1 1 auto;
}

/* Une ligne par mot de passe : libellé et action protégée, puis état et « Modifier ». En mobile, le texte prend toute la ligne et
   l'état + le bouton passent dessous. */
.mdp-ligne[b-d3rw0uvov4] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem 1rem;
    padding: .75rem 0;
    border-top: 1px solid var(--bs-border-color-translucent);
}

.mdp-ligne:first-child[b-d3rw0uvov4] {
    border-top: 0;
    padding-top: .25rem;
}

.mdp-texte[b-d3rw0uvov4] {
    flex: 1 1 16rem;
    min-width: 0;
    overflow-wrap: break-word;
}

.mdp-actions[b-d3rw0uvov4] {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-left: auto;
}

.mdp-etat[b-d3rw0uvov4] {
    display: inline-flex;
    align-items: center;
    min-width: 6.5rem;
    justify-content: center;
    font-weight: 600;
}

/* « Non défini » : neutre, sans alarme (l'action est libre, comme au legacy) - tokens seulement. */
.mdp-etat-libre[b-d3rw0uvov4] {
    color: var(--bs-secondary-color);
    background-color: transparent;
    border: 1px solid var(--bs-border-color);
}

/* Modales pilotées par état (skill ui-blazor D1 c) : la molette défile le contenu, jamais la page de fond. */
.modal[b-d3rw0uvov4],
.modal-body[b-d3rw0uvov4] {
    overscroll-behavior: contain;
}
/* /Components/Pages/Configuration/ConfigurationSms.razor.rz.scp.css */
/* Largeur de lecture sur grand écran ; pleine largeur en mobile (max-width seulement). */
.sms-page[b-plzaldl2xl] {
    max-width: 64rem;
}

/* Ligne sélectionnée : même rendu que la grille du dossier client (DossierClient.razor.css), tokens seulement. La box-shadow d'état de
   .table (table-hover) est neutralisée sur la ligne active pour que le fond sélectionné reste visible au survol. */
.sms-liste tbody tr[b-plzaldl2xl] {
    cursor: pointer;
}

.sms-liste tbody tr.sms-ligne-active > td[b-plzaldl2xl] {
    background-color: var(--bs-primary-bg-subtle);
    box-shadow: inset 0 0 0 transparent;
}

.sms-liste tbody tr.sms-ligne-active > td:first-child[b-plzaldl2xl] {
    box-shadow: inset 3px 0 0 var(--creagidem-accent);
}

.sms-liste tbody tr:focus-visible[b-plzaldl2xl] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: -2px;
}

/* « Début du texte » : une ligne, coupée par des points de suspension (texte complet en info-bulle). max-width: 0 + w-100 : la colonne
   prend la place restante sans élargir le tableau. */
.sms-apercu[b-plzaldl2xl] {
    max-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Mobile : une carte par modèle, sélection au toucher. */
.sms-carte[b-plzaldl2xl] {
    display: block;
    width: 100%;
    padding: .75rem 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    background-color: transparent;
    color: var(--bs-body-color);
}

/* Nom sur sa propre ligne, type en dessous : coupure aux espaces, et dans un mot seulement s'il ne tient pas seul sur la ligne. */
.sms-carte-nom[b-plzaldl2xl] {
    overflow-wrap: break-word;
}

.sms-carte-active[b-plzaldl2xl] {
    background-color: var(--bs-primary-bg-subtle);
    box-shadow: inset 3px 0 0 var(--creagidem-accent);
}

.sms-carte:focus-visible[b-plzaldl2xl] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 2px;
}

.sms-texte[b-plzaldl2xl] {
    resize: vertical;
}

/* Modales pilotées par état (skill ui-blazor D1 c) : la molette défile le contenu, jamais la page de fond. */
.modal[b-plzaldl2xl],
.modal-body[b-plzaldl2xl] {
    overscroll-behavior: contain;
}
/* /Components/Pages/Configuration/CouleursEditions.razor.rz.scp.css */
/* Écran « Personnalisation des couleurs des éditions » (prompt 4) : largeurs seulement, aucune couleur (palette et tokens d'app.css). */

/* Numéro du devis de l'aperçu : assez pour 8 chiffres, sans pousser les actions sur une seconde ligne sur un écran large. */
.ce-apercu[b-8vv76xthp7] {
    width: auto;
    max-width: 17rem;
}

/* Pastille du sélecteur de couleur à largeur fixe, code #RRGGBB à côté. */
.ce-couleur .form-control-color[b-8vv76xthp7] {
    flex: 0 0 3rem;
}

.ce-couleur[b-8vv76xthp7] {
    max-width: 14rem;
}
/* /Components/Pages/Configuration/MiseEnPage.razor.rz.scp.css */
/* Aperçu de bande (ADR-0115, prompt G2) : cadre défilant, bande à l'échelle (1 mm CSS = 1 mm à 96 dpi), réduite sous 576 px. */
.mp-cadre[b-0ly8go3x8f] {
    max-width: 100%;
    overflow: auto;
    padding: 1rem;
    background-color: var(--bs-tertiary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.mp-echelle[b-0ly8go3x8f] {
    width: max-content;
}

@media (max-width: 575.98px) {
    .mp-echelle[b-0ly8go3x8f] {
        zoom: .45;
    }

    .mp-cadre[b-0ly8go3x8f] {
        padding: .5rem;
    }
}

/* Papier : blanc quel que soit le thème (c'est le rendu d'impression, pas une surface d'interface). */
.mp-papier[b-0ly8go3x8f] {
    background-color: #ffffff;
    color: #000000;
    outline: 1px dashed var(--bs-secondary-color);
    box-shadow: 0 1px 4px rgba(0, 0, 0, .15);
}

.mp-vide[b-0ly8go3x8f] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 12mm;
    padding: 1rem;
    color: #6c757d;
    font-size: 1rem;
    text-align: center;
}

.mp-choisissable[b-0ly8go3x8f] {
    cursor: pointer;
}

.mp-choisissable:hover[b-0ly8go3x8f] {
    outline: 1px dashed var(--creagidem-accent);
    outline-offset: -1px;
}

/* Cellule choisie : teinte d'accent + contour fin, qui ne masque pas le texte collé au bord de la cellule. */
.mp-choisie[b-0ly8go3x8f],
.mp-choisie:hover[b-0ly8go3x8f] {
    background-color: color-mix(in srgb, var(--creagidem-accent) 14%, transparent);
    outline: 1px solid var(--creagidem-accent);
    outline-offset: -1px;
}

/* Panneaux de réglages sous l'aperçu. */
.mp-panneau[b-0ly8go3x8f] {
    height: 100%;
    padding: 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.mp-champ-court[b-0ly8go3x8f] {
    max-width: 9rem;
}

.mp-bloc[b-0ly8go3x8f] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: .375rem .5rem;
}

.mp-bloc.ouvert[b-0ly8go3x8f] {
    border-color: var(--creagidem-accent);
}

.mp-bloc-titre[b-0ly8go3x8f] {
    color: var(--bs-body-color);
    text-decoration: none;
    padding: .25rem 0;
}

.mp-bloc-reglages[b-0ly8go3x8f] {
    margin-top: .5rem;
    padding-top: .75rem;
    border-top: 1px solid var(--bs-border-color);
}

.min-w-0[b-0ly8go3x8f] {
    min-width: 0;
}

.mp-vignette[b-0ly8go3x8f] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 5rem;
    height: 2.5rem;
    border: 1px solid var(--bs-border-color);
    background-color: var(--creagidem-surface);
}

.mp-vignette img[b-0ly8go3x8f] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.mp-gabarit[b-0ly8go3x8f] {
    height: 100%;
    padding: .75rem;
    background-color: var(--creagidem-surface);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    color: var(--bs-body-color);
}

.mp-gabarit:hover[b-0ly8go3x8f] {
    border-color: var(--creagidem-accent);
}

.mp-gabarit.choisi[b-0ly8go3x8f] {
    border-color: var(--creagidem-accent);
    outline: 2px solid var(--creagidem-accent);
}

/* Modales pilotées par état (D1c) : rien ne verrouille le défilement de la page. */
.mp-modale[b-0ly8go3x8f],
.mp-modale .modal-body[b-0ly8go3x8f] {
    overscroll-behavior: contain;
}

/* Emplacement du sélecteur de la mise en page (composant SelecteurAgenceEdition, qui porte ses propres styles). */
.mp-selecteur[b-0ly8go3x8f] {
    flex: 1 1 18rem;
    max-width: 28rem;
}

.mp-apercu-pour[b-0ly8go3x8f] {
    flex: 0 1 16rem;
}

/* Bande reprise de la mise en page par défaut : grisée, non modifiable, avec sa mention. */
.mp-reprise[b-0ly8go3x8f] {
    position: relative;
}

.mp-reprise-contenu[b-0ly8go3x8f] {
    filter: grayscale(1);
    opacity: .45;
    pointer-events: none;
}

.mp-reprise-mention[b-0ly8go3x8f] {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    padding: .25rem .75rem;
    border: 1px dashed var(--creagidem-accent);
    border-radius: var(--bs-border-radius);
    background-color: #ffffff;
    color: #212529;
    font-size: .875rem;
    font-weight: 600;
    white-space: nowrap;
}
/* /Components/Pages/Configuration/ModeleCourrierDetail.razor.rz.scp.css */
/* Repères « Emplacement de l'en-tête / du pied de page par défaut » (case b2colonnes cochée), comme les cadres que le legacy
   posait dans le document (PG:12015-12058) : hors du texte, jamais enregistrés. */
.mcd-emplacement[b-6fbq72xby2] {
    padding: 0.6rem;
    border: 2px dashed var(--creagidem-accent);
    border-radius: var(--bs-border-radius);
    color: var(--creagidem-texte-marque);
    font-weight: 600;
    text-align: center;
}

/* Panneau des champs de fusion : 33 balises, défile à côté de l'éditeur (en dessous en mobile). */
.mcd-fusion[b-6fbq72xby2] {
    max-height: 70vh;
    overflow-y: auto;
    overscroll-behavior: contain;
}

@media (min-width: 1200px) {
    .mcd-fusion[b-6fbq72xby2] {
        position: sticky;
        top: calc(63px + 1rem);
    }
}

.min-w-0[b-6fbq72xby2] {
    min-width: 0;
}
/* /Components/Pages/Configuration/ModelesCourriers.razor.rz.scp.css */
/* Liste des modèles de courriers (prompt 3) : conteneur défilant de l'arbre. Les lignes de l'arbre (« mc-* ») sont dans app.css,
   partagées avec le choix du modèle d'un nouveau courrier (ArbreModeles.razor, prompt 4). */
.mc-arbre[b-xj65hwz9r6] {
    max-height: calc(100vh - 21rem);
    min-height: 16rem;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.mc-modale .modal[b-xj65hwz9r6],
.mc-modale .modal-body[b-xj65hwz9r6] {
    overscroll-behavior: contain;
}

/* Mobile : la liste suit la page (pas de seconde barre de défilement). */
@media (max-width: 767.98px) {
    .mc-arbre[b-xj65hwz9r6] {
        max-height: none;
    }
}

.min-w-0[b-xj65hwz9r6] {
    min-width: 0;
}
/* /Components/Pages/Configuration/PaysParDefaut.razor.rz.scp.css */
/* Largeur de lecture sur grand écran ; pleine largeur en mobile (max-width seulement). */
.pays-defaut[b-4kstfjii0k] {
    max-width: 42rem;
}
/* /Components/Pages/Configuration/Tampons.razor.rz.scp.css */
/* Écran « Tampons » (ADR-0115, prompt G4). */
.tp-selecteur[b-pq75r0lb79] {
    flex: 1 1 18rem;
    max-width: 28rem;
}

/* Une carte par famille ; la famille choisie (miniature, aperçu PDF) est bordée d'accent. */
.tp-famille[b-pq75r0lb79] {
    padding: 1rem 1.25rem;
    background-color: var(--creagidem-surface);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    cursor: pointer;
}

.tp-famille:hover[b-pq75r0lb79] {
    border-color: var(--creagidem-accent);
}

.tp-famille.choisie[b-pq75r0lb79] {
    border-color: var(--creagidem-accent);
    outline: 1px solid var(--creagidem-accent);
}

/* Tampon général repris par une agence : grisé, non modifiable. */
.tp-repris .tp-vignette img[b-pq75r0lb79] {
    filter: grayscale(1);
    opacity: .55;
}

.tp-repris[b-pq75r0lb79] {
    color: var(--bs-secondary-color);
}

/* Vignette sur damier : la transparence d'un PNG se voit (comme la galerie). */
.tp-vignette[b-pq75r0lb79] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 6.5rem;
    height: 4rem;
    border: 1px solid var(--bs-border-color);
    background-color: var(--creagidem-surface);
    background-image: linear-gradient(45deg, var(--bs-secondary-bg) 25%, transparent 25%), linear-gradient(-45deg, var(--bs-secondary-bg) 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, var(--bs-secondary-bg) 75%), linear-gradient(-45deg, transparent 75%, var(--bs-secondary-bg) 75%);
    background-size: 12px 12px;
    background-position: 0 0, 0 6px, 6px -6px, -6px 0;
}

.tp-vignette img[b-pq75r0lb79] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.tp-a-choisir[b-pq75r0lb79] {
    color: var(--creagidem-accent);
    font-weight: 600;
    text-align: center;
}

.tp-opaque[b-pq75r0lb79] {
    color: var(--bs-warning-text-emphasis);
    font-weight: 600;
}

.min-w-0[b-pq75r0lb79] {
    min-width: 0;
}

/* Colonne de la miniature, collée en haut pendant le défilement des familles (lg et plus), sous l'en-tête collant d'AdminLTE
   (63 px mesurés) : à 1rem, son titre passait dessous. */
.tp-colonne-apercu[b-pq75r0lb79] {
    position: sticky;
    top: calc(63px + 1rem);
}

/* Miniature A4 : tout en pourcentages de la page. Papier blanc quel que soit le thème (c'est le rendu d'impression). */
.tp-page[b-pq75r0lb79] {
    position: relative;
    width: 100%;
    max-width: 20rem;
    margin: 0 auto;
    aspect-ratio: 210 / 297;
    background-color: #ffffff;
    box-shadow: 0 1px 6px rgba(0, 0, 0, .18);
    overflow: hidden;
}

.tp-zone[b-pq75r0lb79] {
    position: absolute;
    outline: 1px dashed #9aa4b0;
}

.tp-bande[b-pq75r0lb79] {
    position: absolute;
    left: 0;
    right: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    /* Papier blanc dans les deux thèmes : le navy de la palette (token d'app.css, A1), jamais en dur. */
    background-color: color-mix(in srgb, var(--creagidem-navy) 12%, transparent);
    color: var(--creagidem-navy);
    font-size: .7rem;
    font-weight: 600;
}

/* Lignes de texte figurées du corps. */
.tp-corps[b-pq75r0lb79] {
    position: absolute;
    left: 4%;
    right: 4%;
    background-image: repeating-linear-gradient(to bottom, #d5d9de 0, #d5d9de 3px, transparent 3px, transparent 9px);
}

.tp-tampon[b-pq75r0lb79] {
    position: absolute;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    outline: 2px dashed var(--creagidem-accent);
}

.tp-tampon img[b-pq75r0lb79] {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.tp-tampon.repris[b-pq75r0lb79] {
    outline-color: #9aa4b0;
}

.tp-tampon.repris img[b-pq75r0lb79] {
    filter: grayscale(1);
    opacity: .6;
}

/* Rectangle hors de la zone imprimable : refusé à l'enregistrement (tampon propre), signalé (tampon général repris par une
   agence aux marges plus grandes, ADR-0122 déc. 3). */
.tp-tampon.dehors[b-pq75r0lb79] {
    outline: 2px solid var(--bs-danger);
}

/* Modales pilotées par état (D1c) : rien ne verrouille le défilement de la page. */
.tp-modale[b-pq75r0lb79],
.tp-modale .modal-body[b-pq75r0lb79] {
    overscroll-behavior: contain;
}
/* /Components/Pages/Configuration/TextesEditions.razor.rz.scp.css */
/* Écran « Textes, lettres et CGV » (prompt T1). Couleurs et défilement des onglets : classes partagées .onglets-marque et
   .onglets-defilants d'app.css, celles du dossier client (ADR-0124 décision 4). */

/* Sous-onglets des textes : plus petits ; sur une ligne, défilants comme les onglets (mobile). */
.te-sous-onglets .nav-link[b-33u1nsxvpf] {
    padding: .25rem .75rem;
    font-size: .875rem;
}

/* Cadres « Complément "Signature du Client" (DGT) » et « Pour le compte de » (cadres du legacy). */
.te-groupe[b-33u1nsxvpf] {
    padding: .75rem 1rem 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.te-legende[b-33u1nsxvpf] {
    float: none;
    width: auto;
    margin-bottom: .5rem;
    padding: 0 .25rem;
    font-size: .875rem;
    font-weight: 600;
    color: var(--creagidem-texte-marque);
}

.te-champ-court[b-33u1nsxvpf] {
    min-width: 12rem;
    max-width: 22rem;
}
/* /Components/Pages/Configuration/TypesDemenageurs.razor.rz.scp.css */
/* ADR-0073 décision 1 : même retenue de la molette que LookupCrudDialog.razor.css (ADR-0072 décision 2) — la molette
   défile le contenu de la modale, jamais la page de fond (nos modales pilotées par état n'utilisent pas le JS Modal de
   Bootstrap qui verrouillerait le défilement du <body>, skill ui-blazor règle 9). CSS isolé : ne s'applique qu'aux
   modales de cet écran (formulaire et message box). */
.modal[b-iw5xvdcduc],
.modal-body[b-iw5xvdcduc] {
    overscroll-behavior: contain;
}
/* /Components/Pages/Configuration/Utilisateurs.razor.rz.scp.css */
/* ADR-0072 décision 2 / ADR-0073 décision 1, règle 9 du skill ui-blazor : nos modales sont pilotées
   par état et n'utilisent pas le JS Modal de Bootstrap — rien ne verrouille le défilement de la page
   de fond. La molette doit défiler le contenu de la modale, jamais la page derrière. CSS isolé :
   ne s'applique qu'aux modales de cet écran (confirmation de suppression et M.Passe). */
.modal[b-nbon3uv24r],
.modal-body[b-nbon3uv24r] {
    overscroll-behavior: contain;
}

/* Pastille « connecté » (ADR-0080 décision 3) : un simple point, pas un badge à texte — le libellé
   est dans l'info-bulle et dans un .visually-hidden pour les lecteurs d'écran. */
.utilisateur-pastille-connecte[b-nbon3uv24r] {
    width: .5rem;
    height: .5rem;
    padding: 0;
    flex: 0 0 auto;
}
/* /Components/Pages/CourrierClientDetail.razor.rz.scp.css */
/* Saisie d'un courrier (prompt 4 des courriers) : mêmes repères et panneau de fusion que l'éditeur d'un modèle
   (ModeleCourrierDetail.razor.css). Couleurs par tokens d'app.css (A1, A9). */
.cc-emplacement[b-xhtwtg8b43] {
    padding: 0.6rem;
    border: 2px dashed var(--creagidem-accent);
    border-radius: var(--bs-border-radius);
    color: var(--creagidem-texte-marque);
    font-weight: 600;
    text-align: center;
}

.cc-fusion[b-xhtwtg8b43] {
    max-height: 70vh;
    overflow-y: auto;
    overscroll-behavior: contain;
}

@media (min-width: 1200px) {
    .cc-fusion[b-xhtwtg8b43] {
        position: sticky;
        top: calc(63px + 1rem);
    }
}

.cc-historique[b-xhtwtg8b43] {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 0.75rem;
    row-gap: 0.1rem;
}

.cc-historique dt[b-xhtwtg8b43] {
    font-weight: 600;
}

.cc-historique dd[b-xhtwtg8b43] {
    margin: 0;
}

.cc-modale .modal[b-xhtwtg8b43],
.cc-modale .modal-body[b-xhtwtg8b43] {
    overscroll-behavior: contain;
}

.min-w-0[b-xhtwtg8b43] {
    min-width: 0;
}
/* /Components/Pages/DevisDgtDetail.razor.rz.scp.css */
/* Mise en page seulement (aucune couleur : palette dans app.css, skill ui-blazor A1). */

/* Les 7 onglets du devis sur une seule ligne, défilant horizontalement dans leur propre conteneur sur un écran étroit
   (skill A3 : jamais de défilement horizontal de la page). */
.devis-onglets[b-ibgitl8ca3] {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: thin;
}

.devis-onglets .nav-link[b-ibgitl8ca3] {
    white-space: nowrap;
}

/* Étage et sous-sol : deux petits champs côte à côte (« RdC + [n] - [n] » de la capture). */
.devis-etage[b-ibgitl8ca3] {
    width: 5.5rem;
}

/* Onglet Moyens (captures « moyens défaut / perso ») : libellé, valeur par défaut, puis colonne Perso quand elle est
   affichée. Les valeurs restent alignées à droite ; la grille se resserre en mobile (375 px) sans déborder. */
.moyens-grille[b-ibgitl8ca3] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 7rem;
    column-gap: 0.75rem;
    row-gap: 0.35rem;
    align-items: center;
}

.moyens-avec-perso .moyens-grille[b-ibgitl8ca3] {
    grid-template-columns: minmax(0, 1fr) 6.5rem 6.5rem;
}

.moyens-valeur[b-ibgitl8ca3] {
    text-align: right;
    white-space: nowrap;
}

.moyens-valeur-saisie[b-ibgitl8ca3],
.moyens-perso[b-ibgitl8ca3] {
    min-width: 0;
}

.moyens-perso.moyens-valeur[b-ibgitl8ca3],
.moyens-perso:not(input)[b-ibgitl8ca3] {
    text-align: right;
}

.moyens-nombre[b-ibgitl8ca3] {
    width: 4.5rem;
}

.moyens-marge[b-ibgitl8ca3] {
    width: 8rem;
}

.moyens-aide[b-ibgitl8ca3] {
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    line-height: 1;
}

.affectation-liste[b-ibgitl8ca3] {
    max-height: 12rem;
    overflow-y: auto;
}

@media (max-width: 575.98px) {
    .moyens-grille[b-ibgitl8ca3] {
        grid-template-columns: minmax(0, 1fr) 6rem;
        column-gap: 0.5rem;
    }

    .moyens-avec-perso .moyens-grille[b-ibgitl8ca3] {
        grid-template-columns: minmax(0, 1fr) 5.25rem 5.25rem;
    }
}

/* Calculateur VA/VDB (capture « calculateur militaire ») : libellé à gauche, valeur à droite, une ligne par donnée ; la
   modale défile dans son corps (modal-dialog-scrollable) sans entraîner la page (skill D1c). */
.vavdb-ligne[b-ibgitl8ca3] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 7rem;
    column-gap: 0.75rem;
    align-items: center;
    min-height: 2rem;
}

.vavdb-montant[b-ibgitl8ca3] {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.modal[b-ibgitl8ca3],
.modal-body[b-ibgitl8ca3] {
    overscroll-behavior: contain;
}

/* Commande (prompt devis reprise R6) : message d'ouverture du legacy sur deux lignes (ERREUR_CDE_ACHEVEE + RC + ERREUR_DEVIS_MODIF), date de
   clôture à la largeur d'une date, totaux des achats en chiffres alignés. */
.commande-message-ouverture[b-ibgitl8ca3] {
    white-space: pre-line;
}

.commande-date-cloture[b-ibgitl8ca3] {
    max-width: 11rem;
}

.commande-total-liste .input-group[b-ibgitl8ca3] {
    max-width: 12rem;
}

.achats-totaux td[b-ibgitl8ca3] {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
/* /Components/Pages/DossierClient.razor.rz.scp.css */
/* Dossier client (ADR-0095). Palette : uniquement les variables d'app.css (règle A1), aucune couleur en dur, et
   aucune règle [data-bs-theme="dark"] locale : un texte de marque lit --creagidem-texte-marque, une surface
   --creagidem-surface, qu'app.css définit pour chaque thème (ADR-0098 décision 9).
   Les composants du dossier (Components/Dossier) sont rendus par cette page : leurs classes sont atteintes par
   ::deep, le CSS isolé ne traversant pas les composants enfants. */

.dossier-titre[b-o2x5qw50yk] {
    overflow-wrap: anywhere;
}

/* ---- En-tête : Ordre, Rafraîchir, Solde, boutons ---------------------------------------------------------- */

.dossier-barre-entete[b-o2x5qw50yk] {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: .75rem;
}

.dossier-groupe[b-o2x5qw50yk] {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: .25rem;
    padding: .35rem .6rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.dossier-groupe-titre[b-o2x5qw50yk] {
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bs-secondary-color);
    font-weight: 600;
}

.dossier-solde[b-o2x5qw50yk] {
    min-width: 9rem;
    text-align: end;
}

.dossier-barre-entete[b-o2x5qw50yk]  .dossier-actions-entete {
    flex: 1 1 auto;
    padding: 0;
    border: 0;
}

/* ---- Boutons d'action (icône au-dessus du libellé, comme la capture) -------------------------------------- */

[b-o2x5qw50yk] .dossier-action {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .15rem;
    min-width: 3.75rem;
    padding: .35rem .45rem;
    border: 1px solid transparent;
    border-radius: var(--bs-border-radius);
    background: transparent;
    color: var(--creagidem-texte-marque);
    text-decoration: none;
    line-height: 1.1;
    transition: background-color .15s ease, border-color .15s ease, transform .15s ease;
}

[b-o2x5qw50yk] .dossier-action .bi {
    font-size: 1.35rem;
}

[b-o2x5qw50yk] .dossier-action-libelle {
    font-size: .75rem;
    white-space: nowrap;
    color: var(--bs-body-color);
}

[b-o2x5qw50yk] a.dossier-action:hover,
[b-o2x5qw50yk] button.dossier-action:hover,
[b-o2x5qw50yk] a.dossier-action:focus-visible,
[b-o2x5qw50yk] button.dossier-action:focus-visible {
    background-color: var(--bs-tertiary-bg);
    border-color: var(--creagidem-accent);
    transform: translateY(-1px);
}

[b-o2x5qw50yk] .dossier-action.disabled {
    opacity: .45;
    cursor: not-allowed;
}

[b-o2x5qw50yk] .dossier-cadenas {
    font-size: .7rem;
    color: var(--creagidem-accent);
}

[b-o2x5qw50yk] .dossier-actions {
    display: flex;
    align-items: stretch;
    gap: .25rem;
    padding: .35rem 0 .5rem;
    overflow-x: auto;
    scrollbar-width: thin;
}

/* Barre d'un onglet : actions (qui défilent en largeur) puis « Exporter », hors de la zone qui défile - un menu dans un conteneur à
   overflow-x: auto est rogné (overflow-y devient auto ; ADR-0223 déc. 6, mesuré au prompt Exploitation 3). */
[b-o2x5qw50yk] .dossier-barre-onglet {
    display: flex;
    align-items: center;
    gap: .5rem;
}

[b-o2x5qw50yk] .dossier-barre-onglet > .dossier-actions {
    flex: 1 1 auto;
    min-width: 0;
}

[b-o2x5qw50yk] .dossier-export {
    flex: 0 0 auto;
}

/* ---- Bandeau des 4 tiroirs ------------------------------------------------------------------------------ */

.dossier-tiroirs[b-o2x5qw50yk] {
    display: flex;
    gap: .5rem;
    overflow-x: auto;
    scrollbar-width: thin;
    padding-bottom: .15rem;
}

.dossier-tiroir-bouton[b-o2x5qw50yk] {
    flex: 1 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    padding: .6rem 1rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    background-color: var(--creagidem-surface);
    color: var(--creagidem-texte-marque);
    font-weight: 600;
    white-space: nowrap;
    transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}

.dossier-tiroir-bouton .bi[b-o2x5qw50yk] {
    font-size: 1.35rem;
    color: var(--creagidem-accent);
}

.dossier-tiroir-bouton:hover[b-o2x5qw50yk] {
    box-shadow: var(--bs-box-shadow-sm);
}

.dossier-tiroir-bouton.active[b-o2x5qw50yk] {
    background-color: var(--creagidem-navy);
    border-color: var(--creagidem-navy);
    color: var(--bs-white);
}

/* ---- Onglets et liste ---------------------------------------------------------------------------------- */

/* Couleurs et défilement de la rangée d'onglets : classes partagées .onglets-marque / .onglets-defilants d'app.css
   (ADR-0124 décision 4), posées par OngletsTiroir. */

[b-o2x5qw50yk] .dossier-compteur {
    background-color: var(--creagidem-navy);
    color: var(--bs-white);
    font-weight: 600;
}

[b-o2x5qw50yk] .dossier-grille-conteneur {
    max-height: 60vh;
    overflow: auto;
    position: relative;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

[b-o2x5qw50yk] .dossier-grille {
    font-size: .85rem;
}

[b-o2x5qw50yk] .dossier-grille thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: var(--bs-card-bg);
    color: var(--creagidem-texte-marque);
    white-space: nowrap;
    font-weight: 600;
    box-shadow: inset 0 -1px 0 var(--bs-border-color);
}

[b-o2x5qw50yk] .dossier-grille td {
    white-space: nowrap;
    max-width: 28rem;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
}

[b-o2x5qw50yk] .dossier-grille .form-check-input {
    margin-top: 0;
}

[b-o2x5qw50yk] .dossier-grille tbody tr.dossier-ligne-active > td {
    background-color: var(--bs-primary-bg-subtle);
    box-shadow: inset 0 0 0 transparent;
}

[b-o2x5qw50yk] .dossier-grille tbody tr.dossier-ligne-active > td:first-child {
    box-shadow: inset 3px 0 0 var(--creagidem-accent);
}

[b-o2x5qw50yk] .dossier-grille tbody tr:focus-visible {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: -2px;
}

[b-o2x5qw50yk] .dossier-date-limite {
    width: auto;
}

@media (prefers-reduced-motion: reduce) {
    [b-o2x5qw50yk] .dossier-action,
    .dossier-tiroir-bouton[b-o2x5qw50yk] {
        transition: none;
    }
}

@media (max-width: 767.98px) {
    .dossier-tiroir-bouton[b-o2x5qw50yk] {
        flex: 0 0 auto;
        padding: .5rem .75rem;
    }

    .dossier-solde[b-o2x5qw50yk] {
        min-width: 0;
    }

    [b-o2x5qw50yk] .dossier-grille-conteneur {
        max-height: 55vh;
    }
}
/* /Components/Pages/ExploitationDgt.razor.rz.scp.css */
/* Exploitation d'une commande DGT (prompt Exploitation 2b) : mise en page seulement - couleurs par les jetons d'app.css et les classes de
   Bootstrap (ui-blazor A1, A9 : aucune règle de couleur propre au thème sombre ici). */

.exploitation-entete[b-0z24bwgh4k] {
    min-width: 0;
}

.exploitation-message[b-0z24bwgh4k] {
    white-space: pre-line;
}

.exploitation-icone[b-0z24bwgh4k] {
    font-size: 1.15rem;
    line-height: 1;
}

.exploitation-ligne-icone[b-0z24bwgh4k] {
    display: inline-flex;
    width: 1.5rem;
    justify-content: center;
}

.exploitation-ligne[b-0z24bwgh4k] {
    background-color: transparent;
}

.exploitation-ligne-action[b-0z24bwgh4k] {
    border-radius: var(--bs-border-radius);
    padding: .25rem .25rem !important;
}

.exploitation-ligne-action:hover[b-0z24bwgh4k],
.exploitation-ligne-action:focus-visible[b-0z24bwgh4k] {
    background-color: var(--bs-tertiary-bg);
}

.exploitation-ligne-inactive[b-0z24bwgh4k] {
    cursor: default;
}

.exploitation-valeur[b-0z24bwgh4k] {
    text-align: end;
    overflow-wrap: anywhere;
}

/* Éclair : l'éclair du legacy, en accent de la marque. */
.exploitation-eclair-icone[b-0z24bwgh4k] {
    color: var(--creagidem-accent);
}

.exploitation-icone-planning[b-0z24bwgh4k] {
    font-size: 2.25rem;
    line-height: 1;
}

.exploitation-numero-ligne[b-0z24bwgh4k] {
    min-width: 2.25rem;
    justify-content: center;
}

/* Modales D1 sans le JS de Bootstrap : rien ne verrouille le défilement de la page (ui-blazor D1 c). */
.exploitation-modale[b-0z24bwgh4k],
.exploitation-modale .modal-body[b-0z24bwgh4k] {
    overscroll-behavior: contain;
}

/* Retour d'une action, fixé en bas de l'écran : lisible à 375 px même quand l'action est loin du haut de la page. */
.exploitation-retour-action[b-0z24bwgh4k] {
    position: fixed;
    left: 50%;
    bottom: 1rem;
    transform: translateX(-50%);
    width: min(36rem, calc(100vw - 2rem));
    z-index: 1060;
}

.exploitation-ligne-corps[b-0z24bwgh4k] {
    min-width: 0;
}

.exploitation-ligne-lecture[b-0z24bwgh4k] {
    padding: .25rem;
    cursor: default;
}

/* Boutons Début / Fin des dates bloquées : sous le libellé, alignés sur son texte. */
.exploitation-dates-boutons[b-0z24bwgh4k] {
    padding-left: 2rem;
}

/* Moyens (prompt Exploitation 3). */
.min-w-0[b-0z24bwgh4k] {
    min-width: 0;
}

/* Bouton « maison » de la société exécutante : la maison du legacy, en accent de la marque. */
.exploitation-maison-icone[b-0z24bwgh4k] {
    color: var(--creagidem-accent);
}

.exploitation-materiels-nombre[b-0z24bwgh4k] {
    width: 7rem;
}

.exploitation-materiels-recuperer[b-0z24bwgh4k] {
    width: 7.5rem;
}

.exploitation-materiels-champ[b-0z24bwgh4k] {
    max-width: 6rem;
}

/* Véhicules et personnel (prompt Exploitation 3b) : emplacements et puces des affectés ; le soulignement des zones pendant un glisser est dans
   ZoneGlisser.razor.css. */
.exploitation-emplacement[b-0z24bwgh4k] {
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: .5rem;
    background-color: var(--creagidem-surface);
}

.exploitation-case[b-0z24bwgh4k] {
    min-height: 2.5rem;
    border: 1px dashed var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: .25rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: .25rem;
}

.exploitation-demenageurs[b-0z24bwgh4k] {
    min-height: 6rem;
    justify-content: flex-start;
}

.exploitation-case-vide[b-0z24bwgh4k] {
    color: var(--bs-secondary-color);
    font-size: .875em;
    font-style: italic;
    padding: .25rem .25rem;
}

.moyen-puce[b-0z24bwgh4k] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
    padding: .3rem .5rem;
    background-color: var(--bs-body-bg);
}

.moyen-puce-libelle[b-0z24bwgh4k] {
    flex: 1 1 6rem;
    min-width: 6rem;
    overflow-wrap: anywhere;
}

/* Dans une puce : libellé et croix sur la première ligne, marques (hors liste, occupé, rôle) dessous quand la place manque. */
.moyen-puce > button[b-0z24bwgh4k] {
    order: 1;
}

.moyen-puce > .badge[b-0z24bwgh4k] {
    order: 2;
    white-space: normal;
    text-align: start;
}
/* /Components/Pages/Home.razor.rz.scp.css */
/* Tableau de bord (prompt Tableau de bord 2). Grille gridstack (feuille de la bibliothèque chargée par le module) ; ce qui est posé ici
   l'est sur les éléments rendus par la page (attribut d'isolation) ou, par ::deep, sur ceux que gridstack ajoute (poignée, ombre de
   placement). Couleurs : tokens du thème seulement (skill ui-blazor A1, A9). */

/* Un widget n'apparaît qu'une fois placé par gridstack (attribut gs-x posé par lui) : jamais empilé en haut à gauche entre son rendu et
   sa synchronisation. */
.grid-stack > .grid-stack-item:not([gs-x])[b-4byvnsu5s6] {
    visibility: hidden;
}

/* Le widget fait défiler son propre corps : pas de second ascenseur sur le contenu de l'élément de gridstack. */
.grid-stack > .grid-stack-item > .grid-stack-item-content[b-4byvnsu5s6] {
    overflow: hidden;
}

/* Mode « Personnaliser » : widgets cerclés de l'accent, barre de titre en poignée (bureau seulement : sous 768 px, rien ne se déplace). */
.tdb-personnaliser[b-4byvnsu5s6]  .tdb-widget {
    outline: 2px dashed var(--creagidem-accent);
    outline-offset: -2px;
}

@media (min-width: 768px) {
    .tdb-personnaliser:not(.tdb-etroit)[b-4byvnsu5s6]  .tdb-poignee {
        cursor: move;
    }

    /* Glisser un widget ne sélectionne pas le texte de la page (mesuré sur capture). */
    .tdb-personnaliser:not(.tdb-etroit) .grid-stack-item[b-4byvnsu5s6] {
        user-select: none;
    }
}

.tdb-grille-cadre[b-4byvnsu5s6]  .grid-stack-placeholder > .placeholder-content {
    background-color: var(--bs-secondary-bg);
    border: 2px dashed var(--creagidem-accent);
    border-radius: var(--bs-border-radius);
}

/* Widget saisi : aucune transition pendant le geste. gridstack mesure le widget (getBoundingClientRect) pour calculer sa case ; sous Firefox, une
   transition résiduelle (durée calculée 0.00001s relevée) laissait la mesure en retard sur le pointeur et le widget ne changeait pas de case
   (mesuré au harnais, Firefox 157). */
.grid-stack > .grid-stack-item.ui-draggable-dragging[b-4byvnsu5s6],
.grid-stack > .grid-stack-item.ui-resizable-resizing[b-4byvnsu5s6] {
    transition: none !important;
}

.tdb-grille-cadre[b-4byvnsu5s6]  .ui-draggable-dragging > .grid-stack-item-content,
.tdb-grille-cadre[b-4byvnsu5s6]  .ui-resizable-resizing > .grid-stack-item-content {
    box-shadow: var(--bs-box-shadow-lg);
    opacity: .9;
}

/* Visite guidée : l'élément visé passe au-dessus et une ombre portée assombrit le reste de la page (sans calcul de position en JS). */
.tdb-visite-cible[b-4byvnsu5s6] {
    position: relative;
    z-index: 1061;
    border-radius: var(--bs-border-radius);
    box-shadow: 0 0 0 4px var(--creagidem-accent), 0 0 0 100vmax rgba(0, 0, 0, .45);
}

/* Panneau « Ajouter un widget » : tuiles titre + grande icône pâle, dans l'esprit de la fenêtre de choix du legacy. */
.tdb-catalogue[b-4byvnsu5s6] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
    gap: .75rem;
}

.tdb-tuile[b-4byvnsu5s6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    min-height: 9rem;
    padding: 1rem .75rem;
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius-lg);
    background-color: var(--bs-body-bg);
    color: var(--creagidem-texte-marque);
    text-align: center;
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

.tdb-tuile:hover[b-4byvnsu5s6],
.tdb-tuile:focus-visible[b-4byvnsu5s6] {
    border-color: var(--creagidem-accent);
    box-shadow: 0 0 0 .2rem rgba(var(--bs-secondary-rgb), .35);
    outline: none;
}

.tdb-tuile-titre[b-4byvnsu5s6] {
    font-weight: 600;
}

.tdb-tuile[b-4byvnsu5s6]  .tdb-tuile-icone {
    color: var(--creagidem-accent);
    opacity: .7;
}
/* /Components/Pages/PersonnalisationTheme.razor.rz.scp.css */
/* Personnalisation du thème (ADR-0100). Aucune couleur ici : la pastille reçoit ses couleurs de l'option qu'elle
   montre (style en ligne, valeurs calculées en C#), le reste lit les tokens d'app.css (règle A1). */

.theme-pastille[b-61fgthecdr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-width: 3rem;
    height: 2.25rem;
    padding: 0 .5rem;
    border: 2px solid;
    border-radius: var(--bs-border-radius);
    font-weight: 700;
}
/* /Components/Shared/BootstrapAutocomplete.razor.rz.scp.css */
.bootstrap-autocomplete-suggestions[b-w9qdk9xfk0] {
    top: 100%;
    left: 0;
    z-index: 1055;
    max-height: 220px;
    overflow-y: auto;
}

.bootstrap-autocomplete-suggestions .list-group-item[b-w9qdk9xfk0] {
    cursor: pointer;
}
/* /Components/Shared/CarteDevis.razor.rz.scp.css */
/* Carte du devis (ADR-0110 déc. 3). Couleurs lues par les tokens d'app.css (skill ui-blazor A1 / A9), aucune valeur
   locale. Les marqueurs et le tracé sont créés par Leaflet hors du rendu Blazor : ::deep depuis le conteneur. */

.carte-devis-conteneur[b-xwxuln9cqo] {
    height: 360px;
    border-radius: var(--bs-border-radius);
    border: 1px solid var(--bs-border-color);
    overflow: hidden;
    z-index: 0; /* les volets de Leaflet (z-index 400+) restent sous les menus et modales de la page */
    position: relative;
}

@media (max-width: 575.98px) {
    .carte-devis-conteneur[b-xwxuln9cqo] {
        height: 280px;
    }
}

/* Pastille étiquetée, pointe vers la position : ancrée par sa base (iconAnchor 0,0 côté JS). */
.carte-devis[b-xwxuln9cqo]  .carte-devis-icone {
    background: transparent;
    border: 0;
}

.carte-devis[b-xwxuln9cqo]  .carte-devis-marqueur {
    position: absolute;
    left: 0;
    top: 0;
    transform: translate(-50%, calc(-100% - 8px));
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35);
}

.carte-devis[b-xwxuln9cqo]  .carte-devis-marqueur::after {
    content: "";
    position: absolute;
    left: 50%;
    bottom: -7px;
    transform: translateX(-50%);
    border-left: 7px solid transparent;
    border-right: 7px solid transparent;
    border-top: 8px solid var(--carte-devis-couleur);
}

.carte-devis[b-xwxuln9cqo]  .carte-devis-marqueur-chgt {
    --carte-devis-couleur: var(--creagidem-navy);
    background: var(--creagidem-navy);
    color: var(--bs-white);
}

.carte-devis[b-xwxuln9cqo]  .carte-devis-marqueur-liv {
    --carte-devis-couleur: var(--creagidem-accent);
    background: var(--creagidem-accent);
    color: var(--creagidem-navy);
}

.carte-devis[b-xwxuln9cqo]  .carte-devis-trace {
    stroke: var(--creagidem-navy);
}

/* Vol d'oiseau (ADR-0236 déc. 3) : segment droit, pointillé (dashArray côté JS), couleur d'accent - distinct du tracé routier. */
.carte-devis[b-xwxuln9cqo]  .carte-devis-trace-vol {
    stroke: var(--creagidem-accent);
}

.carte-devis-pastille[b-xwxuln9cqo] {
    display: inline-block;
    width: 0.65rem;
    height: 0.65rem;
    border-radius: 50%;
    margin-right: 0.3rem;
    vertical-align: baseline;
}

.carte-devis-pastille-chgt[b-xwxuln9cqo] {
    background: var(--creagidem-navy);
}

.carte-devis-pastille-liv[b-xwxuln9cqo] {
    background: var(--creagidem-accent);
}

/* Liseré : la pastille navy reste visible sur le fond sombre. */
.carte-devis-pastille[b-xwxuln9cqo] {
    box-shadow: 0 0 0 1px var(--bs-border-color);
}

/* Société (itinéraire « société → chargement » de la visite) : neutre, distinct du chargement et de la livraison. */
.carte-devis[b-xwxuln9cqo]  .carte-devis-marqueur-soc {
    --carte-devis-couleur: var(--bs-secondary);
    background: var(--bs-secondary);
    color: var(--bs-white);
}

.carte-devis-pastille-soc[b-xwxuln9cqo] {
    background: var(--bs-secondary);
}
/* /Components/Shared/ChiffrageForfait5Postes.razor.rz.scp.css */
/* Aucune règle propre : ce fichier existe pour que le composant partage la portée CSS de la fiche du devis (CssScope de CreaNet.csproj, lot
   DH1) - ses éléments portent le même attribut que ceux de DevisDgtDetail et les règles de DevisDgtDetail.razor.css s'y appliquent, comme quand
   l'onglet Chiffrage était dans la page. Une règle de mise en page de l'onglet s'écrit ici ou dans la feuille de la fiche, jamais en couleur (A1). */
/* /Components/Shared/ChiffrageIndustriel.razor.rz.scp.css */
/* Aucune règle propre : ce fichier existe pour que le composant partage la portée CSS de la fiche du devis (CssScope de CreaNet.csproj, lot
   DH2, comme ChiffrageForfait5Postes au lot DH1) - ses éléments portent le même attribut que ceux de DevisDgtDetail et les règles de
   DevisDgtDetail.razor.css s'y appliquent. Une règle de mise en page de l'onglet s'écrit ici ou dans la feuille de la fiche, jamais en couleur
   (A1). */
/* /Components/Shared/Configuration/LookupCrudDialog.razor.rz.scp.css */
/* ADR-0072 décision 2 : la molette défile le contenu de la modale, jamais la page de fond.
   Bootstrap verrouille normalement le défilement du <body> via son JS Modal, que nos modales pilotées
   par état n'utilisent pas (skill ui-blazor, règle 9) : on retient donc le défilement ici. Le fond
   (.modal, position fixed) et le corps de la modale ne le laissent pas « chaîner » vers la page,
   même en fin de course. */
.modal[b-0p7wf03pb4],
.modal-body[b-0p7wf03pb4] {
    overscroll-behavior: contain;
}
/* /Components/Shared/ExportListe.razor.rz.scp.css */
/* Menu contextuel maison de l'export (ADR-0090). Aucune couleur ici : le menu réutilise
   `.dropdown-menu` de Bootstrap, donc la palette d'app.css (règle A1). Ce fichier ne porte que le
   positionnement, que Bootstrap ne sait pas faire pour un menu posé au curseur. */

/* Fond transparent : il capte le clic ailleurs et porte le focus (donc la touche Échap). Au-dessus
   des modales de Bootstrap (1055) pour ne jamais se retrouver dessous. */
.export-fond[b-utrkoqz9ew] {
    position: fixed;
    inset: 0;
    z-index: 1080;
    outline: none;
}

/* Coordonnées du curseur (MouseEventArgs.ClientX/ClientY), donc repère de la fenêtre : `fixed`.
   Les `min()` gardent le menu entier à l'écran quand le clic droit tombe près du bord droit ou du
   bas - c'est du calcul CSS, pas une mesure JS de la taille du menu. */
.export-menu[b-utrkoqz9ew] {
    position: fixed;
    display: block;
    min-width: 12rem;
    left: min(var(--export-x, 0px), calc(100vw - 13rem));
    top: min(var(--export-y, 0px), calc(100vh - 7rem));
}
/* /Components/Shared/FenetreArrhesCommande.razor.rz.scp.css */
/* Fenêtre des arrhes de la commande (prompt devis reprise R7a) : modale D1 sans le JS de Bootstrap - rien ne verrouille le défilement de la page
   (skill ui-blazor D1 c). */
.arrhes-commande[b-ofny9nsddi],
.arrhes-commande .modal-body[b-ofny9nsddi] {
    overscroll-behavior: contain;
}

/* Numéro du devis ou du justificatif en couleur de marque, comme la fenêtre de transformation (jeton du thème). */
.arrhes-commande-numero[b-ofny9nsddi] {
    color: var(--creagidem-texte-marque);
}
/* /Components/Shared/FenetreMailDocument.razor.rz.scp.css */
/* Fenêtre de mail (prompt Mail interne 2) : grande modale, défilement contenu (le JS Modal de Bootstrap n'est pas utilisé, rien ne
   verrouille la page - skill ui-blazor D1 c). Couleurs : tokens de l'application, aucune couleur locale (A1, A9). */
.fenetre-mail[b-5ijidvc938],
.fenetre-mail .modal-body[b-5ijidvc938],
.fenetre-mail-confirmation[b-5ijidvc938] {
    overscroll-behavior: contain;
}

/* Au-dessus de la fenêtre de mail. */
.fenetre-mail-confirmation[b-5ijidvc938] {
    z-index: 1065;
}

@media (min-width: 1200px) {
    .fenetre-mail-dialog[b-5ijidvc938] {
        max-width: min(1600px, 96vw);
    }
}

.fenetre-mail .modal-title[b-5ijidvc938] {
    min-width: 0;
}

/* Colonne des libellés (De, À, Cc, CCi, Objet, Signature) : largeur fixe, jamais coupée. */
.fenetre-mail-libelle[b-5ijidvc938] {
    width: 5.75rem;
    white-space: nowrap;
}

/* Lecteur du PDF (prompt Mail interne 2b) : barre rendue par le composant, pages posées par PDF.js dans .pdfViewer (feuille de la
   bibliothèque, wwwroot/lib/pdfjs). PDFViewer exige un conteneur en position absolue. Fond du cadre = surface secondaire du thème,
   pages blanches (couleurs du PDF) dans les deux thèmes. */
.lecteur-pdf[b-5ijidvc938] {
    display: flex;
    flex-direction: column;
    background-color: var(--bs-secondary-bg);
    overflow: hidden;
}

.lecteur-pdf-barre[b-5ijidvc938] {
    background-color: var(--bs-body-bg);
    min-height: 2.5rem;
}

.lecteur-pdf-zone[b-5ijidvc938] {
    position: relative;
    height: calc(100vh - 17.5rem);
    min-height: 380px;
}

@media (max-width: 991.98px) {
    .lecteur-pdf-zone[b-5ijidvc938] {
        height: calc(100vh - 18.5rem);
        min-height: 320px;
    }
}

.lecteur-pdf-conteneur[b-5ijidvc938] {
    position: absolute;
    inset: 0;
    overflow: auto;
    overscroll-behavior: contain;
}

.lecteur-pdf-conteneur:focus-visible[b-5ijidvc938] {
    outline: 2px solid var(--creagidem-texte-marque);
    outline-offset: -2px;
}

.lecteur-pdf-conteneur[b-5ijidvc938]  .page {
    box-shadow: var(--bs-box-shadow-sm);
}

/* Outils d'annotation (prompt Mail interne 2c) : seconde ligne de la barre. Le libellé d'un outil n'est écrit qu'en grand écran (info-bulle
   et aria-label partout). Au doigt (pointer: coarse), cibles d'au moins 40 px ; la ligne passe à la ligne, jamais de défilement horizontal. */
.lecteur-pdf-libelle-outil[b-5ijidvc938] {
    display: none;
    margin-left: 0.25rem;
}

@media (min-width: 1400px) {
    .lecteur-pdf-libelle-outil[b-5ijidvc938] {
        display: inline;
    }
}

/* Pastille de couleur : la couleur (écrite dans le PDF) vient de la palette fixe du composant, posée en variable ; bordure du thème pour
   qu'une pastille noire ou jaune clair reste visible en clair comme en sombre. */
.lecteur-pdf-couleur[b-5ijidvc938] {
    width: 1.5rem;
    height: 1.5rem;
    padding: 0;
    border-radius: 50%;
    border: 2px solid var(--bs-border-color);
    background-color: var(--lecteur-couleur);
}

.lecteur-pdf-couleur.active[b-5ijidvc938] {
    outline: 2px solid var(--creagidem-texte-marque);
    outline-offset: 2px;
}

.lecteur-pdf-couleur:focus-visible[b-5ijidvc938] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 2px;
}

.lecteur-pdf-taille[b-5ijidvc938] {
    width: auto;
}

/* Couleur personnalisée (prompt Mail interne 2d) : le nuancier natif couvre la pastille, invisible ; tant qu'aucune couleur n'est choisie,
   la pastille montre la roue des teintes (signe du nuancier, pas une couleur d'interface), ensuite la couleur choisie. */
.lecteur-pdf-couleur-perso[b-5ijidvc938] {
    position: relative;
    display: inline-block;
    flex: none;
    background: conic-gradient(red, yellow, lime, aqua, blue, magenta, red);
}

.lecteur-pdf-couleur-perso.choisie[b-5ijidvc938] {
    background: var(--lecteur-couleur);
}

.lecteur-pdf-couleur-perso input[type="color"][b-5ijidvc938] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    opacity: 0;
    cursor: pointer;
}

.lecteur-pdf-couleur-perso:focus-within[b-5ijidvc938] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 2px;
}

/* Filigrane (prompt Mail interne 2d) : panneau sous la barre, indicateur discret dans la barre. */
.lecteur-pdf-filigrane[b-5ijidvc938] {
    background-color: var(--bs-body-bg);
}

.lecteur-pdf-filigrane fieldset[b-5ijidvc938] {
    min-width: 0;
}

.lecteur-pdf-indicateur[b-5ijidvc938] {
    background-color: var(--creagidem-accent);
    color: var(--creagidem-navy);
    font-weight: 600;
}

@media (pointer: coarse) {
    .lecteur-pdf-outils .btn[b-5ijidvc938] {
        min-width: 2.5rem;
        min-height: 2.5rem;
    }

    .lecteur-pdf-couleur[b-5ijidvc938] {
        width: 2rem;
        height: 2rem;
    }

    .lecteur-pdf-taille[b-5ijidvc938] {
        min-height: 2.5rem;
    }

    #lecteur-filigrane[b-5ijidvc938],
    .lecteur-pdf-filigrane .btn[b-5ijidvc938] {
        min-width: 2.5rem;
        min-height: 2.5rem;
    }
}

/* Barre flottante d'une annotation sélectionnée (PDF.js) : seule la suppression est gardée - couleur par la barre de la fenêtre (palette
   fixe), pas de commentaire (non demandé, ADR-0160 déc. 6). */
.lecteur-pdf-conteneur[b-5ijidvc938]  .editToolbar :is(.basicColorPicker, .colorPicker, .comment, .divider) {
    display: none !important;
}

/* Après l'envoi : annotations visibles, plus modifiables. */
.lecteur-pdf-conteneur.lecteur-fige[b-5ijidvc938]  .annotationEditorLayer,
.lecteur-pdf-conteneur.lecteur-fige[b-5ijidvc938]  .annotationEditorLayer * {
    pointer-events: none !important;
}

/* Chargement et refus : au-dessus du cadre, centrés. */
.lecteur-pdf-etat[b-5ijidvc938] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background-color: var(--bs-secondary-bg);
    text-align: center;
}

/* Documents du PDF (prompt Mail interne 3) : sous la rédaction (mobile compris), une ligne par document - type, nom coupé par « … »,
   pages, ordre. Couleurs : tokens de l'application ; le document envoyé porte l'accent. */
.mail-documents[b-5ijidvc938] {
    background-color: var(--bs-body-bg);
}

.mail-documents-entete h6[b-5ijidvc938] {
    color: var(--creagidem-texte-marque);
}

.mail-documents-liste .list-group-item[b-5ijidvc938] {
    min-width: 0;
}

.mail-documents-nom[b-5ijidvc938] {
    min-width: 0;
}

.mail-documents-type[b-5ijidvc938] {
    flex: none;
    min-width: 4.25rem;
    border: 1px solid var(--bs-border-color);
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    font-weight: 600;
}

.mail-documents-type.origine[b-5ijidvc938] {
    border-color: var(--creagidem-accent);
    background-color: var(--creagidem-accent);
    color: var(--creagidem-navy);
}

.mail-documents label.btn:focus-within[b-5ijidvc938] {
    outline: 2px solid var(--creagidem-accent);
    outline-offset: 2px;
}

/* Téléphone : type et nom sur la première ligne, pages et ordre sur la seconde (le nom n'est plus réduit à quelques lettres). */
@media (max-width: 575.98px) {
    .mail-documents-liste .list-group-item[b-5ijidvc938] {
        flex-wrap: wrap;
        row-gap: 0.25rem;
    }

    .mail-documents-nom[b-5ijidvc938] {
        flex: 1 1 calc(100% - 5.25rem);
    }

    .mail-documents-liste [data-documents="pages"][b-5ijidvc938] {
        margin-left: auto;
    }
}

.mail-selecteur-liste .list-group-item[b-5ijidvc938] {
    cursor: pointer;
}

.mail-selecteur-liste .list-group-item.disabled[b-5ijidvc938] {
    cursor: default;
}

@media (pointer: coarse) {
    .mail-documents .btn[b-5ijidvc938] {
        min-width: 2.5rem;
        min-height: 2.5rem;
    }
}
/* /Components/Shared/TransformationDevisDgt.razor.rz.scp.css */
/* Fenêtre de transformation (prompt devis reprise R5c2) : modale D1 sans le JS de Bootstrap - rien ne verrouille le défilement de la page
   (skill ui-blazor D1 c). */
.transformation-devis[b-xgpdsj6dl6],
.transformation-devis .modal-body[b-xgpdsj6dl6] {
    overscroll-behavior: contain;
}

/* « Devis n° … » en couleur de marque, comme le titre du legacy (navy en clair, éclairci en sombre : jeton du thème). */
.transformation-devis-numero[b-xgpdsj6dl6] {
    color: var(--creagidem-texte-marque);
}
/* /Components/TableauDeBord/CadreWidgetTableauDeBord.razor.rz.scp.css */
/* Cadre commun des widgets du tableau de bord (prompt Tableau de bord 2). Le widget remplit sa case de la grille ; son corps défile quand le
   widget est petit. Couleurs : tokens du thème seulement (skill ui-blazor A1, A9) - aucune règle [data-bs-theme] ici. */
.tdb-widget[b-nvgf64m7i0] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin: 0;
    overflow: hidden;
}

.tdb-widget-entete[b-nvgf64m7i0] {
    flex: 0 0 auto;
    padding: .5rem .75rem;
}

.tdb-widget-entete h2[b-nvgf64m7i0] {
    color: var(--creagidem-texte-marque);
    /* Titre gardé lisible : sur un widget étroit (téléphone, widget de 3 colonnes), les actions passent à la ligne. */
    flex: 1 1 9rem;
    min-width: 0;
}

/* Le titre du catalogue garde sa place : le complément (collaborateur de l'agenda) se tronque d'abord ; un titre plus long que le widget
   (« Devis à relancer (Déménagement) » à sa taille minimale, mesuré au prompt Tableau de bord 4) se tronque ensuite, sans passer sous les
   boutons. */
.tdb-widget-titre[b-nvgf64m7i0] {
    flex-shrink: 1;
    min-width: 0;
    max-width: 100%;
}

.tdb-widget-sous[b-nvgf64m7i0] {
    flex-shrink: 100;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tdb-widget-bouton[b-nvgf64m7i0] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: .25rem .4rem;
    line-height: 1;
}

.tdb-widget-barre[b-nvgf64m7i0] {
    flex: 0 0 auto;
    border-bottom: 1px solid var(--bs-border-color);
}

.tdb-widget-corps[b-nvgf64m7i0] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.tdb-widget-etat[b-nvgf64m7i0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 100%;
}

/* Squelette : barres grises pleine largeur (comme les lignes squelettes des listes, ui-blazor B4), pulsation sauf mouvement réduit. */
.tdb-squelette[b-nvgf64m7i0] {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.tdb-squelette-barre[b-nvgf64m7i0] {
    display: block;
    height: .8rem;
    border-radius: .25rem;
    background-color: var(--bs-secondary-bg);
}

@media (prefers-reduced-motion: no-preference) {
    .tdb-squelette-barre[b-nvgf64m7i0] {
        animation: tdb-pulsation-b-nvgf64m7i0 1.4s ease-in-out infinite;
    }

    .tdb-tourne[b-nvgf64m7i0] {
        animation: tdb-rotation-b-nvgf64m7i0 1s linear infinite;
    }
}

@keyframes tdb-pulsation-b-nvgf64m7i0 {
    0%, 100% { opacity: 1; }
    50% { opacity: .45; }
}

@keyframes tdb-rotation-b-nvgf64m7i0 {
    to { transform: rotate(360deg); }
}
/* /Components/TableauDeBord/ChoixTriAlarmesTableauDeBord.razor.rz.scp.css */
/* Choix du tri des widgets d'alarmes (prompt Tableau de bord 5) : liste à sa largeur, comme les filtres des widgets de devis. */
.tdb-alarmes-tri .form-select[b-14vg1voc96] {
    width: auto;
}
/* /Components/TableauDeBord/ListeAlarmesTableauDeBord.razor.rz.scp.css */
/* Sections des widgets d'alarmes (prompt Tableau de bord 2). Niveaux par tokens Bootstrap (clair et sombre : les variantes -subtle et
   -text-emphasis sont redéclarées par Bootstrap en sombre), doublés d'une icône et d'un libellé. */
.tdb-alarmes + .tdb-alarmes[b-7p7eqtp6jk] {
    border-top: 1px solid var(--bs-border-color);
}

.tdb-alarmes-titre[b-7p7eqtp6jk] {
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: var(--bs-tertiary-bg);
}

.tdb-alarmes-titre h3[b-7p7eqtp6jk] {
    color: var(--creagidem-texte-marque);
}

.tdb-alarme-ligne[b-7p7eqtp6jk] {
    min-width: 0;
}

a.tdb-alarme-ligne:hover[b-7p7eqtp6jk],
a.tdb-alarme-ligne:focus-visible[b-7p7eqtp6jk] {
    background-color: var(--bs-tertiary-bg);
}

.tdb-alarme-nom[b-7p7eqtp6jk] {
    min-width: 0;
}

.tdb-alarme-forte .tdb-alarme-icone[b-7p7eqtp6jk] {
    color: var(--bs-danger-text-emphasis);
}

.tdb-alarme-forte .tdb-alarme-niveau[b-7p7eqtp6jk] {
    color: var(--bs-danger-text-emphasis);
    background-color: var(--bs-danger-bg-subtle);
    border: 1px solid var(--bs-danger-border-subtle);
}

.tdb-alarme-alerte .tdb-alarme-icone[b-7p7eqtp6jk] {
    color: var(--bs-warning-text-emphasis);
}

.tdb-alarme-alerte .tdb-alarme-niveau[b-7p7eqtp6jk] {
    color: var(--bs-warning-text-emphasis);
    background-color: var(--bs-warning-bg-subtle);
    border: 1px solid var(--bs-warning-border-subtle);
}
/* /Components/TableauDeBord/VisiteGuideeTableauDeBord.razor.rz.scp.css */
/* Bulle de la visite guidée (prompt Tableau de bord 2) : fixe, au-dessus de la mise en valeur de la cible (Home.razor.css). */
.tdb-visite[b-rx0uekmxvb] {
    position: fixed;
    right: 1.5rem;
    bottom: 1.5rem;
    z-index: 1062;
    width: min(24rem, calc(100vw - 2rem));
    border: 2px solid var(--creagidem-accent);
}

.tdb-visite:focus[b-rx0uekmxvb] {
    outline: none;
}

.tdb-visite-titre[b-rx0uekmxvb] {
    color: var(--creagidem-texte-marque);
}

@media (max-width: 767.98px) {
    .tdb-visite[b-rx0uekmxvb] {
        left: 1rem;
        right: 1rem;
        bottom: 1rem;
        width: auto;
    }
}
/* /Components/TableauDeBord/WidgetAgendaTableauDeBord.razor.rz.scp.css */
/* Widget « Agenda » du tableau de bord (prompt Agenda 8). Lignes cliquables entières ; sur téléphone, l'heure passe au-dessus du type et du
   libellé. Couleurs : tokens du thème seulement (A9). Prompt Tableau de bord 2 : le corps défile dans le cadre commun du widget (sa
   hauteur est celle de la case de la grille) - plus de hauteur maximale ici ; les titres de section restent collés en haut du cadre. */
.widget-agenda-section + .widget-agenda-section[b-9sgafldqqi] {
    border-top: 1px solid var(--bs-border-color);
}

.widget-agenda-titre[b-9sgafldqqi] {
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: var(--bs-tertiary-bg);
}

.widget-agenda-titre h3[b-9sgafldqqi] {
    color: var(--creagidem-texte-marque);
}

.widget-agenda-jour[b-9sgafldqqi] {
    background-color: var(--bs-secondary-bg-subtle);
    border-top: 1px solid var(--bs-border-color);
}

.widget-agenda-tache[b-9sgafldqqi] {
    min-width: 0;
}

.widget-agenda-tache:hover[b-9sgafldqqi],
.widget-agenda-tache:focus-visible[b-9sgafldqqi] {
    background-color: var(--bs-tertiary-bg);
}

.widget-agenda-quand[b-9sgafldqqi] {
    flex: 0 0 auto;
    min-width: 6.5rem;
    font-variant-numeric: tabular-nums;
}

.widget-agenda-type[b-9sgafldqqi] {
    flex: 0 1 auto;
    max-width: 40%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.widget-agenda-repere[b-9sgafldqqi] {
    flex: 0 0 auto;
    color: var(--creagidem-texte-marque);
    line-height: 1;
}

.widget-agenda-lib[b-9sgafldqqi] {
    flex: 1 1 auto;
    min-width: 0;
}

@media (max-width: 575.98px) {
    .widget-agenda-tache[b-9sgafldqqi] {
        flex-wrap: wrap;
        row-gap: .25rem !important;
    }

    .widget-agenda-quand[b-9sgafldqqi] {
        flex-basis: 100%;
    }

    .widget-agenda-type[b-9sgafldqqi] {
        max-width: 60%;
    }

    .widget-agenda-lib[b-9sgafldqqi] {
        flex-basis: 100%;
    }
}
/* /Components/TableauDeBord/WidgetDevisDgtTableauDeBord.razor.rz.scp.css */
/* Widgets de devis du tableau de bord (prompts Tableau de bord 4 et 5). Couleurs : tokens du thème seulement (skill ui-blazor A1, A9) - aucune
   règle [data-bs-theme] ici. La largeur utile est celle du widget, pas de l'écran : colonnes secondaires repliées par requête de conteneur
   (widget à sa taille minimale comme sur un téléphone), jamais de défilement horizontal. */
.widget-devis[b-6qc8sq270i] {
    container: widget-devis / inline-size;
}

.widget-devis-filtre .form-select[b-6qc8sq270i] {
    width: auto;
    max-width: 14rem;
}

.widget-devis-table[b-6qc8sq270i] {
    font-size: .8125rem;
}

.widget-devis-table th[b-6qc8sq270i],
.widget-devis-table td[b-6qc8sq270i] {
    white-space: nowrap;
    vertical-align: middle;
}

/* En-tête collant au-dessus des lignes : z-index 2, au-dessus du stretched-link des lignes (::after à z-index 1) qui, sinon, recevrait le
   clic d'un en-tête sous lequel une ligne défile. */
.widget-devis-table thead th[b-6qc8sq270i] {
    position: sticky;
    top: 0;
    z-index: 2;
    padding: 0;
    background-color: var(--bs-tertiary-bg);
    color: var(--creagidem-texte-marque);
    font-weight: 600;
}

/* En-tête triable (prompt Tableau de bord 5) : un bouton qui remplit la cellule - cible d'au moins 32 px de haut, clavier compris. Sens
   montré par la forme de la flèche (pas par la couleur seule) ; double chevron estompé = colonne triable non triée. */
.widget-devis-tri[b-6qc8sq270i] {
    display: flex;
    align-items: center;
    gap: .25rem;
    width: 100%;
    min-width: 0;
    min-height: 2rem;
    padding: .25rem;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-align: start;
}

.widget-devis-tri > span[b-6qc8sq270i] {
    overflow: hidden;
    text-overflow: ellipsis;
}

.widget-devis-tri-fin[b-6qc8sq270i] {
    justify-content: flex-end;
}

.widget-devis-tri:hover[b-6qc8sq270i] {
    text-decoration: underline;
}

.widget-devis-tri:focus-visible[b-6qc8sq270i] {
    outline: 2px solid var(--creagidem-texte-marque);
    outline-offset: -2px;
}

.widget-devis-tri-neutre[b-6qc8sq270i] {
    opacity: .45;
}

/* Mention du tri quand la colonne triée est repliée par la requête de conteneur (voir plus bas) ; masquée sinon. */
.widget-devis-tri-masque[b-6qc8sq270i] {
    display: none;
}

.widget-devis-defaut[b-6qc8sq270i] {
    min-height: 1.5rem;
    font-size: inherit;
}

/* Colonnes qui se tronquent (points de suspension, texte complet en info-bulle) : elles prennent la place laissée par les autres. */
.widget-devis-large[b-6qc8sq270i],
.widget-devis-ville[b-6qc8sq270i] {
    max-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.widget-devis-large[b-6qc8sq270i] {
    width: 100%;
}

[data-liste="traiter"] .widget-devis-large[b-6qc8sq270i] {
    width: 40%;
}

[data-liste="traiter"] .widget-devis-ville[b-6qc8sq270i] {
    width: 30%;
}

.widget-devis-cp[b-6qc8sq270i] {
    margin-left: .35rem;
    color: var(--bs-secondary-color);
}

/* Ligne qui ouvre le devis : le lien du numéro couvre toute la ligne (stretched-link de Bootstrap, ancré sur la ligne). */
.widget-devis-ouvrable[b-6qc8sq270i] {
    position: relative;
}

.widget-devis-lien[b-6qc8sq270i] {
    color: var(--creagidem-texte-marque);
    font-weight: 600;
}

.widget-devis-pied[b-6qc8sq270i] {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background-color: var(--bs-tertiary-bg);
    border-top: 1px solid var(--bs-border-color);
}

/* Seuils mesurés sur capture : « à relancer » (cinq colonnes) garde tout jusqu'à 400 px ; « à traiter » (huit colonnes) replie dès 560 px. */
/* La mention du tri n'est rendue que pour une colonne secondaire : elle apparaît exactement quand ces colonnes sont repliées. */
@container widget-devis (max-width: 400px) {
    [data-liste="relancer"] .widget-devis-sec[b-6qc8sq270i] {
        display: none;
    }

    [data-liste="relancer"] .widget-devis-tri-masque[b-6qc8sq270i] {
        display: inline-flex;
    }
}

@container widget-devis (max-width: 560px) {
    [data-liste="traiter"] .widget-devis-sec[b-6qc8sq270i],
    [data-liste="traiter"] .widget-devis-cp[b-6qc8sq270i] {
        display: none;
    }

    [data-liste="traiter"] .widget-devis-tri-masque[b-6qc8sq270i] {
        display: inline-flex;
    }

    [data-liste="traiter"] .widget-devis-large[b-6qc8sq270i] {
        width: 34%;
    }

    [data-liste="traiter"] .widget-devis-ville[b-6qc8sq270i] {
        width: 33%;
    }
}
/* /Components/Visites/VisiteEditeur.razor.rz.scp.css */
/* Fieldset de lecture seule : sans bordure ni marge propres (les cartes portent la mise en page). */
.visite-saisie[b-3tggg8rdoi] {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

/* Etage / sous-sol : entiers courts côte à côte (capture : deux petites cases autour de « RdC + »). */
.visite-entier[b-3tggg8rdoi] {
    width: 5.5rem;
}
/* /Components/Visites/VisiteModale.razor.rz.scp.css */
/* Le JS Modal de Bootstrap n'est pas utilisé : rien ne verrouille le défilement de la page (ui-blazor D1 c). */
.visite-modale[b-oeqw0ooepr],
.visite-modale .modal-body[b-oeqw0ooepr] {
    overscroll-behavior: contain;
}
