@import '_content/Perial.Blazor/Perial.Blazor.5mj12eg3s4.bundle.scp.css';

/* /Components/Layouts/BandeauApplication.razor.rz.scp.css */
/* A strip of exact height: the clipped drawer is offset by --app-bandeau-height (app.css), so the height is not free. */
.app-bandeau[b-s0dlm0q1c3] {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 8px;
    height: var(--app-bandeau-height);
    padding: 0 16px;
    font-size: 0.875rem;
    font-weight: 600;
}

/* One line: a long message is cut, the full text stays in the tooltip. */
.app-bandeau-message[b-s0dlm0q1c3] {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/Overlays/Modals/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-gcr19ld0l2],
.components-reconnect-repeated-attempt-visible[b-gcr19ld0l2],
.components-reconnect-failed-visible[b-gcr19ld0l2],
.components-pause-visible[b-gcr19ld0l2],
.components-resume-failed-visible[b-gcr19ld0l2],
.components-rejoining-animation[b-gcr19ld0l2] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-retrying[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-failed[b-gcr19ld0l2],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-gcr19ld0l2] {
    display: block;
}

#components-reconnect-modal[b-gcr19ld0l2] {
    background-color: var(--mud-palette-surface);
    color: var(--mud-palette-text-primary);
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 1px solid rgba(255, 255, 255, 0.20);
    border-radius: calc(var(--mud-default-borderradius) * 2);
    box-shadow: var(--mud-elevation-8);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-gcr19ld0l2 0.5s both;

    &[open] {
        animation: components-reconnect-modal-slideUp-b-gcr19ld0l2 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s,
                   components-reconnect-modal-fadeInOpacity-b-gcr19ld0l2 0.5s ease-in-out 0.3s;
        animation-fill-mode: both;
    }
}

#components-reconnect-modal[b-gcr19ld0l2]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-gcr19ld0l2 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-gcr19ld0l2 {
    0%   { transform: translateY(30px) scale(0.95); }
    100% { transform: translateY(0); }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-gcr19ld0l2 {
    0%   { opacity: 0; }
    100% { opacity: 1; }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-gcr19ld0l2 {
    0%   { opacity: 1; }
    100% { opacity: 0; }
}

.components-reconnect-container[b-gcr19ld0l2] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-gcr19ld0l2] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-gcr19ld0l2] {
    border: 0;
    background-color: var(--mud-palette-primary);
    color: var(--mud-palette-primary-text);
    padding: 6px 24px;
    border-radius: var(--mud-default-borderradius);
    font-family: inherit;
    font-size: 0.875rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    cursor: pointer;
    transition: background-color 0.2s;
}

#components-reconnect-modal button:hover[b-gcr19ld0l2] {
    background-color: var(--mud-palette-primary-darken);
}

#components-reconnect-modal button:active[b-gcr19ld0l2] {
    background-color: var(--mud-palette-primary-lighten);
}

.components-rejoining-animation[b-gcr19ld0l2] {
    position: relative;
    width: 80px;
    height: 80px;
}

.components-rejoining-animation div[b-gcr19ld0l2] {
    position: absolute;
    border: 3px solid var(--mud-palette-primary);
    opacity: 1;
    border-radius: 50%;
    animation: components-rejoining-animation-b-gcr19ld0l2 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
}

.components-rejoining-animation div:nth-child(2)[b-gcr19ld0l2] {
    animation-delay: -0.5s;
}

@keyframes components-rejoining-animation-b-gcr19ld0l2 {
    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: 0;    left: 0;    width: 80px; height: 80px; opacity: 0; }
}
/* /Components/Pages/Admin/AnnoncesPage.razor.rz.scp.css */
/* Layout-neutral root of the page: it only anchors the ::deep rules on MudBlazor components. */
.annonces-page[b-wot4eko8wq] {
    display: contents;
}

.annonces-page[b-wot4eko8wq]  .annonces-page-type {
    max-width: 260px;
}

.annonces-page[b-wot4eko8wq]  .annonces-page-niveau {
    max-width: 200px;
}

.annonces-page-date[b-wot4eko8wq] {
    max-width: 180px;
}

/* A long message wraps instead of pushing the actions out of the row. */
.annonces-page[b-wot4eko8wq]  .annonces-page-message {
    min-width: 200px;
}

.annonces-page-vignette[b-wot4eko8wq] {
    width: 96px;
    height: 36px;
    object-fit: cover;
    border-radius: 4px;
}
/* /Components/Pages/Admin/Cards/HealthChecksCard.razor.rz.scp.css */
/* Layout-neutral root of the card: it only anchors the ::deep rules on the MudCard tiles. */
.health-checks-card[b-vqx5ku754y] {
    display: contents;
}

.health-checks-card[b-vqx5ku754y]  .health-checks-card-chargement {
    height: 90px;
}

.health-checks-card[b-vqx5ku754y]  .health-checks-card-resultat {
    min-height: 90px;
}
/* /Components/Pages/Admin/JoursNonTravaillesPage.razor.rz.scp.css */
/* Layout-neutral root of the page: it only anchors the ::deep rules on MudBlazor components. */
.jours-non-travailles-page[b-tv1hfl2pwv] {
    display: contents;
}

/* "Année" field: its former Style sat on the inner .mud-input, so the rule targets it too. */
.jours-non-travailles-page[b-tv1hfl2pwv]  .jours-non-travailles-page-annee .mud-input {
    max-width: 140px;
}

.jours-non-travailles-page-date[b-tv1hfl2pwv] {
    max-width: 180px;
}

.jours-non-travailles-page[b-tv1hfl2pwv]  .jours-non-travailles-page-type {
    max-width: 200px;
}

/* Buttons at the height of the dense outlined fields of the same row. */
.jours-non-travailles-page[b-tv1hfl2pwv]  .jours-non-travailles-page-bouton {
    height: 42px;
}

.jours-non-travailles-page-jour-date[b-tv1hfl2pwv] {
    min-width: 90px;
}
/* /Components/Pages/Admin/RolePermissionsPage.razor.rz.scp.css */
/* Layout-neutral root: it only anchors the ::deep of the classes of the roles-and-permissions matrix (Perial.Blazor),
   whose markup this page does not own. */
.role-permissions-page[b-rd380pmu2u] {
    display: contents;
}

/* The matrix puts a dot before the name of a permission that no role grants, in the same line: it pushes that name to
   the right of the others. The dot goes out of the flow, into the left padding of the cell, so every permission name
   starts at the same place. */
.role-permissions-page[b-rd380pmu2u]  .pm .pm-featurecell__name {
    position: relative;
}

.role-permissions-page[b-rd380pmu2u]  .pm .pm-featurecell__name .mud-tooltip-root {
    left: -11px;
    line-height: 0;
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}
/* /Components/Pages/Admin/TauxCollaborateursPage.razor.rz.scp.css */
/* Layout-neutral root of the page: it only anchors the ::deep rules on MudBlazor components. */
.taux-collaborateurs-page[b-hvbk1wysdw] {
    display: contents;
}

/* Rate fields: their former Style sat on the inner .mud-input, so the rules target it too. */
.taux-collaborateurs-page[b-hvbk1wysdw]  .taux-collaborateurs-page-nouveau-taux .mud-input {
    max-width: 180px;
}

.taux-collaborateurs-page[b-hvbk1wysdw]  .taux-collaborateurs-page-taux .mud-input {
    max-width: 160px;
}

/* "Ajouter" button at the height of the dense outlined fields it follows. */
.taux-collaborateurs-page[b-hvbk1wysdw]  .taux-collaborateurs-page-ajouter {
    height: 42px;
}
/* /Components/Pages/FichesEmbarquement/FicheEmbarquementDialog.razor.rz.scp.css */
/* Astérisque purement cosmétique des champs obligatoires (classe pd-champ-obligatoire), à
   dessein découplé du Required natif de MudBlazor : celui-ci ajoute son propre contrôle
   inconditionnel à chaque validation, qui ferait échouer « Enregistrer le brouillon » sur des
   champs qui doivent y rester facultatifs (seul le statut visé par le bouton cliqué détermine
   s'ils sont obligatoires, cf. FicheEmbarquementRegles et _statutCible dans le code-behind).
   Reprend la structure et le rendu du marqueur natif (.mud-input-required .mud-input-label::after)
   pour un résultat visuellement identique, sans dupliquer sa classe ni son gating. */
.pd-fiche-form[b-ibjujkpthc]  .pd-champ-obligatoire .mud-input-label::after {
    content: "*";
    color: var(--mud-palette-error);
}
/* /Components/Pages/Home/AnnonceDiapositive.razor.rz.scp.css */
.annonce-diapo[b-vulysj0w3l] {
    position: relative;
    display: flex;
    align-items: center;
    height: 100%;
    overflow: hidden;
}

.annonce-diapo-image[b-vulysj0w3l] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

/* The side padding keeps the text clear of the arrows of the carousel. */
.annonce-diapo-texte[b-vulysj0w3l] {
    position: relative;
    width: 100%;
    padding: 16px 64px;
}

