@import '_content/ApplyNext.Components/ApplyNext.Components.0pq7dshl77.bundle.scp.css';
@import '_content/Blazorise.RichTextEdit/Blazorise.RichTextEdit.ujcws5bfym.bundle.scp.css';

/* /Components/Acces/AccesHome.razor.rz.scp.css */
/* ============================================================
   Accueil Accès — tableau de bord
   ============================================================ */
.acces-home[b-nj57c9dax0] {
    padding: 1.75rem 0 2.5rem;
}

.acces-eyebrow[b-nj57c9dax0] {
    font-size: .7rem;
    letter-spacing: .19em;
    text-transform: uppercase;
    color: var(--an-accent);
    margin: 0;
}

.acces-title[b-nj57c9dax0] {
    font-size: clamp(1.6rem, 2.8vw, 2.15rem);
    line-height: 1.14;
    letter-spacing: -.015em;
    font-weight: 600;
    margin: .6rem 0 0;
    text-wrap: balance;
    color: var(--an-primary);
}

/* --- grille --- */
.acces-dash[b-nj57c9dax0] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .9rem;
    margin-top: 1.5rem;
}

.acces-tile[b-nj57c9dax0] {
    position: relative;
    border: 1px solid var(--an-line);
    background: #fff;
    padding: 1.15rem 1.3rem;
}

.acces-tile--wide[b-nj57c9dax0] { grid-column: span 3; }
.acces-tile--two[b-nj57c9dax0]  { grid-column: span 2; }
.acces-tile--side[b-nj57c9dax0] { grid-column: span 1; }

.acces-tile--cta[b-nj57c9dax0] {
    grid-column: span 3;
    background: var(--an-primary);
    color: #fff;
    border-color: var(--an-primary);
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
}

.acces-tile__rule[b-nj57c9dax0] {
    display: block;
    width: 38px;
    height: 3px;
    background: var(--an-accent);
    margin-bottom: .75rem;
}

.acces-tile__num[b-nj57c9dax0] {
    font-size: .62rem;
    letter-spacing: .17em;
    color: var(--an-muted);
    margin: 0 0 .25rem;
}

.acces-tile--cta .acces-tile__num[b-nj57c9dax0] { color: rgba(255, 255, 255, .5); }

.acces-tile h2[b-nj57c9dax0] {
    font-size: 1.08rem;
    font-weight: 600;
    margin: 0 0 .6rem;
    letter-spacing: -.01em;
}

.acces-tile--cta h2[b-nj57c9dax0] {
    font-size: .68rem;
    letter-spacing: .17em;
    text-transform: uppercase;
    color: var(--an-accent);
    margin: 0 0 .25rem;
}

.acces-tile__text[b-nj57c9dax0] {
    margin: 0;
    font-size: .9rem;
    line-height: 1.65;
    color: var(--an-muted);
}

.acces-tile--cta .acces-tile__text[b-nj57c9dax0] { color: rgba(255, 255, 255, .72); }

.acces-tile__blocked[b-nj57c9dax0] {
    margin: .7rem 0 0;
    font-size: .82rem;
    color: var(--an-accent);
}

.acces-tile__actions[b-nj57c9dax0] {
    margin-left: auto;
    display: flex;
    gap: .7rem;
    flex-wrap: wrap;
}

/* Deux origines pour la même apparence : les boutons « Candidater » sont posés par cette tuile, le
   bouton de reprise est rendu par ApplicationCta. L'isolation CSS n'appose l'attribut de portée que
   sur le balisage de CE composant — sans le doublon ::deep, le bouton de reprise perdrait le doré
   et reviendrait au gris du navigateur. La police est reprise explicitement : c'est un <button>. */
.acces-btn[b-nj57c9dax0],
.acces-tile__actions[b-nj57c9dax0]  .acces-btn {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-family: inherit;
    font-size: .85rem;
    font-weight: 600;
    padding: .7rem 1.15rem;
    background: var(--an-accent);
    color: var(--an-on-accent);
    border: 1px solid transparent;
    cursor: pointer;
}

.acces-btn:hover:not(:disabled)[b-nj57c9dax0],
.acces-btn:focus-visible:not(:disabled)[b-nj57c9dax0],
.acces-tile__actions[b-nj57c9dax0]  .acces-btn:hover:not(:disabled),
.acces-tile__actions[b-nj57c9dax0]  .acces-btn:focus-visible:not(:disabled) { filter: brightness(1.08); }

.acces-btn:disabled[b-nj57c9dax0],
.acces-tile__actions[b-nj57c9dax0]  .acces-btn:disabled { opacity: .5; cursor: not-allowed; }

.acces-link[b-nj57c9dax0] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: 0 0 .2rem;
    background: transparent;
    border: 0;
    border-bottom: 1px solid var(--an-line);
    color: var(--an-primary);
    font-size: .76rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    cursor: pointer;
}

.acces-link:hover[b-nj57c9dax0],
.acces-link:focus-visible[b-nj57c9dax0] { border-bottom-color: var(--an-accent); }

.acces-link svg[b-nj57c9dax0] {
    width: 14px;
    height: 14px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.acces-recap-link[b-nj57c9dax0] { grid-column: span 3; margin: 0; }

/* --- récapitulatif et progression --- */
.acces-recap[b-nj57c9dax0] { margin: 0; font-size: .88rem; }
.acces-recap dt[b-nj57c9dax0] {
    font-size: .6rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--an-muted);
}
.acces-recap dd[b-nj57c9dax0] { margin: .15rem 0 .6rem; font-weight: 600; }
.acces-recap dd:last-of-type[b-nj57c9dax0] { margin-bottom: 0; }
/* Majeures classées : une valeur par ligne, serrées sous le même libellé. */
.acces-recap dd:has(+ dd)[b-nj57c9dax0] { margin-bottom: 0; }

/* Un bloc par école, dans la place de l'ancienne tuile unique (deux colonnes sur trois). */
.acces-recaps[b-nj57c9dax0] {
    grid-column: span 2;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr));
    gap: .9rem;
}

.acces-steps[b-nj57c9dax0] { list-style: none; margin: 0; padding: 0; }
.acces-step[b-nj57c9dax0] {
    display: flex;
    gap: .7rem;
    padding: .5rem 0;
    border-bottom: 1px solid var(--an-line);
    font-size: .84rem;
}
.acces-step:last-child[b-nj57c9dax0] { border-bottom: 0; }
.acces-step__rank[b-nj57c9dax0] {
    font-size: .68rem;
    color: var(--an-muted);
    padding-top: .15rem;
    min-width: 1.1rem;
    font-variant-numeric: tabular-nums;
}
.acces-step__body b[b-nj57c9dax0] { display: block; font-weight: 600; }
.acces-step__body span[b-nj57c9dax0] { font-size: .74rem; color: var(--an-muted); }
.acces-step.is-done .acces-step__body b[b-nj57c9dax0] { font-weight: 500; color: var(--an-muted); }
.acces-step.is-done .acces-step__body span[b-nj57c9dax0] { color: var(--an-success); }
.acces-step.is-current .acces-step__body b[b-nj57c9dax0]::after {
    content: "";
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--an-accent);
    border-radius: 50%;
    margin-left: .45rem;
    vertical-align: middle;
}

/* --- contenu éditorial venu de la base --- */
.acces-prose[b-nj57c9dax0] { font-size: .85rem; line-height: 1.6; color: var(--an-primary); }

[b-nj57c9dax0] .acces-prose p { margin: .6rem 0 0; font-size: .8rem; color: var(--an-muted); }

[b-nj57c9dax0] .acces-prose table { width: 100%; border-collapse: collapse; font-size: .85rem; }
[b-nj57c9dax0] .acces-prose td {
    padding: .5rem .75rem .5rem 0;
    border-bottom: 1px solid var(--an-line);
    vertical-align: top;
    line-height: 1.5;
}
[b-nj57c9dax0] .acces-prose tbody tr:last-child td { border-bottom: 0; }
[b-nj57c9dax0] .acces-prose thead { display: none; }

/* En-tête de ligne (« Session 1 ») : même filet que la cellule, libellé court qui ne se coupe pas. */
[b-nj57c9dax0] .acces-prose tbody th {
    padding: .5rem .75rem .5rem 0;
    border-bottom: 1px solid var(--an-line);
    vertical-align: top;
    line-height: 1.5;
    font-weight: 600;
    white-space: nowrap;
    text-align: left;
}
[b-nj57c9dax0] .acces-prose tbody tr:last-child th { border-bottom: 0; }
[b-nj57c9dax0] .acces-prose sup { color: var(--an-accent); font-weight: 600; }

/* Restriction d'école sous la date : secondaire, sur sa propre ligne. */
[b-nj57c9dax0] .acces-prose td small {
    display: block;
    font-size: .76rem;
    color: var(--an-muted);
}
[b-nj57c9dax0] .acces-prose p strong { color: var(--an-primary); font-weight: 600; }

/* Liserets dorés : ils remplacent les puces du navigateur. La couleur de marque sert de repère
   de lecture, et chaque consigne est séparée par un filet plutôt que par une pastille. */
[b-nj57c9dax0] .acces-prose ul {
    list-style: none;
    margin: 0;
    padding: 0;
}
[b-nj57c9dax0] .acces-prose li {
    position: relative;
    padding: .5rem 0 .5rem 1rem;
    border-bottom: 1px solid var(--an-line);
    font-size: .82rem;
    line-height: 1.55;
}
[b-nj57c9dax0] .acces-prose li:last-child { border-bottom: 0; }
[b-nj57c9dax0] .acces-prose li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .7rem;
    bottom: .7rem;
    width: 2px;
    background: var(--an-accent);
}
/* Liste longue sur une tuile pleine largeur : deux colonnes, sans couper une pièce en deux. */
[b-nj57c9dax0] .acces-prose--columns ul { columns: 2; column-gap: 2rem; }
[b-nj57c9dax0] .acces-prose--columns li { break-inside: avoid; }
@media (max-width: 767.98px) {
    [b-nj57c9dax0] .acces-prose--columns ul { columns: 1; }
}
[b-nj57c9dax0] .acces-prose a { color: var(--an-primary); text-underline-offset: .2em; }

/* ============================================================
   ANIMATION D'ARRIVÉE — « liseret »
   Seuls les filets dorés se tracent, puis le contenu apparaît en fondu. Aucun bloc de texte ne
   se déplace : c'est le traitement le plus confortable à la lecture. Porté par des keyframes,
   donc joué au premier rendu de l'élément, sans classe à poser depuis le C#.
   ============================================================ */
@keyframes acces-rule-draw-b-nj57c9dax0 {
    from { transform: scaleX(0); }
    to   { transform: none; }
}

@keyframes acces-fade-in-b-nj57c9dax0 {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.acces-tile__rule[b-nj57c9dax0] {
    transform-origin: left center;
    animation: acces-rule-draw-b-nj57c9dax0 .6s cubic-bezier(.22, .61, .36, 1) both;
    animation-delay: calc(var(--i, 0) * 130ms);
}

.acces-tile__body[b-nj57c9dax0] {
    animation: acces-fade-in-b-nj57c9dax0 .55s ease both;
    animation-delay: calc(var(--i, 0) * 130ms + 160ms);
}

/* La tuile d'action n'a pas de filet : son contenu suit le rythme des autres sans attendre. */
.acces-tile--cta .acces-tile__actions[b-nj57c9dax0] {
    animation: acces-fade-in-b-nj57c9dax0 .55s ease both;
    animation-delay: calc(var(--i, 0) * 130ms + 160ms);
}

/* ============================================================
   SURVOL — « mise au point »
   La tuile prend le fond clair de la charte, sa bordure passe en accent et le titre resserre
   son interlettrage. Rien ne bouge de place : le pointeur ne déclenche aucun reflux.
   ============================================================ */
.acces-tile[b-nj57c9dax0] {
    transition: background-color .3s ease, border-color .3s ease;
}

.acces-tile:not(.acces-tile--cta):hover[b-nj57c9dax0] {
    background: var(--an-bg-light);
    border-color: var(--an-accent);
}

.acces-tile h2[b-nj57c9dax0] {
    transition: letter-spacing .3s ease;
}

.acces-tile:not(.acces-tile--cta):hover h2[b-nj57c9dax0] {
    letter-spacing: 0;
}

.acces-tile--cta[b-nj57c9dax0] {
    transition: border-color .3s ease;
}

.acces-tile--cta:hover[b-nj57c9dax0] {
    border-color: var(--an-accent);
}

/* --- réglage système --- */
@media (prefers-reduced-motion: reduce) {
    .acces-tile__rule[b-nj57c9dax0],
    .acces-tile__body[b-nj57c9dax0],
    .acces-tile--cta .acces-tile__actions[b-nj57c9dax0] {
        animation: none;
    }

    .acces-tile[b-nj57c9dax0],
    .acces-tile h2[b-nj57c9dax0] {
        transition: none;
    }
}

@media (max-width: 991.98px) {
    .acces-dash[b-nj57c9dax0] { grid-template-columns: 1fr; }

    .acces-tile--wide[b-nj57c9dax0],
    .acces-tile--two[b-nj57c9dax0],
    .acces-tile--side[b-nj57c9dax0],
    .acces-tile--cta[b-nj57c9dax0],
    .acces-recaps[b-nj57c9dax0],
    .acces-recap-link[b-nj57c9dax0] { grid-column: span 1; }

    .acces-tile__actions[b-nj57c9dax0] { margin-left: 0; width: 100%; }
    .acces-btn[b-nj57c9dax0],
    .acces-tile__actions[b-nj57c9dax0]  .acces-btn { flex: 1; justify-content: center; }
}
/* /Components/Apply/ApplyProgramSelection.razor.rz.scp.css */
/* Page de selection Apply (choix du programme). Palette alignee sur BrandThemeResolver / EnScope.Apply. */
.apply-page[b-g85n398dyu] {
    --apply-navy: #001F44;
    --apply-navy-soft: #0b2f61;
    --apply-accent: #FFE505;
    --apply-accent-dark: #F9B000;
    --apply-ink: #14213d;
    --apply-muted: #5b6b82;
    --apply-line: #e3e8ef;
    --apply-surface: #ffffff;
    --apply-bg: #f6f8fb;

    background: var(--apply-bg);
    color: var(--apply-ink);
    padding-bottom: 4rem;
}

/* ---------------------------------------------------------------- Banniere */
.apply-hero[b-g85n398dyu] {
    position: relative;
    display: flex;
    align-items: flex-end;
    min-height: 30rem;
    overflow: hidden;
    isolation: isolate;
}

.apply-hero--compact[b-g85n398dyu] {
    min-height: 15rem;
}

.apply-hero__media[b-g85n398dyu] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: -2;
}

.apply-hero__veil[b-g85n398dyu] {
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(180deg, rgba(0, 31, 68, 0.55) 0%, rgba(0, 31, 68, 0.92) 100%);
}

.apply-hero__content[b-g85n398dyu] {
    padding: 3.5rem 1.5rem;
    color: #fff;
    max-width: 46rem;
}

.apply-hero__eyebrow[b-g85n398dyu] {
    margin: 0 0 0.75rem;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--apply-accent);
}

.apply-hero__title[b-g85n398dyu] {
    margin: 0;
    font-size: clamp(1.9rem, 4.5vw, 3.25rem);
    font-weight: 800;
    line-height: 1.1;
}

.apply-hero__subtitle[b-g85n398dyu] {
    margin: 1rem 0 2rem;
    font-size: clamp(1rem, 1.6vw, 1.2rem);
    color: rgba(255, 255, 255, 0.88);
}

/* ------------------------------------------------------------------ Boutons */
/* Le doublon ::deep vise le bouton de reprise, désormais rendu par ApplicationCta : l'isolation CSS
   n'appose l'attribut de portée que sur le balisage de CETTE page, une règle nue ne l'atteindrait
   plus. Tous les autres boutons du catalogue restent posés ici et gardent la règle nue. */
.apply-btn[b-g85n398dyu],
.apply-page[b-g85n398dyu]  .apply-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    border: 1px solid transparent;
    border-radius: 999px;
    padding: 0.7rem 1.5rem;
    font-family: inherit;
    font-weight: 700;
    font-size: 0.95rem;
    text-decoration: none;
    cursor: pointer;
    transition: transform 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

.apply-btn:hover:not(:disabled)[b-g85n398dyu],
.apply-page[b-g85n398dyu]  .apply-btn:hover:not(:disabled) {
    transform: translateY(-1px);
}

.apply-btn:disabled[b-g85n398dyu],
.apply-page[b-g85n398dyu]  .apply-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.apply-btn--accent[b-g85n398dyu],
.apply-page[b-g85n398dyu]  .apply-btn--accent {
    background: var(--apply-accent);
    color: var(--apply-navy);
    box-shadow: 0 8px 20px rgba(249, 176, 0, 0.35);
}

.apply-btn--accent:hover:not(:disabled)[b-g85n398dyu],
.apply-page[b-g85n398dyu]  .apply-btn--accent:hover:not(:disabled) {
    background: var(--apply-accent-dark);
}

.apply-btn--outline[b-g85n398dyu] {
    background: transparent;
    border-color: var(--apply-navy);
    color: var(--apply-navy);
}

.apply-btn--outline:hover:not(:disabled)[b-g85n398dyu] {
    background: var(--apply-navy);
    color: #fff;
}

.apply-btn--ghost[b-g85n398dyu] {
    background: transparent;
    color: var(--apply-muted);
}

.apply-btn--ghost:hover:not(:disabled)[b-g85n398dyu] {
    color: var(--apply-navy);
}
/* --------------------------------------------------------------- Catalogue */
.apply-catalog[b-g85n398dyu] {
    padding-top: 3rem;
    /* L'en-tete est collant : sans cette marge, le fil d'Ariane passe dessous a l'arrivee. */
    scroll-margin-top: 5rem;
}

.apply-breadcrumb[b-g85n398dyu] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 1.5rem;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.apply-breadcrumb__link[b-g85n398dyu] {
    background: none;
    border: 0;
    padding: 0;
    color: var(--apply-navy);
    font: inherit;
    letter-spacing: inherit;
}

.apply-breadcrumb__link:disabled[b-g85n398dyu] {
    cursor: default;
}

.apply-breadcrumb__link.is-current[b-g85n398dyu] {
    color: var(--apply-accent-dark);
}

.apply-breadcrumb__separator[b-g85n398dyu] {
    color: var(--apply-muted);
}

.apply-section-head[b-g85n398dyu] {
    margin-bottom: 1.75rem;
}

.apply-section-head__title[b-g85n398dyu] {
    margin: 0;
    font-size: clamp(1.4rem, 2.6vw, 2rem);
    font-weight: 800;
    color: var(--apply-navy);
}

/* Etape d'entree : le titre remplace le fil d'Ariane, qui n'y avait qu'un cran sans destination.
   Il en reprend l'orange et passe a une taille de titre de page. */
.apply-section-head__title--accent[b-g85n398dyu] {
    font-size: clamp(1.9rem, 4vw, 2.9rem);
    line-height: 1.08;
    letter-spacing: -0.015em;
    color: var(--apply-accent-dark);
    text-wrap: balance;
}

.apply-section-head__subtitle[b-g85n398dyu] {
    margin: 0.35rem 0 0;
    color: var(--apply-muted);
}

.apply-state[b-g85n398dyu] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 2rem 0;
}

.apply-state__text[b-g85n398dyu] {
    margin: 0;
    color: var(--apply-muted);
}

/* Bandeau « candidature en cours » : il annonce une regle, pas une erreur — d'ou l'espacement
   interieur d'une alerte plutot que le rythme aere des etats vides, et le bouton pousse a droite
   pour que la reprise du dossier reste l'action evidente. */
.apply-state--notice[b-g85n398dyu] {
    padding: 1rem 1.25rem;
    margin-bottom: 1.5rem;
    flex-wrap: wrap;
}

.apply-state--notice > span[b-g85n398dyu] {
    flex: 1 1 18rem;
}

/* ------------------------------------------------------------------ Cartes */
.apply-card[b-g85n398dyu] {
    display: flex;
    flex-direction: column;
    background: var(--apply-surface);
    border: 1px solid var(--apply-line);
    border-radius: 1.15rem;
    overflow: hidden;
    transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.apply-card--program:hover[b-g85n398dyu] {
    transform: translateY(-4px);
    box-shadow: 0 18px 40px rgba(0, 31, 68, 0.12);
}

.apply-card__cover[b-g85n398dyu] {
    position: relative;
    display: grid;
    place-items: center;
    height: 8.5rem;
    background: linear-gradient(135deg, var(--apply-navy) 0%, var(--apply-navy-soft) 100%);
}

.apply-card__initials[b-g85n398dyu] {
    font-size: 2.4rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    color: var(--apply-accent);
}

.apply-card__body[b-g85n398dyu] {
    padding: 1.35rem 1.5rem 0.5rem;
    flex: 1 1 auto;
}

.apply-card--campaign[b-g85n398dyu] {
    padding: 1.75rem;
}

/* Campagne déjà choisie lors d'une visite précédente. */
.apply-card--campaign.is-selected[b-g85n398dyu] {
    border-color: var(--apply-accent-dark);
    box-shadow: 0 0 0 3px rgba(249, 176, 0, 0.18);
}

.apply-card__head[b-g85n398dyu] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

.apply-card__kicker[b-g85n398dyu] {
    margin: 0;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--apply-muted);
}

.apply-card__title[b-g85n398dyu] {
    margin: 0.2rem 0 0.6rem;
    font-size: 1.25rem;
    font-weight: 800;
    color: var(--apply-navy);
}

.apply-card__text[b-g85n398dyu] {
    margin: 0 0 1rem;
    color: var(--apply-muted);
    font-size: 0.95rem;
}

.apply-card__footer[b-g85n398dyu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.5rem 1.35rem;
    border-top: 1px solid var(--apply-line);
    margin-top: auto;
}

.apply-card--campaign .apply-card__footer[b-g85n398dyu] {
    padding: 1.25rem 0 0;
}

.apply-card__footer--cta[b-g85n398dyu] {
    flex-wrap: wrap;
}

.apply-card__count[b-g85n398dyu] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--apply-muted);
}

.apply-card__note[b-g85n398dyu] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
    font-size: 0.88rem;
    color: var(--apply-muted);
}

.apply-card__actions[b-g85n398dyu] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

/* ------------------------------------------------------------ Puces / etat */
.apply-chips[b-g85n398dyu] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.apply-chip[b-g85n398dyu] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: #eef2f8;
    border-radius: 999px;
    padding: 0.25rem 0.7rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--apply-navy);
}

