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

/* /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) !important;
    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/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/HomePage.razor.rz.scp.css */
/* Project list rows (favoris, mon portefeuille, projets récemment créés): keep the
   status chip and the progress percentage aligned in fixed columns across rows,
   regardless of the project name length. */
.projet-row-meta[b-u14g8a0hh0] {
    flex: 0 0 auto;
}

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

.projet-row-pct[b-u14g8a0hh0] {
    min-width: 42px;
    text-align: right;
}
/* /Components/Pages/Projets/ProjetDetailPage.razor.rz.scp.css */
/* Project detail tab bar — "pill" styling.
   The active tab is filled with the Perial logo blue (#2e5397, taken from the
   logo gradient), 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. */

.projet-tabs[b-s5dol4du89] {
    /* Perial logo blue and a slightly darker shade for the active hover state. */
    --perial-tab-active: #2e5397;
    --perial-tab-active-hover: #264676;
}

/* 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(--perial-tab-active);
    color: #fff;
    box-shadow: 0 4px 14px rgba(46, 83, 151, .30);
}

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

.projet-tabs[b-s5dol4du89]  .mud-tab.mud-tab-active .mud-icon-root {
    color: #fff;
}
/* /Components/Pages/Projets/Tabs/BudgetTab.razor.rz.scp.css */
.budget-tab-chart[b-9cm67npofu] {
    height: 420px;
    width: 100%;
}

.budget-tab-chart-marker[b-9cm67npofu] {
    border-radius: 50%;
    display: inline-block;
    height: 12px;
    width: 12px;
}
/* /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/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;
}

.pd-duree-bar--primary[b-1n7jk1lxnh] {
    background: #1976d2;
}

.pd-duree-bar--success[b-1n7jk1lxnh] {
    background: #2d9c6a;
}

.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 réutilisent les variables de palette MudBlazor lorsqu'elles existent ;
   les nuances spécifiques (gris-bleu, hachures) restent en valeurs dédiées. */

.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;
    background-color: var(--mud-palette-background-grey);
}

.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);
}

/* En-têtes (coin années + « Projet ») : fond gris cohérent avec la bande d'en-tête. */
.pd-gantt-headrow .pd-gantt-label[b-ifkzblgwf6] {
    background-color: var(--mud-palette-background-grey);
}