/* On an image, the text sits on a dark veil rising from the bottom, so it stays readable on any picture. */
.annonce-diapo--image[b-vulysj0w3l] {
    align-items: flex-end;
    color: var(--mud-palette-dark-text);
}

.annonce-diapo--image .annonce-diapo-texte[b-vulysj0w3l] {
    background: linear-gradient(to top, color-mix(in srgb, var(--mud-palette-dark) 85%, transparent), transparent);
    padding-top: 40px;
}
/* /Components/Pages/Home/AnnoncesEncart.razor.rz.scp.css */
/* The slide area has a fixed height: MudCarousel stacks its items in it and fills it. */
.annonces-encart[b-p4bce8zcf9] {
    overflow: hidden;
    border-radius: var(--mud-default-borderradius);
    border: 1px solid var(--mud-palette-lines-default);
}

.annonces-encart[b-p4bce8zcf9]  .annonces-carrousel {
    height: 180px;
}

/* Empty state, for the managers of the announcements only. */
.annonces-vide[b-p4bce8zcf9] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 16px;
    font-size: 0.875rem;
    color: var(--mud-palette-text-secondary);
    background-color: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
}

/* Reduced motion: the slides change without sliding. */
@media (prefers-reduced-motion: reduce) {
    .annonces-encart[b-p4bce8zcf9]  .mud-carousel-item {
        transition: none;
        animation: none;
    }
}
/* /Components/Pages/Home/ProjetAttribueCarte.razor.rz.scp.css */
/* One row of the list: the columns come from --colonnes, declared by ProjetsEnCoursListe. */
.projet-ligne[b-o6h3h341u9] {
    display: grid;
    grid-template-columns: var(--colonnes);
    gap: var(--ecart-colonnes);
    align-items: center;
    padding: 8px 12px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.projet-ligne:last-child[b-o6h3h341u9] {
    border-bottom: 0;
}

.projet-cellule[b-o6h3h341u9] {
    min-width: 0;
}

.projet-cellule--action[b-o6h3h341u9] {
    display: flex;
    gap: 6px;
    justify-self: end;
}

/* The name block shrinks and the name is cut, instead of pushing the other columns. */
.projet-nom-bloc[b-o6h3h341u9] {
    min-width: 0;
}

.projet-nom-bloc[b-o6h3h341u9]  .mud-link {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* The icons and the date of the last reporting sit close together, the date right under the icons. */
.projet-meteo[b-o6h3h341u9] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.projet-meteo-icones[b-o6h3h341u9] {
    display: flex;
    align-items: center;
    gap: 4px;
    line-height: 1;
}

.projet-avancement[b-o6h3h341u9] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.projet-avancement[b-o6h3h341u9]  .mud-progress-linear {
    flex: 1 1 auto;
}

.projet-avancement[b-o6h3h341u9]  .projet-avancement-valeur {
    min-width: 34px;
    text-align: right;
}

/* The label of a cell only shows on narrow screens, where the header of the list is hidden. */
.projet-cellule-libelle[b-o6h3h341u9] {
    display: none;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
}

@media (max-width: 1500px) {
    .projet-cellule-libelle[b-o6h3h341u9] {
        display: block;
    }

    .projet-cellule:first-child[b-o6h3h341u9] {
        grid-column: 1 / -1;
    }

    .projet-cellule--action[b-o6h3h341u9] {
        justify-self: start;
    }
}
/* /Components/Pages/Home/ProjetsEnCoursListe.razor.rz.scp.css */
/* The columns are declared once here and read by the header and by every row (ProjetAttribueCarte) through
   the custom property, so the indicators line up from row to row. */
.projets-en-cours[b-80matd72g7] {
    --colonnes: 220px 150px minmax(110px, 1fr) 108px 108px minmax(120px, 1.1fr) minmax(120px, 1.1fr) 170px 230px;
    --ecart-colonnes: 32px;
}

.projets-en-cours-entete[b-80matd72g7] {
    display: grid;
    grid-template-columns: var(--colonnes);
    gap: var(--ecart-colonnes);
    padding: 0 12px 4px;
    font-size: 0.75rem;
    color: var(--mud-palette-text-secondary);
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

/* Narrow screens: no header, the cells of a row wrap and carry their own label. */
@media (max-width: 1500px) {
    .projets-en-cours[b-80matd72g7] {
        --colonnes: repeat(auto-fit, minmax(150px, 1fr));
        --ecart-colonnes: 16px;
    }

    .projets-en-cours-entete[b-80matd72g7] {
        display: none;
    }
}
/* /Components/Pages/Home/ProjetsListeCarte.razor.rz.scp.css */
/* The status chip keeps a fixed width, so that the chips line up across rows whatever the project name length. */
.projet-row-meta[b-c1vm8ab8mg] {
    flex: 0 0 auto;
}

.projet-row-meta[b-c1vm8ab8mg]  .mud-chip {
    min-width: 96px;
    justify-content: center;
    margin: 0;
}

/* A long name is cut instead of pushing the chip out of the card. */
.projets-liste[b-c1vm8ab8mg]  .projet-nom {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/Pages/Portefeuilles/PortefeuilleArbreLigne.razor.rz.scp.css */
.portefeuille-arbre-ligne[b-p8gmiqlouq] {
    align-items: center;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
    display: grid;
    gap: 12px;
    grid-template-columns: minmax(220px, 2.4fr) minmax(90px, 0.9fr) minmax(130px, 1.4fr) minmax(100px, 1.1fr) minmax(80px, 0.8fr) minmax(120px, 1fr);
    min-height: 58px;
    padding: 0 12px;
}

.portefeuille-arbre-ligne:last-child[b-p8gmiqlouq] {
    border-bottom: 0;
}

.portefeuille-arbre-ligne:hover[b-p8gmiqlouq] {
    background: var(--mud-palette-action-default-hover);
}

.portefeuille-arbre-ligne--en-tete[b-p8gmiqlouq] {
    color: var(--mud-palette-text-secondary);
    cursor: default;
    font-size: .75rem;
    font-weight: 700;
    min-height: 42px;
    text-transform: uppercase;
}

/* The header row does not highlight on hover. */
.portefeuille-arbre-ligne--en-tete:hover[b-p8gmiqlouq] {
    background: transparent;
}

.portefeuille-arbre-ligne--selectionnee[b-p8gmiqlouq] {
    background: var(--mud-palette-primary-hover);
    box-shadow: inset 3px 0 0 var(--mud-palette-primary);
}

.portefeuille-arbre-ligne-noeud[b-p8gmiqlouq] {
    align-items: center;
    display: flex;
    gap: 8px;
    min-width: 0;
}

/* Cercle d'avatar agrandi pour laisser respirer l'icône à l'intérieur (au-delà des 24px de .mud-avatar-small). */
.portefeuille-arbre-ligne-noeud[b-p8gmiqlouq]  .mud-avatar {
    height: 40px;
    width: 40px;
}

.portefeuille-arbre-ligne-texte[b-p8gmiqlouq] {
    min-width: 0;
}

.portefeuille-arbre-ligne-texte[b-p8gmiqlouq]  .portefeuille-arbre-ligne-titre {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.portefeuille-arbre-ligne-attenue[b-p8gmiqlouq] {
    color: var(--mud-palette-text-secondary);
    font-size: .875rem;
}

.portefeuille-arbre-ligne-actions[b-p8gmiqlouq] {
    align-items: center;
    display: flex;
    gap: 2px;
    justify-content: flex-end;
}
/* /Components/Pages/Portefeuilles/PortefeuilleAvancementBarre.razor.rz.scp.css */
.portefeuille-avancement-barre[b-kunshy3yr0] {
    align-items: center;
    display: flex;
    gap: 8px;
    min-width: 120px;
}

.portefeuille-avancement-barre-valeur[b-kunshy3yr0] {
    color: var(--mud-palette-text-secondary);
    flex: 0 0 36px;
    font-size: .75rem;
    text-align: right;
}
/* /Components/Pages/Portefeuilles/PortefeuilleBudgetBarre.razor.rz.scp.css */
.portefeuille-budget-barre-ligne[b-cwqmkb68lr] {
    align-items: center;
    display: flex;
    gap: 8px;
    min-width: 140px;
}

.portefeuille-budget-barre[b-cwqmkb68lr] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.portefeuille-budget-barre-valeur[b-cwqmkb68lr] {
    color: var(--mud-palette-text-secondary);
    flex: 0 0 58px;
    font-size: .75rem;
    text-align: right;
}
/* /Components/Pages/Portefeuilles/PortefeuillesPage.razor.rz.scp.css */
/* Neutral root that anchors ::deep on the MudBlazor components of the page: the layout is the MudGrid's. */
.portefeuilles-page[b-nr8d8p9jtu] {
    display: contents;
}

.portfolio-tree-header[b-nr8d8p9jtu] {
    align-items: center;
    display: flex;
    gap: 12px;
    justify-content: space-between;
    padding: 14px 16px;
}

.portfolio-tree-scroll[b-nr8d8p9jtu] {
    overflow-x: auto;
}

.portfolio-tree-table[b-nr8d8p9jtu] {
    min-width: 760px;
}

.portefeuilles-page[b-nr8d8p9jtu]  .portfolio-detail-panel {
    position: sticky;
    top: 16px;
}

@media (max-width: 960px) {
    .portefeuilles-page[b-nr8d8p9jtu]  .portfolio-detail-panel {
        position: static;
    }
}
/* /Components/Pages/Programmes/ProgrammesPage.razor.rz.scp.css */
/* The list takes two thirds of the row, the charts one third; the charts wrap below under 260px. */
.programmes-page-grille[b-xrcft9poor] {
    flex: 2 1 0;
}

.programmes-page-graphiques[b-xrcft9poor] {
    flex: 1 1 0;
    min-width: 260px;
}

.programmes-page-grille[b-xrcft9poor]  .programmes-page-col-statut {
    width: 200px;
}

.programmes-page-grille[b-xrcft9poor]  .programmes-page-col-projets {
    width: 150px;
}

.programmes-page-grille[b-xrcft9poor]  .programmes-page-col-budget,
.programmes-page-grille[b-xrcft9poor]  .programmes-page-col-actions {
    width: 180px;
}

/* Beats MudBlazor's ".mud-table-cell { text-align: start }". */
.programmes-page-grille[b-xrcft9poor]  .programmes-page-centre {
    text-align: center;
}
/* /Components/Pages/Projets/ProjetDetailPage.razor.rz.scp.css */
/* Project detail tab bar — "pill" styling.
   The active tab is filled with the Perial logo blue (--app-perial-bleu tokens of app.css), with readable
   white text/icon. Inactive tabs stay neutral with a discreet hover. Scoped to this page via CSS isolation so
   other MudTabs instances (Time Tracking, Reporting, …) keep their default look, and so the global theme
   primary color is left untouched. */

/* Hide the default sliding indicator: the active state is shown as a filled pill. */
.projet-tabs[b-s5dol4du89]  .mud-tab-slider {
    display: none;
}

/* Base tab: neutral text, rounded corners, comfortable spacing. */
.projet-tabs[b-s5dol4du89]  .mud-tab {
    border-radius: 8px;
    margin: 4px 2px;
    min-height: 42px;
    text-transform: none;
    color: var(--mud-palette-text-secondary);
    transition: background-color .15s ease, color .15s ease;
}

/* Discreet hover on inactive tabs (light and dark via theme tokens). */
.projet-tabs[b-s5dol4du89]  .mud-tab:hover:not(.mud-tab-active) {
    background-color: var(--mud-palette-action-default-hover);
    color: var(--mud-palette-text-primary);
}

/* Active tab: filled Perial-blue pill with white text and icon. */
.projet-tabs[b-s5dol4du89]  .mud-tab.mud-tab-active {
    background-color: var(--app-perial-bleu);
    color: var(--app-perial-bleu-contrast);
    box-shadow: 0 4px 14px var(--app-perial-bleu-ombre);
}

.projet-tabs[b-s5dol4du89]  .mud-tab.mud-tab-active:hover {
    background-color: var(--app-perial-bleu-hover);
}

.projet-tabs[b-s5dol4du89]  .mud-tab.mud-tab-active .mud-icon-root {
    color: var(--app-perial-bleu-contrast);
}
/* /Components/Pages/Projets/ProjetsPage.razor.rz.scp.css */
/* Layout-neutral root of the grid: it only anchors the ::deep of the classes set on the grid. */
.projets-page-grille[b-2jr2tj62f2] {
    display: contents;
}

.projets-page-grille[b-2jr2tj62f2]  .projets-page-col-favori {
    width: 42px;
}

/* Fixed-width progress bar: beats MudBlazor's ".mud-progress-linear.horizontal { width: 100% }". */
.projets-page-grille[b-2jr2tj62f2]  .projets-page-avancement {
    width: 80px;
}
/* /Components/Pages/Projets/StatutProjetSelect.razor.rz.scp.css */
/* Neutral wrapper: the select keeps its place in the flex row of the project sheet header. */
.statut-projet-select[b-y99k0o6kik] {
    display: contents;
}

.statut-projet-select[b-y99k0o6kik]  .statut-projet-select-field {
    min-width: 150px;
}

/* --statut-fill and --statut-ink are set from C# (Style) from the colors of the StatutChip of the current status. */
.statut-projet-select[b-y99k0o6kik]  .statut-projet-select-field .mud-input.mud-input-outlined {
    background-color: var(--statut-fill);
    color: var(--statut-ink);
    border-radius: var(--mud-default-borderradius);
}

/* Border of the fill's color, except while focused: MudBlazor's focus ring stays visible. */
.statut-projet-select[b-y99k0o6kik]  .statut-projet-select-field .mud-input.mud-input-outlined:not(:focus-within) .mud-input-outlined-border {
    border-color: var(--statut-fill);
}

.statut-projet-select[b-y99k0o6kik]  .statut-projet-select-field .mud-input-adornment .mud-icon-root {
    color: var(--statut-ink);
}

/* MudBlazor renders the content of the selected choice in the closed field: the dot is only for the open list,
   the fill already carries the status there. */
.statut-projet-select[b-y99k0o6kik]  .statut-projet-select-field .statut-projet-select-dot {
    display: none;
}
/* /Components/Pages/Projets/Tabs/ActeursGouvernanceTab.razor.rz.scp.css */
/* Layout-neutral root of the "Ajouter" button: it only anchors the ::deep. */
.acteurs-gouvernance-tab-ajout[b-notlki4mfg] {
    display: contents;
}

/* "Ajouter" button at the height of the outlined fields of the same row. */
.acteurs-gouvernance-tab-ajout[b-notlki4mfg]  .acteurs-gouvernance-tab-ajouter {
    height: 42px;
}
/* /Components/Pages/Projets/Tabs/BudgetTab.razor.rz.scp.css */
.budget-tab-chart-marker[b-9cm67npofu] {
    border-radius: 50%;
    display: inline-block;
    height: 12px;
    width: 12px;
}

/* Amounts and actions right-aligned in the budget line and expense tables: th and td are written here, so the
   class plus the scope attribute (0,2,0) beat MudBlazor's ".mud-simple-table table * tr > td" (0,1,3). */
.budget-tab-aligne-droite[b-9cm67npofu] {
    text-align: right;
}

.budget-tab-non-imputee[b-9cm67npofu] {
    text-decoration: line-through;
}

/* Encart du prévisionnel d'un mois : le chiffre prévu, puis l'écart au consommé, dans la largeur de la colonne. */
.budget-previsionnel-encart[b-9cm67npofu] {
    align-items: center;
    background: transparent;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 4px;
    color: inherit;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    font: inherit;
    line-height: 1.25;
    min-width: 36px;
    padding: 2px 6px;
}

.budget-previsionnel-encart:hover:not(:disabled)[b-9cm67npofu] {
    background-color: var(--mud-palette-action-default-hover);
}

.budget-previsionnel-encart:disabled[b-9cm67npofu] {
    cursor: default;
}

.budget-previsionnel-valeur[b-9cm67npofu] {
    font-size: 0.8125rem;
    font-weight: 600;
}

.budget-previsionnel-depassement[b-9cm67npofu],
.budget-previsionnel-surplus[b-9cm67npofu] {
    font-size: 0.75rem;
    font-weight: 600;
}

.budget-previsionnel-depassement[b-9cm67npofu] {
    color: var(--mud-palette-error);
}

.budget-previsionnel-surplus[b-9cm67npofu] {
    color: var(--mud-palette-success);
}
/* /Components/Pages/Projets/Tabs/ComiteTypeChip.razor.rz.scp.css */
/* The wrapper anchors ::deep on the MudChip and carries the type modifier: it must not change the layout. */
.comite-type-chip[b-cgdqterf48] {
    display: contents;
}

.comite-type-chip--codir[b-cgdqterf48]     { --comite-type-color: var(--app-comite-codir);     --comite-type-text: var(--app-comite-contrast); }
.comite-type-chip--copil[b-cgdqterf48]     { --comite-type-color: var(--app-comite-copil);     --comite-type-text: var(--app-comite-contrast); }
.comite-type-chip--technique[b-cgdqterf48] { --comite-type-color: var(--app-comite-technique); --comite-type-text: var(--app-comite-contrast); }
.comite-type-chip--coproj[b-cgdqterf48]    { --comite-type-color: var(--app-comite-coproj);    --comite-type-text: var(--app-comite-contrast); }
.comite-type-chip--revue[b-cgdqterf48]     { --comite-type-color: var(--app-comite-revue);     --comite-type-text: var(--app-comite-contrast-dark); }
.comite-type-chip--autre[b-cgdqterf48]     { --comite-type-color: var(--app-comite-autre);     --comite-type-text: var(--app-comite-contrast-dark); }

.comite-type-chip[b-cgdqterf48]  .mud-chip {
    background-color: var(--comite-type-color, var(--app-comite));
    color: var(--comite-type-text, var(--app-comite-contrast));
}
/* /Components/Pages/Projets/Tabs/ContributeursTab.razor.rz.scp.css */
/* "Ajouter" button at the height of the dense outlined search field it follows. */
.contributeurs-tab-ajout[b-bi0ssiti07]  .contributeurs-tab-ajouter {
    height: 42px;
}

/* "Chantier" field: its former Style sat on the inner .mud-input, so the rule targets it too. */
.contributeurs-tab-chantier-edition[b-bi0ssiti07]  .contributeurs-tab-chantier .mud-input {
    min-width: 160px;
}
/* /Components/Pages/Projets/Tabs/GanttJalonMarque.razor.rz.scp.css */
/* The drawing of one milestone on a timeline: phase bar, markers, overshoot and connector. Positions and widths
   computed from dates, and colors from the status, stay inline. The layer covers the timeline of its row and lets
   the pointer through, so that the milestones of a lot line do not hide each other's tooltips. */
.gantt-jalon-marque[b-by33kkya15] {
    inset: 0;
    pointer-events: none;
}

.gantt-jalon-marque[b-by33kkya15]  > * {
    pointer-events: auto;
}

/* Phase bar: its name on the status color of the bar. */
.gantt-jalon-row-barre[b-by33kkya15] {
    height: 28px;
    padding: 0 18px 0 8px;
    top: 50%;
    transform: translateY(-50%);
}

/* Hatched overshoot segment, before the bar (late start) or after it (late end). */
.gantt-jalon-row-depassement[b-by33kkya15] {
    height: 28px;
    top: 50%;
    transform: translateY(-50%);
    z-index: 1;
}

.gantt-jalon-row-depassement--debut[b-by33kkya15] {
    border-radius: 5px 0 0 5px;
}

/* Arrow head of a phase: the right edge ends in a triangle. */
.gantt-jalon-row-fleche[b-by33kkya15] {
    clip-path: polygon(0 0, calc(100% - 10px) 0, 100% 50%, calc(100% - 10px) 100%, 0 100%);
}

/* Offsets from the vertical center, not percentages: a stretched line (see GanttJalonRow.razor.css) keeps them. */
.gantt-jalon-row-fin-reelle[b-by33kkya15] {
    top: calc(50% + 17px);
    transform: translate(-50%, -50%);
}

/* Point marker (event, deliverable, phase without end date), centered on its date. */
.gantt-jalon-row-marqueur[b-by33kkya15] {
    top: 50%;
    transform: translate(-50%, -50%);
}

/* Marker sizes: the planned date a little smaller than the actual one. GanttHelpers.ConnectorSegment
   stops the connector at their edges (radii 9px and 11px). */
.gantt-jalon-marque[b-by33kkya15]  .gantt-jalon-row-icone-prevue {
    font-size: 18px;
}

.gantt-jalon-marque[b-by33kkya15]  .gantt-jalon-row-icone-reelle {
    font-size: 22px;
}

.gantt-jalon-row-nom[b-by33kkya15] {
    font-size: 10px;
    max-width: 160px;
    top: calc(50% + 11px);
    transform: translateX(-50%);
}

/* On the line of a phase, the label follows its marker: marker radius (11px) plus a 3px gap. */
.gantt-jalon-row-nom--droite[b-by33kkya15] {
    max-width: none;
    top: 50%;
    transform: translate(14px, -50%);
}

/* Connector between the planned and the actual marker: grey, red only for a late milestone not reached. */
.gantt-jalon-row-trait[b-by33kkya15] {
    background: var(--mud-palette-text-disabled);
    height: 2px;
    opacity: 0.6;
    top: 50%;
    transform: translateY(-50%);
}

.gantt-jalon-row-trait--retard[b-by33kkya15] {
    background: var(--mud-palette-error);
}
/* /Components/Pages/Projets/Tabs/GanttJalonRow.razor.rz.scp.css */
/* One milestone row of the project Gantt. The name column (200px) and the actions column (72px) are
   aligned with the header and the lot bands of JalonsGanttTab.razor.css. Positions and widths computed
   from dates, and colors from the status, stay inline. */
/* 48px at least; inside a lot (a flex column that stretches to its label block) the rows share the extra height,
   so that a lot with a single line, or a few, leaves no gap under it. */
.gantt-jalon-row[b-4yk9pcn2dz] {
    border-bottom: 1px solid var(--mud-palette-divider);
    flex: 1 0 48px;
    min-height: 48px;
}

/* Sticky on the left while the timeline scrolls horizontally. */
.gantt-jalon-row-libelle[b-4yk9pcn2dz] {
    background: var(--mud-palette-surface);
    left: 0;
    min-width: 200px;
    width: 200px;
    z-index: 2;
}

.gantt-jalon-row-frise[b-4yk9pcn2dz] {
    align-self: stretch;
}

.gantt-jalon-row-grille[b-4yk9pcn2dz] {
    background: var(--mud-palette-divider);
    bottom: 0;
    opacity: 0.5;
    top: 0;
    width: 1px;
}

.gantt-jalon-row-aujourdhui[b-4yk9pcn2dz] {
    background: var(--mud-palette-error);
    bottom: 0;
    opacity: 0.5;
    top: 0;
    width: 2px;
}

/* Edit buttons, sticky on the right while the timeline scrolls horizontally. */
.gantt-jalon-row-actions[b-4yk9pcn2dz] {
    background: var(--mud-palette-surface);
    gap: 2px;
    min-width: 72px;
    right: 0;
    width: 72px;
    z-index: 2;
}
/* /Components/Pages/Projets/Tabs/JalonsGanttTab.razor.rz.scp.css */
/* Project Gantt: month header, lot bands and legend. The label column (200px) and the actions column
   (72px) are aligned with the milestone rows of GanttJalonRow.razor.css. Positions and widths computed
   from dates, and colors from the status, stay inline. */

/* At least the visible width, wider when the months need it: the timeline then scrolls horizontally. */
.jalons-gantt-tab-frise[b-p5n3exmkon] {
    min-width: 100%;
    width: max-content;
}

.jalons-gantt-tab-mois[b-p5n3exmkon] {
    border-bottom: 1px solid var(--mud-palette-divider);
    height: 28px;
}

/* Label column of the header and of each lot, sticky on the left while the timeline scrolls horizontally. */
.jalons-gantt-tab-libelle[b-p5n3exmkon] {
    background: var(--mud-palette-surface);
    left: 0;
    min-width: 200px;
    width: 200px;
    z-index: 2;
}

.jalons-gantt-tab-mois-libelle[b-p5n3exmkon] {
    font-size: 11px;
    top: 4px;
    transform: translateX(-50%);
}

.jalons-gantt-tab-mois-trait[b-p5n3exmkon] {
    background: var(--mud-palette-divider);
    bottom: 0;
    top: 0;
    width: 1px;
}

.jalons-gantt-tab-aujourdhui[b-p5n3exmkon] {
    background: var(--mud-palette-error);
    bottom: 0;
    opacity: 0.5;
    top: 0;
    width: 2px;
}

/* Room kept above the edit buttons of the rows, sticky on the right. */
.jalons-gantt-tab-actions[b-p5n3exmkon] {
    background: var(--mud-palette-surface);
    min-width: 72px;
    right: 0;
    width: 72px;
    z-index: 2;
}

.jalons-gantt-tab-lot[b-p5n3exmkon] {
    border-bottom: 1px solid var(--mud-palette-divider);
}

.jalons-gantt-tab-lot-bloc[b-p5n3exmkon] {
    border-radius: 8px;
}

.jalons-gantt-tab-lot-vide[b-p5n3exmkon] {
    font-size: 12px;
    height: 48px;
}

.jalons-gantt-tab-legende[b-p5n3exmkon] {
    font-size: 11px;
}

.jalons-gantt-tab-legende-depassement[b-p5n3exmkon] {
    height: 10px;
    width: 14px;
}

.jalons-gantt-tab-legende-aujourdhui[b-p5n3exmkon] {
    background: var(--mud-palette-error);
    height: 3px;
    opacity: 0.5;
    width: 12px;
}
/* /Components/Pages/Projets/Tabs/JalonsTab.razor.rz.scp.css */
/* Reorderable milestone list: the header and each row share the same column widths. The root is
   layout-neutral; it anchors ::deep for the classes set on MudBlazor components. */
.jalons-tab-root[b-easqr3h6tz] {
    display: contents;
}

.jalons-tab-entete[b-easqr3h6tz] {
    font-size: 12px;
}

.jalons-tab-root[b-easqr3h6tz]  .jalons-tab-ligne {
    border-radius: 4px;
}

.jalons-tab-root[b-easqr3h6tz]  .jalons-tab-col-icone {
    width: 24px;
}

.jalons-tab-root[b-easqr3h6tz]  .jalons-tab-col-statut {
    width: 110px;
}

.jalons-tab-root[b-easqr3h6tz]  .jalons-tab-col-date {
    width: 90px;
}

.jalons-tab-root[b-easqr3h6tz]  .jalons-tab-col-actions {
    width: 80px;
}

.jalons-tab-lot[b-easqr3h6tz] {
    background: var(--mud-palette-background-gray);
    border-radius: 4px;
    user-select: none;
}

.jalons-tab-date-reelle[b-easqr3h6tz] {
    gap: 2px;
}
/* /Components/Pages/Projets/Tabs/ReportingDialog.razor.rz.scp.css */
/* MudToggleGroup remplit l'élément sélectionné avec la couleur du groupe (mud-button-filled-primary) :
   la classe SelectedClass le remplace par un fond clair de la couleur de l'icône (état survol et focus compris,
   ce sélecteur est plus spécifique que ceux de MudBlazor), les autres icônes sont atténuées. */
.reporting-dialog-root[b-fmfw18b18x]  .mud-toggle-item.reporting-toggle-selected {
    background-color: color-mix(in srgb, var(--reporting-toggle-color, var(--mud-palette-text-secondary)) 18%, transparent);
    color: inherit;
}

.reporting-dialog-root[b-fmfw18b18x]  .mud-toggle-item.reporting-toggle-selected:has(.mud-success-text) {
    --reporting-toggle-color: var(--mud-palette-success);
}

.reporting-dialog-root[b-fmfw18b18x]  .mud-toggle-item.reporting-toggle-selected:has(.mud-warning-text) {
    --reporting-toggle-color: var(--mud-palette-warning);
}

.reporting-dialog-root[b-fmfw18b18x]  .mud-toggle-item.reporting-toggle-selected:has(.mud-error-text) {
    --reporting-toggle-color: var(--mud-palette-error);
}

.reporting-dialog-root[b-fmfw18b18x]  .mud-toggle-item:not(.reporting-toggle-selected) .mud-icon-root {
    opacity: 0.45;
}
/* /Components/Pages/Projets/Tabs/RisquesTab.razor.rz.scp.css */
/* Scale under the Probabilité and Impact column titles: smaller and faded. */
.risques-tab-echelle[b-m0hxngbao2] {
    font-size: 10px;
    font-weight: 400;
    opacity: 0.6;
}

/* Layout-neutral root of a row's detail: it only anchors the ::deep of the card. */
.risques-tab-detail[b-m0hxngbao2] {
    display: contents;
}

.risques-tab-detail[b-m0hxngbao2]  .risques-tab-detail-carte {
    border-left: 3px solid var(--mud-palette-primary);
}
/* /Components/Pages/Reporting/DureeProjetsBarChart.razor.rz.scp.css */
.pd-duree-chart[b-1n7jk1lxnh] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.pd-duree-row[b-1n7jk1lxnh] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.pd-duree-label[b-1n7jk1lxnh] {
    flex: 0 0 220px;
    font-size: 0.8rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pd-duree-track[b-1n7jk1lxnh] {
    flex: 1 1 auto;
    background: var(--mud-palette-table-lines);
    border-radius: 4px;
    height: 14px;
    overflow: hidden;
}

.pd-duree-bar[b-1n7jk1lxnh] {
    height: 100%;
    min-width: 3px;
    border-radius: 4px;
}

/* Couleurs des statuts « En cours » et « Terminé », comme le donut du même onglet. */
.pd-duree-bar--primary[b-1n7jk1lxnh] {
    background: var(--mud-palette-primary);
}

.pd-duree-bar--success[b-1n7jk1lxnh] {
    background: var(--mud-palette-success);
}

.pd-duree-value[b-1n7jk1lxnh] {
    flex: 0 0 40px;
    text-align: right;
    font-size: 0.8rem;
    color: var(--mud-palette-text-secondary);
}
/* /Components/Pages/Reporting/ProjetsGanttChart.razor.rz.scp.css */
/* Gantt des projets — styles présentationnels scopés au composant.
   Les couleurs de statut sont celles de toute l'application : palette MudBlazor, sinon les jetons
   --app-statut-* et --app-gantt-* de app.css (mêmes valeurs que StatutGraphiqueCouleurs et les PDF). */

.pd-gantt-scroll[b-ifkzblgwf6] {
    overflow-x: auto;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: var(--mud-default-borderradius);
}

.pd-gantt[b-ifkzblgwf6] {
    width: 100%;
}

/* ── Lignes d'en-tête (années / trimestres) ───────────────────────── */
.pd-gantt-headrow[b-ifkzblgwf6] {
    display: flex;
    align-items: stretch;
}

.pd-gantt-scale[b-ifkzblgwf6] {
    display: flex;
    flex: 1;
}

.pd-gantt-year[b-ifkzblgwf6],
.pd-gantt-quarter[b-ifkzblgwf6] {
    border-left: 1px solid var(--mud-palette-lines-default);
    text-align: center;
    padding: 6px 4px;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
}

.pd-gantt-year[b-ifkzblgwf6] {
    flex-basis: 0;
    color: var(--mud-palette-text-primary);
}

.pd-gantt-quarter[b-ifkzblgwf6] {
    flex: 1;
}

/* ── Colonne de libellé (partagée en-têtes et lignes) ─────────────── */
.pd-gantt-label[b-ifkzblgwf6] {
    width: 230px;
    min-width: 230px;
    padding: 6px 14px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    /* Colonne figée pendant le défilement horizontal (AC1). Fond opaque pour
       masquer barres/gridlines qui glissent dessous ; z-index < repère « Aujourd'hui ». */
    position: sticky;
    left: 0;
    z-index: 2;
    background-color: var(--mud-palette-surface);
}

/* Conserve le survol de ligne sur la cellule de libellé figée (sinon masqué par son fond opaque). */
.pd-gantt-row:hover .pd-gantt-label[b-ifkzblgwf6] {
    background-color: var(--mud-palette-action-default-hover);
}

/* ── Corps ────────────────────────────────────────────────────────── */
.pd-gantt-body[b-ifkzblgwf6] {
    position: relative;
}

.pd-gantt-group[b-ifkzblgwf6] {
    background-color: var(--mud-palette-action-default-hover);
    font-weight: 600;
    font-size: 0.82rem;
    padding: 7px 14px;
    color: var(--mud-palette-text-primary);
    border-top: 1px solid var(--mud-palette-lines-default);
}

/* Le nom du programme reste figé à gauche pendant le scroll horizontal (AC1). */
.pd-gantt-group__label[b-ifkzblgwf6] {
    position: sticky;
    left: 14px;
    display: inline-block;
}

.pd-gantt-row[b-ifkzblgwf6] {
    display: flex;
    align-items: stretch;
    border-top: 1px solid var(--mud-palette-lines-default);
    cursor: pointer;
}

.pd-gantt-row:hover[b-ifkzblgwf6] {
    background-color: var(--mud-palette-action-default-hover);
}

.pd-gantt-track[b-ifkzblgwf6] {
    position: relative;
    flex: 1;
    height: 38px;
}

.pd-gantt-gridlines[b-ifkzblgwf6] {
    position: absolute;
    inset: 0;
    display: flex;
}

.pd-gantt-gridlines span[b-ifkzblgwf6] {
    flex: 1;
    border-left: 1px solid var(--mud-palette-lines-default);
}

/* ── Barres projet ────────────────────────────────────────────────── */
.pd-gantt-bar[b-ifkzblgwf6] {
    position: absolute;
    top: 9px;
    height: 20px;
    border-radius: 5px;
    color: var(--mud-palette-white);
    font-size: 0.68rem;
    line-height: 20px;
    padding: 0 8px;
    white-space: nowrap;
    overflow: hidden;
    box-shadow: var(--mud-elevation-1);
}

.pd-gantt-bar__label[b-ifkzblgwf6] {
    pointer-events: none;
}

.pd-bar--ademarrer[b-ifkzblgwf6] {
    background-color: var(--app-statut-a-demarrer);
}

.pd-bar--encours[b-ifkzblgwf6] {
    background-color: var(--mud-palette-primary);
}

/* Plus foncé que « À démarrer » pour rester distinguable malgré la parenté des deux teintes. */
.pd-bar--enpause[b-ifkzblgwf6] {
    background-color: var(--app-statut-en-pause);
}

.pd-bar--hypercare[b-ifkzblgwf6] {
    background-color: var(--app-statut-hypercare);
}

/* Segment d'hypercare : il prolonge la barre du projet à sa fin réelle, comme le dépassement. */
.pd-bar--hypercare-suite[b-ifkzblgwf6] {
    border-radius: 0 5px 5px 0;
}

.pd-bar--ferme[b-ifkzblgwf6] {
    background-color: var(--mud-palette-success);
}

.pd-bar--abandonne[b-ifkzblgwf6] {
    background-color: var(--mud-palette-error);
}

.pd-bar--overshoot[b-ifkzblgwf6] {
    border-radius: 0 5px 5px 0;
    background: repeating-linear-gradient(45deg, var(--mud-palette-error), var(--mud-palette-error) 4px, var(--app-gantt-depassement) 4px, var(--app-gantt-depassement) 8px);
}

/* Segment de période de pause : même mécanique que --overshoot (bloc séparé superposé à la barre),
   hachuré dans la teinte de --enpause pour rester associé au statut En pause. */
.pd-bar--pause[b-ifkzblgwf6] {
    background: repeating-linear-gradient(45deg, var(--app-statut-en-pause), var(--app-statut-en-pause) 4px, var(--app-statut-en-pause-hachure) 4px, var(--app-statut-en-pause-hachure) 8px);
}


/* ── Repère « Aujourd'hui » ───────────────────────────────────────── */
.pd-gantt-today-line[b-ifkzblgwf6] {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    background-color: var(--mud-palette-error);
    z-index: 5;
    pointer-events: none;
}

.pd-gantt-today-flag[b-ifkzblgwf6] {
    position: absolute;
    top: -1px;
    transform: translateX(-50%);
    background-color: var(--mud-palette-error);
    color: var(--mud-palette-white);
    font-size: 0.62rem;
    padding: 1px 6px;
    border-radius: 3px;
    z-index: 6;
    white-space: nowrap;
    pointer-events: none;
}

/* ── Légende ──────────────────────────────────────────────────────── */
.pd-gantt-legend[b-ifkzblgwf6] {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
    font-size: 0.78rem;
    color: var(--mud-palette-text-secondary);
}

.pd-gantt-legend__group[b-ifkzblgwf6] {
    font-weight: 600;
    color: var(--mud-palette-text-primary);
}

.pd-gantt-legend__item[b-ifkzblgwf6] {
    display: flex;
    gap: 7px;
    align-items: center;
}

/* Léger décalage du bloc Dépassement/Pause : ce sont des segments superposés à un statut, pas un
   statut de plus, d'où leur séparation du bloc des 5 statuts qui précède. */
.pd-gantt-legend__item--offset[b-ifkzblgwf6] {
    margin-left: 12px;
}

.pd-gantt-swatch[b-ifkzblgwf6] {
    width: 26px;
    height: 12px;
    border-radius: 3px;
    display: inline-block;
}
/* /Components/Pages/Reporting/ReportingDureeOnglet.razor.rz.scp.css */
/* Le donut occupe exactement sa taille : la légende et la liste « À démarrer » suivent dans le flux. */
.reporting-duree-onglet-donut[b-rhlkymes0g] {
    width: 220px;
    height: 220px;
}

/* Les textes SVG sont produits par le donut MudBlazor : ::deep les atteint. */
.reporting-duree-onglet-donut[b-rhlkymes0g]  .reporting-duree-onglet-donut-valeur {
    fill: var(--mud-palette-white);
    font-size: 16px;
    font-weight: 700;
    text-anchor: middle;
    dominant-baseline: central;
    pointer-events: none;
}

.reporting-duree-onglet-donut[b-rhlkymes0g]  .reporting-duree-onglet-donut-total-nombre {
    fill: var(--mud-palette-text-primary);
    font-size: 34px;
    font-weight: 500;
    text-anchor: middle;
    dominant-baseline: central;
    pointer-events: none;
}

.reporting-duree-onglet-donut[b-rhlkymes0g]  .reporting-duree-onglet-donut-total-libelle {
    fill: var(--mud-palette-text-secondary);
    font-size: 14px;
    text-anchor: middle;
    dominant-baseline: central;
    pointer-events: none;
}

.reporting-duree-onglet-pastille[b-rhlkymes0g] {
    width: 12px;
    height: 12px;
    border-radius: 50%;
}

.reporting-duree-onglet-a-demarrer-liste[b-rhlkymes0g] {
    width: 100%;
    max-height: 320px;
    overflow-y: auto;
}

/* Couleur du segment « À démarrer » du donut (StatutGraphiqueCouleurs). */
.reporting-duree-onglet-a-demarrer-pastille[b-rhlkymes0g] {
    flex: none;
    background: var(--app-statut-a-demarrer);
}
/* /Components/Pages/Reporting/ReportingEnCoursGrille.razor.rz.scp.css */
/* Layout-neutral root of the grid: it only anchors the ::deep of the classes set on the grid's columns,
   cells and row details. */
.reporting-en-cours-grille[b-u4ej9pfktp] {
    display: contents;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-col-programme {
    width: 130px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  td.reporting-en-cours-grille-col-programme {
    max-width: 130px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-col-projet {
    min-width: 200px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-col-avancement {
    width: 130px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-col-reporting {
    min-width: 220px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  td.reporting-en-cours-grille-col-reporting {
    max-width: 320px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-col-budget {
    width: 120px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  td.reporting-en-cours-grille-col-budget {
    text-align: right;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-col-indicateurs {
    width: 150px;
}

.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-col-ouvrir {
    width: 70px;
}

/* Small italic mention under a cell's main text (governance actors, reporting date). */
.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-mention {
    font-style: italic;
    font-size: 0.7rem;
}

/* Fixed-width progress bar: beats MudBlazor's ".mud-progress-linear.horizontal { width: 100% }". */
.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-avancement {
    width: 60px;
}

/* Synthesis cut to two lines; the tooltip carries the full text. */
.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-synthese {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Row detail: width 1px + min-width 100% keeps the card inside the cell instead of widening the grid. */
.reporting-en-cours-grille[b-u4ej9pfktp]  .reporting-en-cours-grille-detail {
    border-left: 3px solid var(--mud-palette-primary);
    width: 1px;
    min-width: 100%;
    box-sizing: border-box;
}
/* /Components/Pages/Reporting/ReportingFigesGrille.razor.rz.scp.css */
/* Layout-neutral root of the grid: it only anchors the ::deep of the classes set on the grid's columns and cells. */
.reporting-figes-grille[b-jv8t0z0nk2] {
    display: contents;
}

.reporting-figes-grille[b-jv8t0z0nk2]  .reporting-figes-grille-col-fige-le {
    width: 150px;
}

.reporting-figes-grille[b-jv8t0z0nk2]  .reporting-figes-grille-col-libelle,
.reporting-figes-grille[b-jv8t0z0nk2]  .reporting-figes-grille-col-auteur {
    width: 180px;
}

.reporting-figes-grille[b-jv8t0z0nk2]  .reporting-figes-grille-col-actions {
    width: 150px;
}
/* /Components/Pages/Reporting/SuiviTempsPage.razor.rz.scp.css */
/* Share of the total in the « Part » and « Taux de validation » columns: a fixed-width bar, then the percentage. */
.suivi-temps-page-part[b-8m4lbh229a] {
    min-width: 140px;
}

/* Beats MudBlazor's ".mud-progress-linear.horizontal { width: 100% }". */
.suivi-temps-page-part[b-8m4lbh229a]  .suivi-temps-page-barre {
    width: 90px;
}
/* /Components/Pages/TimeTracking/CalendrierMensuel.razor.rz.scp.css */
.calendrier-mensuel[b-fzdlul28fz] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.calendrier-mensuel-entete[b-fzdlul28fz] {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 4px;
    padding: 0 4px;
}

.calendrier-mensuel-entete > div[b-fzdlul28fz] {
    text-align: center;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.calendrier-mensuel-semaine[b-fzdlul28fz] {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 4px;
}

.calendrier-mensuel-jour[b-fzdlul28fz] {
    height: 116px;
    border: 1px solid var(--mud-palette-table-lines);
    border-radius: 8px;
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 3px;
    overflow: hidden;
}

.calendrier-mensuel-jour-entrees[b-fzdlul28fz] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.calendrier-mensuel-jour--hors-mois[b-fzdlul28fz] {
    border-color: transparent;
}

.calendrier-mensuel-jour--ferie[b-fzdlul28fz] {
    background: var(--mud-palette-action-default-hover);
}

.calendrier-mensuel-jour-entete[b-fzdlul28fz] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.calendrier-mensuel-jour-lien[b-fzdlul28fz] {
    margin-left: auto;
    opacity: 0;
    transition: opacity 0.15s ease-in-out;
}

.calendrier-mensuel-jour:hover .calendrier-mensuel-jour-lien[b-fzdlul28fz] {
    opacity: 1;
}

.calendrier-mensuel-entree[b-fzdlul28fz] {
    display: flex;
    align-items: flex-start;
    gap: 4px;
    font-size: 0.75rem;
    line-height: 1.3;
}

.calendrier-mensuel-pastille[b-fzdlul28fz] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
    margin-top: 4px;
}

.calendrier-mensuel-entree-libelle[b-fzdlul28fz] {
    flex: 1 1 auto;
    min-width: 0;
    overflow-wrap: anywhere;
}

.calendrier-mensuel-entree-heures[b-fzdlul28fz] {
    flex-shrink: 0;
    font-weight: 700;
    color: var(--mud-palette-text-secondary);
}
/* /Components/Pages/TimeTracking/CollaborateurSelecteur.razor.rz.scp.css */
.collaborateur-selecteur-champ[b-rflas80ajt] {
    min-width: 240px;
}
/* /Components/Pages/TimeTracking/TimeTrackingPage.razor.rz.scp.css */
/* Layout-neutral root of the page: it only anchors the ::deep rules on MudBlazor components. */
.time-tracking-page-root[b-kddua4jhmj] {
    display: contents;
}

/* Project select of the desktop grid. */
.time-tracking-page-root[b-kddua4jhmj]  .time-tracking-page-projet {
    min-width: 160px;
}

/* Day fields of the desktop grid: MudNumericField's former Style sat on the inner .mud-input. */
.time-tracking-page-root[b-kddua4jhmj]  .time-tracking-page-jour .mud-input {
    width: 85px;
}

/* Mobile card: day name column in front of the quick-value buttons. */
.time-tracking-page-jour-libelle[b-kddua4jhmj] {
    width: 54px;
}

/* Mobile week totals, kept in view at the bottom of the screen. */
.time-tracking-page-root[b-kddua4jhmj]  .time-tracking-page-totaux {
    position: sticky;
    bottom: 8px;
    z-index: 2;
}

.time-tracking-page-total-jour--depasse[b-kddua4jhmj] {
    background: var(--mud-palette-error-hover);
}
/* /Components/Shared/AppDrawer.razor.rz.scp.css */
/* Couleur de chaque famille d'objet : jeton de la palette du thème quand il existe (suit le mode
   sombre), jeton --app-comite de app.css pour le violet du comité, absent de la palette. Posée sur le
   conteneur, la variable est héritée par l'en-tête ci-dessous et par DrawerSection. */
.app-drawer-accent--projet[b-k34lczuqkp] { --app-drawer-accent: var(--mud-palette-primary); --app-drawer-accent-contrast: var(--mud-palette-primary-text); }
.app-drawer-accent--risque[b-k34lczuqkp] { --app-drawer-accent: var(--mud-palette-error); --app-drawer-accent-contrast: var(--mud-palette-error-text); }
.app-drawer-accent--budget[b-k34lczuqkp] { --app-drawer-accent: var(--mud-palette-success); --app-drawer-accent-contrast: var(--mud-palette-success-text); }
.app-drawer-accent--document[b-k34lczuqkp] { --app-drawer-accent: var(--mud-palette-warning); --app-drawer-accent-contrast: var(--mud-palette-warning-text); }
.app-drawer-accent--jalon[b-k34lczuqkp] { --app-drawer-accent: var(--mud-palette-tertiary); --app-drawer-accent-contrast: var(--mud-palette-tertiary-text); }
.app-drawer-accent--comite[b-k34lczuqkp],
.app-drawer-accent--decision[b-k34lczuqkp] { --app-drawer-accent: var(--app-comite); --app-drawer-accent-contrast: var(--app-comite-contrast); }

.app-drawer-header[b-k34lczuqkp] {
    display: flex;
    gap: 14px;
    padding: 20px 16px 16px;
    background: color-mix(in srgb, var(--app-drawer-accent) 12%, transparent);
    border-bottom: 3px solid var(--app-drawer-accent);
}

.app-drawer-badge[b-k34lczuqkp] {
    flex: none;
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--app-drawer-accent);
    color: var(--app-drawer-accent-contrast);
}

.app-drawer-heading[b-k34lczuqkp] {
    min-width: 0;
}
/* /Components/Shared/BudgetGauge.razor.rz.scp.css */
.budget-gauge[b-pvwto1738i] {
    position: relative;
}

/* Ligne verticale marquant la limite du budget (100 %). La zone remplie au-delà
   de ce repère matérialise le dépassement. */
.budget-gauge__limit[b-pvwto1738i] {
    position: absolute;
    top: -2px;
    bottom: -2px;
    width: 2px;
    background-color: var(--mud-palette-dark);
    opacity: 0.6;
    transform: translateX(-1px);
    pointer-events: none;
}
/* /Components/Shared/ChargeMensuelChart.razor.rz.scp.css */
.cmc[b-suw2348hzt] {
    display: grid;
    grid-template-columns: 40px repeat(12, minmax(0, 1fr));
    grid-template-rows: var(--cmc-hauteur) auto auto;
    padding-top: 20px;
}

/* Axe gradué (colonne 1) et lignes de fond (colonnes 2 à 13) : mêmes graduations, même hauteur. */
.cmc-axe[b-suw2348hzt] {
    grid-column: 1;
    grid-row: 1;
    position: relative;
}

.cmc-graduation[b-suw2348hzt] {
    color: var(--mud-palette-text-secondary);
    font-size: 0.75rem;
    padding-right: 8px;
    position: absolute;
    right: 0;
    transform: translateY(50%);
}

.cmc-fond[b-suw2348hzt] {
    grid-column: 2 / span 12;
    grid-row: 1;
    position: relative;
}

.cmc-ligne[b-suw2348hzt] {
    border-top: 1px solid var(--mud-palette-lines-default);
    left: 0;
    position: absolute;
    right: 0;
}

.cmc-colonne[b-suw2348hzt] {
    align-items: flex-end;
    display: flex;
    grid-row: 1;
    justify-content: center;
    position: relative;
}

/* Pile de segments : sa hauteur est la valeur du mois sur l'échelle de l'axe. */
.cmc-pile[b-suw2348hzt] {
    display: flex;
    flex-direction: column-reverse;
    position: relative;
    width: min(60%, 28px);
}

.cmc-pile-vide[b-suw2348hzt] {
    background-color: var(--mud-palette-primary);
    min-height: 2px;
    opacity: 0.4;
}

.cmc-segment[b-suw2348hzt] {
    flex: none;
    width: 100%;
}

.cmc-total[b-suw2348hzt] {
    bottom: 100%;
    color: var(--mud-palette-text-primary);
    font-size: 0.75rem;
    left: 50%;
    padding-bottom: 2px;
    position: absolute;
    transform: translateX(-50%);
    white-space: nowrap;
}

.cmc-libelle[b-suw2348hzt] {
    color: var(--mud-palette-text-primary);
    font-size: 0.75rem;
    grid-row: 2;
    padding-top: 6px;
    text-align: center;
}

.cmc-pied[b-suw2348hzt] {
    align-items: center;
    min-width: 0;
    padding-top: 4px;
    display: flex;
    flex-direction: column;
    grid-row: 3;
    min-height: 40px;
}

/* Courbe de repère superposée aux barres : même zone que les colonnes, sans bloquer les clics. */
.cmc-courbe[b-suw2348hzt] {
    grid-column: 2 / span 12;
    grid-row: 1;
    min-height: 0;
    pointer-events: none;
    position: relative;
}

.cmc-courbe-svg[b-suw2348hzt] {
    height: 100%;
    left: 0;
    overflow: visible;
    position: absolute;
    top: 0;
    width: 100%;
}

.cmc-point[b-suw2348hzt] {
    background-color: var(--cmc-courbe);
    border: 2px solid var(--mud-palette-surface);
    border-radius: 50%;
    height: 10px;
    pointer-events: auto;
    position: absolute;
    transform: translate(-50%, 50%);
    width: 10px;
}
/* /Components/Shared/ChoiceChips.razor.rz.scp.css */
.choice-chips-required[b-1gzbpfjt5c] {
    color: var(--mud-palette-error);
    margin-left: 2px;
}

/* A chip that warns (a confidential project type): red with white text, selected or not. The MudBlazor chip is rendered by
   the child component, hence ::deep; !important beats the outlined and selected variants it sets. */
.choice-chips[b-1gzbpfjt5c]  .mud-chip.choice-chips-danger {
    background-color: var(--mud-palette-error) !important;
    border-color: var(--mud-palette-error) !important;
    color: var(--mud-palette-error-text) !important;
}

.choice-chips[b-1gzbpfjt5c]  .mud-chip.choice-chips-danger .mud-icon-root,
.choice-chips[b-1gzbpfjt5c]  .mud-chip.choice-chips-danger .mud-chip-content {
    color: var(--mud-palette-error-text) !important;
}
/* /Components/Shared/DetailLignesTravail.razor.rz.scp.css */
/* Layout-neutral root of the component: it only anchors the ::deep rule on the MudCard. */
.detail-lignes-travail[b-nvklfse472] {
    display: contents;
}

/* Primary accent on the left edge of the timesheet line detail. */
.detail-lignes-travail[b-nvklfse472]  .detail-lignes-travail-carte {
    border-left: 3px solid var(--mud-palette-primary);
}
/* /Components/Shared/DrawerLayout.razor.rz.scp.css */
/* Barre d'actions collée en bas du volet tant que le contenu défile. Les marges négatives compensent le
   pa-4 du corps pour que la barre touche les bords du volet. */
.drawer-layout-actions[b-d4miv30tym] {
    position: sticky;
    bottom: 0;
    z-index: 1;
    margin: 16px -16px -16px;
    padding: 12px 16px;
    background: var(--mud-palette-drawer-background);
    border-top: 1px solid var(--mud-palette-divider);
}
/* /Components/Shared/DrawerSection.razor.rz.scp.css */
.drawer-section[b-db8aqcj49w] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.drawer-section[b-db8aqcj49w]::before {
    content: "";
    flex: none;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--app-drawer-accent, var(--mud-palette-primary));
}

.drawer-section[b-db8aqcj49w]::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--mud-palette-divider);
}

.drawer-section[b-db8aqcj49w]  .drawer-section-title {
    font-weight: 700;
    color: var(--mud-palette-text-primary);
}
/* /Components/Shared/KpiPastilles.razor.rz.scp.css */
/* Pastille libellé + valeur : fond et texte posés par le composant, section valeur légèrement surlignée. */
.kpi-pastilles[b-fbodoia6qs]  .kpi-pastille {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    overflow: hidden;
    font-weight: 600;
    font-size: 0.8125rem;
    line-height: 1.6;
}

.kpi-pastilles[b-fbodoia6qs]  .kpi-pastille__libelle {
    padding: 2px 12px;
}

/* Largeurs réservées (3 chiffres, « 100 % ») et chiffres à chasse fixe : la carte ne bouge pas quand la valeur
   remplace le tiret du chargement ou quand un compte passe de 9 à 10. La largeur inclut le padding (border-box). */
.kpi-pastilles[b-fbodoia6qs]  .kpi-pastille__valeur {
    min-width: calc(3ch + 20px);
    padding: 2px 10px;
    text-align: center;
    font-variant-numeric: tabular-nums;
    background-color: color-mix(in srgb, currentColor 18%, transparent);
}

.kpi-pastilles[b-fbodoia6qs]  .kpi-pastille__legende {
    display: inline-block;
    min-width: 5ch;
    font-variant-numeric: tabular-nums;
}

/* Carte retenue par le filtre : un second filet intérieur à la couleur primaire, sans décaler la carte. */
.kpi-pastilles[b-fbodoia6qs]  .kpi-pastille-carte--retenue {
    box-shadow: inset 0 0 0 1px var(--mud-palette-primary);
}
/* /Components/Shared/NotificationBell.razor.rz.scp.css */
/* A notification of the menu wraps on several lines within a fixed width. */
.notification-bell-item[b-4yvcjeu626] {
    max-width: 320px;
    white-space: normal;
}
/* /Components/Shared/Page/SectionLabel.razor.rz.scp.css */
.section-label-root[b-lbw3rn4emc] {
    display: contents;
}

.section-label-root[b-lbw3rn4emc]  .section-label {
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}
/* /Components/Shared/PageShell.razor.rz.scp.css */
/* Réserve une hauteur FIXE pour le fil d'Ariane afin que la mise en page reste identique
   entre les pages qui en possèdent un et celles qui n'en ont pas.
   Une hauteur fixe (et non min-height) est indispensable : sinon le slot grandit à la hauteur
   réelle du fil d'Ariane quand il est présent, ce qui recrée le décalage. */
.pd-breadcrumbs-slot[b-vizvx9b37s] {
    display: flex;
    align-items: center;
    height: 1.75rem;
}

/* Neutralise les marges / paddings internes de MudBreadcrumbs pour que sa hauteur ne dépasse
   pas celle du slot réservé. */
.pd-breadcrumbs-slot[b-vizvx9b37s]  .mud-breadcrumbs {
    margin: 0;
    padding: 0;
}
/* /Components/Shared/PdfPreviewPanel.razor.rz.scp.css */
.pdf-preview-panel[b-rdv4tz46h3] {
    position: fixed;
    top: 0;
    right: 0;
    width: 55%;
    max-width: 900px;
    min-width: 400px;
    height: 100vh;
    z-index: 1300;
    background: var(--mud-palette-surface);
    box-shadow: var(--mud-elevation-16);
    display: flex;
    flex-direction: column;
    animation: slide-in-right-b-rdv4tz46h3 0.25s ease-out;
}

.pdf-preview-header[b-rdv4tz46h3] {
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.pdf-preview-content[b-rdv4tz46h3] {
    flex: 1;
    position: relative;
}

.pdf-preview-loader[b-rdv4tz46h3] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--mud-palette-surface);
    z-index: 1;
}

.pdf-preview-iframe[b-rdv4tz46h3] {
    width: 100%;
    height: 100%;
    border: none;
}

@keyframes slide-in-right-b-rdv4tz46h3 {
    from {
        transform: translateX(100%);
    }

    to {
        transform: translateX(0);
    }
}
/* /Components/Shared/ProgressBarPicker.razor.rz.scp.css */
.progress-picker[b-1qr5etidf5] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.progress-picker-head[b-1qr5etidf5] {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

.progress-picker[b-1qr5etidf5]  .progress-picker-value {
    /* Les titres du thème restent proches du corps de texte : la valeur est dimensionnée ici pour se lire en grand. */
    font-size: 1.5rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    line-height: 1;
}

.progress-picker-unit[b-1qr5etidf5] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--mud-palette-text-secondary);
}

.progress-picker-bar[b-1qr5etidf5] {
    position: relative;
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    height: 28px;
    border-radius: 99px;
    overflow: hidden;
    background: var(--mud-palette-divider);
}

.progress-picker-fill[b-1qr5etidf5] {
    position: absolute;
    inset: 0 auto 0 0;
    border-radius: 99px;
    background: linear-gradient(90deg, var(--mud-palette-primary), var(--mud-palette-success));
    pointer-events: none;
    transition: width 0.15s;
}

.progress-picker-zone[b-1qr5etidf5] {
    position: relative;
    z-index: 1;
    padding: 0;
    border: 0;
    border-right: 1px solid color-mix(in srgb, var(--mud-palette-surface) 55%, transparent);
    background: none;
    cursor: pointer;
}

.progress-picker-zone:last-child[b-1qr5etidf5] {
    border-right: 0;
}

.progress-picker-zone:hover[b-1qr5etidf5] {
    background: color-mix(in srgb, var(--mud-palette-text-primary) 10%, transparent);
}

.progress-picker-zone:focus-visible[b-1qr5etidf5] {
    outline: 2px solid var(--mud-palette-primary-darken);
    outline-offset: -2px;
}

.progress-picker-ticks[b-1qr5etidf5] {
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
}

/* Le 0 partage la première cellule avec le repère 10 : chaque repère est donc placé dans sa colonne, sur la
   première ligne, sans quoi le dernier (100) déborde sur une seconde ligne, à gauche. */
.progress-picker-ticks span[b-1qr5etidf5] {
    grid-row: 1;
    text-align: right;
}

.progress-picker-zero[b-1qr5etidf5] {
    grid-column: 1;
    grid-row: 1;
    justify-self: start;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

.progress-picker-zero:hover[b-1qr5etidf5] {
    color: var(--mud-palette-text-primary);
}
/* /Components/Shared/RichTextDisplay.razor.rz.scp.css */
/* Read-only rich text. Wrap between words, never inside one: word-break stays normal, and overflow-wrap
   only steps in for a token too long to fit a line on its own (a pasted URL). Content pasted from Office
   separates every word with a non-breaking space, which offers no break opportunity at all: those are
   rewritten into regular spaces upstream by HtmlText.NormalizeNonBreakingSpaces. The sanitized HTML is a
   MarkupString, reached through ::deep anchored on the component's own div. */
.rte-content[b-39gljth8iy] {
    overflow-wrap: break-word;
    word-break: normal;
}

.rte-content[b-39gljth8iy]  p {
    margin: 0 0 0.5rem;
}

.rte-content[b-39gljth8iy]  p:last-child {
    margin-bottom: 0;
}

.rte-content[b-39gljth8iy]  ul,
.rte-content[b-39gljth8iy]  ol {
    margin: 0 0 0.5rem;
    padding-left: 1.5rem;
}
/* /Components/Shared/RichTextEditor.razor.rz.scp.css */
/* Quill field (toolbar + editing area, both rendered by Quill's JavaScript inside the root div): borders in
   the input color, red when ErrorText is set, like MudBlazor's outlined fields in error; the theme radius on
   the outer corners. The label (.rte-label) and the column layout (.rte-field) are in app.css, shared with
   FicheEmbarquementTexte. */
.rich-text-editor-required[b-05d21thm34] {
    color: var(--mud-palette-error);
}

.rich-text-editor-surface[b-05d21thm34] {
    background: var(--mud-palette-surface);
    min-height: 120px;
}

.rich-text-editor[b-05d21thm34]  .ql-toolbar.ql-snow,
.rich-text-editor[b-05d21thm34]  .ql-container.ql-snow {
    border-color: var(--mud-palette-lines-inputs);
}

/* Declared after the rule above, to win at equal specificity. */
.rich-text-editor--invalid[b-05d21thm34]  .ql-toolbar.ql-snow,
.rich-text-editor--invalid[b-05d21thm34]  .ql-container.ql-snow {
    border-color: var(--mud-palette-error);
}

.rich-text-editor[b-05d21thm34]  .ql-toolbar.ql-snow {
    border-top-left-radius: var(--mud-default-borderradius);
    border-top-right-radius: var(--mud-default-borderradius);
}

.rich-text-editor[b-05d21thm34]  .ql-container.ql-snow {
    border-bottom-left-radius: var(--mud-default-borderradius);
    border-bottom-right-radius: var(--mud-default-borderradius);
    font-family: inherit;
    font-size: 0.875rem;
}
/* /Components/Shared/TabEmptyState.razor.rz.scp.css */
/* Neutral root that anchors ::deep: the layout is the MudStack's. */
.tab-empty-state[b-0m63x5vifz] {
    display: contents;
}

.tab-empty-state[b-0m63x5vifz]  .tab-empty-state-icon {
    opacity: 0.35;
}

.tab-empty-state[b-0m63x5vifz]  .tab-empty-state-description {
    max-width: 340px;
}
/* /Components/Shared/Tables/ArbreFeuilleEspace.razor.rz.scp.css */
.arbre-feuille-espace[b-cism5u2mbv] {
    display: inline-block;
    flex: 0 0 32px;
    width: 32px;
}