.apply-badge[b-g85n398dyu] {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 0.25rem 0.7rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    white-space: nowrap;
}

.apply-card__cover .apply-badge[b-g85n398dyu] {
    position: absolute;
    top: 0.85rem;
    right: 0.85rem;
}

.apply-badge--open[b-g85n398dyu] {
    background: #e4f6ea;
    color: #1c7a43;
}

.apply-badge--closed[b-g85n398dyu] {
    background: #f4e6e8;
    color: #8f2231;
}

/* -------------------------------------------------------------- Faits/dates */
.apply-facts[b-g85n398dyu] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
    gap: 0.9rem 1.5rem;
    margin: 0 0 1.5rem;
}

.apply-fact dt[b-g85n398dyu] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--apply-muted);
}

.apply-fact dd[b-g85n398dyu] {
    margin: 0.2rem 0 0;
    font-weight: 600;
    color: var(--apply-ink);
}

.apply-fact__hint[b-g85n398dyu] {
    display: block;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--apply-muted);
}

.apply-fact__hint--note[b-g85n398dyu] {
    font-style: italic;
}

.apply-fact__hint span + span[b-g85n398dyu]::before {
    content: " · ";
}

.apply-timeline[b-g85n398dyu] {
    background: #f6f8fb;
    border: 1px solid var(--apply-line);
    border-radius: 0.9rem;
    padding: 1.1rem 1.25rem;
}

.apply-timeline__title[b-g85n398dyu] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin: 0 0 0.75rem;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--apply-navy);
}

.apply-timeline__list[b-g85n398dyu] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.4rem;
}

.apply-timeline__item[b-g85n398dyu] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.35rem 0;
    border-bottom: 1px dashed var(--apply-line);
    font-size: 0.92rem;
}

.apply-timeline__item:last-child[b-g85n398dyu] {
    border-bottom: 0;
}

.apply-timeline__item.is-past[b-g85n398dyu] {
    opacity: 0.55;
    text-decoration: line-through;
}

.apply-timeline__value[b-g85n398dyu] {
    font-weight: 700;
    color: var(--apply-navy);
    white-space: nowrap;
}

@media (max-width: 575.98px) {
    .apply-hero__content[b-g85n398dyu] {
        padding: 2.5rem 1.25rem;
    }

    .apply-card--campaign[b-g85n398dyu] {
        padding: 1.25rem;
    }

    .apply-card__actions[b-g85n398dyu] {
        width: 100%;
    }

    .apply-card__actions .apply-btn[b-g85n398dyu] {
        flex: 1 1 auto;
        justify-content: center;
    }

    .apply-timeline__item[b-g85n398dyu] {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.1rem;
    }
}

/* --------------------------------------------------------------- Campus */
.apply-campus[b-g85n398dyu] {
    border: 1px solid var(--apply-line);
    border-radius: 0.9rem;
    padding: 0.9rem 1.1rem;
    margin: 0 0 1.25rem;
}

.apply-campus__legend[b-g85n398dyu] {
    float: none;
    width: auto;
    margin: 0 0 0.5rem;
    padding: 0;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--apply-muted);
}

.apply-campus__options[b-g85n398dyu] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.apply-campus__option[b-g85n398dyu] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border: 1px solid var(--apply-line);
    border-radius: 999px;
    padding: 0.35rem 0.9rem;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--apply-navy);
    cursor: pointer;
}

.apply-campus__option.is-selected[b-g85n398dyu] {
    border-color: var(--apply-accent-dark);
    background: rgba(249, 176, 0, 0.12);
}

.apply-campus__option input[b-g85n398dyu] {
    accent-color: var(--apply-navy);
}
/* ------------------------------------------------------------------ Etapes */
.apply-steps[b-g85n398dyu] {
    margin-top: -3rem;
    position: relative;
    z-index: 2;
}

.apply-steps__list[b-g85n398dyu] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: 1.25rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.apply-steps__item[b-g85n398dyu] {
    position: relative;
    background: var(--apply-surface);
    border: 1px solid var(--apply-line);
    border-radius: 1rem;
    padding: 1.75rem 1.5rem 1.5rem;
    box-shadow: 0 12px 30px rgba(0, 31, 68, 0.08);
}

.apply-steps__badge[b-g85n398dyu] {
    position: absolute;
    top: -0.9rem;
    left: 1.5rem;
    display: grid;
    place-items: center;
    width: 1.8rem;
    height: 1.8rem;
    border-radius: 50%;
    background: var(--apply-navy);
    color: var(--apply-accent);
    font-weight: 700;
    font-size: 0.9rem;
}

.apply-steps__icon[b-g85n398dyu] {
    font-size: 1.5rem;
    color: var(--apply-navy);
}

.apply-steps__title[b-g85n398dyu] {
    margin: 0.5rem 0 0.35rem;
    font-size: 1.05rem;
    font-weight: 700;
}

.apply-steps__text[b-g85n398dyu] {
    margin: 0;
    color: var(--apply-muted);
    font-size: 0.92rem;
}

/* ================================================================ Cursus (etape 2)
   Le cycle porte l'en-tete et son lien vers le site de l'ecole ; ses cursus tiennent dans une
   grille a part, plus dense que celle des groupes : une carte de cursus ne porte qu'un titre,
   des campus et un bouton. */
.apply-cycle[b-g85n398dyu] {
    margin-bottom: 2.25rem;
}

.apply-cycle:last-child[b-g85n398dyu] {
    margin-bottom: 0;
}

.apply-cycle__head[b-g85n398dyu] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding-bottom: 0.6rem;
    margin-bottom: 1rem;
    border-bottom: 2px solid var(--apply-navy);
}

.apply-cycle__title[b-g85n398dyu] {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 800;
    color: var(--apply-navy);
}

.apply-cycle__link[b-g85n398dyu] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--apply-navy);
    text-decoration: underline;
    text-underline-offset: 0.18em;
}

.apply-cycle__link:hover[b-g85n398dyu],
.apply-cycle__link:focus-visible[b-g85n398dyu] {
    color: var(--apply-accent-dark);
}

.apply-cursus-grid[b-g85n398dyu] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr));
    gap: 1.25rem;
}

.apply-card--cursus:hover[b-g85n398dyu] {
    transform: translateY(-4px);
    box-shadow: 0 18px 40px rgba(0, 31, 68, 0.12);
}

/* Bandeau de l'annee : plus bas que celui des programmes, le libelle y tient sur une ligne ou deux
   au lieu de deux initiales. */
.apply-card__cover--cursus[b-g85n398dyu] {
    height: auto;
    min-height: 6.75rem;
    padding: 2.1rem 1.25rem 1.35rem;
}

.apply-cursus__year[b-g85n398dyu] {
    font-size: 1.45rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    line-height: 1.15;
    text-align: center;
    text-wrap: balance;
    color: var(--apply-accent);
}

.apply-cursus__body[b-g85n398dyu] {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    padding: 1.15rem 1.25rem 1.35rem;
    margin-top: auto;
}

.apply-card--cursus .apply-card__count[b-g85n398dyu] {
    text-align: center;
}

.apply-card--cursus .apply-btn[b-g85n398dyu] {
    justify-content: center;
}

/* Une annee fermee reste lisible : elle est en retrait, pas effacee. La masquer priverait le
   candidat de l'information « cette annee existe, mais pas maintenant ». */
.apply-card--cursus.is-closed .apply-card__cover--cursus[b-g85n398dyu] {
    background: linear-gradient(135deg, #24384f 0%, #33475e 100%);
}

.apply-card--cursus.is-closed .apply-cursus__year[b-g85n398dyu] {
    color: rgba(255, 255, 255, 0.72);
}

.apply-card--cursus.is-closed .apply-cursus__body[b-g85n398dyu] {
    background: var(--apply-bg);
}

.apply-card__text--full[b-g85n398dyu] {
    margin-bottom: 0;
    color: var(--apply-ink);
}

/* Carte de groupe compacte : vignette + corps sur une ligne, presentation derriere « En savoir
   plus » plutot qu'affichee en clair — la grille en tenait moins large a l'ecran. */
.apply-card--program-compact[b-g85n398dyu] {
    height: auto;
}

.apply-card__compact-row[b-g85n398dyu] {
    display: flex;
    align-items: stretch;
}

.apply-card__cover--compact[b-g85n398dyu] {
    flex: 0 0 6rem;
    width: 6rem;
    height: auto;
    display: grid;
    place-items: center;
}

.apply-card__cover-icon[b-g85n398dyu] {
    font-size: 2rem;
    color: var(--apply-accent);
}

.apply-card__body--compact[b-g85n398dyu] {
    flex: 1 1 auto;
    padding: 1.25rem 1.5rem;
}

/* Titre a gauche, badge ouvert/ferme pousse a l'extremite droite de la carte : au dessus du
   reste, jamais colle au texte du titre ni deborde de la vignette (trop etroite pour le porter). */
.apply-card__title-row[b-g85n398dyu] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-bottom: 0.6rem;
}

.apply-card__title-row .apply-card__title[b-g85n398dyu] {
    margin: 0;
}

.apply-badge--corner[b-g85n398dyu] {
    margin-left: auto;
}

.apply-card__facts-inline[b-g85n398dyu] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 1.25rem;
    list-style: none;
    margin: 0 0 1.1rem;
    padding: 0;
}

.apply-card__facts-inline li[b-g85n398dyu] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--apply-muted);
}

/* Separee du reste par une ligne : count/boutons forment un bloc d'action distinct du titre et
   des caracteristiques, comme sur la fiche campagne plus bas. */
.apply-card__footer--compact[b-g85n398dyu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding-top: 1rem;
    border-top: 1px solid var(--apply-line);
    margin-top: 0;
}

/* Separee du reste de la carte par une ligne : sans elle, la phrase depliee semblait plaquee
   contre les boutons plutot que rattachee au groupe qu'elle decrit. */
/* Plus de bordure ni de padding propres : le texte deplie vit maintenant dans le corps de la
   carte, juste au dessus du bouton qui l'affiche — la ligne du footer suffit a le separer. */
.apply-card__text--expanded[b-g85n398dyu] {
    margin: 0 0 1rem;
}

@media (max-width: 575.98px) {
    .apply-card__compact-row[b-g85n398dyu] {
        flex-direction: column;
    }

    .apply-card__cover--compact[b-g85n398dyu] {
        width: 100%;
        height: 5rem;
    }

    .apply-card__footer--compact .apply-card__actions[b-g85n398dyu] {
        width: 100%;
    }

    .apply-card__footer--compact .apply-btn[b-g85n398dyu] {
        flex: 1 1 auto;
        justify-content: center;
    }
}

/* Public vise de la campagne : annonce en tete de fiche, avant la description, avec le meme poids
   visuel que sur l'ancienne plateforme. */
.apply-card__eligibility[b-g85n398dyu] {
    margin: 0 0 1rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--apply-navy);
}

/* ================================================================ Squelettes de chargement
   Memes conteneurs, memes hauteurs que le contenu reel : le remplacement ne deplace rien. Un
   squelette dessine a part derive de la carte des la premiere retouche, et le saut qu'il devait
   masquer revient — en pire, puisqu'on l'a annonce. */
.apply-sk[b-g85n398dyu] {
    background: linear-gradient(90deg,
        var(--apply-line) 0%,
        color-mix(in srgb, var(--apply-line) 45%, var(--apply-surface)) 50%,
        var(--apply-line) 100%);
    background-size: 220% 100%;
    animation: apply-sk-slide-b-g85n398dyu 1.5s ease-in-out infinite;
    border-radius: 4px;
}

@keyframes apply-sk-slide-b-g85n398dyu {
    from { background-position: 140% 0; }
    to   { background-position: -40% 0; }
}

.apply-sk--cover[b-g85n398dyu] {
    height: 9rem;
    border-radius: 0;
}

.apply-sk--kicker[b-g85n398dyu] {
    height: 0.7rem;
    width: 35%;
    margin-bottom: 0.7rem;
}

.apply-sk--title[b-g85n398dyu] {
    height: 1.35rem;
    width: 70%;
    margin-bottom: 0.8rem;
}

.apply-sk--text[b-g85n398dyu] {
    height: 0.8rem;
    margin-bottom: 0.5rem;
}

.apply-sk--text:last-of-type[b-g85n398dyu] {
    width: 60%;
}

.apply-sk--label[b-g85n398dyu] {
    height: 0.7rem;
    width: 45%;
    margin-bottom: 0.4rem;
}

.apply-sk--value[b-g85n398dyu] {
    height: 1rem;
    width: 80%;
}

.apply-sk--row[b-g85n398dyu] {
    height: 0.9rem;
    margin-bottom: 0.6rem;
}

.apply-sk--cta[b-g85n398dyu] {
    height: 2.6rem;
    width: 10rem;
    border-radius: 4px;
}

.apply-sk-facts[b-g85n398dyu] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    gap: 1rem;
    margin: 1.25rem 0;
}

@media (prefers-reduced-motion: reduce) {
    .apply-sk[b-g85n398dyu] { animation: none; }
}

/* Liens « contenu du programme » : une ligne de liens dans une case de faits. */
.apply-fact__links[b-g85n398dyu] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem 1rem;
}

.apply-fact__links a[b-g85n398dyu] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: var(--apply-navy);
    font-weight: 600;
    text-decoration: underline;
}

.apply-fact__links a:hover[b-g85n398dyu] {
    color: var(--apply-accent-dark);
}
/* /Components/CardsContainer.razor.rz.scp.css */
.custom-card[b-3a7sv8jxl0] {
    width: 350px; /* Largeur fixe pour chaque carte */
    height: 450px; /* Hauteur fixe pour chaque carte */
    margin: 10px; /* Espacement entre les cartes */
    display: flex;
    flex-direction: column;
}

.custom-card-img[b-3a7sv8jxl0] {
    width: 100%; /* L'image prend toute la largeur de la carte */
    height: 200px; /* Hauteur fixe pour l'image */
    object-fit: cover; /* L'image couvre l'espace sans déformer */
}

.custom-card .card-header[b-3a7sv8jxl0], .custom-card .card-body[b-3a7sv8jxl0] {
    text-align: center; /* Centrer le contenu textuel */
}
/* /Components/DocusignSummary.razor.rz.scp.css */
/* Récapitulatif Docusign : consigne, puis une carte par signataire avec son état.
   Couleurs issues des jetons BrandStyles, avec repli pour les hôtes qui ne les exposent pas. */