/* 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);
}

.pd-gantt-corner[b-ifkzblgwf6] {
    background-color: var(--mud-palette-background-grey);
}

.pd-gantt-projname[b-ifkzblgwf6] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ── 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: #fff;
    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: #90a4c4;
}

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

.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, #ef9a9a 4px, #ef9a9a 8px);
}

/* ── Jalons (losanges positionnés sur la barre projet) ────────────── */
.pd-gantt-jalon[b-ifkzblgwf6] {
    position: absolute;
    top: 19px;
    transform: translate(-50%, -50%);
    z-index: 4;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.pd-gantt-jalon__mark[b-ifkzblgwf6] {
    width: 13px;
    height: 13px;
    transform: rotate(45deg);
    border-radius: 2px;
    border: 2px solid #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}

.pd-gantt-jalon__label[b-ifkzblgwf6] {
    margin-top: 9px;
    max-width: 88px;
    font-size: 0.6rem;
    line-height: 1.1;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: center;
    pointer-events: none;
}

/* Couleurs des jalons selon le statut (cohérentes avec l'onglet Jalons). */
.pd-jalon--planifie[b-ifkzblgwf6] {
    background-color: var(--mud-palette-warning);
}

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

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

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

.pd-jalon--annule[b-ifkzblgwf6] {
    background-color: #9e9e9e;
}

/* ── 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: #fff;
    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--jalons[b-ifkzblgwf6] {
    margin-top: 4px;
    padding-top: 10px;
    border-top: 1px dashed var(--mud-palette-lines-default);
}

.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;
}

.pd-gantt-swatch[b-ifkzblgwf6] {
    width: 26px;
    height: 12px;
    border-radius: 3px;
    display: inline-block;
}

.pd-gantt-jalon-swatch[b-ifkzblgwf6] {
    width: 13px;
    height: 13px;
    transform: rotate(45deg);
    border-radius: 2px;
    border: 2px solid #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
    display: inline-block;
    margin: 0 3px;
}
/* /Components/Pages/Reporting/ReportingProjetsPage.razor.rz.scp.css */
/* Le donut occupe exactement sa taille : la légende et la liste « À démarrer » suivent dans le flux. */
.pd-donut[b-xwsa4kj8ln] {
    width: 220px;
    height: 220px;
}

/* Les textes SVG sont produits par le donut MudBlazor : ::deep les atteint. */
.pd-donut[b-xwsa4kj8ln]  .pd-donut-valeur {
    fill: #fff;
    font-size: 16px;
    font-weight: 700;
    text-anchor: middle;
    dominant-baseline: central;
    pointer-events: none;
}

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

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

.pd-legende-pastille[b-xwsa4kj8ln] {
    width: 12px;
    height: 12px;
    border-radius: 50%;
}

.pd-a-demarrer-liste[b-xwsa4kj8ln] {
    width: 100%;
    max-height: 320px;
    overflow-y: auto;
}

/* Même gris que le segment « À démarrer » du donut (premier de la palette). */
.pd-a-demarrer-pastille[b-xwsa4kj8ln] {
    flex: none;
    background: #78909c;
}

.pd-a-demarrer-ligne[b-xwsa4kj8ln] {
    border-radius: var(--mud-default-borderradius);
    transition: background-color .15s;
}

.pd-a-demarrer-ligne:hover[b-xwsa4kj8ln] {
    background-color: var(--mud-palette-action-default-hover);
}

.pd-a-demarrer-ligne[b-xwsa4kj8ln]  .pd-a-demarrer-nom {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pd-a-demarrer-ligne[b-xwsa4kj8ln]  .pd-a-demarrer-ouvrir {
    flex: none;
    opacity: 0;
    color: var(--mud-palette-text-secondary);
    transition: opacity .15s;
}

.pd-a-demarrer-ligne:hover[b-xwsa4kj8ln]  .pd-a-demarrer-ouvrir,
.pd-a-demarrer-ligne:focus-visible[b-xwsa4kj8ln]  .pd-a-demarrer-ouvrir {
    opacity: 1;
}
/* /Components/Pages/TimeTracking/TimeTrackingPage.razor.rz.scp.css */
.ttcal[b-kddua4jhmj] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

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

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

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

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

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

.ttcal-jour--hors-mois[b-kddua4jhmj] {
    border-color: transparent;
}

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

.ttcal-jour-entete[b-kddua4jhmj] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.ttcal-jour-libelle-icone[b-kddua4jhmj] {
    flex-shrink: 0;
}

.ttcal-jour-libelle[b-kddua4jhmj] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    color: var(--mud-palette-text-secondary);
}

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

.ttcal-jour:hover .ttcal-jour-lien[b-kddua4jhmj] {
    opacity: 1;
}

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

.ttcal-entree-icone[b-kddua4jhmj] {
    flex-shrink: 0;
    margin-top: 2px;
}

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

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

.ttcal-entree-heures[b-kddua4jhmj] {
    flex-shrink: 0;
    font-weight: 700;
    color: var(--mud-palette-text-secondary);
}

.ttcal-jour-total[b-kddua4jhmj] {
    margin-top: auto;
    text-align: right;
}
/* /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), couleur propre au drawer 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: #9b51e0; --app-drawer-accent-contrast: #ffffff; }

.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/ChoiceChips.razor.rz.scp.css */
.choice-chips-required[b-1gzbpfjt5c] {
    color: var(--mud-palette-error);
    margin-left: 2px;
}
/* /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/PageKpiCard.razor.rz.scp.css */
/* Carte KPI : hauteur minimale uniforme pour un alignement homogène sur la grille. */
.page-kpi-card[b-qtf63j4qgm] {
    min-height: 104px;
}
/* /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;
}

/* Tout composant Mud basé sur MudFormComponent (MudTextField, MudSelect, MudDatePicker, ...)
   porte une classe .mud-input-control avec flex:1 1 auto — pensée pour occuper toute la largeur
   d'une cellule MudItem/MudGrid. Placés tels quels dans cette barre flex manuelle, ils grandiraient
   au-delà de la largeur fixée par leur Style, créant de faux espaces entre les champs. On fige donc
   leur taille sur cette largeur explicite ; seul MudSpacer (non concerné, classe différente)
   continue d'absorber l'espace disponible pour pousser le reste de la barre à droite.
   :not(.flex-grow-1) exclut le champ de recherche en mode SearchFullWidth (qui porte cette classe
   précisément pour occuper l'espace restant quand aucun filtre n'est affiché à sa suite). */
.pd-toolbar-row[b-vizvx9b37s]  .mud-input-control:not(.flex-grow-1) {
    flex: 0 0 auto;
}
/* /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);
}