.ds[b-hasxh1hk9c] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.ds-notice[b-hasxh1hk9c] {
    display: flex;
    align-items: flex-start;
    gap: .875rem;
    padding: 1rem 1.25rem;
    background: var(--an-bg-light, #f5f7fa);
    border-left: 3px solid var(--an-accent, #F9B000);
    border-radius: .5rem;
}

.ds-notice__icon[b-hasxh1hk9c] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: #fff;
    color: var(--an-primary, #001F44);
    font-size: 1.05rem;
    box-shadow: 0 0 0 1px var(--an-line, #dfe3ea);
}

.ds-notice__text[b-hasxh1hk9c] {
    margin: 0;
    align-self: center;
    color: var(--an-primary, #001F44);
    line-height: 1.5;
}

.ds-envelope[b-hasxh1hk9c] {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.ds-envelope__title[b-hasxh1hk9c] {
    margin: 0;
    font-weight: 600;
    color: var(--an-primary, #001F44);
}

.ds-signers[b-hasxh1hk9c] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr));
    gap: .75rem;
}

.ds-signer[b-hasxh1hk9c] {
    display: flex;
    align-items: center;
    gap: .875rem;
    padding: .875rem 1rem;
    background: #fff;
    border: 1px solid var(--an-line, #dfe3ea);
    border-radius: .5rem;
    transition: border-color .2s ease, background-color .2s ease;
}

.ds-signer:hover[b-hasxh1hk9c] {
    background: var(--an-bg-light, #f5f7fa);
    border-color: var(--an-accent, #F9B000);
}

.ds-signer__avatar[b-hasxh1hk9c] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: var(--an-bg-light, #f5f7fa);
    color: var(--an-primary, #001F44);
    font-size: 1.15rem;
}

.ds-signer__identity[b-hasxh1hk9c] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1 1 auto;
}

.ds-signer__role[b-hasxh1hk9c] {
    font-weight: 600;
    color: var(--an-primary, #001F44);
}

.ds-signer__email[b-hasxh1hk9c] {
    font-size: .875rem;
    color: var(--an-muted, #6c757d);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ds-status[b-hasxh1hk9c] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    padding: .25rem .625rem;
    border-radius: 999px;
    font-size: .8125rem;
    font-weight: 600;
    white-space: nowrap;
}

.ds-signer--signed .ds-status[b-hasxh1hk9c] {
    color: var(--an-success, #198754);
    background: color-mix(in srgb, var(--an-success, #198754) 12%, #fff);
}

.ds-signer--failed .ds-status[b-hasxh1hk9c] {
    color: var(--an-danger, #dc3545);
    background: color-mix(in srgb, var(--an-danger, #dc3545) 12%, #fff);
}

.ds-signer--pending .ds-status[b-hasxh1hk9c] {
    color: color-mix(in srgb, var(--an-warning, #ffc107) 45%, var(--an-primary, #001F44));
    background: color-mix(in srgb, var(--an-warning, #ffc107) 20%, #fff);
}

.ds-envelope__actions[b-hasxh1hk9c],
.ds-footer[b-hasxh1hk9c] {
    display: flex;
    justify-content: flex-end;
}

@media (max-width: 575.98px) {
    .ds-signer[b-hasxh1hk9c] {
        flex-wrap: wrap;
    }

    .ds-status[b-hasxh1hk9c] {
        margin-left: 3.375rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .ds-signer[b-hasxh1hk9c] {
        transition: none;
    }
}
/* /Components/Fees/SinglePaymentComponent.razor.rz.scp.css */
/* Bloc « paiement par virement » : coordonnées bancaires et informations à recopier.

   Le RIB est une image, donc ni sélectionnable ni copiable : le montant et la référence sont
   sortis à côté, en texte, pour que le candidat puisse les reprendre sans les ressaisir de tête. */

.bt[b-okob2nq0q3] {
    border: 1px solid #dee2e6;
    border-radius: 0.5rem;
    background-color: #fff;
    padding: 1.25rem;
}

/* ── En-tête ────────────────────────────────────────────── */
.bt__head[b-okob2nq0q3] {
    display: flex;
    gap: 0.9rem;
    align-items: flex-start;
}

.bt__icon[b-okob2nq0q3] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background-color: #F5F7F9;
    color: #0b216f;
    font-size: 1.15rem;
}

.bt__title[b-okob2nq0q3] {
    margin: 0 0 0.25rem;
    font-weight: 700;
    color: #000;
}

.bt__lead[b-okob2nq0q3] {
    margin: 0;
    color: #6c757d;
    font-size: 0.9375rem;
}

/* ── Montant et référence ───────────────────────────────── */
.bt__facts[b-okob2nq0q3] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin: 1.25rem 0 0;
}

.bt__fact[b-okob2nq0q3] {
    flex: 1 1 12rem;
    background-color: #F5F7F9;
    border-radius: 0.375rem;
    padding: 0.75rem 1rem;
}

.bt__fact dt[b-okob2nq0q3] {
    font-size: 0.75rem;
    font-weight: 500;
    color: #6c757d;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.bt__fact dd[b-okob2nq0q3] {
    margin: 0.15rem 0 0;
    font-size: 1.25rem;
    font-weight: 700;
    color: #0b216f;
}

/* La référence est destinée à être recopiée caractère par caractère. */
.bt__reference[b-okob2nq0q3] {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    letter-spacing: 0.04em;
    user-select: all;
}

/* ── Image du RIB ───────────────────────────────────────── */
.bt__rib[b-okob2nq0q3] {
    margin: 1.25rem 0 0;
    text-align: center;
}

.bt__rib img[b-okob2nq0q3] {
    max-width: 100%;
    width: 34rem;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    background-color: #fff;
}

@media (max-width: 575.98px) {
    .bt[b-okob2nq0q3] {
        padding: 1rem;
    }

    .bt__fact dd[b-okob2nq0q3] {
        font-size: 1.1rem;
    }
}
/* /Components/FormBuilder/AcademicResult.razor.rz.scp.css */
/* Récapitulatif et saisie des résultats du supérieur.
   Palette inchangée : #0b216f (actif), #28a745 (complet), #FD9E00 (partiel),
   #ccc (vide), #AB2828 (obligatoire), dégradé #FFFFFF -> #F5F7F9. */

/* ── Stepper desktop / tablette ─────────────────────────── */
.ar-steps[b-5slwcrbih6] {
    display: flex;
    gap: 0.5rem;
    align-items: stretch;
    overflow-x: auto;
    padding-bottom: 0.25rem;
}

.ar-step[b-5slwcrbih6] {
    flex: 1 0 158px;
    min-width: 0;
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    text-align: left;
    font: inherit;
    color: inherit;
    background-color: #fff;
    border: 1px solid #E8E8E8;
    border-radius: 9px;
    padding: 0.6rem 0.65rem;
    cursor: pointer;
}

.ar-step:hover[b-5slwcrbih6] {
    border-color: #0b216f;
}

.ar-step:focus-visible[b-5slwcrbih6] {
    outline: 2px solid #0b216f;
    outline-offset: 2px;
}

.ar-step.is-active[b-5slwcrbih6] {
    border-color: #0b216f;
    box-shadow: inset 0 0 0 1px #0b216f;
}

.ar-step.is-complete[b-5slwcrbih6] {
    border-color: rgba(40, 167, 69, 0.45);
}

.ar-bubble[b-5slwcrbih6] {
    position: relative;
    flex: none;
    width: 36px;
    height: 36px;
    border-radius: 999px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
}

.ar-bubble-sm[b-5slwcrbih6] {
    width: 32px;
    height: 32px;
    font-size: 0.9rem;
}

.ar-tick[b-5slwcrbih6] {
    position: absolute;
    right: -3px;
    bottom: -3px;
    width: 16px;
    height: 16px;
    border-radius: 999px;
    background-color: #28a745;
    border: 2px solid #fff;
    color: #fff;
    font-size: 0.6rem;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ar-step-body[b-5slwcrbih6] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.ar-step-name[b-5slwcrbih6] {
    font-size: 0.78rem;
    font-weight: 700;
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: 0.01em;
}

.ar-step-score[b-5slwcrbih6] {
    font-size: 1.2rem;
    font-weight: 700;
    line-height: 1.2;
    font-variant-numeric: tabular-nums;
}

.ar-step-of[b-5slwcrbih6] {
    font-size: 0.82rem;
    font-weight: 600;
    color: #67798F;
}

.ar-step-todo[b-5slwcrbih6] {
    font-size: 0.8rem;
    color: #8a97a8;
    margin-top: 0.2rem;
}

.ar-chips[b-5slwcrbih6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-top: 0.35rem;
}

.ar-chip[b-5slwcrbih6] {
    font-size: 0.66rem;
    line-height: 1.6;
    padding: 0 0.45rem;
    border: 1px solid #E8E8E8;
    border-radius: 999px;
    background-color: #F8FAFC;
    color: #67798F;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.ar-chip-mobility[b-5slwcrbih6] {
    border-color: rgba(11, 33, 111, 0.28);
    background-color: #fff;
    color: #0b216f;
}

/* ── Stepper mobile ─────────────────────────────────────── */
.ar-steps-mobile[b-5slwcrbih6] {
    display: flex;
    justify-content: space-between;
    gap: 0.25rem;
}

.ar-step-m[b-5slwcrbih6] {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
    background: none;
    border: 0;
    border-radius: 6px;
    padding: 0.35rem 0.1rem;
    font: inherit;
    color: inherit;
    cursor: pointer;
}

.ar-step-m:focus-visible[b-5slwcrbih6] {
    outline: 2px solid #0b216f;
    outline-offset: 2px;
}

.ar-step-m-score[b-5slwcrbih6] {
    font-size: 0.72rem;
    font-weight: 600;
    color: #67798F;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.ar-step-m.is-active .ar-step-m-score[b-5slwcrbih6] {
    color: #0b216f;
}

/* ── Saisie moyenne / barème / ECTS ─────────────────────── */
.ar-panel[b-5slwcrbih6] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 1rem 2.25rem;
    border: solid 1px lightblue;
    border-radius: 10px;
    padding: 1rem;
    background: linear-gradient(180deg, #FFFFFF 0%, #F5F7F9 100%);
}

.ar-micro[b-5slwcrbih6] {
    display: block;
    height: 1.35rem;
    line-height: 1.35rem;
    margin: 0;
    font-size: 0.8rem;
    font-weight: 700;
    color: #0b216f;
    white-space: nowrap;
}

.ar-optional[b-5slwcrbih6] {
    margin-left: 0.35rem;
    font-size: 0.72rem;
    font-weight: 400;
    color: #67798F;
}

/* La fraction moyenne / barème vit dans GradeFractionInput : même forme partout. */

/* ── Moyenne déclarée NA ────────────────────────────────── */
/* Colonne à gap : un élément masqué n'en laisse aucun, la coche ne flotte jamais seule. */
.ar-field-average[b-5slwcrbih6] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    min-width: 0;
}

.ar-na-box[b-5slwcrbih6] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    max-width: 380px;
    /* Hauteur d'un champ : la ligne ne saute pas quand le NA remplace la fraction. */
    min-height: calc(1.5em + 0.75rem + 2px);
    padding: 0.3rem 0.35rem 0.3rem 0.5rem;
    border: 1px solid #ced4da;
    border-radius: 0.375rem;
    background-color: #F8FAFC;
}

.ar-na-badge[b-5slwcrbih6] {
    flex: none;
    padding: 0 0.5rem;
    border-radius: 999px;
    background-color: #0b216f;
    color: #fff;
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1.6;
    letter-spacing: 0.06em;
}

.ar-na-text[b-5slwcrbih6] {
    flex: 1;
    min-width: 0;
    font-size: 0.85rem;
    line-height: 1.3;
    color: #0b216f;
}

.ar-na-edit[b-5slwcrbih6] {
    flex: none;
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #E8E8E8;
    border-radius: 8px;
    background-color: #fff;
    color: #0b216f;
    cursor: pointer;
}

.ar-na-edit:hover:not(:disabled)[b-5slwcrbih6] {
    background-color: #F1F4F8;
    border-color: #0b216f;
}

.ar-na-edit:focus-visible[b-5slwcrbih6] {
    outline: 2px solid #0b216f;
    outline-offset: 2px;
}

.ar-na-edit:disabled[b-5slwcrbih6] {
    color: #7E8B9E;
    cursor: default;
}

/* Même critère que le pavé, qui s'efface au doigt : partout où il manque, la coche le remplace. */
.ar-na-check[b-5slwcrbih6] {
    display: none;
}

@media (pointer: coarse) {
    .ar-na[b-5slwcrbih6] {
        display: none;
    }

    .ar-na-check[b-5slwcrbih6] {
        display: flex;
        align-items: flex-start;
        gap: 0.5rem;
        margin: 0;
        font-size: 0.85rem;
        line-height: 1.35;
        color: #0b216f;
        cursor: pointer;
    }

    .ar-na-check .form-check-input[b-5slwcrbih6] {
        flex: none;
        margin-top: 0.1rem;
    }
}

/* Ancre du pavé numérique, qui se pose sous le champ. */
.ar-field-ects[b-5slwcrbih6] {
    position: relative;
}

.ar-field-ects[b-5slwcrbih6]  input {
    width: 130px;
    padding-right: 1.8rem;
    font-variant-numeric: tabular-nums;
}

.ar-field-ects[b-5slwcrbih6]  .b-numeric-handler-wrap {
    opacity: 1;
    width: 1.5rem;
    background-color: #F8FAFC;
    border-color: #ced4da;
}

.ar-field-ects[b-5slwcrbih6]  .b-numeric-handler {
    color: #0b216f;
}

/* ── Mobilité internationale ────────────────────────────── */
.ar-mobility[b-5slwcrbih6] {
    margin-top: 1rem;
    border: solid 1px lightblue;
    border-radius: 10px;
    padding: 1rem;
    background: linear-gradient(180deg, #FFFFFF 0%, #F5F7F9 100%);
}

.ar-mobility-head[b-5slwcrbih6] {
    color: #0b216f;
    font-size: 0.95rem;
}

.ar-mobility-notice[b-5slwcrbih6] {
    margin: 0.15rem 0 0.85rem;
    font-size: 0.85rem;
    color: #67798F;
}

.ar-mobility-grid[b-5slwcrbih6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.ar-mobility-card[b-5slwcrbih6] {
    flex: 1 1 260px;
    min-width: 0;
    border: 1px solid #E8E8E8;
    border-radius: 9px;
    background-color: #fff;
    padding: 0.7rem 0.75rem;
}

.ar-mobility-card.is-on[b-5slwcrbih6] {
    border-color: #0b216f;
    background-color: #FBFCFE;
}

.ar-mobility-duration[b-5slwcrbih6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.6rem;
    padding-left: 1.6rem;
}

.ar-mobility-duration[b-5slwcrbih6]  input {
    width: 90px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ar-unit[b-5slwcrbih6] {
    font-size: 0.82rem;
    color: #67798F;
    white-space: nowrap;
}

.ar-mobility-error[b-5slwcrbih6] {
    margin: 0.5rem 0 0;
    padding-left: 1.6rem;
    font-size: 0.75rem;
    color: #AB2828;
}

@media (max-width: 575.98px) {
    .ar-panel[b-5slwcrbih6] {
        gap: 1rem;
    }

    .ar-field-ects[b-5slwcrbih6]  input {
        width: 112px;
    }
}
/* /Components/FormBuilder/Components/GradeFractionInput.razor.rz.scp.css */
/* Fraction « moyenne / barème ». Reprend la palette des composants de notes :
   #0b216f (libellé), #AB2828 (obligatoire), #ced4da / #F1F4F8 (barre du slash). */

.gf[b-sy6dd1hluk] {
    display: flex;
    align-items: flex-start;
}

.gf-micro[b-sy6dd1hluk] {
    display: block;
    height: 1.35rem;
    line-height: 1.35rem;
    margin: 0;
    font-size: 0.8rem;
    font-weight: 700;
    color: #0b216f;
    white-space: nowrap;
}

.gf-required[b-sy6dd1hluk] {
    color: #AB2828;
}

/* Ancre du pavé : il se pose sous le champ, pas sous la fraction entière. */
.gf-input[b-sy6dd1hluk] {
    position: relative;
}

.gf-field[b-sy6dd1hluk]  input {
    width: 128px;
    /* Réserve la colonne des flèches : les chiffres ne passent jamais dessous. */
    padding-right: 1.8rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.gf-field-average[b-sy6dd1hluk]  input {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.gf-field-scale[b-sy6dd1hluk]  input {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    text-align: left;
}

/* Blazorise masque les flèches hors survol : on les garde visibles, sinon
   personne ne devine que le champ s'incrémente. */
.gf-field[b-sy6dd1hluk]  .b-numeric-handler-wrap {
    opacity: 1;
    width: 1.5rem;
    background-color: #F8FAFC;
    border-color: #ced4da;
}

.gf-field-average[b-sy6dd1hluk]  .b-numeric-handler-wrap {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

.gf-field[b-sy6dd1hluk]  .b-numeric-handler {
    color: #0b216f;
}

.gf-field[b-sy6dd1hluk]  .b-numeric-handler:hover {
    background-color: #E9EEF6;
}

.gf-slash[b-sy6dd1hluk] {
    display: flex;
    align-items: center;
    margin-top: 1.35rem;
    height: calc(1.5em + 0.75rem + 2px);
    padding: 0 0.6rem;
    border-top: 1px solid #ced4da;
    border-bottom: 1px solid #ced4da;
    background-color: #F1F4F8;
    color: #67798F;
    font-weight: 700;
}

@media (max-width: 575.98px) {
    .gf-field[b-sy6dd1hluk]  input {
        width: 104px;
    }
}
/* /Components/FormBuilder/Components/NumericPadPanel.razor.rz.scp.css */
/* Pavé numérique. Même langage que les panneaux de saisie du formulaire :
   dégradé #FFFFFF -> #F5F7F9, liseré lightblue, rayon 10, accent #0b216f. */

.pad[b-uyc1lzxquj] {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 30;
    /* Guère plus large que le champ : au-delà, le pavé de la moyenne recouvrait
       le champ « Sur » et lui mangeait ses clics tant qu'il restait ouvert. */
    width: 168px;
    padding: 10px;
    border: solid 1px lightblue;
    border-radius: 10px;
    background: linear-gradient(180deg, #FFFFFF 0%, #F5F7F9 100%);
    box-shadow: 0 12px 26px -14px rgba(11, 33, 111, .5);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-4px);
    /* La visibilité n'attend la fin du fondu qu'à la fermeture. */
    transition: opacity .15s ease, transform .15s ease, visibility 0s linear .15s;
}

.pad.is-open[b-uyc1lzxquj] {
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity .15s ease, transform .15s ease, visibility 0s;
}

.pad-screen[b-uyc1lzxquj] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    height: 34px;
    margin-bottom: 8px;
    padding: 0 10px;
    border: 1px solid #E8E8E8;
    border-radius: 7px;
    background-color: #fff;
    font-size: 1.05rem;
    font-weight: 600;
    color: #0b216f;
    font-variant-numeric: tabular-nums;
}

.pad-caret[b-uyc1lzxquj] {
    width: 2px;
    height: 1.1em;
    margin-left: 2px;
    background-color: #0b216f;
    animation: pad-blink-b-uyc1lzxquj 1.1s steps(2, start) infinite;
}

@keyframes pad-blink-b-uyc1lzxquj {
    50% { opacity: 0; }
}

.pad-keys[b-uyc1lzxquj] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 6px;
}

.pad-key[b-uyc1lzxquj] {
    height: 44px;
    border: 1px solid #E8E8E8;
    border-radius: 8px;
    background-color: #fff;
    color: #0b216f;
    font-size: 1.1rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    cursor: pointer;
}

.pad-key:hover:not(:disabled)[b-uyc1lzxquj] {
    background-color: #F1F4F8;
    border-color: #0b216f;
}

.pad-key:active:not(:disabled)[b-uyc1lzxquj] {
    transform: translateY(1px);
}

/* Touche grisée : la frappe ne mènerait à aucune valeur valide — hors plafond,
   ou hors du pas autorisé. Le chiffre doit rester lisible pour qu'on comprenne
   ce qui est refusé : #7E8B9E sur #F4F6F9 tient 3,2:1, là où un gris plus clair
   effacerait le chiffre au lieu de le griser. */
.pad-key:disabled[b-uyc1lzxquj] {
    background-color: #F4F6F9;
    border-color: #EDEFF3;
    color: #7E8B9E;
    /* Un bouton désactivé n'émet aucun événement de souris : le mousedown n'atteindrait
       pas le panneau, son preventDefault ne jouerait pas, et le champ perdrait le focus —
       autrement dit, cliquer une touche grisée refermait le pavé. En laissant passer le
       clic, c'est le panneau qui le reçoit et le pavé reste ouvert. */
    pointer-events: none;
}

.pad-key-util[b-uyc1lzxquj] {
    color: #67798F;
    font-size: 1rem;
}

/* Dernière rangée : « C » seul la prend en entier, partagée à parts égales avec « NA ». */
.pad-foot[b-uyc1lzxquj] {
    grid-column: 1 / -1;
    display: flex;
    gap: 6px;
}

.pad-foot .pad-key[b-uyc1lzxquj] {
    flex: 1 1 0;
    min-width: 0;
    height: 32px;
    font-size: .9rem;
    font-weight: 700;
    letter-spacing: .08em;
}

.pad-key-clear[b-uyc1lzxquj] {
    color: #67798F;
}

/* NA n'efface pas une frappe : il déclare la note impossible à fournir, d'où l'accent. */
.pad-key-na[b-uyc1lzxquj] {
    color: #0b216f;
    border-color: rgba(11, 33, 111, .28);
}

/* Au doigt, le clavier numérique du système fait mieux : le pavé s'efface. */
@media (pointer: coarse) {
    .pad[b-uyc1lzxquj] { display: none; }
}

/* « .pad » seul perdrait contre « .pad.is-open » : le fondu continuerait de jouer
   à l'ouverture, précisément pour qui a demandé qu'on s'en passe. */
@media (prefers-reduced-motion: reduce) {
    .pad[b-uyc1lzxquj],
    .pad.is-open[b-uyc1lzxquj] { transition: none; }

    .pad-caret[b-uyc1lzxquj] { animation: none; }
}
/* /Components/FormBuilder/Components/SchoolSelectionComponent.razor.rz.scp.css */
.program-shell[b-s9lrdcsdeh] {
    width: min(1150px, 100%);
    margin: 24px auto 96px;
}

header[b-s9lrdcsdeh] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
    flex-wrap: wrap;
}

h1[b-s9lrdcsdeh] {
    margin: 0;
    font-size: clamp(22px, 2.4vw, 30px);
    letter-spacing: 0.2px;
}

.hint[b-s9lrdcsdeh] {
    margin: 8px 0 0;
    color: #6b7280;
    font-size: 13px;
    line-height: 1.45;
    max-width: 760px;
}

.program-bar[b-s9lrdcsdeh] {
    position: sticky;
    top: 8px;
    z-index: 10;
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(8px);
    border: 1px solid #e5e7eb;
    border-radius: 999px;
    box-shadow: 0 10px 26px rgba(17, 24, 39, 0.06);
    padding: 8px;
    display: flex;
    gap: 8px;
    margin: 14px 0 18px;
}

.program-btn[b-s9lrdcsdeh] {
    flex: 1;
    appearance: none;
    border: 1px solid transparent;
    border-radius: 999px;
    padding: 10px 12px;
    cursor: pointer;
    font-weight: 900;
    font-size: 13px;
    background: transparent;
    color: #111827;
    transition: background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.program-btn.active[b-s9lrdcsdeh] {
    background: #f6f7fb;
    border-color: #e5e7eb;
}

.program-btn:active[b-s9lrdcsdeh] {
    transform: translateY(1px);
}

.grid[b-s9lrdcsdeh] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
}

.school-card[b-s9lrdcsdeh] {
    border: 1px solid #e5e7eb;
    border-radius: 18px;
    background: #fff;
    box-shadow: 0 18px 50px rgba(17, 24, 39, 0.1);
    overflow: hidden;
    display: grid;
    grid-template-columns: 14px 1fr;
    min-height: 250px;
}

.card-body[b-s9lrdcsdeh] {
    display: grid;
    grid-template-columns: 320px 1fr;
    align-items: stretch;
}

.media[b-s9lrdcsdeh] {
    position: relative;

    border-right: 1px solid #e5e7eb;
    background:
            radial-gradient(700px 240px at 20% 20%, rgba(143, 134, 246, 0.2), transparent 55%),
            radial-gradient(700px 240px at 80% 35%, rgba(240, 170, 58, 0.2), transparent 60%),
            #f3f4f6;
    overflow: hidden;
}

.school-image[b-s9lrdcsdeh] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
    padding: 0 8px;
    display: block;
    opacity: 0.9;
}

.media-overlay[b-s9lrdcsdeh] {
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.18));
}

.school-head[b-s9lrdcsdeh] {
    position: absolute;
    left: 14px;
    right: 14px;
    top: 14px;
    z-index: 2;
}

.school-name[b-s9lrdcsdeh] {
    margin: 0;
    font-weight: 900;
    font-size: 18px;
    color: #fff;
    text-shadow: 0 10px 22px rgba(0, 0, 0, 0.25);
}

.content[b-s9lrdcsdeh] {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.kicker[b-s9lrdcsdeh] {
    margin: 0;
    font-size: 12px;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: #6b7280;
    font-weight: 900;
}

.desc[b-s9lrdcsdeh] {
    margin: 0;
    color: #6b7280;
    font-size: 13px;
    line-height: 1.5;
}

.selectors[b-s9lrdcsdeh] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-top: 4px;
}

.field[b-s9lrdcsdeh] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.field.full[b-s9lrdcsdeh] {
    grid-column: 1 / -1;
}

.field label[b-s9lrdcsdeh] {
    font-size: 11px;
    color: #6b7280;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

/* Explication affichée quand aucune spé n'est proposée, ou qu'un choix enregistré ne l'est plus. */
.school-selection-hint[b-s9lrdcsdeh] {
    margin: 0;
    padding: 8px 12px;
    border-radius: 12px;
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #9a3412;
    font-size: 13px;
    line-height: 1.4;
}

/* Rappel informatif : l'ordre des listes de spé est l'ordre de préférence. Ton neutre (bleu),
   pour ne pas le confondre avec les avertissements orange ci-dessus. */
.school-selection-order-hint[b-s9lrdcsdeh] {
    margin: 0;
    padding: 8px 12px;
    border-radius: 12px;
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    color: #1e40af;
    font-size: 13px;
    line-height: 1.4;
}

select[b-s9lrdcsdeh] {
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    padding: 10px 12px;
    font: inherit;
    outline: none;
    background: #fff;
}

select:focus[b-s9lrdcsdeh] {
    border-color: rgba(59, 130, 246, 0.55);
    box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.14);
}

select:disabled[b-s9lrdcsdeh] {
    background: #f9fafb;
    color: #9ca3af;
    cursor: not-allowed;
}

.cta-row[b-s9lrdcsdeh] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    border-top: 1px solid #e5e7eb;
    padding-top: 12px;
    flex-wrap: wrap;
}

.summary[b-s9lrdcsdeh] {
    display: flex;
    gap: 10px;
    align-items: center;
    color: #6b7280;
    font-size: 12px;
    font-weight: 800;
    flex-wrap: wrap;
}

.mini-chip[b-s9lrdcsdeh] {
    padding: 4px 8px;
    border-radius: 999px;
    border: 1px solid #e5e7eb;
    background: #fff;
    font-weight: 800;
    color: #6b7280;
}

.btn[b-s9lrdcsdeh] {
    appearance: none;
    border: 1px solid #e5e7eb;
    background: #fff;
    color: #111827;
    padding: 10px 12px;
    border-radius: 12px;
    cursor: pointer;
    font-weight: 800;
    font-size: 13px;
}

.btn.primary[b-s9lrdcsdeh] {
    border-color: transparent;
    background: linear-gradient(90deg, rgba(143, 134, 246, 0.28), rgba(240, 170, 58, 0.2));
}

.btn.primary:disabled[b-s9lrdcsdeh] {
    opacity: 0.55;
    cursor: not-allowed;
}

.btn.outline[b-s9lrdcsdeh] {
    background: #fff;
    border-color: #d1d5db;
    color: #111827;
}

.btn.danger[b-s9lrdcsdeh] {
    background: #fff5f5;
    border-color: #fecaca;
    color: #b91c1c;
}

.cta-actions[b-s9lrdcsdeh] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.selection-footer[b-s9lrdcsdeh] {
    position: sticky;
    bottom: 12px;
    z-index: 20;
    margin-top: 16px;
    border: 1px solid #e5e7eb;
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.96);
    backdrop-filter: blur(8px);
    box-shadow: 0 16px 36px rgba(17, 24, 39, 0.12);
    padding: 14px 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
}

.selection-footer-left[b-s9lrdcsdeh] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.selection-title[b-s9lrdcsdeh] {
    margin: 0;
    font-size: 14px;
    font-weight: 900;
    color: #111827;
}

.selection-subtitle[b-s9lrdcsdeh] {
    margin: 0;
    font-size: 12px;
    color: #6b7280;
    font-weight: 700;
}

.selection-chips[b-s9lrdcsdeh] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.selection-chip[b-s9lrdcsdeh] {
    padding: 5px 10px;
    border-radius: 999px;
    border: 1px solid #e5e7eb;
    background: #fff;
    color: #374151;
    font-size: 12px;
    font-weight: 800;
}

.selection-chip.school-chip[b-s9lrdcsdeh] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #f6f7fb;
    color: #111827;
}

.chip-dot[b-s9lrdcsdeh] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex: 0 0 auto;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.9);
}

.chip-name[b-s9lrdcsdeh] {
    font-weight: 800;
}

.chip-detail[b-s9lrdcsdeh] {
    color: #6b7280;
    font-weight: 700;
}

.chip-detail[b-s9lrdcsdeh]::before {
    content: "·";
    margin-right: 4px;
    color: #9ca3af;
}

.apply-btn[b-s9lrdcsdeh] {
    appearance: none;
    border: 1px solid #d1d5db;
    border-radius: 12px;
    padding: 10px 16px;
    font-size: 13px;
    font-weight: 900;
    color: #9ca3af;
    background: #f3f4f6;
    cursor: not-allowed;
    min-width: 128px;
}

.apply-btn.ready[b-s9lrdcsdeh] {
    border-color: transparent;
    background: linear-gradient(90deg, rgba(143, 134, 246, 0.28), rgba(240, 170, 58, 0.2));
    color: #111827;
    cursor: pointer;
}

@media (max-width: 980px) {
    .program-bar[b-s9lrdcsdeh] {
        flex-direction: column;
        border-radius: 14px;
    }

    .card-body[b-s9lrdcsdeh] {
        grid-template-columns: 1fr;
    }

    .media[b-s9lrdcsdeh] {
        border-right: none;
        border-bottom: 1px solid #e5e7eb;
        min-height: 220px;
    }

    .selectors[b-s9lrdcsdeh] {
        grid-template-columns: 1fr;
    }

    .selection-footer[b-s9lrdcsdeh] {
        flex-direction: column;
        align-items: stretch;
    }

    .apply-btn[b-s9lrdcsdeh] {
        width: 100%;
    }

    .selection-footer-actions[b-s9lrdcsdeh] {
        display: flex;
        gap: 1rem;
        align-items: center;
    }
}

/* Présentation d'école : le texte vient de la base avec ses balises. */
.desc p[b-s9lrdcsdeh] {
    margin: 0 0 8px;
}

.desc p:last-child[b-s9lrdcsdeh] {
    margin-bottom: 0;
}

.desc h4[b-s9lrdcsdeh] {
    margin: 12px 0 4px;
    color: #374151;
    font-size: 13px;
    font-weight: 600;
}
/* /Components/FormBuilder/Documents.razor.rz.scp.css */
/*
    Tuiles de pieces justificatives.

    Une seule feuille isolee pour ce composant ; les enfants rendus par Blazor sont habilles
    via ::deep. Aucune couleur en dur : tout passe par les jetons definis dans BrandStyles,
    pour que la page suive la charte de l'ecole servie.
*/

.doc-board[b-8t70nt5k04] {
    display: block;
}

.doc-board__head[b-8t70nt5k04] {
    margin-bottom: 1.75rem;
}

.doc-board__title[b-8t70nt5k04] {
    font-weight: 600;
    letter-spacing: -0.01em;
    margin: 0 0 0.4rem;
    color: var(--an-primary);
}

.doc-board__lede[b-8t70nt5k04] {
    margin: 0;
    max-width: 62ch;
    color: var(--an-muted);
    font-size: 0.95rem;
    line-height: 1.6;
}

/* ---------- grille ---------- */

.doc-grid[b-8t70nt5k04] {
    display: grid;
    gap: 1.25rem;
    grid-template-columns: 1fr;
}

@media (min-width: 768px) {
    .doc-grid[b-8t70nt5k04] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1200px) {
    .doc-grid[b-8t70nt5k04] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* Une tuile porteuse d'erreurs prend deux colonnes : le texte d'erreur a besoin de place,
   et l'elargissement attire l'oeil sur ce qui demande une action. */
.doc-tile--wide[b-8t70nt5k04] {
    grid-column: span 1;
}

@media (min-width: 768px) {
    .doc-tile--wide[b-8t70nt5k04] { grid-column: span 2; }
}

/* ---------- tuile ---------- */

.doc-tile[b-8t70nt5k04] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 1.5rem 1.5rem 1.25rem;
    /* Surface neutre, et non --an-light : ce jeton porte la teinte de marque de l'ecole servie,
       qui est saturee. Une tuile de formulaire doit rester un fond calme sur lequel les couleurs
       d'etat — vert, rouge, ambre — restent lisibles. */
    background: var(--an-bg-light);
    border: 1px solid var(--an-line);
    border-radius: 0.5rem;
    overflow: hidden;
    transition: border-color 160ms ease, box-shadow 160ms ease;
}

/* Liseret en tete, signature visuelle du front-office. Il s'etire a l'arrivee de la tuile. */
.doc-tile__rule[b-8t70nt5k04] {
    position: absolute;
    inset: 0 0 auto 0;
    height: 2px;
    background: var(--an-accent);
    transform-origin: left center;
    animation: doc-rule-b-8t70nt5k04 420ms ease-out both;
    animation-delay: calc(var(--i, 0) * 70ms);
}

.doc-tile__head[b-8t70nt5k04],
.doc-tile__status[b-8t70nt5k04],
.doc-tile__name[b-8t70nt5k04],
.doc-files[b-8t70nt5k04],
.doc-tile__foot[b-8t70nt5k04] {
    animation: doc-fade-b-8t70nt5k04 420ms ease-out both;
    animation-delay: calc(var(--i, 0) * 70ms + 120ms);
}

@keyframes doc-rule-b-8t70nt5k04 {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
}

@keyframes doc-fade-b-8t70nt5k04 {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: none; }
}

/* Survol « mise au point » : rien ne bouge de place, et le fond ne change pas — seuls le liseret
   et une ombre discrete signalent la tuile visee. Changer le fond au survol rendait l'etat de la
   tuile survolee different de celui des autres, ce qui brouillait la lecture. */
.doc-tile:hover[b-8t70nt5k04] {
    border-color: var(--an-accent);
    box-shadow: 0 2px 12px -6px rgb(0 0 0 / 0.25);
}

/* ---------- en-tete de tuile ---------- */

.doc-tile__head[b-8t70nt5k04] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.75rem;
    align-items: start;
}

/* Photo de profil (admission) : l'apercu occupe le coin haut droit de la tuile. */
.doc-tile__head--preview[b-8t70nt5k04] {
    grid-template-columns: auto 1fr auto;
}

.doc-tile__preview[b-8t70nt5k04] {
    width: 4.5rem;
    max-width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    border-radius: 0.375rem;
    border: 1px solid var(--an-line);
    background: var(--an-line);
}

/* La numerotation encode l'ordre de depot attendu : elle porte une information, pas un ornement. */
.doc-tile__num[b-8t70nt5k04] {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    color: var(--an-accent);
    padding-top: 0.2rem;
    font-variant-numeric: tabular-nums;
}

.doc-tile__name[b-8t70nt5k04] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--an-primary);
}

.doc-tile__required[b-8t70nt5k04] {
    color: var(--an-danger);
    margin-left: 0.15rem;
}

.doc-tile__who[b-8t70nt5k04] {
    margin: 0.15rem 0 0;
    font-size: 0.85rem;
    color: var(--an-muted);
}

/* ---------- etat ---------- */

.doc-tile__status[b-8t70nt5k04] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-height: 1.25rem;
}

.doc-state[b-8t70nt5k04] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--an-muted);
}

.doc-state__dot[b-8t70nt5k04] {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: currentColor;
    flex: none;
}

.doc-state__attempts[b-8t70nt5k04] {
    font-weight: 400;
    color: var(--an-muted);
}

.is-validated .doc-state[b-8t70nt5k04] { color: var(--an-success); }
.is-rejected  .doc-state[b-8t70nt5k04] { color: var(--an-danger); }
.is-review    .doc-state[b-8t70nt5k04] { color: var(--an-muted); }
.is-failed    .doc-state[b-8t70nt5k04] { color: var(--an-warning); }
.is-busy      .doc-state[b-8t70nt5k04] { color: var(--an-info); }

.is-rejected[b-8t70nt5k04] { border-color: var(--an-danger); }
.is-failed[b-8t70nt5k04]   { border-color: var(--an-warning); }

/* Barre de progression indeterminee, LOCALE a la tuile : c'est elle qui remplace le
   spinner unique qui masquait toute la liste. */
.doc-progress[b-8t70nt5k04] {
    display: block;
    height: 3px;
    width: 100%;
    background: var(--an-line);
    border-radius: 2px;
    overflow: hidden;
}

.doc-progress > span[b-8t70nt5k04] {
    display: block;
    height: 100%;
    width: 35%;
    background: var(--an-accent);
    animation: doc-indeterminate-b-8t70nt5k04 1.1s ease-in-out infinite;
}

@keyframes doc-indeterminate-b-8t70nt5k04 {
    0%   { transform: translateX(-100%); }
    100% { transform: translateX(340%); }
}

/* ---------- erreurs et aides ---------- */

.doc-tile__errors[b-8t70nt5k04] {
    margin: 0;
    padding: 0.6rem 0.8rem;
    list-style: none;
    /* Legerement plus sombre que la tuile, pour se detacher sans introduire une seconde surface. */
    background: rgb(0 0 0 / 0.035);
    border-left: 3px solid var(--an-danger);
    border-radius: 0.25rem;
    font-size: 0.85rem;
    color: var(--an-dark);
}

.doc-tile__errors li + li[b-8t70nt5k04] {
    margin-top: 0.6rem;
    padding-top: 0.6rem;
    border-top: 1px solid var(--an-line);
}

.doc-error__label[b-8t70nt5k04] {
    display: block;
    font-weight: 600;
}

/* Confrontation dossier / document : deux colonnes sur large, empilees sur mobile. */
.doc-error__compare[b-8t70nt5k04] {
    display: grid;
    gap: 0.15rem 1.25rem;
    margin-top: 0.3rem;
}

@media (min-width: 520px) {
    .doc-error__compare[b-8t70nt5k04] { grid-template-columns: 1fr 1fr; }
}

.doc-error__side[b-8t70nt5k04] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.doc-error__key[b-8t70nt5k04] {
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--an-muted);
}

.doc-error__val[b-8t70nt5k04] {
    overflow-wrap: anywhere;
}

/* La valeur lue sur la pièce est celle qui contredit le dossier : c'est elle qu'on souligne. */
.doc-error__val--found[b-8t70nt5k04] {
    color: var(--an-danger);
    font-weight: 600;
}

.doc-tile__errors--single[b-8t70nt5k04] {
    color: var(--an-danger);
}

.doc-tile__hint[b-8t70nt5k04] {
    margin: 0;
    font-size: 0.82rem;
    color: var(--an-muted);
    line-height: 1.5;
}

/* ---------- fichiers ---------- */

.doc-files[b-8t70nt5k04] {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.doc-files__item[b-8t70nt5k04] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    position: relative;
    padding-left: 0.85rem;
    font-size: 0.875rem;
}

/* Liseret dore en puce, plutot que la puce native du navigateur. */
.doc-files__item[b-8t70nt5k04]::before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 0.5rem;
    height: 2px;
    background: var(--an-accent);
}

.doc-files__name[b-8t70nt5k04] {
    overflow-wrap: anywhere;
    color: var(--an-dark);
}

.doc-files__action[b-8t70nt5k04] {
    padding: 0;
    font-size: 0.82rem;
    color: var(--an-danger);
    text-decoration: none;
}

.doc-files__action:hover[b-8t70nt5k04] {
    text-decoration: underline;
}

.doc-files__empty[b-8t70nt5k04] {
    font-size: 0.875rem;
    color: var(--an-muted);
    font-style: italic;
}

/* ---------- pied de tuile ---------- */

.doc-tile__foot[b-8t70nt5k04] {
    margin-top: auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--an-line);
}

.doc-tile__formats[b-8t70nt5k04] {
    margin: 0;
    font-size: 0.78rem;
    color: var(--an-muted);
}

/* Le champ natif est masque au profit d'un libelle stylable ; il reste atteignable au clavier. */
.doc-upload[b-8t70nt5k04] {
    display: inline-flex;
    align-items: center;
    cursor: pointer;
    margin: 0;
    position: relative;
}

/* Pendant l'envoi, le champ est masque visuellement mais reste dans le DOM : le detruire
   invaliderait la reference navigateur du fichier en cours de lecture. */
.doc-upload--hidden[b-8t70nt5k04] {
    display: none;
}

.doc-upload[b-8t70nt5k04]  input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    overflow: hidden;
}

.doc-upload__label[b-8t70nt5k04] {
    display: inline-block;
    padding: 0.4rem 0.9rem;
    border: 1px solid var(--an-accent);
    border-radius: 0.3rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--an-accent);
    background: transparent;
    transition: background-color 160ms ease, color 160ms ease;
}

.doc-upload:hover .doc-upload__label[b-8t70nt5k04] {
    background: var(--an-accent);
    color: var(--an-on-accent);
}

/* Le focus clavier doit rester visible malgre le champ masque. */
.doc-upload[b-8t70nt5k04]  input[type="file"]:focus-visible + .doc-upload__label {
    outline: 2px solid var(--an-accent);
    outline-offset: 2px;
}

/* ---------- squelette de chargement ---------- */

.doc-tile--skeleton[b-8t70nt5k04] {
    min-height: 9rem;
}

.doc-skel[b-8t70nt5k04] {
    height: 0.7rem;
    border-radius: 3px;
    background: linear-gradient(90deg, var(--an-line), var(--an-bg-light), var(--an-line));
    background-size: 200% 100%;
    animation: doc-shimmer-b-8t70nt5k04 1.4s linear infinite;
}

.doc-skel--title[b-8t70nt5k04] { width: 55%; height: 1rem; }
.doc-skel--line[b-8t70nt5k04]  { width: 85%; }
.doc-skel--short[b-8t70nt5k04] { width: 40%; }

@keyframes doc-shimmer-b-8t70nt5k04 {
    from { background-position: 200% 0; }
    to   { background-position: -200% 0; }
}

/* ---------- accessibilite ---------- */

@media (prefers-reduced-motion: reduce) {
    .doc-tile__rule[b-8t70nt5k04],
    .doc-tile__head[b-8t70nt5k04],
    .doc-tile__status[b-8t70nt5k04],
    .doc-tile__name[b-8t70nt5k04],
    .doc-files[b-8t70nt5k04],
    .doc-tile__foot[b-8t70nt5k04],
    .doc-progress > span[b-8t70nt5k04],
    .doc-skel[b-8t70nt5k04] {
        animation: none !important;
    }

    .doc-tile[b-8t70nt5k04] {
        transition: none !important;
    }

    /* La barre indeterminee garde une presence visuelle sans mouvement. */
    .doc-progress > span[b-8t70nt5k04] {
        width: 100%;
        opacity: 0.5;
    }
}
/* /Components/FormBuilder/FormBuilder.razor.rz.scp.css */
h4[b-6rkdux8g8v] {
    padding-top: 1em;
    padding-bottom: 1em;
}

.contact-card[b-6rkdux8g8v] {
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    margin-bottom: 15px;
    padding: 15px;
    background-color: white;
    position: relative;
    border-radius: 10px;
}

.add-contact-box:hover[b-6rkdux8g8v] {
    background-color: rgba(0, 123, 255, 0.1);
}

.education-section[b-6rkdux8g8v] {
    padding: 20px;
    background-color: #f9f9f9;
    border-radius: 8px;
    margin-bottom: 20px;
}

.education-card[b-6rkdux8g8v] {
    background-color: #fff;
    padding: 15px;
    border: 1px solid #ddd;
    border-radius: 8px;
    margin-bottom: 15px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
    position: relative;
}

.education-details[b-6rkdux8g8v] {
    margin-bottom: 20px;
}

label[b-6rkdux8g8v] {
    font-weight: bold;
    display: block;
    margin-bottom: 5px;
}

.form-group[b-6rkdux8g8v] {
    margin-bottom: 15px;
}

.form-control[b-6rkdux8g8v] {
    width: 100%;
    padding: 10px;
    border-radius: 5px;
    border: 1px solid #ccc;
    box-sizing: border-box;
}

.add-contact-box[b-6rkdux8g8v] {
    cursor: pointer;
    padding: 10px;
    background-color: #007bff;
    color: white;
    text-align: center;
    border-radius: 5px;
    font-weight: bold;
}

    .add-contact-box:hover[b-6rkdux8g8v] {
        background-color: #0056b3;
    }

.delete-button[b-6rkdux8g8v] {
    background-color: #dc3545;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    cursor: pointer;
    font-size: 14px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    width: 100px;
    position: relative;
    bottom: 10px;
    left: 50%;
    transform: translateX(-50%);
}

    .delete-button:hover[b-6rkdux8g8v] {
        background-color: #c82333;
    }

    .delete-button i[b-6rkdux8g8v] {
        margin-right: 5px;
    }

.custom-dropdown-body[b-6rkdux8g8v] {
    margin-top: 10px;
}

.custom-dropdown-toggle[b-6rkdux8g8v] {
    background-color: #007bff;
    color: white;
    padding: 10px;
    font-size: 16px;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    width: 100%;
    text-align: left;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

    .custom-dropdown-toggle[b-6rkdux8g8v]:after {
        content: '\25BC';
        float: right;
    }

.custom-dropdown-menu[b-6rkdux8g8v] {
    background-color: white;
    border-radius: 5px;
    margin-top: 5px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    max-height: 200px;
    overflow-y: auto;
    z-index: 1000;
    width: 100%;
}

.custom-dropdown-item[b-6rkdux8g8v] {
    padding: 10px 15px;
    font-size: 16px;
    color: #333;
    cursor: pointer;
    transition: background-color 0.3s ease;
}

    .custom-dropdown-item:hover[b-6rkdux8g8v] {
        background-color: #f1f1f1;
    }

    .custom-dropdown-item.active[b-6rkdux8g8v] {
        background-color: #007bff;
        color: white;
    }

.inscription-container[b-6rkdux8g8v] {
    max-width: 600px;
    margin: 20px auto;
    padding: 20px;
    background-color: #f2f2f2;
    border: 1px solid #ccc;
    border-radius: 8px;
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

h2[b-6rkdux8g8v] {
    color: #007bff;
    text-align: center;
}

ol[b-6rkdux8g8v], ul[b-6rkdux8g8v] {
    margin: 15px 0;
    padding-left: 20px;
}

li[b-6rkdux8g8v] {
    margin-bottom: 10px;
}

strong[b-6rkdux8g8v] {
    color: #d9534f;
}

.document-component[b-6rkdux8g8v] {
    margin: 20px;
    padding: 15px;
    background-color: #f9f9f9;
    border-radius: 8px;
    border: 1px solid #ddd;
}

.document-section[b-6rkdux8g8v] {
    margin-bottom: 25px;
    padding: 10px;
    background-color: #fff;
    border-radius: 5px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.document-title[b-6rkdux8g8v] {
    font-size: 18px;
    font-weight: bold;
    color: #333;
    margin-bottom: 10px;
}

.file-input[b-6rkdux8g8v] {
    margin: 10px 0;
    padding: 5px;
}

.document-list[b-6rkdux8g8v] {
    list-style-type: none;
    padding: 0;
}

.document-item[b-6rkdux8g8v] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid #eee;
}

    .document-item.empty[b-6rkdux8g8v] {
        color: #999;
        font-style: italic;
    }

.file-name[b-6rkdux8g8v] {
    font-size: 16px;
    color: #555;
}

.remove-button[b-6rkdux8g8v] {
    background-color: #ff4d4d;
    border: none;
    color: white;
    padding: 5px 10px;
    font-size: 14px;
    cursor: pointer;
    border-radius: 4px;
    transition: background-color 0.2s ease;
}

    .remove-button:hover[b-6rkdux8g8v] {
        background-color: #ff1a1a;
    }

.error-message[b-6rkdux8g8v] {
    color: #d9534f;
    font-size: 0.9rem;
    margin-top: 0.5rem;
}

.field-invalid[b-6rkdux8g8v] {
    border: 1px solid #d9534f;
    background-color: #fbe9e9;
}

.field-label[b-6rkdux8g8v] {
    font-weight: bold;
    margin-bottom: 0.5rem;
}

.field-container[b-6rkdux8g8v] {
    margin-bottom: 1.5rem;
}

.fake-button:hover[b-6rkdux8g8v] {
    cursor: pointer;
}

.stepper-offset[b-6rkdux8g8v]{
    margin-top:130px;
    margin-right: -14px;
}

.border-danger[b-6rkdux8g8v] {
    border: 2px solid red !important;
}

@media (max-width: 576px) {
    .stepper-offset[b-6rkdux8g8v] {
        display: none;
    }
}
/* /Components/FormBuilder/RecapProgramComponent.razor.rz.scp.css */
/* Rendu par défaut (formulaire) : tuiles claires alignées. L'accueil l'habille autrement par ::deep. */
.recap-program[b-sivrak4m7w] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: .75rem;
    margin: 0;
}

.recap-program__item[b-sivrak4m7w] {
    padding: .6rem .9rem;
    background: var(--an-bg-light);
    border-left: 3px solid var(--an-accent);
    border-radius: 6px;
}

dt[b-sivrak4m7w] {
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--an-muted);
}

dd[b-sivrak4m7w] {
    margin: 0;
    font-weight: 600;
    color: var(--an-primary);
}
/* /Components/FormBuilder/SecondaryEducationResults.razor.rz.scp.css */
/* Tableau des moyennes du secondaire.
   Reprend la trame de AcademicResult.razor.css : libellé « micro » au-dessus d'un champ
   souligné, barre de fraction entre la moyenne et son barème. */

.ser-notice[b-s7e5x7lyta] {
    font-weight: 700;
    margin-bottom: 1rem;
}

/* ── Type de scolarité ──────────────────────────────────── */
.ser-type[b-s7e5x7lyta] {
    max-width: 22rem;
    margin-bottom: 1rem;
}

.ser-type-label[b-s7e5x7lyta] {
    display: block;
    font-size: 0.75rem;
    color: #6c757d;
    margin-bottom: 0.15rem;
}

.ser-type-select[b-s7e5x7lyta] {
    border: 0;
    border-bottom: 2px solid #0b216f;
    border-radius: 0;
    padding-left: 0;
    box-shadow: none;
}

.ser-type-select:focus[b-s7e5x7lyta] {
    box-shadow: none;
    border-bottom-color: #0b216f;
}

.ser-required[b-s7e5x7lyta] {
    color: #AB2828;
    margin-left: 0.15rem;
}

/* ── Tableau ────────────────────────────────────────────── */
.ser-table[b-s7e5x7lyta] {
    margin-bottom: 0.5rem;
    border: 1px solid #dee2e6;
}

.ser-table thead th[b-s7e5x7lyta] {
    text-align: center;
    font-weight: 600;
    vertical-align: middle;
    background-color: #fff;
    border-bottom: 1px solid #dee2e6;
}

.ser-table tbody td[b-s7e5x7lyta] {
    vertical-align: middle;
    min-width: 15rem;
}

.ser-level[b-s7e5x7lyta] {
    text-align: center;
    font-weight: 500;
    white-space: nowrap;
}

/* ── Cellule : moyenne / barème ─────────────────────────── */
.ser-fraction[b-s7e5x7lyta] {
    display: flex;
    align-items: flex-end;
    gap: 0.5rem;
}

.ser-field[b-s7e5x7lyta] {
    flex: 1 1 0;
    min-width: 0;
}

.ser-micro[b-s7e5x7lyta] {
    display: block;
    font-size: 0.75rem;
    color: #6c757d;
    margin-bottom: 0.15rem;
    text-align: center;
}

.ser-input[b-s7e5x7lyta] {
    border: 0;
    border-bottom: 1px solid #adb5bd;
    border-radius: 0;
    box-shadow: none;
    text-align: center;
}

.ser-input:focus[b-s7e5x7lyta] {
    box-shadow: none;
    border-bottom-color: #0b216f;
}

.ser-input.is-invalid[b-s7e5x7lyta] {
    background-image: none;
    border-bottom-color: #AB2828;
}

.ser-slash[b-s7e5x7lyta] {
    color: #6c757d;
    padding-bottom: 0.4rem;
}

.ser-error[b-s7e5x7lyta] {
    color: #AB2828;
    font-size: 0.75rem;
    margin: 0.25rem 0 0;
    text-align: center;
}

.ser-footer[b-s7e5x7lyta] {
    color: #0b216f;
    font-size: 0.875rem;
    margin-bottom: 0;
}

@media (max-width: 767.98px) {
    .ser-table tbody td[b-s7e5x7lyta] {
        min-width: 12rem;
    }
}
/* /Components/LanguageSelector.razor.rz.scp.css */

.btn[b-n7a1fvpxe0] {
    color: white;
    border: none;
    background-color: transparent;
}

    .btn:hover[b-n7a1fvpxe0] {
        color: white;
        background-color: rgba(255, 255, 255, 0.1);
        border-radius: 4px;
        transition: background-color 0.3s ease;
    }

.btnSelected[b-n7a1fvpxe0] {
    color: white;
    font-weight: bold;
    border: none;
    background-color: transparent;
}

.separator[b-n7a1fvpxe0] {
    width: 1px;
    background-color: white;
    height: 12px;
    margin: 0 4px;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* Bandeau d'environnement, affiché hors production. Le fond couvre toute la largeur, son contenu
   suit le conteneur de page : le badge tombe sur le même axe que le logo de l'en-tête. */
.an-envbar[b-3m90fagvj2] {
    background: var(--an-primary);
    padding: .25rem 0;
}

/* Les jetons d'environnement sur une seule ligne ; ils passent à la ligne sur écran étroit. */
.an-envbar-inner[b-3m90fagvj2] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.footer-example a[b-3m90fagvj2] {
    text-decoration: none;
    color: inherit;
}

.custom-header[b-3m90fagvj2] {
    display: flex;
    height: 80px;
}

.custom-footer[b-3m90fagvj2] {
    display: flex;
    height: 60px; 
}

.content-area[b-3m90fagvj2] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.social-link[b-3m90fagvj2] {
    display: inline-block;
    transition: transform 0.3s ease;
}

.social-link:hover[b-3m90fagvj2] {
    transform: scale(1.15);
}


.header-bar[b-3m90fagvj2] {
    display: flex;
    background-color: #f8f9fa; 
    box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); 
    position: fixed;
    top: 80px; 
    left: 0;
    z-index: 999;
}
.error-message[b-3m90fagvj2] {
    background-color: #f8d7da;
    border: 1px solid #f5c6cb;
    color: #721c24;
    padding: 10px;
    border-radius: 5px;
    margin-top: 10px;
}

    .error-message i[b-3m90fagvj2] {
        margin-right: 5px;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-cy0ub15q4d] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: white;
    position: absolute;
    top: 0.5rem;
    right: 1rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}

.navbar-toggler:checked[b-cy0ub15q4d] {
    background-color: rgba(255, 255, 255, 0.5);
}

.top-row[b-cy0ub15q4d] {
    height: 3.5rem;
    background-color: rgba(0,0,0,0.4);
}

.navbar-brand[b-cy0ub15q4d] {
    font-size: 1.1rem;
}

.bi[b-cy0ub15q4d] {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-size: cover;
}

.bi-house-door-fill[b-cy0ub15q4d] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.bi-plus-square-fill[b-cy0ub15q4d] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}

.bi-list-nested[b-cy0ub15q4d] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

.nav-item[b-cy0ub15q4d] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-cy0ub15q4d] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-cy0ub15q4d] {
        padding-bottom: 1rem;
    }

    .nav-item[b-cy0ub15q4d]  a {
        color: #d7d7d7;
        border-radius: 4px;
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
    }

.nav-item[b-cy0ub15q4d]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-cy0ub15q4d]  a:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

.nav-scrollable[b-cy0ub15q4d] {
    display: none;
}

.navbar-toggler:checked ~ .nav-scrollable[b-cy0ub15q4d] {
    display: block;
}

@media (min-width: 641px) {
    .navbar-toggler[b-cy0ub15q4d] {
        display: none;
    }

    .nav-scrollable[b-cy0ub15q4d] {
        /* Never collapse the sidebar for wide screens */
        display: block;

        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}
/* /Components/Layout/SiteFooter.razor.rz.scp.css */
.an-footer[b-7xr63qzuwe] {
    background: var(--an-primary);
    color: #fff;
    overflow: hidden;
    margin-top: 3rem;
}

.an-footer-top[b-7xr63qzuwe] {
    display: grid;
    grid-template-columns: 1.6fr 1fr 1fr;
    gap: 2.5rem;
    padding: 3.25rem 0 2rem;
}

.an-footer-say[b-7xr63qzuwe] {
    font-size: 1.6rem;
    line-height: 1.3;
    font-weight: 600;
    margin: 0 0 1.25rem;
    max-width: 16ch;
    text-wrap: balance;
}

.an-footer-schools[b-7xr63qzuwe] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1.25rem;
    font-size: .9rem;
    letter-spacing: .06em;
    color: rgba(255, 255, 255, .62);
}

.an-footer-social[b-7xr63qzuwe] {
    display: flex;
    gap: 1.25rem;
    margin-top: 1.5rem;
}

.an-footer-social a[b-7xr63qzuwe] {
    color: rgba(255, 255, 255, .62);
    text-decoration: none;
    font-size: .78rem;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.an-footer-social a:hover[b-7xr63qzuwe],
.an-footer-social a:focus-visible[b-7xr63qzuwe] {
    color: var(--an-accent);
}

.an-footer-col h2[b-7xr63qzuwe] {
    font-size: .7rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--an-accent);
    margin: 0 0 1rem;
    font-weight: 600;
}

.an-footer-col a[b-7xr63qzuwe] {
    display: block;
    font-size: .87rem;
    padding: .3rem 0;
    color: rgba(255, 255, 255, .82);
    text-decoration: none;
}

.an-footer-col a:hover[b-7xr63qzuwe],
.an-footer-col a:focus-visible[b-7xr63qzuwe] {
    color: #fff;
    text-decoration: underline;
}

.an-footer-word[b-7xr63qzuwe] {
    font-weight: 700;
    font-size: clamp(2.75rem, 11vw, 7.5rem);
    line-height: .78;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: transparent;
    -webkit-text-stroke: 1px rgba(255, 255, 255, .2);
    margin: .5rem 0 -.6rem;
    user-select: none;
    white-space: nowrap;
    overflow: hidden;
}

.an-footer-legal[b-7xr63qzuwe] {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding: 1.1rem 0;
    border-top: 1px solid rgba(255, 255, 255, .14);
    font-size: .7rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .5);
}

.an-footer-legal nav[b-7xr63qzuwe] {
    display: flex;
    gap: 1.4rem;
    flex-wrap: wrap;
}

.an-footer-legal a[b-7xr63qzuwe] {
    color: inherit;
    text-decoration: none;
}

.an-footer-legal a:hover[b-7xr63qzuwe],
.an-footer-legal a:focus-visible[b-7xr63qzuwe] {
    color: #fff;
    text-decoration: underline;
}

@media (max-width: 767.98px) {
    .an-footer-top[b-7xr63qzuwe] {
        grid-template-columns: 1fr;
        gap: 2rem;
    }

    .an-footer-say[b-7xr63qzuwe] {
        font-size: 1.3rem;
    }
}

/* ============================================================
   Périmètres IÉSEG — pied de page compact, deux rangées.
   ============================================================ */

.an-footer--compact[b-7xr63qzuwe] {
    margin-top: 2.5rem;
}

.an-fc-row[b-7xr63qzuwe] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    flex-wrap: wrap;
    padding: 1.25rem 0;
}

.an-fc-row--second[b-7xr63qzuwe] {
    padding: .9rem 0;
    border-top: 1px solid rgba(255, 255, 255, .13);
}

.an-fc-left[b-7xr63qzuwe] {
    display: flex;
    align-items: center;
    gap: 1.4rem;
    flex-wrap: wrap;
}

.an-fc-logo[b-7xr63qzuwe] {
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: .04em;
}

.an-fc-nav[b-7xr63qzuwe] {
    display: flex;
    gap: 1.15rem;
    flex-wrap: wrap;
}

.an-fc-nav a[b-7xr63qzuwe] {
    font-size: .84rem;
    color: rgba(255, 255, 255, .82);
    text-decoration: none;
}

.an-fc-nav a:hover[b-7xr63qzuwe],
.an-fc-nav a:focus-visible[b-7xr63qzuwe] {
    color: #fff;
    text-decoration: underline;
}

/* Le fichier est celui de l'en-tête : les logos y sont blancs, dessinés pour le marine de la
   marque. Aucun cartouche clair donc — il les faisait disparaître. */
.an-fc-acc[b-7xr63qzuwe] {
    display: inline-flex;
    align-items: center;
    flex: 0 1 auto;
    min-width: 0;
}

/* Hauteur et largeur plafonnées, jamais imposées. Avec `height: 34px`, le bandeau gardait la
   largeur que cette hauteur lui donnait — plus large qu'un écran de téléphone — et `overflow:
   hidden` du pied de page le tranchait en pleine image. Deux maxima laissent le navigateur
   réduire l'ensemble en conservant les proportions. */
.an-fc-acc img[b-7xr63qzuwe] {
    display: block;
    width: auto;
    height: auto;
    max-height: 34px;
    max-width: 100%;
}

.an-fc-adr[b-7xr63qzuwe] {
    display: flex;
    gap: 1.6rem;
    flex-wrap: wrap;
    margin: 0;
    font-style: normal;
    font-size: .78rem;
    color: rgba(255, 255, 255, .68);
}

.an-fc-adr b[b-7xr63qzuwe] {
    color: var(--an-accent);
    font-weight: 600;
    font-size: .66rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    margin-right: .4rem;
}

.an-fc-soc[b-7xr63qzuwe] {
    display: flex;
    gap: .5rem;
}

.an-fc-soc a[b-7xr63qzuwe] {
    width: 30px;
    height: 30px;
    border-radius: .5rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, .09);
    transition: background .16s ease, transform .16s ease;
}

.an-fc-soc a:hover[b-7xr63qzuwe],
.an-fc-soc a:focus-visible[b-7xr63qzuwe] {
    background: var(--an-accent);
    transform: translateY(-2px);
}

.an-fc-soc svg[b-7xr63qzuwe] {
    width: 16px;
    height: 16px;
    fill: #fff;
}

/* Instagram est le seul glyphe tracé au filet plutôt qu'en aplat. */
.an-fc-soc .an-fc-icon-outline[b-7xr63qzuwe] {
    stroke: #fff;
}

.an-fc-soc a:hover svg[b-7xr63qzuwe],
.an-fc-soc a:focus-visible svg[b-7xr63qzuwe] {
    fill: var(--an-primary);
}

.an-fc-soc a:hover .an-fc-icon-outline[b-7xr63qzuwe],
.an-fc-soc a:focus-visible .an-fc-icon-outline[b-7xr63qzuwe] {
    stroke: var(--an-primary);
}

@media (prefers-reduced-motion: reduce) {
    .an-fc-soc a[b-7xr63qzuwe] {
        transition: none;
    }

    .an-fc-soc a:hover[b-7xr63qzuwe],
    .an-fc-soc a:focus-visible[b-7xr63qzuwe] {
        transform: none;
    }
}

@media (max-width: 767.98px) {
    .an-fc-row[b-7xr63qzuwe] {
        align-items: flex-start;
        gap: 1rem;
    }

    /* Le bandeau d'accréditations prend sa propre rangée : c'est la seule largeur contre laquelle
       son `max-width` puisse se résoudre franchement, et il s'y affiche entier plutôt que rogné
       par ce qui l'accompagnait sur la ligne. */
    .an-fc-acc[b-7xr63qzuwe] {
        flex: 1 1 100%;
        justify-content: flex-start;
    }

    .an-fc-adr[b-7xr63qzuwe] {
        gap: .35rem 1.2rem;
    }
}

@media (max-width: 575.98px) {
    /* Lettrage décoratif (aria-hidden) : en `nowrap`, il dépasse toujours la largeur d'un téléphone
       et le pied de page le coupe en pleine lettre. Mieux vaut ne pas l'afficher que le tronquer. */
    .an-footer-word[b-7xr63qzuwe] {
        display: none;
    }

    .an-fc-left[b-7xr63qzuwe] {
        gap: .8rem;
    }

    .an-fc-nav[b-7xr63qzuwe] {
        gap: .6rem 1rem;
    }

    .an-fc-row[b-7xr63qzuwe] {
        padding: 1rem 0;
    }
}
/* /Components/Layout/SiteHeader.razor.rz.scp.css */
.an-header[b-luxwro3kbn] {
    background: var(--an-primary);
    color: #fff;
    position: sticky;
    top: 0;
    z-index: 1030;

    /* Le fichier de logo embarque une marge transparente : le tracé démarre en retrait du bord de
       l'image. On la compense pour que le logo tombe sur la même verticale que le titre de la page
       et que le badge d'environnement. Une seule valeur à ajuster si le fichier est ré-exporté. */
    --an-logo-inset: 8px;
}

.an-header-inner[b-luxwro3kbn] {
    display: flex;
    align-items: center;
    gap: 2.75rem;
    padding-top: 1.15rem;
    padding-bottom: 1.15rem;
}

.an-logo[b-luxwro3kbn] {
    display: inline-flex;
    align-items: center;
    flex: none;
    margin-inline-start: calc(var(--an-logo-inset, 0px) * -1);
}

.an-logo img[b-luxwro3kbn] {
    height: 52px;
    width: auto;
    display: block;
}

.an-nav[b-luxwro3kbn] {
    display: flex;
    align-items: center;
    gap: 2rem;
}

/* Hauteur de boîte fixée en dur, et non déduite du texte.
   Tant que la hauteur dépendait du contenu — même avec `line-height: 1` —, elle restait à la merci
   des métriques de la police : le É accentué de « Les écoles » ne tombait pas au même endroit que
   les capitales de « Mon profil », et les deux filets dorés se décalaient. Avec une hauteur
   explicite et un centrage vertical, les deux entrées occupent exactement la même boîte, quel que
   soit leur texte ou la langue affichée. Une seule valeur à ajuster. */
.an-nav-link[b-luxwro3kbn] {
    display: inline-flex;
    align-items: center;
    flex: none;
    height: 2.1rem;
    color: rgba(255, 255, 255, .8);
    text-decoration: none;
    font-size: .75rem;
    line-height: 1;
    letter-spacing: .15em;
    text-transform: uppercase;
    padding: 0;
    border-bottom: 2px solid transparent;
    white-space: nowrap;
    box-sizing: content-box;
}

.an-nav-link:hover[b-luxwro3kbn],
.an-nav-link:focus-visible[b-luxwro3kbn] {
    color: #fff;
    border-bottom-color: var(--an-accent);
}

/* Page courante : le filet reste affiché, il ne dépend plus du survol. */
.an-nav-link.is-active[b-luxwro3kbn] {
    color: #fff;
    border-bottom-color: var(--an-accent);
}

/* Calé en bas et non au centre : connecté, le bouton porte le compte au-dessus de lui, et le
   sélecteur de langue doit rester aligné sur le bouton, pas sur le milieu de la colonne. */
.an-header-act[b-luxwro3kbn] {
    margin-left: auto;
    display: flex;
    align-items: flex-end;
    gap: 1.35rem;
}

/* Compte connecté : libellé, adresse à la ligne, puis le bouton de déconnexion. Un seul bloc aux
   bords alignés — le bouton prend la largeur de l'adresse, ou l'adresse s'aligne sur le bouton,
   selon lequel est le plus large. */
.an-account[b-luxwro3kbn] {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: .4rem;
    min-width: 0;
    max-width: 22rem;
}

.an-account .an-auth[b-luxwro3kbn] {
    justify-content: center;
}

.an-account-id[b-luxwro3kbn] {
    margin: 0;
    min-width: 0;
    color: rgba(255, 255, 255, .8);
    font-size: .72rem;
    line-height: 1.3;
}

/* L'adresse n'a pas de longueur bornée : elle se tronque plutôt que d'élargir le bloc au point de
   repousser la navigation. Le title de la balise la rend en entier au survol. */
.an-account-id span[b-luxwro3kbn],
.an-account-id strong[b-luxwro3kbn] {
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.an-account-id strong[b-luxwro3kbn] {
    color: #fff;
    font-weight: 600;
}

.an-auth[b-luxwro3kbn] {
    display: inline-flex;
    align-items: center;
    gap: .55rem;
    background: transparent;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .34);
    padding: .6rem 1rem;
    font-size: .72rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    cursor: pointer;
    white-space: nowrap;
}

.an-auth:hover[b-luxwro3kbn],
.an-auth:focus-visible[b-luxwro3kbn] {
    border-color: var(--an-accent);
    color: var(--an-accent);
}

.an-auth-icon[b-luxwro3kbn] {
    width: 15px;
    height: 15px;
    flex: none;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* Reprise du dossier : même action et même jaune que le bouton du suivi de dossier, posé dans la
   barre de navigation. Il porte l'accent, les autres entrées restent en texte.
   Déclaré avant les paliers responsives : une requête média n'ajoute pas de spécificité, seul
   l'ordre départage — placé après, il reprenait sa hauteur de bureau sur téléphone.

   ::deep est OBLIGATOIRE depuis que le bouton est rendu par ApplicationCta et non plus ici :
   l'isolation CSS n'appose l'attribut de portée que sur le balisage de CE composant, donc une
   règle nue ne l'atteindrait plus — pastille dorée devenue bouton gris de navigateur.
   La remise à zéro (bordure, police, curseur) vient de ce que c'est désormais un <button> et
   non plus un <a> : le navigateur lui impose sinon sa propre police et son propre cadre. */
/* Le libellé n'est plus de longueur fixe. « Reprendre ma candidature » tenait toujours ; « Dossier
   accepté en liste complémentaire — Voir le suivi » ne tient pas, et le nom de l'état vient de la
   base : sa longueur n'est pas bornée par le code. D'où inline-block plutôt qu'inline-flex — seul
   un bloc sait poser des points de suspension — et un bouton qui accepte de rétrécir plutôt que de
   déborder d'un bandeau dont le body interdit le défilement horizontal (app.css, overflow-x: clip).
   Le centrage vertical passe par line-height, le bouton n'ayant qu'un enfant textuel. */
.an-nav[b-luxwro3kbn]  .an-nav-cta {
    display: inline-block;
    flex: 0 1 auto;
    min-width: 0;
    max-width: 100%;
    height: 2.1rem;
    padding: 0 .85rem;
    background: var(--an-accent);
    color: var(--an-on-accent);
    border: 0;
    text-decoration: none;
    font-family: inherit;
    font-size: .75rem;
    font-weight: 700;
    line-height: 2.1rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
}

.an-nav[b-luxwro3kbn]  .an-nav-cta:hover:not(:disabled),
.an-nav[b-luxwro3kbn]  .an-nav-cta:focus-visible:not(:disabled) {
    filter: brightness(1.08);
    color: var(--an-on-accent);
}

.an-nav[b-luxwro3kbn]  .an-nav-cta:disabled {
    opacity: .5;
    cursor: not-allowed;
}

@media (max-width: 991.98px) {
    .an-header-inner[b-luxwro3kbn] {
        gap: 1.25rem;
        flex-wrap: wrap;
    }

    .an-logo img[b-luxwro3kbn] {
        height: 40px;
    }

    /* La barre passe sous le logo — et doit pouvoir s'y replier. Sans `wrap`, ses entrées, toutes
       en `flex: none` et `white-space: nowrap`, additionnaient leur largeur : « Reprendre ma
       candidature » sortait de l'écran, et `overflow-x: clip` posé sur le body la tranchait au bord
       sans laisser de quoi faire défiler. Toute la page paraissait alors plus large que l'écran. */
    .an-nav[b-luxwro3kbn] {
        gap: .65rem 1.15rem;
        order: 3;
        width: 100%;
        flex-wrap: wrap;
    }

    /* Visiteur sans dossier, ou en-tête servi hors session : aucune entrée à afficher. La balise
       reste montée et prendrait quand même une rangée — l'écart du conteneur, puis rien. */
    .an-nav:empty[b-luxwro3kbn] {
        display: none;
    }

    .an-auth span[b-luxwro3kbn] {
        display: none;
    }

    .an-auth[b-luxwro3kbn] {
        padding: .55rem .7rem;
    }
}

/* Téléphone. Le repli suffit à contenir l'en-tête ; ce palier resserre ce qui reste à l'étroit. */
@media (max-width: 575.98px) {
    .an-header-inner[b-luxwro3kbn] {
        gap: .9rem;
        padding-top: .9rem;
        padding-bottom: .9rem;
    }

    .an-logo img[b-luxwro3kbn] {
        height: 34px;
    }

    .an-nav-link[b-luxwro3kbn] {
        font-size: .7rem;
        letter-spacing: .1em;
    }

    .an-header-act[b-luxwro3kbn] {
        gap: .75rem;
    }

    .an-account[b-luxwro3kbn] {
        max-width: 9.5rem;
    }

    .an-account-id[b-luxwro3kbn] {
        font-size: .68rem;
    }

}

@media (min-width: 576px) and (max-width: 991.98px) {
    .an-account[b-luxwro3kbn] {
        max-width: 14rem;
    }
}

@media (max-width: 990px) {
    .an-header-inner[b-luxwro3kbn] {
        gap: 1.25rem;
        flex-wrap: wrap;
    }

    .an-logo img[b-luxwro3kbn] {
        height: 40px;
    }

    .an-nav[b-luxwro3kbn] {
        gap: 1.15rem;
        order: 3;
        width: 100%;
        flex-wrap: wrap;
    }

    .an-auth span[b-luxwro3kbn] {
        display: none;
    }

    .an-auth[b-luxwro3kbn] {
        padding: .55rem .7rem;
    }
}

/* Les deux paliers du bouton d'action, sortis de leurs blocs d'origine et remis dans l'ordre du
   plus large au plus étroit. Ils étaient écrits dans l'ordre inverse : à sélecteurs de spécificité
   égale, seul l'ordre du fichier départage, et le palier 990 effaçait la pleine largeur promise au
   téléphone — la pastille y gardait ses 66 %. */
@media (max-width: 990px) {
    .an-nav[b-luxwro3kbn]  .an-nav-cta {
        order: 3;
        width: 66%;
        height: auto;
        min-height: 2.1rem;
        padding: .38rem .85rem;
        line-height: 1.35;
        text-align: center;
        white-space: normal;
        overflow: visible;
    }
}

/* Seul sur sa rangée une fois les entrées repliées, le bouton l'occupe entièrement : une cible
   tactile pleine largeur plutôt qu'un reliquat calé en bout de ligne. Et il s'y déplie sur deux
   lignes plutôt que de tronquer : en mode consultation, le libellé porte le NOM DE L'ÉTAT du
   dossier — « Candidature acceptée en liste complémentaire — Voir le suivi » —, la seule chose que
   le candidat vienne y lire. */
@media (max-width: 575.98px) {
    .an-nav[b-luxwro3kbn]  .an-nav-cta {
        width: 100%;
        height: auto;
        min-height: 2.5rem;
        padding: .55rem .85rem;
        line-height: 1.35;
        text-align: center;
        white-space: normal;
        overflow: visible;
    }
}
/* /Components/Loading.razor.rz.scp.css */
.loading-wrapper[b-n04ypzr3wg] {
    position: relative;
}

/* Le voile centre le loader par la mise en page. L'ancien translate(-50 %, -50 %) posait les filets et
   les lettres sur des demi-pixels, donc flous, et son left: 50 % ne laissait au message que la moitié
   de la largeur : sur téléphone, il passait sur deux lignes. */
.overlay[b-n04ypzr3wg] {
    position: fixed;
    inset: 0;
    z-index: 888;
    display: grid;
    place-items: center;
    padding: 24px;
    /* 80 % de blanc : à 60 %, le texte de la page restait assez net pour brouiller le tableau. */
    background-color: rgba(255, 255, 255, 0.8);
    pointer-events: all; /* Empêche les interactions */
}

.loader[b-n04ypzr3wg] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    max-width: 100%;
}

.loader__message[b-n04ypzr3wg] {
    margin: 0;
    font-size: .95rem;
    font-weight: 600;
    line-height: 1.35;
    letter-spacing: .005em;
    color: var(--an-primary);
    text-align: center;
}
/* /Components/Pages/Home.razor.rz.scp.css */

.card-position[b-kqsef0qleu] {
    position: relative;
    transform: translate(0, -12%);
}

@media (max-width: 912px) {
    .card-position[b-kqsef0qleu] {
        position: relative;
        margin-top: 15px;
        transform: translate(0, 0);
    }
}

/* Carte d'accueil : charte d'août 2026 (liseret doré, jetons --an-*, listes à liserets).
   Deux colonnes : le dossier à préparer à gauche, le parcours et les actions sur un panneau à droite. */
.home-card[b-kqsef0qleu] {
    position: relative;
    z-index: 10;
    display: grid;
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
    margin: 1.5rem auto;
    max-width: 1100px;
    background: #fff;
    border: 1px solid var(--an-line);
    border-radius: 12px;
    box-shadow: 0 12px 32px rgba(0, 0, 0, .08);
    overflow: hidden;
}

.home-card__rule[b-kqsef0qleu] {
    position: absolute;
    inset: 0 0 auto 0;
    z-index: 1;
    height: 4px;
    background: var(--an-accent);
    transform-origin: left;
    animation: home-rule-b-kqsef0qleu .6s ease-out both;
}

.home-card__main[b-kqsef0qleu] {
    padding: 2.5rem 2.5rem 2rem;
    min-width: 0;
    animation: home-fade-b-kqsef0qleu .5s .3s ease-out both;
}

.home-card__title[b-kqsef0qleu] {
    margin: 0 0 1.25rem;
    font-size: 1.5rem;
    font-weight: 700;
    text-wrap: balance;
    color: var(--an-primary);
}

.home-card__message[b-kqsef0qleu] {
    color: var(--an-primary);
    line-height: 1.6;
}

/* Les documents à préparer : liserets dorés de la charte, pas de case — une case invite à cocher
   une liste qui n'est qu'informative. */
.home-card__message[b-kqsef0qleu]  ul {
    list-style: none;
    padding-left: 0;
    margin: 1rem 0;
    display: grid;
    gap: .5rem;
}

.home-card__message[b-kqsef0qleu]  li {
    position: relative;
    padding-left: 1rem;
}

.home-card__message[b-kqsef0qleu]  li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .3em;
    bottom: .3em;
    width: 2px;
    background: var(--an-accent);
}

/* Sans dossier (visiteur anonyme ou compte sans vœu), le panneau n'a que le bouton : une colonne
   vide sur toute la hauteur de la carte. La carte passe alors sur une colonne, bouton sous la liste. */
.home-card--solo[b-kqsef0qleu] {
    grid-template-columns: minmax(0, 1fr);
    max-width: 760px;
}

.home-card--solo .home-card__main[b-kqsef0qleu] {
    padding-bottom: 0;
}

.home-card--solo .home-card__side[b-kqsef0qleu] {
    padding: 1.5rem 2.5rem 2.5rem;
    background: none;
    color: inherit;
}

.home-card--solo .home-card__actions[b-kqsef0qleu] {
    justify-items: start;
}

.home-card--solo .home-card__actions > button[b-kqsef0qleu],
.home-card--solo .home-card__actions[b-kqsef0qleu]  .btn {
    width: auto;
}

.home-card__admin-error[b-kqsef0qleu] {
    margin: 1rem 0 0;
    padding: 10px;
    border: 1px solid var(--an-danger);
    border-radius: 8px;
    background: color-mix(in srgb, var(--an-danger) 12%, #fff);
    font-weight: 600;
}

.home-card__side[b-kqsef0qleu] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    padding: 2.5rem 2rem 2rem;
    min-width: 0;
    background: var(--an-primary);
    color: #fff;
    animation: home-fade-b-kqsef0qleu .5s .45s ease-out both;
}

.home-recap__title[b-kqsef0qleu] {
    margin: 0 0 1rem;
    font-size: 1.1rem;
    font-weight: 700;
}

.home-recap[b-kqsef0qleu]  .recap-program {
    grid-template-columns: minmax(0, 1fr);
    gap: .9rem;
}

/* Défait les tuiles par défaut du composant : sur le panneau, une liste à filets. */
.home-recap[b-kqsef0qleu]  .recap-program__item {
    padding: 0 0 .7rem;
    background: none;
    border-left: 0;
    border-radius: 0;
    border-bottom: 1px solid color-mix(in srgb, #fff 18%, var(--an-primary));
}

.home-recap[b-kqsef0qleu]  dt {
    margin-bottom: 2px;
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: color-mix(in srgb, #fff 65%, var(--an-primary));
}

.home-recap[b-kqsef0qleu]  dd {
    color: #fff;
}

/* Boutons empilés en bas du panneau, pleine largeur. */
.home-card__actions[b-kqsef0qleu] {
    display: grid;
    gap: .6rem;
    margin-top: auto;
}

.home-card__actions > button[b-kqsef0qleu],
.home-card__actions[b-kqsef0qleu]  .btn {
    width: 100%;
    padding: .7rem 1.25rem;
}

@keyframes home-rule-b-kqsef0qleu {
    from { transform: scaleX(0); }
    to { transform: scaleX(1); }
}

@keyframes home-fade-b-kqsef0qleu {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: none; }
}

@media (max-width: 912px) {
    .home-card[b-kqsef0qleu] {
        grid-template-columns: minmax(0, 1fr);
    }

    .home-card__main[b-kqsef0qleu],
    .home-card__side[b-kqsef0qleu] {
        padding: 1.75rem 1rem 1.25rem;
    }

    .home-card__title[b-kqsef0qleu] {
        font-size: 1.25rem;
    }

    .home-card--solo .home-card__side[b-kqsef0qleu] {
        padding: 1.25rem 1rem 1.5rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .home-card__rule[b-kqsef0qleu],
    .home-card__main[b-kqsef0qleu],
    .home-card__side[b-kqsef0qleu] {
        animation: none;
    }
}
/* /Components/Pages/PublicCommentaries.razor.rz.scp.css */
.container[b-yilk9afxrg] {
    width: 100% ;
    overflow-y:auto;
}
.bloc[b-yilk9afxrg] {
    min-width : 180px
}
/* /Components/Pages/SchoolPresentation.razor.rz.scp.css */
/* ============================================================
   Présentation des écoles — galerie horizontale
   ============================================================

   Les couleurs viennent des jetons posés par BrandStyles. La seule teinte propre à la page est
   --sp-hue, écrite en ligne sur chaque panneau depuis School.ColorId : c'est la couleur de l'école,
   lue en base, et rien d'autre ne doit en dépendre.

   --sp-header-h est mesurée en JavaScript sur l'en-tête collant du site, pour que la barre de
   navigation vienne se coller dessous et non dessous lui. --sp-rail-h réserve, sous le texte, la
   place que la barre occupe quand elle flotte en bas de la fenêtre. */

.sp-page[b-zjxvklki05] {
    --sp-rail-h: 3.25rem;
    padding: 1.75rem 0 3rem;
}

.sp-head[b-zjxvklki05] {
    margin-bottom: 1.4rem;
}

.sp-rule[b-zjxvklki05] {
    display: block;
    width: 38px;
    height: 3px;
    background: var(--an-accent);
}

.sp-rule--light[b-zjxvklki05] {
    background: rgba(255, 255, 255, .9);
}

.sp-title[b-zjxvklki05] {
    font-size: clamp(1.6rem, 2.8vw, 2.15rem);
    line-height: 1.14;
    letter-spacing: -.015em;
    font-weight: 600;
    margin: .7rem 0 0;
    max-width: 30ch;
    text-wrap: balance;
    color: var(--an-primary);
}

/* --- galerie --- */

.sp-gallery[b-zjxvklki05] {
    border: 1px solid var(--an-line);
    background: #fff;
}

/* Premier enfant du conteneur, donc sa place dans le flux ne bouge jamais : basculer entre le haut
   et le bas ne déplace aucun contenu, seul le point d'accroche change. */
.sp-rail[b-zjxvklki05] {
    position: sticky;
    top: var(--sp-header-h, 0px);
    z-index: 3;

    display: flex;
    align-items: center;
    gap: .8rem;
    flex-wrap: wrap;

    padding: .6rem 1rem;
    background: var(--an-bg-light);
    border-bottom: 1px solid var(--an-line);
}

/* En bas de galerie : la barre se cale sur le bas de la fenêtre, puis vient au repos sur le bord
   inférieur du conteneur — elle ne peut pas descendre plus bas que lui. */
.sp-gallery--nav-bottom .sp-rail[b-zjxvklki05] {
    top: auto;
    bottom: 0;
    border-bottom: 0;
    border-top: 1px solid var(--an-line);
}

.sp-arrow[b-zjxvklki05] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: 1px solid var(--an-line);
    background: #fff;
    color: var(--an-primary);
    cursor: pointer;
}

.sp-arrow:disabled[b-zjxvklki05] {
    opacity: .35;
    cursor: default;
}

.sp-progress[b-zjxvklki05] {
    flex: 1 1 120px;
    min-width: 80px;
    height: 3px;
    background: var(--an-line);
    position: relative;
}

.sp-progress-thumb[b-zjxvklki05] {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    background: var(--an-primary);
    transition: left .2s ease;
}

.sp-position[b-zjxvklki05] {
    font-size: .78rem;
    color: var(--an-muted);
    font-variant-numeric: tabular-nums;
}

.sp-jump[b-zjxvklki05] {
    display: flex;
    gap: .25rem;
    flex-wrap: wrap;
}

.sp-jump-link[b-zjxvklki05] {
    font-size: .82rem;
    font-weight: 600;
    text-decoration: none;
    padding: .25rem .65rem;
    border: 1px solid var(--an-line);
    background: #fff;
    color: var(--an-muted);
}

.sp-jump-link:hover[b-zjxvklki05] {
    color: var(--an-primary);
}

.sp-jump-link.is-current[b-zjxvklki05] {
    background: var(--an-primary);
    border-color: var(--an-primary);
    color: #fff;
}

/* --- piste --- */

.sp-track[b-zjxvklki05] {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
}

/* Barre de défilement masquée : le rail tient déjà ce rôle, et une barre horizontale sous un
   panneau haut de plusieurs écrans n'est jamais à portée du regard. */
.sp-track[b-zjxvklki05] {
    scrollbar-width: none;
}

.sp-track[b-zjxvklki05]::-webkit-scrollbar {
    display: none;
}

.sp-panel[b-zjxvklki05] {
    flex: 0 0 100%;
    scroll-snap-align: start;
    display: grid;
    grid-template-columns: 320px minmax(0, 1fr);
    background: #fff;
}

/* --- colonne de marque --- */

.sp-brand[b-zjxvklki05] {
    background: var(--sp-hue);
    padding: 2rem 1.8rem 2.2rem;
    display: grid;
    gap: 1.2rem;
    align-content: start;
}

/* Les logos sont polychromes : posés à même la couleur de l'école, ils s'éteignent. La plaque
   blanche leur rend le fond pour lequel ils ont été dessinés. */
.sp-plate[b-zjxvklki05] {
    background: #fff;
    padding: 1rem 1.1rem;
    display: grid;
    place-items: center;
    min-height: 96px;
}

.sp-logo[b-zjxvklki05] {
    display: block;
    max-width: 100%;
    max-height: 74px;
}

.sp-logo-missing[b-zjxvklki05] {
    font-size: .95rem;
    font-weight: 600;
    color: var(--an-muted);
    text-align: center;
}

.sp-name[b-zjxvklki05] {
    font-size: 1.35rem;
    line-height: 1.15;
    font-weight: 600;
    letter-spacing: -.015em;
    color: #fff;
    margin: 0;
}

.sp-caps[b-zjxvklki05] {
    font-size: .68rem;
    letter-spacing: .17em;
    text-transform: uppercase;
    margin: 0 0 .55rem;
}

.sp-brand .sp-caps[b-zjxvklki05] {
    color: rgba(255, 255, 255, .78);
}

.sp-campus ul[b-zjxvklki05] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}

.sp-campus li[b-zjxvklki05] {
    font-size: .78rem;
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .5);
    padding: .18rem .5rem;
    white-space: nowrap;
}

/* --- colonne de texte --- */

.sp-body[b-zjxvklki05] {
    padding: 2rem 2.1rem calc(2rem + var(--sp-rail-h));
}

.sp-body .sp-caps[b-zjxvklki05] {
    color: var(--an-muted);
}

/* La présentation arrive en MarkupString : le HTML de la traduction n'est pas marqué par
   l'isolation CSS, il faut donc ::deep pour l'atteindre. */
/* Texte justifié, avec césure : sur une colonne de 66 caractères, une justification sans césure
   ouvre des rivières blanches entre les mots. La langue est portée par l'attribut lang du bloc,
   sans quoi le navigateur couperait du français avec des règles anglaises. */
.sp-prose[b-zjxvklki05]  p {
    margin: 0 0 1.15rem;
    max-width: 66ch;
    font-size: .94rem;
    line-height: 1.78;
    color: var(--an-muted);
    text-align: justify;
    -webkit-hyphens: auto;
    hyphens: auto;
    overflow-wrap: break-word;
}

.sp-prose[b-zjxvklki05]  h3,
.sp-prose[b-zjxvklki05]  h4 {
    margin: 1.9rem 0 .7rem;
    font-size: .95rem;
    font-weight: 700;
    color: var(--an-primary);
    text-wrap: balance;
}

.sp-prose[b-zjxvklki05]  h3:first-child,
.sp-prose[b-zjxvklki05]  h4:first-child {
    margin-top: 0;
}

.sp-prose[b-zjxvklki05]  ul,
.sp-prose[b-zjxvklki05]  ol {
    margin: 0 0 1.15rem;
    padding-left: 1.2rem;
    max-width: 66ch;
    font-size: .94rem;
    line-height: 1.78;
    color: var(--an-muted);
}

.sp-prose[b-zjxvklki05]  a {
    color: var(--an-primary);
}

.sp-prose[b-zjxvklki05]  p:last-child {
    margin-bottom: 0;
}

/* --- empilement --- */

@media (max-width: 900px) {
    .sp-panel[b-zjxvklki05] {
        grid-template-columns: 1fr;
    }

    .sp-body[b-zjxvklki05] {
        padding: 1.6rem 1.4rem calc(1.6rem + var(--sp-rail-h));
    }

    .sp-brand[b-zjxvklki05] {
        padding: 1.6rem 1.4rem 1.8rem;
    }
}
/* /Components/Profile/ApplicationCompleteNotice.razor.rz.scp.css */
/* Candidature complète : une tuile seule, dans la charte des pages du front — filet d'accent en tête,
   titre, puis le bouton du récapitulatif. Couleurs par les jetons de BrandStyles, jamais en dur. */

.acn[b-v4ror3osel] {
    max-width: 36rem;
    margin: 3rem auto;
    padding: 1.75rem 1.5rem 1.5rem;
    border: 1px solid var(--an-line);
    background: var(--an-bg-light);
    text-align: center;
}

.acn__rule[b-v4ror3osel] {
    display: block;
    width: 3rem;
    height: 2px;
    margin: 0 auto 1.1rem;
    background: var(--an-accent);
    transform-origin: center;
    animation: acn-rule-draw-b-v4ror3osel .5s ease-out both;
}

.acn__title[b-v4ror3osel] {
    margin: 0 0 1.25rem;
    font-size: 1.35rem;
    font-weight: 600;
    letter-spacing: -.008em;
    color: var(--an-primary);
    animation: acn-fade-in-b-v4ror3osel .4s ease-out .2s both;
}

.acn__btn[b-v4ror3osel] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font: inherit;
    font-size: .85rem;
    font-weight: 600;
    padding: .55rem 1rem;
    background: var(--an-accent);
    color: var(--an-on-accent);
    border: 1px solid transparent;
    cursor: pointer;
    animation: acn-fade-in-b-v4ror3osel .4s ease-out .3s both;
}

.acn__btn:hover[b-v4ror3osel],
.acn__btn:focus-visible[b-v4ror3osel] {
    filter: brightness(1.08);
}

@keyframes acn-rule-draw-b-v4ror3osel {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
}

@keyframes acn-fade-in-b-v4ror3osel {
    from { opacity: 0; }
    to   { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .acn__rule[b-v4ror3osel],
    .acn__title[b-v4ror3osel],
    .acn__btn[b-v4ror3osel] {
        animation: none;
    }
}
/* /Components/Profile/ApplicationCta.razor.rz.scp.css */
/* Squelette du bouton d'action, pendant que l'hôte lit le dossier.

   C'est la SEULE règle que ce composant possède en propre : le bouton lui-même porte la classe de
   son hôte — pastille de l'en-tête, bouton de tuile, bouton de carte — et c'est l'hôte qui l'habille
   par ::deep. Le squelette, lui, doit se ressembler d'un écran à l'autre : c'est le même temps
   d'attente, il n'a pas à changer de forme selon l'endroit.

   Reprend la convention déjà posée par les pièces justificatives (Documents.razor.css) : un dégradé
   qui balaie, même durée, même amplitude. Une troisième variante d'attente dans la même application
   se lirait comme un défaut d'affichage plutôt que comme un chargement. */

.an-cta-skel[b-jzk9jlpudb] {
    display: inline-block;
    width: 11rem;
    max-width: 100%;
    height: 2.1rem;
    border-radius: 3px;
    background: linear-gradient(90deg, var(--an-line, #e3e8ef), var(--an-bg-light, #f6f8fb), var(--an-line, #e3e8ef));
    background-size: 200% 100%;
    animation: an-cta-shimmer-b-jzk9jlpudb 1.4s linear infinite;
    vertical-align: middle;
}

@keyframes an-cta-shimmer-b-jzk9jlpudb {
    from { background-position: 200% 0; }
    to   { background-position: -200% 0; }
}

/* Le mouvement n'apporte rien à qui le refuse, et peut gêner. La forme reste — c'est elle qui
   réserve la place et évite que la page ne saute quand le bouton arrive. */
@media (prefers-reduced-motion: reduce) {
    .an-cta-skel[b-jzk9jlpudb] {
        animation: none;
    }
}
/* /Components/Profile/ProfileShell.razor.rz.scp.css */
/* ============================================================
   Profil candidat
   ------------------------------------------------------------
   Feuille unique de la page : les composants enfants (barre d'étapes, progression, informations
   personnelles, onglets) n'embarquent pas de style. Ils sont habillés d'ici via ::deep, qui se
   compile en « descendant d'un élément portant la portée de Profile.razor ». La racine .pf porte
   cette portée, donc toute la page — y compris le rendu des composants enfants — est couverte.
   Seule exception : l'aperçu d'un document, composant de la bibliothèque partagée avec le
   back-office, qui porte sa propre feuille.

   Les couleurs viennent de BrandStyles (jetons --an-*), aucune n'est écrite en dur : la page suit
   la charte Accès comme celle d'Apply sans code conditionnel.
   ============================================================ */
.pf[b-079pgun7bc] {
    padding: 1.5rem 0 3rem;
    color: var(--an-primary);
}

/* --- en-tête de page --- */
[b-079pgun7bc] .pf-head {
    display: flex;
    align-items: flex-end;
    gap: 1.5rem;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-eyebrow {
    font-size: .68rem;
    letter-spacing: .18em;
    text-transform: uppercase;
    color: var(--an-accent);
    margin: 0;
}

[b-079pgun7bc] .pf-title {
    font-size: clamp(1.5rem, 2.6vw, 1.95rem);
    line-height: 1.12;
    letter-spacing: -.015em;
    font-weight: 600;
    margin: .45rem 0 0;
}

[b-079pgun7bc] .pf-id {
    margin: 0 0 0 auto;
    text-align: right;
    font-size: .66rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-id b {
    display: block;
    font-size: .95rem;
    letter-spacing: 0;
    text-transform: none;
    color: var(--an-primary);
    margin-top: .2rem;
}

/* ============================================================
   Barre des étapes
   Une carte par étape, autant de boutons que d'années ouvertes sur cette étape. Les réinscriptions
   en comptent une par année passée à l'école : la rangée passe à la ligne plutôt que de déborder.
   ============================================================ */
[b-079pgun7bc] .pf-stepbar {
    display: flex;
    gap: .6rem;
    margin-top: 1.35rem;
    flex-wrap: wrap;
    align-items: stretch;
}

[b-079pgun7bc] .pf-stepcard {
    flex: 1 1 0;
    min-width: 11rem;
    border: 1px solid var(--an-line);
    border-top: 3px solid var(--an-line);
    background: #fff;
    padding: .75rem .8rem .8rem;
    display: flex;
    flex-direction: column;
}

[b-079pgun7bc] .pf-stepcard > b {
    display: block;
    font-size: .95rem;
    font-weight: 600;
    line-height: 1.25;
    text-align: center;
}

[b-079pgun7bc] .pf-stepcard > em {
    display: block;
    font-style: normal;
    font-size: .72rem;
    color: var(--an-muted);
    margin-top: auto;
    padding-top: .55rem;
    text-align: center;
}

[b-079pgun7bc] .pf-stepcard.is-current {
    border-top-color: var(--an-accent);
    background: var(--an-bg-light);
}

[b-079pgun7bc] .pf-stepcard.is-current > em {
    color: var(--an-primary);
    font-weight: 600;
}

[b-079pgun7bc] .pf-stepcard.is-done { border-top-color: var(--an-success); }

[b-079pgun7bc] .pf-yearpicks {
    display: flex;
    gap: .3rem;
    flex-wrap: wrap;
    justify-content: center;
    margin-top: .6rem;
}

[b-079pgun7bc] .pf-yr {
    font: inherit;
    font-size: .68rem;
    letter-spacing: .1em;
    padding: .3rem .6rem;
    border: 1px solid var(--an-line);
    background: #fff;
    color: var(--an-muted);
    cursor: pointer;
    white-space: nowrap;
    line-height: 1;
}

[b-079pgun7bc] .pf-yr:hover,
[b-079pgun7bc] .pf-yr:focus-visible {
    border-color: var(--an-accent);
    color: var(--an-primary);
}

[b-079pgun7bc] .pf-yr.is-on {
    background: var(--an-primary);
    border-color: var(--an-primary);
    color: #fff;
}

[b-079pgun7bc] .pf-yr.is-done {
    border-color: color-mix(in srgb, var(--an-success) 55%, #fff);
    color: color-mix(in srgb, var(--an-success) 80%, var(--an-primary));
}

/* ============================================================
   Rail des candidatures

   Une candidature = un dossier. Le candidat en a plusieurs dès qu'il en a retiré une puis
   recommencé. Le rail les liste À LA VERTICALE, sur le côté, et le contenu occupe la droite :
   la barre des étapes, elle, se lit à l'horizontale. Deux axes, deux directions — empilés en
   deux rangées de cartes, les deux sélecteurs se confondaient alors qu'ils ne disent pas la
   même chose. Le rail ne bouge pas quand on change de dossier : rien ne saute.
   ============================================================ */
[b-079pgun7bc] .pf-appsplit {
    display: grid;
    grid-template-columns: 14rem minmax(0, 1fr);
    gap: 1.1rem;
    align-items: start;
    margin-top: 1.35rem;
}

/* Un seul dossier : le rail n'a rien à dire, le contenu prend toute la largeur. */
[b-079pgun7bc] .pf-appsplit--solo { grid-template-columns: minmax(0, 1fr); }

[b-079pgun7bc] .pf-appmain { min-width: 0; }

[b-079pgun7bc] .pf-apprail {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--an-line);
    background: #fff;
    position: sticky;
    top: 1rem;
}

[b-079pgun7bc] .pf-apprail__head {
    margin: 0;
    padding: .6rem .8rem;
    border-bottom: 1px solid var(--an-line);
    font-size: .6rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-appitem {
    font: inherit;
    text-align: left;
    background: none;
    border: 0;
    border-left: 3px solid transparent;
    border-bottom: 1px solid var(--an-line);
    padding: .65rem .8rem;
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: .25rem;
    color: var(--an-primary);
}

[b-079pgun7bc] .pf-appitem:last-child { border-bottom: 0; }

[b-079pgun7bc] .pf-appitem > b {
    font-size: .85rem;
    font-weight: 600;
    line-height: 1.2;
}

[b-079pgun7bc] .pf-appitem > span {
    font-size: .7rem;
    line-height: 1.35;
    color: var(--an-muted);
    overflow-wrap: anywhere;
}

[b-079pgun7bc] .pf-appitem:hover,
[b-079pgun7bc] .pf-appitem:focus-visible {
    background: var(--an-bg-light);
}

/* La feuille ne signale ailleurs le focus que par un changement de bordure : invisible ici,
   puisque la ligne n'en a pas. */
[b-079pgun7bc] .pf-appitem:focus-visible {
    outline: 2px solid var(--an-accent);
    outline-offset: -2px;
}

[b-079pgun7bc] .pf-appitem.is-current {
    border-left-color: var(--an-accent);
    background: var(--an-bg-light);
}

/* Candidature retirée : lisible, mais visiblement éteinte. */
[b-079pgun7bc] .pf-appitem.is-off > b { color: var(--an-muted); }

[b-079pgun7bc] .pf-appitem.is-off > span {
    color: color-mix(in srgb, var(--an-danger) 65%, var(--an-primary));
}

[b-079pgun7bc] .pf-appitem[aria-disabled="true"] { cursor: default; }

/* Sous 768px le rail repasse au-dessus du contenu, à plat. */
@media (max-width: 767.98px) {
    [b-079pgun7bc] .pf-appsplit { grid-template-columns: minmax(0, 1fr); }
    [b-079pgun7bc] .pf-apprail { position: static; }
}

/* ============================================================
   Bandes et tuiles
   ============================================================ */
[b-079pgun7bc] .pf-band { margin-top: 1.8rem; }

[b-079pgun7bc] .pf-band-head {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    margin-bottom: .7rem;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-band-head h2 {
    font-size: 1.15rem;
    font-weight: 600;
    margin: 0;
    letter-spacing: -.008em;
}

[b-079pgun7bc] .pf-band-head span {
    font-size: .68rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--an-muted);
    margin-left: auto;
}

[b-079pgun7bc] .pf-dash {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .7rem;
}

[b-079pgun7bc] .pf-tile {
    position: relative;
    border: 1px solid var(--an-line);
    background: #fff;
    padding: 1rem 1.1rem;
}

[b-079pgun7bc] .pf-tile--wide { grid-column: span 3; }
[b-079pgun7bc] .pf-tile--two  { grid-column: span 2; }

/* Les deux adresses — actuelle et permanente — côte à côte plutôt qu'empilées : elles se comparent
   d'un coup d'œil, et la tuile prend la largeur des informations personnelles. */
[b-079pgun7bc] .pf-addresses {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .8rem 1.6rem;
}

[b-079pgun7bc] .pf-address { min-width: 0; }

[b-079pgun7bc] .pf-tile__rule {
    display: block;
    width: 34px;
    height: 3px;
    background: var(--an-accent);
    margin-bottom: .6rem;
}

[b-079pgun7bc] .pf-tile h3 {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 .55rem;
    letter-spacing: -.008em;
}

[b-079pgun7bc] .pf-tile p { margin: 0; font-size: .85rem; line-height: 1.6; }
[b-079pgun7bc] .pf-muted { color: var(--an-muted); }

[b-079pgun7bc] .pf-sub {
    font-size: .6rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--an-muted);
    margin: 0 0 .3rem;
}

/* --- boutons --- */
[b-079pgun7bc] .pf-btn {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font: inherit;
    font-size: .8rem;
    font-weight: 600;
    padding: .5rem .9rem;
    background: var(--an-accent);
    color: var(--an-on-accent);
    border: 1px solid transparent;
    white-space: nowrap;
    cursor: pointer;
}

[b-079pgun7bc] .pf-btn:hover:not(:disabled),
[b-079pgun7bc] .pf-btn:focus-visible:not(:disabled) { filter: brightness(1.08); }

[b-079pgun7bc] .pf-btn:disabled { opacity: .5; cursor: not-allowed; }

[b-079pgun7bc] .pf-btn--ghost {
    background: transparent;
    color: inherit;
    border-color: var(--an-line);
}

[b-079pgun7bc] .pf-btn--ghost:hover:not(:disabled),
[b-079pgun7bc] .pf-btn--ghost:focus-visible:not(:disabled) {
    filter: none;
    border-color: var(--an-accent);
}

[b-079pgun7bc] .pf-btn--sm { padding: .35rem .65rem; font-size: .74rem; }

/* Action destructrice (renoncer à sa candidature) : contour seul au repos, plein au survol. Une
   action irréversible n'a pas à se donner le même poids visuel que celle qu'on attend du candidat. */
[b-079pgun7bc] .pf-btn--danger {
    background: transparent;
    color: var(--an-danger);
    border-color: var(--an-danger);
}

[b-079pgun7bc] .pf-btn--danger:hover:not(:disabled),
[b-079pgun7bc] .pf-btn--danger:focus-visible:not(:disabled) {
    filter: none;
    background: var(--an-danger);
    color: #fff;
}

/* Barre d'action de bas de page (reprise de candidature). */
[b-079pgun7bc] .pf-actions {
    display: flex;
    justify-content: center;
    gap: .75rem;
    margin-top: 2rem;
    flex-wrap: wrap;
}

/* En-tête de tuile : titre à gauche, bouton Modifier à droite. */
[b-079pgun7bc] .pf-tile__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-tile__head h3 { margin: 0; }

/* Formulaire d'édition d'une tuile de profil.

   Le pas est large — 15rem — et non 190 px : à 190 px la grille produisait six colonnes de champs
   trop étroits pour leur libellé sur un écran de bureau. */
[b-079pgun7bc] .pf-form {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: .85rem 1.1rem;
    margin-top: .5rem;
    align-items: end;
}

/* L'adresse de connexion est plus longue que les autres valeurs : elle prend deux colonnes plutôt
   que d'être coupée — mais seulement là où la grille en compte au moins deux. Déclaré sans garde,
   « span 2 » crée une colonne implicite hors écran dès que le formulaire se replie sur une colonne. */
[b-079pgun7bc] .pf-form__span2 { grid-column: span 1; }

@media (min-width: 1200px) {
    [b-079pgun7bc] .pf-form__span2 { grid-column: span 2; }
}

[b-079pgun7bc] .pf-form label {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    font-size: .78rem;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-form input,
[b-079pgun7bc] .pf-form select {
    padding: .45rem .6rem;
    border: 1px solid var(--an-line);
    border-radius: 8px;
    background: #fff;
    font-size: .88rem;
    color: var(--an-primary);
}

[b-079pgun7bc] .pf-form input:focus,
[b-079pgun7bc] .pf-form select:focus {
    outline: none;
    border-color: var(--an-accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--an-accent) 22%, transparent);
}

[b-079pgun7bc] .pf-form input:disabled {
    background: var(--an-bg-light);
    color: var(--an-muted);
    cursor: not-allowed;
}

[b-079pgun7bc] .pf-edit-actions {
    display: flex;
    justify-content: flex-end;
    gap: .5rem;
    margin-top: 1rem;
}

/* Mention accompagnant un champ volontairement non modifiable. */
[b-079pgun7bc] .pf-locked-note {
    display: flex;
    align-items: baseline;
    gap: .4rem;
    margin: .35rem 0 0;
    font-size: .78rem;
    line-height: 1.4;
}

/* --- listes de définitions --- */
[b-079pgun7bc] .pf-dl {
    margin: 0;
    font-size: .85rem;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .3rem .9rem;
}

[b-079pgun7bc] .pf-dl dt {
    font-size: .6rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--an-muted);
    padding-top: .15rem;
}

[b-079pgun7bc] .pf-dl dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }

/* ============================================================
   Progression — « Où en est mon dossier »
   ============================================================ */
[b-079pgun7bc] .pf-tl {
    display: flex;
    align-items: flex-start;
    margin-top: .25rem;
    flex-wrap: wrap;
    row-gap: 1rem;
}

[b-079pgun7bc] .pf-tl-step {
    flex: 1 1 8rem;
    position: relative;
    padding: 1.1rem .6rem 0 0;
    font-size: .75rem;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-tl-step::before {
    content: "";
    position: absolute;
    top: .28rem;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--an-line);
}

[b-079pgun7bc] .pf-tl-step::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--an-line);
}

[b-079pgun7bc] .pf-tl-step.is-done::before,
[b-079pgun7bc] .pf-tl-step.is-done::after {
    background: var(--an-success);
    border-color: var(--an-success);
}

[b-079pgun7bc] .pf-tl-step.is-now::before,
[b-079pgun7bc] .pf-tl-step.is-now::after {
    background: var(--an-accent);
    border-color: var(--an-accent);
}

[b-079pgun7bc] .pf-tl-step b {
    display: block;
    color: var(--an-primary);
    font-size: .8rem;
    font-weight: 600;
}

/* ============================================================
   Informations personnelles
   ============================================================ */
[b-079pgun7bc] .pf-idcard {
    display: grid;
    grid-template-columns: 9rem minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
    gap: 1.2rem;
    align-items: start;
}

/* En édition, un seul enfant occupe les trois colonnes de droite. Sans cela le formulaire tombait
   dans la deuxième colonne et la note, puis les boutons, dans les deux suivantes : d'où la colonne
   de champs étroite et les actions échouées en haut à droite. */
[b-079pgun7bc] .pf-idcard__edit { grid-column: 2 / -1; }

[b-079pgun7bc] .pf-avatar-col {
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

[b-079pgun7bc] .pf-avatar {
    width: 100%;
    min-height: 11rem;
    background: var(--an-bg-light);
    border: 1px solid var(--an-line);
    display: grid;
    place-items: center;
    font-size: .6rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--an-muted);
    text-align: center;
    padding: .35rem;
    overflow: hidden;
}

[b-079pgun7bc] .pf-avatar img { width: 100%; height: auto; display: block; }

/* Dépôt de la photo d'identité.
   Le champ de fichier natif est illisible et impossible à habiller : il est étendu, transparent,
   par-dessus l'étiquette qui, elle, porte le style du bouton. Le clic atteint donc bien le champ. */
[b-079pgun7bc] .pf-photo-btn {
    position: relative;
    display: block;
    overflow: hidden;
    text-align: center;
    font-size: .7rem;
    font-weight: 600;
    letter-spacing: .06em;
    line-height: 1.3;
    padding: .4rem .5rem;
    border: 1px solid var(--an-line);
    background: #fff;
    color: var(--an-primary);
    cursor: pointer;
    transition: border-color .3s ease;
}

[b-079pgun7bc] .pf-photo-btn:hover,
[b-079pgun7bc] .pf-photo-btn:focus-within { border-color: var(--an-accent); }

[b-079pgun7bc] .pf-photo-btn input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

[b-079pgun7bc] .pf-photo-btn.is-busy {
    color: var(--an-muted);
    cursor: progress;
}

[b-079pgun7bc] .pf-photo-btn.is-busy input { cursor: progress; }

[b-079pgun7bc] .pf-photo-hint {
    margin: 0;
    font-size: .64rem;
    line-height: 1.35;
    color: var(--an-muted);
    text-align: center;
}

/* Case à cocher d'un formulaire de profil (recopie de l'adresse actuelle). */
[b-079pgun7bc] .pf-check {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: .9rem 0;
    font-size: .82rem;
    cursor: pointer;
}

[b-079pgun7bc] .pf-check input {
    width: 1rem;
    height: 1rem;
    accent-color: var(--an-accent);
    cursor: pointer;
    flex: none;
}

[b-079pgun7bc] .pf-field {
    display: flex;
    gap: .5rem;
    align-items: center;
    margin-top: .6rem;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-field input {
    flex: 1 1 10rem;
    font: inherit;
    font-size: .85rem;
    padding: .35rem .55rem;
    border: 1px solid var(--an-line);
    background: #fff;
    color: var(--an-primary);
}

[b-079pgun7bc] .pf-field input:disabled { background: var(--an-bg-light); color: var(--an-muted); }
[b-079pgun7bc] .pf-field input.is-invalid { border-color: var(--an-danger); }

[b-079pgun7bc] .pf-field-error {
    flex: 1 1 100%;
    margin: 0;
    font-size: .74rem;
    color: var(--an-danger);
}

/* --- contacts --- */
[b-079pgun7bc] .pf-ct {
    border: 1px solid var(--an-line);
    padding: .8rem .95rem;
    margin-top: .6rem;
}

[b-079pgun7bc] .pf-ct:first-of-type { margin-top: 0; }

[b-079pgun7bc] .pf-ct-h {
    display: flex;
    align-items: center;
    gap: .6rem;
    font-size: .9rem;
    font-weight: 600;
    margin: 0 0 .65rem;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-tag {
    font-size: .6rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--an-muted);
    border: 1px solid var(--an-line);
    padding: .05rem .45rem;
    font-weight: 400;
}

[b-079pgun7bc] .pf-tag--main {
    margin-left: auto;
    color: var(--an-accent);
    border-color: var(--an-accent);
}

[b-079pgun7bc] .pf-ct-cols {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
}

/* ============================================================
   Récapitulatif du parcours
   ------------------------------------------------------------
   Une carte par école, et les informations de parcours en pastilles teintées. Les teintes viennent
   toutes de la charte : lavande (SecondaryColor) pour le programme, doré (accent) pour la majeure,
   neutre pour la session hors Accès — le lavande n'était jusqu'ici utilisé nulle part.

   Les pastilles sont toujours claires, jamais pleines : la couleur de marque est mélangée au blanc
   pour le fond et au primaire pour le texte, ce qui garantit la lisibilité quelle que soit la
   teinte du périmètre — le secondaire vaut #A991D9 côté Accès et #001F44 côté IÉSEG.
   ============================================================ */
[b-079pgun7bc] .pf-schools { list-style: none; margin: 0; padding: 0; }

[b-079pgun7bc] .pf-school {
    position: relative;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    padding: .55rem 0 .55rem 1rem;
    border-bottom: 1px solid var(--an-line);
}

[b-079pgun7bc] .pf-school:last-child { border-bottom: 0; }

[b-079pgun7bc] .pf-school::before {
    content: "";
    position: absolute;
    left: 0;
    top: .6rem;
    bottom: .6rem;
    width: 2px;
    background: var(--an-accent);
}

[b-079pgun7bc] .pf-school__name {
    font-size: .95rem;
    font-weight: 600;
    margin-right: .3rem;
}

/* Accès : les majeures ouvrent le parcours, empilées. La ligne s'aligne alors sur la ligne de base :
   le nom, la première majeure et les autres pastilles se lisent d'un trait, les majeures suivantes
   pendent dessous. Centrée, la ligne aurait posé le nom au milieu de la pile. */
[b-079pgun7bc] .pf-school--stacked { align-items: baseline; }

[b-079pgun7bc] .pf-school__majors {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .3rem;
}

/* L'état suit les autres pastilles, sans être repoussé au bord : il se lit dans la continuité du
   parcours plutôt que comme une colonne à part. */

[b-079pgun7bc] .pf-chip {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: .64rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    padding: .2rem .55rem;
    border: 1px solid var(--an-line);
    background: #fff;
    color: var(--an-muted);
    white-space: nowrap;
}

/* Accès : la session prend elle aussi la teinte du parcours — elle ne concerne que ce concours, et
   la seule pastille blanche de la ligne y passait pour une information d'un autre ordre. Ailleurs,
   elle reste neutre. */
[b-079pgun7bc] .pf-chip--program,
[b-079pgun7bc] .pf-chip--campaign,
[b-079pgun7bc] .pf-chip--sector,
[b-079pgun7bc] .pf-schools--acces .pf-chip--session {
    border-color: color-mix(in srgb, var(--an-secondary) 50%, #fff);
    background: color-mix(in srgb, var(--an-secondary) 12%, #fff);
    color: color-mix(in srgb, var(--an-secondary) 55%, var(--an-primary));
}

/* Accès : la campagne s'affiche par son intitulé — « PGE Master 1ère année » — et non plus par son
   code : elle garde sa casse, comme la majeure. La filière (initiale / alternance) la qualifie, d'où
   la même teinte. */
[b-079pgun7bc] .pf-chip--campaign {
    text-transform: none;
    letter-spacing: .04em;
    font-size: .7rem;
}

[b-079pgun7bc] .pf-chip--major {
    border-color: color-mix(in srgb, var(--an-accent) 55%, #fff);
    background: color-mix(in srgb, var(--an-accent) 14%, #fff);
    color: color-mix(in srgb, var(--an-accent) 40%, var(--an-primary));
    text-transform: none;
    letter-spacing: .04em;
    font-size: .7rem;
}

/* L'état porte une pastille pleine en tête : sa teinte peut donc reprendre celle d'une information
   de parcours sans qu'on puisse les confondre. */
[b-079pgun7bc] .pf-chip--state { font-weight: 600; }

[b-079pgun7bc] .pf-chip--state::before {
    content: "";
    width: .4rem;
    height: .4rem;
    border-radius: 50%;
    background: currentColor;
    flex: none;
}

[b-079pgun7bc] .pf-chip--neutral {
    border-color: color-mix(in srgb, var(--an-secondary) 50%, #fff);
    background: color-mix(in srgb, var(--an-secondary) 14%, #fff);
    color: color-mix(in srgb, var(--an-secondary) 60%, var(--an-primary));
}

[b-079pgun7bc] .pf-chip--ok {
    border-color: color-mix(in srgb, var(--an-success) 50%, #fff);
    background: color-mix(in srgb, var(--an-success) 14%, #fff);
    color: color-mix(in srgb, var(--an-success) 55%, var(--an-primary));
}

[b-079pgun7bc] .pf-chip--ko {
    border-color: color-mix(in srgb, var(--an-danger) 50%, #fff);
    background: color-mix(in srgb, var(--an-danger) 10%, #fff);
    color: var(--an-danger);
}

[b-079pgun7bc] .pf-chip--wait {
    border-color: color-mix(in srgb, var(--an-accent) 55%, #fff);
    background: color-mix(in srgb, var(--an-accent) 14%, #fff);
    color: color-mix(in srgb, var(--an-accent) 40%, var(--an-primary));
}

[b-079pgun7bc] .pf-recap { margin-top: .9rem; }

/* ============================================================
   Échéancier
   ============================================================ */
[b-079pgun7bc] .pf-pay-wrap { overflow-x: auto; }

[b-079pgun7bc] .pf-pay {
    width: 100%;
    border-collapse: collapse;
    font-size: .85rem;
}

[b-079pgun7bc] .pf-pay th {
    text-align: left;
    font-size: .6rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--an-muted);
    font-weight: 600;
    padding: 0 .7rem .5rem 0;
    border-bottom: 2px solid var(--an-accent);
    white-space: nowrap;
}

[b-079pgun7bc] .pf-pay td {
    padding: .55rem .7rem .55rem 0;
    border-bottom: 1px solid var(--an-line);
    vertical-align: middle;
}

[b-079pgun7bc] .pf-pay tbody tr:last-child td { border-bottom: 1px solid var(--an-line); }

[b-079pgun7bc] .pf-pay__num {
    text-align: right;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    padding-right: 1.1rem;
}

[b-079pgun7bc] .pf-pay__action { text-align: right; white-space: nowrap; }

/* Le motif du verrouillage se lit sur la ligne : une échéance simplement grisée passe pour un
   dysfonctionnement. */
[b-079pgun7bc] .pf-pay__locked {
    font-size: .68rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-pay tfoot td {
    border-bottom: 0;
    padding-top: .7rem;
    font-size: .68rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-pay tfoot .pf-pay__num {
    font-size: .95rem;
    letter-spacing: 0;
    text-transform: none;
    color: var(--an-primary);
}

[b-079pgun7bc] .pf-pay-proof { margin-top: 1.1rem; }

/* --- listes à liseret --- */
[b-079pgun7bc] .pf-lis { list-style: none; margin: 0; padding: 0; }

[b-079pgun7bc] .pf-lis li {
    position: relative;
    padding: .4rem 0 .4rem 1rem;
    font-size: .82rem;
    line-height: 1.5;
    border-bottom: 1px solid var(--an-line);
}

[b-079pgun7bc] .pf-lis li:last-child { border-bottom: 0; }

[b-079pgun7bc] .pf-lis li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .55rem;
    bottom: .55rem;
    width: 2px;
    background: var(--an-accent);
}

/* ============================================================
   Onglets — un seul niveau
   ============================================================ */
[b-079pgun7bc] .pf-tabs {
    display: flex;
    margin-top: 1.7rem;
    border-bottom: 1px solid var(--an-line);
    overflow-x: auto;
}

[b-079pgun7bc] .pf-tabs button {
    font: inherit;
    font-size: .7rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    background: transparent;
    border: 0;
    border-bottom: 2px solid transparent;
    padding: .7rem .9rem .6rem;
    cursor: pointer;
    color: var(--an-muted);
    white-space: nowrap;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    gap: .45rem;
}

[b-079pgun7bc] .pf-tabs button.is-on {
    color: var(--an-primary);
    border-bottom-color: var(--an-accent);
}

[b-079pgun7bc] .pf-tabs button:hover,
[b-079pgun7bc] .pf-tabs button:focus-visible { color: var(--an-primary); }

[b-079pgun7bc] .pf-badge {
    font-size: .62rem;
    background: var(--an-danger);
    color: #fff;
    border-radius: 999px;
    padding: .05rem .4rem;
    letter-spacing: .06em;
}

[b-079pgun7bc] .pf-panel { padding-top: 1.15rem; }

/* ============================================================
   Documents
   ============================================================ */
[b-079pgun7bc] .pf-docs { list-style: none; margin: 0; padding: 0; }

[b-079pgun7bc] .pf-doc {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    padding: .7rem 0;
    border-bottom: 1px solid var(--an-line);
    font-size: .85rem;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-doc:last-child { border-bottom: 0; }

[b-079pgun7bc] .pf-doc > svg {
    width: 1rem;
    height: 1rem;
    flex: none;
    margin-top: .15rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-doc-main { flex: 1 1 14rem; min-width: 0; }
[b-079pgun7bc] .pf-doc-main b { font-weight: 600; display: block; }

[b-079pgun7bc] .pf-doc-main small {
    display: block;
    color: var(--an-muted);
    font-size: .74rem;
    margin-top: .1rem;
}

[b-079pgun7bc] .pf-doc-act {
    display: flex;
    align-items: center;
    gap: .55rem;
    flex: none;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-st {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    font-size: .62rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    padding: .1rem .5rem;
    border: 1px solid currentColor;
    white-space: nowrap;
}

[b-079pgun7bc] .pf-st--ok { color: color-mix(in srgb, var(--an-success) 80%, var(--an-primary)); }
[b-079pgun7bc] .pf-st--wait { color: color-mix(in srgb, var(--an-accent) 70%, var(--an-primary)); }
[b-079pgun7bc] .pf-st--ko { color: var(--an-danger); }
[b-079pgun7bc] .pf-st--todo { color: var(--an-muted); }

/* La pièce refusée est la seule à porter une zone de dépôt : elle se signale donc dans la liste. */
[b-079pgun7bc] .pf-doc--ko {
    background: color-mix(in srgb, var(--an-danger) 5%, #fff);
    margin: 0 -.5rem;
    padding-left: .5rem;
    padding-right: .5rem;
    border-left: 3px solid var(--an-danger);
}

[b-079pgun7bc] .pf-reason {
    margin-top: .45rem;
    font-size: .76rem;
    color: var(--an-danger);
    line-height: 1.5;
}

[b-079pgun7bc] .pf-empty {
    margin: 0;
    font-size: .85rem;
    color: var(--an-muted);
}

/* ============================================================
   Voile des fenêtres de la page
   L'aperçu d'un document n'en fait plus partie : partagé avec le back-office, il porte sa propre
   feuille (Components/DocumentPreview/DocumentPreviewModal.razor.css, bibliothèque partagée).
   ============================================================ */
/* Le voile est déclaré deux fois : la seconde forme est plus juste, la première sert de repli si
   color-mix ou la variable de marque n'est pas résolue. Un voile absent laisserait croire que la
   page reste manipulable derrière la fenêtre. */
[b-079pgun7bc] .pf-scrim {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .55);
    background: color-mix(in srgb, var(--an-primary) 62%, transparent);
    display: flex;
    justify-content: center;
    padding: 1.5rem;
    z-index: 1080;
}

/* Une demande de confirmation se pose au centre du regard. */
[b-079pgun7bc] .pf-scrim--center { align-items: center; }

/* ============================================================
   Confirmation d'une action irréversible
   ============================================================ */
[b-079pgun7bc] .pf-confirm {
    width: min(28rem, 100%);
    background: #fff;
    border: 1px solid var(--an-line);
    border-top: 3px solid var(--an-danger);
    box-shadow: 0 24px 60px -22px rgba(0, 0, 0, .6);
    padding: 1.5rem;
}

[b-079pgun7bc] .pf-confirm__title {
    margin: 0 0 .6rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--an-primary);
}

[b-079pgun7bc] .pf-confirm__text {
    margin: 0;
    font-size: .85rem;
    line-height: 1.6;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-confirm__actions {
    display: flex;
    justify-content: flex-end;
    gap: .6rem;
    margin-top: 1.4rem;
    flex-wrap: wrap;
}

/* Sur petit écran, la confirmation prend toute la largeur : le voile n'a plus de marge. */
@media (max-width: 767.98px) {
    [b-079pgun7bc] .pf-scrim { padding: 0; }
}

/* ============================================================
   ANIMATION D'ARRIVÉE — « liseret »
   Reprise à l'identique de l'accueil : seuls les filets dorés se tracent, puis le contenu apparaît
   en fondu. Aucun bloc ne se déplace. Portée par des keyframes, donc jouée au premier rendu de
   l'élément — un StateHasChanged ne la rejoue pas.
   ============================================================ */
@keyframes pf-rule-draw-b-079pgun7bc {
    from { transform: scaleX(0); }
    to   { transform: none; }
}

@keyframes pf-fade-in-b-079pgun7bc {
    from { opacity: 0; }
    to   { opacity: 1; }
}

[b-079pgun7bc] .pf-tile__rule {
    transform-origin: left center;
    animation: pf-rule-draw-b-079pgun7bc .6s cubic-bezier(.22, .61, .36, 1) both;
    animation-delay: calc(var(--i, 0) * 110ms);
}

[b-079pgun7bc] .pf-tile__body {
    animation: pf-fade-in-b-079pgun7bc .55s ease both;
    animation-delay: calc(var(--i, 0) * 110ms + 150ms);
}

/* ============================================================
   SURVOL — « mise au point »
   La tuile prend le fond clair de la charte, sa bordure passe en accent, le titre resserre son
   interlettrage. Rien ne change de place : le pointeur ne déclenche aucun reflux.
   ============================================================ */
[b-079pgun7bc] .pf-tile,
[b-079pgun7bc] .pf-stepcard {
    transition: background-color .3s ease, border-color .3s ease;
}

[b-079pgun7bc] .pf-tile:hover {
    background: var(--an-bg-light);
    border-color: var(--an-accent);
}

[b-079pgun7bc] .pf-tile h3 { transition: letter-spacing .3s ease; }
[b-079pgun7bc] .pf-tile:hover h3 { letter-spacing: 0; }

@media (prefers-reduced-motion: reduce) {
    [b-079pgun7bc] .pf-tile__rule,
    [b-079pgun7bc] .pf-tile__body { animation: none; }

    [b-079pgun7bc] .pf-tile,
    [b-079pgun7bc] .pf-stepcard,
    [b-079pgun7bc] .pf-tile h3 { transition: none; }
}

/* ============================================================
   Rendu étroit
   Un seul rendu adaptatif : plus de duplication bureau / mobile.
   ============================================================ */
@media (max-width: 991.98px) {
    [b-079pgun7bc] .pf-dash { grid-template-columns: 1fr; }

    [b-079pgun7bc] .pf-tile--wide,
    [b-079pgun7bc] .pf-tile--two { grid-column: span 1; }

    [b-079pgun7bc] .pf-idcard { grid-template-columns: 9rem minmax(0, 1fr); }
    [b-079pgun7bc] .pf-ct-cols { grid-template-columns: 1fr; }
    [b-079pgun7bc] .pf-addresses { grid-template-columns: 1fr; }
}

@media (max-width: 575.98px) {
    [b-079pgun7bc] .pf-idcard { grid-template-columns: 1fr; }

    /* La grille n'a plus qu'une colonne : « 2 / -1 » y créerait une colonne implicite hors écran. */
    [b-079pgun7bc] .pf-idcard__edit { grid-column: 1 / -1; }
    [b-079pgun7bc] .pf-avatar-col { max-width: 12rem; }
    [b-079pgun7bc] .pf-id { margin-left: 0; text-align: left; }
    [b-079pgun7bc] .pf-doc-act { width: 100%; }
}

/* ============================================================
   Oraux — choix de la demi-journée

   Deux périmètres, une seule mise en page : une ligne par école retenue, chacune avec son bouton.
   En Apply la liste n'en compte qu'une, en Accès jusqu'à trois. Les créneaux s'ouvrent sous
   l'école cliquée, une seule à la fois. Les lignes reprennent le liseret doré des écoles du
   récapitulatif.

   Les couleurs viennent des jetons --an-*, comme le reste de la page.
   ============================================================ */
[b-079pgun7bc] .pf-oralschools { list-style: none; margin: 0; padding: 0; }

[b-079pgun7bc] .pf-oralschool {
    position: relative;
    padding: .85rem 0 .95rem 1rem;
    border-bottom: 1px solid var(--an-line);
}

[b-079pgun7bc] .pf-oralschool:last-child { border-bottom: 0; }

[b-079pgun7bc] .pf-oralschool::before {
    content: "";
    position: absolute;
    left: 0;
    top: .9rem;
    bottom: 1rem;
    width: 2px;
    background: var(--an-accent);
}

[b-079pgun7bc] .pf-oralschool__name { margin: 0; font-size: 1rem; font-weight: 600; }

[b-079pgun7bc] .pf-oralschool__actions { display: flex; gap: .4rem; flex-wrap: wrap; margin-top: .7rem; }

[b-079pgun7bc] .pf-oralpanel { margin-top: .8rem; }

[b-079pgun7bc] .pf-oralhead {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: wrap;
    margin-bottom: .6rem;
}

[b-079pgun7bc] .pf-oralintro { margin: 0 0 .5rem; font-size: .82rem; }

[b-079pgun7bc] .pf-oralnote { margin: 0; font-size: .84rem; }

/* Un autre oral la même demi-journée : signalé, jamais bloquant. */
[b-079pgun7bc] .pf-oralwarn {
    border: 1px solid color-mix(in srgb, var(--an-accent) 55%, #fff);
    border-left: 3px solid var(--an-accent);
    background: color-mix(in srgb, var(--an-accent) 10%, #fff);
    color: var(--an-primary);
    padding: .45rem .6rem;
    margin: .6rem 0 0;
    font-size: .8rem;
    font-weight: 600;
}

[b-079pgun7bc] .pf-oralconfirm .pf-oralwarn { margin: 0 0 .6rem; }

[b-079pgun7bc] .pf-oralslot__overlap { text-transform: none; letter-spacing: .02em; }

/* --- créneau retenu --- */
[b-079pgun7bc] .pf-oralcard {
    border: 1px solid var(--an-line);
    border-left: 3px solid var(--an-success);
    background: var(--an-bg-light);
    padding: .8rem .9rem;
}

[b-079pgun7bc] .pf-oralcard__when {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    text-transform: capitalize;
}

[b-079pgun7bc] .pf-oralcard__time {
    margin: .1rem 0 0;
    font-size: .95rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

[b-079pgun7bc] .pf-oralcard__where { margin: .15rem 0 0; font-size: .82rem; color: var(--an-muted); }

/* --- agenda --- */
[b-079pgun7bc] .pf-oralday {
    border-bottom: 1px solid var(--an-line);
    padding: .6rem 0 .3rem;
    margin-top: .7rem;
}

[b-079pgun7bc] .pf-oralday:first-of-type { margin-top: .2rem; }

[b-079pgun7bc] .pf-oralday__d {
    font-size: .84rem;
    font-weight: 600;
    text-transform: capitalize;
}

[b-079pgun7bc] .pf-oralslot {
    display: flex;
    align-items: center;
    gap: .7rem;
    border: 1px solid var(--an-line);
    background: #fff;
    padding: .5rem .65rem;
    margin-top: .35rem;
    flex-wrap: wrap;
}

[b-079pgun7bc] .pf-oralslot.is-on {
    border-color: var(--an-accent);
    border-left-width: 3px;
    background: var(--an-bg-light);
}

[b-079pgun7bc] .pf-oralslot__half {
    flex: none;
    min-width: 5.5rem;
    font-size: .7rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-oralslot__col { flex: 1 1 10rem; min-width: 0; display: block; }

[b-079pgun7bc] .pf-oralslot__col b {
    display: block;
    font-size: .9rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

[b-079pgun7bc] .pf-oralslot__col em {
    display: block;
    font-style: normal;
    font-size: .76rem;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-oralslot__right {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: .45rem;
    flex-wrap: wrap;
}

/* --- confirmation, ouverte sous la ligne cliquée --- */
[b-079pgun7bc] .pf-oralconfirm {
    border: 1px solid var(--an-primary);
    border-top: 3px solid var(--an-accent);
    background: #fff;
    padding: .75rem .85rem;
}

[b-079pgun7bc] .pf-oralconfirm h4 {
    margin: 0 0 .4rem;
    font-size: .92rem;
    font-weight: 600;
}

[b-079pgun7bc] .pf-oralconfirm__recap {
    margin: 0 0 .5rem;
    padding: .45rem .6rem;
    border: 1px solid var(--an-line);
    background: var(--an-bg-light);
    font-size: .86rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    text-transform: capitalize;
}

[b-079pgun7bc] .pf-oralconfirm__text {
    margin: 0 0 .6rem;
    font-size: .8rem;
    color: var(--an-muted);
}

[b-079pgun7bc] .pf-oralconfirm__actions { display: flex; gap: .4rem; justify-content: flex-end; flex-wrap: wrap; }

[b-079pgun7bc] .pf-oralerr {
    border: 1px solid var(--an-danger);
    border-left-width: 3px;
    background: color-mix(in srgb, var(--an-danger) 8%, #fff);
    color: var(--an-danger);
    padding: .5rem .65rem;
    margin: 0 0 .7rem;
    font-size: .84rem;
    font-weight: 600;
}

@media (max-width: 767.98px) {
    /* Les cibles tactiles prennent la largeur : sur un téléphone, un bouton posé en bout de ligne
       se retrouve sous le pouce d'une seule main. */
    [b-079pgun7bc] .pf-oralslot__right { margin-left: 0; width: 100%; }
    [b-079pgun7bc] .pf-oralslot__right .pf-btn { flex: 1 1 auto; justify-content: center; }
    [b-079pgun7bc] .pf-oralconfirm__actions .pf-btn { flex: 1 1 auto; justify-content: center; }
    [b-079pgun7bc] .pf-oralschool__actions .pf-btn { flex: 1 1 auto; justify-content: center; }
}

/* Bouton d'action d'une candidature — état non modifiable, sur la page de suivi elle-même.
   « Voir le suivi » n'y mène nulle part : il ne reste que l'information, sans le bouton qui la
   promettait. */
[b-079pgun7bc] .pf-cta-state {
    margin: 0;
    padding: .5rem .9rem;
    border: 1px solid var(--an-line);
    background: var(--an-bg-light);
    font-size: .8rem;
    font-weight: 600;
    letter-spacing: .04em;
    color: var(--an-muted);
}
/* /Components/Profile/RegistrationSummaryComponents/BankTransferProofUpload.razor.rz.scp.css */
.bank-transfer-proof[b-dtsmuc0xh1] {
    padding: 1.25rem;
    border: 1px solid #dfe4ea;
    border-radius: .5rem;
    background: linear-gradient(180deg, #fff 0%, #f5f7f9 100%);
}

.bank-transfer-proof__header[b-dtsmuc0xh1],
.bank-transfer-proof__file[b-dtsmuc0xh1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.bank-transfer-proof__file[b-dtsmuc0xh1] {
    padding: .75rem 1rem;
    border-radius: .375rem;
    background: #fff;
}

.bank-transfer-proof__status[b-dtsmuc0xh1] {
    flex: 0 0 auto;
    padding: .3rem .65rem;
    border-radius: 999px;
    font-size: .875rem;
    font-weight: 600;
}

.bank-transfer-proof__status--pending[b-dtsmuc0xh1] {
    color: #705600;
    background: #fff3cd;
}

.bank-transfer-proof__status--approved[b-dtsmuc0xh1] {
    color: #0f5132;
    background: #d1e7dd;
}

.bank-transfer-proof__status--rejected[b-dtsmuc0xh1] {
    color: #842029;
    background: #f8d7da;
}

@media (max-width: 576px) {
    .bank-transfer-proof__header[b-dtsmuc0xh1],
    .bank-transfer-proof__file[b-dtsmuc0xh1] {
        align-items: stretch;
        flex-direction: column;
    }
}
/* /Components/Profile/RegistrationSummaryComponents/Payment.Razor.rz.scp.css */
/* Mobile et tablette (max-width: 991px) */
@media (max-width: 991px) {
    .row[b-efalbm4y2f] {
        flex-direction: column; /* Afficher une ligne par champ */
    }

    .d-lg-none[b-efalbm4y2f] {
        display: block; /* Montrer les étiquettes pour mobile et tablette */
    }

    .d-lg-flex[b-efalbm4y2f] {
        display: none; /* Masquer l'en-tête PC sur mobile et tablette */
    }

    .btn[b-efalbm4y2f] {
        width: 100%; /* Boutons pleine largeur */
    }
}
/* Spécifique aux téléphones (max-width: 576px) */
@media (max-width: 576px) {
    .row[b-efalbm4y2f] {
        flex-direction: column; /* Forcer une disposition verticale */
    }

    .col-12[b-efalbm4y2f] {
        padding: 0.5rem 0; /* Ajouter un espacement vertical entre les champs */
    }

    .d-lg-none[b-efalbm4y2f] {
        font-size: 0.9rem; /* Réduire la taille des étiquettes pour éviter qu'elles prennent trop de place */
        margin-bottom: 0.25rem; /* Ajouter un petit espace sous l'étiquette */
    }

    span[b-efalbm4y2f] {
        font-size: 1rem; /* Augmenter légèrement le texte des valeurs pour la lisibilité */
    }

    button[b-efalbm4y2f] {
        font-size: 0.9rem; /* Rendre les boutons adaptés à la largeur de l'écran */
    }

    /* Ajouter une bordure ou un espacement entre les paiements pour la clarté */
    .row[b-efalbm4y2f] {
        border-bottom: 1px solid #ddd;
        margin-bottom: 1rem;
        padding-bottom: 1rem;
    }
}

/* PC (min-width: 992px) */
@media (min-width: 992px) {
    .d-lg-none[b-efalbm4y2f] {
        display: none; /* Masquer les étiquettes sur PC */
    }

    .d-lg-flex[b-efalbm4y2f] {
        display: flex; /* Afficher l'en-tête classique sur PC */
    }

    .row[b-efalbm4y2f] {
        flex-direction: row; /* Afficher en ligne */
    }
}
/* /Components/Timeline.razor.rz.scp.css */
.dot[b-ilf4ags52c] {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    position: relative;
}
    .dot-campaign[b-ilf4ags52c] {
        background-color: palevioletred;
    }

    .dot-student[b-ilf4ags52c] {
        background-color: darkslateblue;
    }

    .dot-date[b-ilf4ags52c] {
        background-color: olive;
    }

    .dot-default[b-ilf4ags52c] {
        background-color: gray;
    }
    .dot-schoolyear[b-ilf4ags52c] {
        background-color: coral;
    }
    .dot[b-ilf4ags52c]::after {
        content: '';
        position: absolute;
        top: calc(100% + 5px);
        left: 50%;
        transform: translateX(-50%);
        width: 1px;
        height: 15px;
        background-color: grey;
    }
.text[b-ilf4ags52c] {
    margin-left: 8px;
    line-height: 0.5;
}

@media (max-width: 576px) {
    .dot[b-ilf4ags52c] {
        width: 18px;
        height: 18px;
        border-radius: 50%;
        position: relative;
    }

    .dot-campaign[b-ilf4ags52c] {
        background-color: palevioletred;
    }

    .dot-student[b-ilf4ags52c] {
        background-color: darkslateblue;
    }

    .dot-date[b-ilf4ags52c] {
        background-color: olive;
    }

    .dot-default[b-ilf4ags52c] {
        background-color: gray;
    }
    .dot-schoolyear[b-ilf4ags52c] {
        background-color: coral;
    }

    .dot:not(.last)[b-ilf4ags52c]::after {
        content: '';
        position: absolute;
        top: 100%;
        left: 50%;
        transform: translateX(-50%);
        width: 2px;
        height: 25px;
        background-color: grey;
    }

    .last[b-ilf4ags52c] {
        width: 18px;
        height: 18px;
        border-radius: 50%;
        position: relative;
        background-color: palevioletred;
    }
}
/* /Components/UploadDocuments/UploadDocument.razor.rz.scp.css */

@media (max-width: 600px) {
    .input[b-8zifdj83ds] {
        font-size:20px;
        margin : 3px 0;
    }
}
