/* /Components/Account/AccountLayout.razor.rz.scp.css */
/* Géométrie de l'espace de compte (maquette) : l'en-tête et le pied gardent leur hauteur, le corps prend le reste ;
   le rail à gauche, la zone de contenu défile seule. */
.umbra-account[b-c7jvgh2xum] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
}

.umbra-account__body[b-c7jvgh2xum] {
    flex: 1;
    display: flex;
    gap: var(--space-2);
    min-height: 0;
    padding: var(--space-2) var(--space-2) 0;
}

.umbra-account__content[b-c7jvgh2xum] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    overflow: auto;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border-subtle);
    background: var(--surface);
}

/* ≤ 900 px : le rail passe au-dessus du contenu (bande horizontale, voir AccountRail.razor.css). */
@media (max-width: 900px) {
    .umbra-account__body[b-c7jvgh2xum] {
        flex-direction: column;
    }
}
/* /Components/Account/Caracteristiques.razor.rz.scp.css */
/* L'éditeur de caractéristiques : le solde en tête, la table, la remise à zéro. */
.umbra-stats[b-djlpdbmhq1] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding: var(--space-3);
}

.umbra-stats__pool[b-djlpdbmhq1] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
}

.umbra-stats[b-djlpdbmhq1]  .umbra-stats__remaining {
    font-size: var(--font-size-2xl);
    font-weight: 600;
}

.umbra-stats__name[b-djlpdbmhq1] {
    font-weight: 600;
}

.umbra-stats__control[b-djlpdbmhq1] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
}

.umbra-stats__control[b-djlpdbmhq1]  .umbra-stats__input {
    width: 88px;
    text-align: right;
}

.umbra-stats__footer[b-djlpdbmhq1] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-3);
}
/* /Components/Account/Console.razor.rz.scp.css */
/* Product V2 (maquette « console--single ») : panneau repliable en haut, puis le journal sur toute la largeur — sa
   barre, le journal, son pied et la ligne de commande, dans un seul cadre. Sous 900 px, le panneau déplié passe sur
   une colonne et l'identité du bandeau se retire. */
.umbra-console-page[b-ltg0synypa] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-height: 0;
    height: 100%;
    padding: var(--space-2);
}

/* ── Panneau repliable — maquette validée (.cpanel, .cpanel__head, .console__opts) ───────────────────────────── */
.umbra-console-panel[b-ltg0synypa] {
    flex: none;
    min-width: 0;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    background: var(--surface);
    overflow: hidden;
}

/* En-tête : 34 px, 4 × 10 px, bandeau légèrement plus sombre que la surface (--bg-3 de la maquette).
   [chevron · avatar · alias] état · méta mono discrète (identité, étape, durée) … résumé (serveur · personnage · politique). */
.umbra-console-panel__head[b-ltg0synypa] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    column-gap: var(--space-4);
    row-gap: 2px;
    min-height: 34px;
    padding: 4px 10px 4px 4px;
    background: color-mix(in srgb, var(--surface) 55%, var(--background-secondary));
}

.umbra-console-panel__toggle[b-ltg0synypa] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-4);
    min-height: 26px;
    padding: 0 var(--space-3);
    border: 0;
    border-radius: var(--radius-control);
    background: transparent;
    color: var(--text-primary);
    font: inherit;
    font-weight: 600;
    cursor: pointer;
}

.umbra-console-panel__toggle:hover[b-ltg0synypa] { background: var(--surface-hover); }
.umbra-console-panel__toggle:focus-visible[b-ltg0synypa] { outline: 2px solid var(--focus-ring); outline-offset: 1px; }

.umbra-console-panel__toggle[b-ltg0synypa]  .umbra-console-panel__chevron {
    color: var(--text-muted);
    transition: transform .15s;
}

.umbra-console-panel[data-open="false"] .umbra-console-panel__toggle[b-ltg0synypa]  .umbra-console-panel__chevron { transform: rotate(-90deg); }

.umbra-console-panel__meta[b-ltg0synypa] {
    min-width: 0;
    flex: 0 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-xs);
    color: var(--text-muted);
}

/* Espaceur (maquette « .grow ») : le résumé se cale à droite quand il tient sur la ligne, et repart à gauche quand
   l'en-tête passe sur deux lignes (1200 px). */
.umbra-console-panel__grow[b-ltg0synypa] { flex: 1 0 0; }

.umbra-console-panel__summary[b-ltg0synypa] {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-sm);
    color: var(--text-muted);
}

.umbra-console-panel__target[b-ltg0synypa] { color: var(--text-primary); font-weight: 600; }

.umbra-console-panel[b-ltg0synypa]  .umbra-console-panel__error { display: block; padding: 2px 10px 6px; }

/* Corps : 10 px de marge, 16 px d'écart ; connexion (1fr) | choix (3fr, partagé en 1fr | 2fr par le composant) :
   les proportions 1 : 1 : 2 de la maquette. */
.umbra-console-panel__body[b-ltg0synypa] {
    display: grid;
    grid-template-columns: minmax(200px, 1fr) minmax(0, 3fr);
    gap: var(--space-6);
    align-items: start;
    max-height: min(60vh, 620px);
    overflow: auto;
    padding: 10px;
    border-top: 1px solid var(--separator);
}

.umbra-console-panel__col[b-ltg0synypa] {
    display: grid;
    gap: var(--space-3);
    align-content: start;
    min-width: 0;
}

.umbra-console-panel__body[b-ltg0synypa]  .ui-overline {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .09em;
    color: var(--text-muted);
}

.umbra-console-panel[b-ltg0synypa]  .umbra-console-panel__failure { margin: 0; }

/* ── Console : un seul cadre (barre, journal, pied, commande) ─────────────────────────────────────────────────── */
.umbra-console-page__main[b-ltg0synypa] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    background: var(--surface-inset);
    overflow: hidden;
}

.umbra-console-page__toolbar[b-ltg0synypa],
.umbra-console-page__footer[b-ltg0synypa],
.umbra-console-page__command[b-ltg0synypa],
.umbra-console-page__shield[b-ltg0synypa] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    padding: 4px var(--space-2);
    background: var(--background-secondary);
}

.umbra-console-page__toolbar[b-ltg0synypa] { border-bottom: 1px solid var(--separator); }

.umbra-console-page__footer[b-ltg0synypa],
.umbra-console-page__command[b-ltg0synypa],
.umbra-console-page__shield[b-ltg0synypa] { border-top: 1px solid var(--separator); }

.umbra-console-page__actions[b-ltg0synypa] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-1);
}

.umbra-console-page__command[b-ltg0synypa] { flex-wrap: nowrap; padding: 6px var(--space-2); }

.umbra-console-page__prompt[b-ltg0synypa] {
    color: var(--text-accent);
    font-family: var(--font-family-mono);
    font-weight: 700;
}

.umbra-console-page__command[b-ltg0synypa]  .umbra-console-page__input {
    flex: 1;
    min-width: 0;
    font-family: var(--font-family-mono);
}

.umbra-console-page__shield[b-ltg0synypa] { background: var(--warning-soft); padding: 6px var(--space-2); }
.umbra-console-page__shield-title[b-ltg0synypa] { font-weight: 600; color: var(--text-primary); }
.umbra-console-page__shield[b-ltg0synypa]  .umbra-console-page__shield-input { width: 180px; max-width: 100%; font-family: var(--font-family-mono); }

.umbra-console-page__dropped[b-ltg0synypa] { color: var(--warning-text); }

.umbra-console-page__main[b-ltg0synypa]  .ui-alert { margin: var(--space-2); }

@media (max-width: 900px) {
    .umbra-console-page[b-ltg0synypa] { height: auto; }
    .umbra-console-page__main[b-ltg0synypa] { min-height: 420px; }
    .umbra-console-panel__body[b-ltg0synypa] { grid-template-columns: minmax(0, 1fr); max-height: none; }
    .umbra-console-panel__meta[b-ltg0synypa] { display: none; }
}

@media (max-width: 640px) {
    .umbra-console-page[b-ltg0synypa] { padding: var(--space-1); }
    .umbra-console-panel__summary[b-ltg0synypa] { flex-basis: 100%; padding-left: var(--space-3); }
}

.umbra-console-page__footer[b-ltg0synypa]  .umbra-console-page__script { display: inline-flex; align-items: center; gap: 4px; font-size: var(--font-size-sm); }
/* /Components/Account/Fiche.razor.rz.scp.css */
/* Géométrie de la fiche (legacy) : la fiche à gauche, les deux listes longues à droite dans une carte qui défile. */
.umbra-sheet[b-idhojvfr1l] {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
    gap: var(--space-3);
    padding: var(--space-3);
    min-height: 0;
}

.umbra-sheet__col[b-idhojvfr1l],
.umbra-sheet__left[b-idhojvfr1l],
.umbra-sheet__right[b-idhojvfr1l] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    min-width: 0;
}

.umbra-sheet__top[b-idhojvfr1l] {
    display: grid;
    grid-template-columns: minmax(0, 220px) minmax(0, 1fr);
    gap: var(--space-3);
}

.umbra-sheet__bottom[b-idhojvfr1l] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-3);
}

.umbra-sheet__portrait[b-idhojvfr1l] {
    display: grid;
    place-items: center;
    height: 96px;
}

.umbra-sheet__emblem[b-idhojvfr1l] {
    display: block;
    width: 80px;
    height: 80px;
}

.umbra-sheet__term[b-idhojvfr1l] {
    font-size: var(--font-size-xs);
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text-muted);
}

.umbra-sheet__life-head[b-idhojvfr1l] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: var(--space-2);
    margin-block: var(--space-2) var(--space-1);
}

.umbra-sheet__points[b-idhojvfr1l] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-2);
    margin-top: var(--space-3);
}

.umbra-sheet__points > div[b-idhojvfr1l] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.umbra-sheet__point[b-idhojvfr1l] {
    font-size: var(--font-size-xl);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.umbra-sheet__elements[b-idhojvfr1l] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-2);
    margin-bottom: var(--space-3);
}

.umbra-sheet__element[b-idhojvfr1l] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.umbra-sheet__value[b-idhojvfr1l] {
    font-size: var(--font-size-lg);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.umbra-sheet[b-idhojvfr1l]  .umbra-sheet__mono,
.umbra-sheet__num[b-idhojvfr1l] {
    font-family: var(--font-family-mono);
    font-variant-numeric: tabular-nums;
}

.umbra-sheet__lists[b-idhojvfr1l] {
    min-width: 0;
    min-height: 0;
}

.umbra-sheet__bar[b-idhojvfr1l] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    margin-block: var(--space-2);
}

.umbra-sheet__table[b-idhojvfr1l] {
    display: grid;
    gap: 2px;
    max-height: 62vh;
    overflow: auto;
}

.umbra-sheet__row[b-idhojvfr1l] {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) 44px minmax(60px, 120px) 44px;
    align-items: center;
    gap: var(--space-2);
    padding: 2px 0;
    font-size: var(--font-size-sm);
}

.umbra-sheet__row[data-available="false"][b-idhojvfr1l] {
    opacity: .55;
}

.umbra-sheet__thumb[b-idhojvfr1l] {
    width: 28px;
    height: 28px;
    border-radius: var(--radius-sm);
    background: var(--surface-inset);
}

.umbra-sheet__name[b-idhojvfr1l] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-sheet__end[b-idhojvfr1l] {
    justify-self: end;
}

@media (max-width: 1100px) {
    .umbra-sheet[b-idhojvfr1l] { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 700px) {
    .umbra-sheet__top[b-idhojvfr1l],
    .umbra-sheet__bottom[b-idhojvfr1l] { grid-template-columns: minmax(0, 1fr); }
}
/* /Components/Account/Inventaire.razor.rz.scp.css */
/* Composition de la maquette : le paperdoll à gauche (fond en creux), le sac en table à droite. */
.umbra-inventory[b-4ul23undpb] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr));
    gap: var(--space-3);
    padding: var(--space-3);
    min-height: 0;
}

.umbra-inventory__doll[b-4ul23undpb] {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    padding: var(--space-5);
    background: var(--surface-inset);
    border: 1px solid var(--border-subtle);
    min-width: 0;
}

.umbra-inventory__details[b-4ul23undpb] {
    padding: var(--space-3);
    background: var(--surface);
    border: 1px solid var(--border-subtle);
}

.umbra-inventory[b-4ul23undpb]  .umbra-inventory__hint {
    font-style: italic;
    margin-top: auto;
}

.umbra-inventory__bag[b-4ul23undpb] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-width: 0;
    min-height: 0;
}

.umbra-inventory__filters[b-4ul23undpb] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 220px);
    gap: var(--space-2);
}

.umbra-inventory__list[b-4ul23undpb] {
    flex: 1;
    min-height: 240px;
    max-height: 62vh;
    overflow: auto;
    border: 1px solid var(--border-subtle);
    background: var(--surface);
}

.umbra-inventory__head[b-4ul23undpb],
.umbra-inventory__row[b-4ul23undpb] {
    display: grid;
    grid-template-columns: 32px 72px minmax(0, 200px) 72px minmax(0, 1fr);
    align-items: center;
    gap: var(--space-2);
    padding: 2px var(--space-2);
    font-size: var(--font-size-sm);
}

.umbra-inventory__head[b-4ul23undpb] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--background-secondary);
    border-bottom: 1px solid var(--separator);
    font-weight: 600;
    color: var(--text-secondary);
    padding-block: var(--space-1);
}

.umbra-inventory__row[b-4ul23undpb] {
    cursor: default;
    border-bottom: 1px solid var(--separator);
}

.umbra-inventory__row:hover[b-4ul23undpb] { background: var(--surface-hover); }
.umbra-inventory__row[data-selected="true"][b-4ul23undpb] { background: var(--surface-selected); }
.umbra-inventory__row[data-dragging="true"][b-4ul23undpb] { opacity: .5; }
.umbra-inventory__row:focus-visible[b-4ul23undpb] { outline: 2px solid var(--accent-ring); outline-offset: -2px; }

.umbra-inventory__thumb[b-4ul23undpb] {
    width: 28px;
    height: 28px;
    border-radius: var(--radius-sm);
    background: var(--surface-inset);
}

.umbra-inventory__name[b-4ul23undpb],
.umbra-inventory__desc[b-4ul23undpb] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-inventory__desc[b-4ul23undpb] { color: var(--text-secondary); }

.umbra-inventory__num[b-4ul23undpb] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.umbra-inventory[b-4ul23undpb]  .umbra-inventory__mono,
.umbra-inventory__mono[b-4ul23undpb] {
    font-family: var(--font-family-mono);
}

.umbra-inventory__footer[b-4ul23undpb] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-4);
}

.umbra-inventory__pods[b-4ul23undpb] {
    flex: 1 1 200px;
    display: grid;
    gap: 2px;
}
/* /Components/Account/Quetes.razor.rz.scp.css */
/* Les quêtes : catégories à gauche, liste virtualisée au centre (lignes de 64 px), détail de la quête ouverte à droite.
   Mêmes jetons et même grammaire que les succès. */
.umbra-quests[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding: var(--space-3);
    min-height: 0;
    flex: 1;
}

.umbra-quests__head[b-qz4r1y0evk] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-3);
}

.umbra-quests[b-qz4r1y0evk]  .umbra-quests__gauge {
    width: 160px;
}

.umbra-quests__counter[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
}

/* Trois compteurs aux libellés longs : sans séparateur, « disponibles ici » et « terminées » se lisent d'un tenant. */
.umbra-quests__counter + .umbra-quests__counter[b-qz4r1y0evk] {
    padding-left: var(--space-3);
    border-left: 1px solid var(--separator);
}

.umbra-quests__figure[b-qz4r1y0evk] {
    font-size: var(--font-size-lg);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.umbra-quests__of[b-qz4r1y0evk] {
    font-size: var(--font-size-xs);
    color: var(--text-muted);
    font-weight: 400;
}

.umbra-quests__body[b-qz4r1y0evk] {
    flex: 1;
    display: grid;
    grid-template-columns: minmax(0, 220px) minmax(0, 1fr);
    gap: var(--space-3);
    min-height: 0;
}

.umbra-quests__body[data-detail="open"][b-qz4r1y0evk] {
    grid-template-columns: minmax(0, 220px) minmax(0, 1fr) minmax(0, 400px);
}

/* ── Rail des catégories ── */
.umbra-quests__rail[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    overflow: auto;
    min-height: 0;
    max-height: 70vh;
}

.umbra-quests__cat[b-qz4r1y0evk] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 2px var(--space-2);
    align-items: center;
    text-align: left;
    padding: var(--space-1) var(--space-2);
    border: 0;
    border-left: 3px solid var(--border-strong);
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: var(--font-size-sm);
    cursor: pointer;
}

.umbra-quests__cat > :nth-child(3)[b-qz4r1y0evk] {
    grid-column: 1 / -1;
}

.umbra-quests__cat:hover[b-qz4r1y0evk] { background: var(--surface-hover); }

.umbra-quests__cat[aria-current="true"][b-qz4r1y0evk] {
    background: var(--surface-selected);
    border-left-color: var(--accent);
    color: var(--text-primary);
}

.umbra-quests__cat:focus-visible[b-qz4r1y0evk] { outline: 2px solid var(--accent-ring); outline-offset: -2px; }

.umbra-quests__cat-name[b-qz4r1y0evk] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-quests__cat-count[b-qz4r1y0evk] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    font-variant-numeric: tabular-nums;
}

/* ── Liste ── */
.umbra-quests__list[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-width: 0;
    min-height: 0;
}

.umbra-quests__filters[b-qz4r1y0evk] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
}

.umbra-quests__scroll[b-qz4r1y0evk] {
    flex: 1;
    min-height: 240px;
    max-height: 70vh;
    overflow: auto;
}

.umbra-quests__row[b-qz4r1y0evk] {
    --umbra-state: var(--border-strong);
    display: grid;
    grid-template-columns: 12px minmax(0, 1fr);
    align-items: center;
    gap: var(--space-2);
    width: 100%;
    height: 64px;
    padding: var(--space-1) var(--space-2);
    border: 0;
    border-bottom: 1px solid var(--separator);
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.umbra-quests__row[data-state="active"][b-qz4r1y0evk] { --umbra-state: var(--accent); }
.umbra-quests__row[data-state="available"][b-qz4r1y0evk] { --umbra-state: var(--warning); }
.umbra-quests__row[data-state="finished"][b-qz4r1y0evk] { --umbra-state: var(--success); }

.umbra-quests__row:hover[b-qz4r1y0evk] { background: var(--surface-hover); }
.umbra-quests__row[aria-current="true"][b-qz4r1y0evk] { background: var(--surface-selected); }
.umbra-quests__row:focus-visible[b-qz4r1y0evk] { outline: 2px solid var(--accent-ring); outline-offset: -2px; }

/* L'état se lit sans couleur seule : pastille pleine (en cours, terminée), anneau (disponible, non commencée). */
.umbra-quests__dot[b-qz4r1y0evk] {
    width: 10px;
    height: 10px;
    border-radius: var(--radius-circle);
    border: 2px solid var(--umbra-state);
}

.umbra-quests__row[data-state="active"] .umbra-quests__dot[b-qz4r1y0evk],
.umbra-quests__row[data-state="finished"] .umbra-quests__dot[b-qz4r1y0evk] {
    background: var(--umbra-state);
}

.umbra-quests__row-text[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

/* La légende est rendue par un composant enfant : la portée du composant ne l'atteint qu'à travers ::deep. */
.umbra-quests__row-text[b-qz4r1y0evk]  > :last-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-quests__line[b-qz4r1y0evk] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-quests__name[b-qz4r1y0evk] {
    font-weight: 600;
    color: var(--text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ── Détail ── */
.umbra-quests__detail[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    min-width: 0;
    max-height: 75vh;
    overflow: auto;
    padding: var(--space-3);
    border-radius: var(--radius-md);
    background: var(--surface-inset);
}

.umbra-quests__detail-head[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.umbra-quests__detail-name[b-qz4r1y0evk] {
    font-size: var(--font-size-lg);
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-quests__flags[b-qz4r1y0evk] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
}

.umbra-quests__id[b-qz4r1y0evk] {
    font-family: var(--font-family-mono);
    margin-left: var(--space-2);
}

.umbra-quests__steps[b-qz4r1y0evk] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.umbra-quests__step[b-qz4r1y0evk] {
    display: grid;
    grid-template-columns: 20px minmax(0, 1fr);
    gap: var(--space-2);
}

.umbra-quests__step-mark[b-qz4r1y0evk] {
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: var(--radius-circle);
    border: 2px solid var(--border-strong);
    font-size: var(--font-size-xs);
    color: var(--text-muted);
}

.umbra-quests__step[data-status="done"] .umbra-quests__step-mark[b-qz4r1y0evk] {
    border-color: var(--success);
    background: var(--success);
    color: var(--text-inverse);
}

.umbra-quests__step[data-status="current"] .umbra-quests__step-mark[b-qz4r1y0evk] {
    border-color: var(--accent);
    box-shadow: inset 0 0 0 4px var(--accent);
}

.umbra-quests__step[data-status="unknown"] .umbra-quests__step-mark[b-qz4r1y0evk] {
    border-style: dashed;
}

.umbra-quests__step-body[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 0;
}

.umbra-quests__step-name[b-qz4r1y0evk] {
    color: var(--text-secondary);
}

.umbra-quests__step[data-status="current"] .umbra-quests__step-name[b-qz4r1y0evk] {
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-quests__step-desc[b-qz4r1y0evk] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.umbra-quests__objectives[b-qz4r1y0evk] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    font-size: var(--font-size-sm);
}

.umbra-quests__objectives li[b-qz4r1y0evk] {
    display: grid;
    grid-template-columns: 16px minmax(0, 1fr) auto;
    align-items: start;
    gap: var(--space-2);
    color: var(--text-primary);
}

.umbra-quests__objectives li > .umbra-quests__visually-hidden[b-qz4r1y0evk] {
    grid-column: 2;
}

.umbra-quests__objective-mark[b-qz4r1y0evk] {
    display: grid;
    place-items: center;
    width: 16px;
    height: 16px;
    margin-top: 2px;
    border-radius: var(--radius-sm);
    border: 1.5px solid var(--border-strong);
}

.umbra-quests__objectives li[data-status="done"] .umbra-quests__objective-mark[b-qz4r1y0evk] {
    border-color: var(--success);
    background: var(--success);
    color: var(--text-inverse);
}

.umbra-quests__objectives li[data-status="done"][b-qz4r1y0evk] {
    color: var(--text-secondary);
}

.umbra-quests__objectives li[data-status="unrevealed"][b-qz4r1y0evk] {
    color: var(--text-muted);
    font-style: italic;
}

.umbra-quests__objectives li[data-status="unrevealed"] .umbra-quests__objective-mark[b-qz4r1y0evk] {
    border-style: dashed;
    color: var(--text-muted);
}

.umbra-quests__pos[b-qz4r1y0evk] {
    font-family: var(--font-family-mono);
    font-size: var(--font-size-xs);
    color: var(--text-muted);
    white-space: nowrap;
}

.umbra-quests__more[b-qz4r1y0evk] {
    font-size: var(--font-size-xs);
    color: var(--text-muted);
}

.umbra-quests__section[b-qz4r1y0evk] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.umbra-quests__starters[b-qz4r1y0evk] {
    margin: 0;
    padding-left: var(--space-4);
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.umbra-quests__visually-hidden[b-qz4r1y0evk] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

@media (max-width: 1200px) {
    .umbra-quests__body[data-detail="open"][b-qz4r1y0evk] {
        grid-template-columns: minmax(0, 200px) minmax(0, 1fr);
    }
    .umbra-quests__detail[b-qz4r1y0evk] {
        grid-column: 1 / -1;
        max-height: none;
    }
}

@media (max-width: 800px) {
    .umbra-quests__body[b-qz4r1y0evk],
    .umbra-quests__body[data-detail="open"][b-qz4r1y0evk] { grid-template-columns: minmax(0, 1fr); }
}
/* /Components/Account/Shared/AccountCharacterChoice.razor.rz.scp.css */
/* Le choix du serveur et du personnage — maquette validée (« console__opts », colonnes 2 et 3) :
     [ serveur · prévision · (Aside) ]  [ QUEL PERSONNAGE JOUER : cartes · PERSONNAGES CONNUS : cartes ]
   Proportions 1fr / 2fr et écarts de 16 px de la maquette ; ≤ 900 px, tout s'empile.
   Valeurs de la maquette : surtitres 10 px / 700 / .09em, libellé de champ 12 px / 600, cartes 6 × 8 px de marge,
   rayon 4 px, fond au survol, fond d'accent pour la sélection — doublé d'une barre d'accent (jamais le fond seul). */
.umbra-choice[b-b56oczv081] {
    display: grid;
    grid-template-columns: minmax(200px, 1fr) minmax(0, 2fr);
    gap: var(--space-6);
    align-items: start;
    min-width: 0;
}

.umbra-choice__side[b-b56oczv081],
.umbra-choice__main[b-b56oczv081] {
    display: grid;
    gap: var(--space-3);
    align-content: start;
    min-width: 0;
}

.umbra-choice__main[b-b56oczv081] { gap: var(--space-5); }

.umbra-choice__server[b-b56oczv081] { display: grid; gap: var(--space-2); min-width: 0; }

/* Libellés : « Serveur » en libellé de champ (maquette .field__label), les autres en surtitre (maquette .overline). */
.umbra-choice__field-label[b-b56oczv081],
.umbra-choice__server[b-b56oczv081]  .ui-field__label {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-secondary);
}

.umbra-choice__overline[b-b56oczv081],
.umbra-choice[b-b56oczv081]  .umbra-choice__modes > .ui-field__label {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--text-muted);
}

/* Prévision : l'encart de la maquette (.alert, 10 × 12 px, texte 12 px). */
.umbra-choice[b-b56oczv081]  .umbra-choice__verdict {
    margin: 0;
    padding: 10px 12px;
    font-size: var(--font-size-sm);
}

/* ── Politiques : cartes-radios (maquette .radio-list--grid / .radio-item) ──────────────────────────────────── */
.umbra-choice[b-b56oczv081]  .umbra-choice__modes { display: grid; gap: var(--space-3); min-width: 0; }

.umbra-choice[b-b56oczv081]  .umbra-choice__modes > [role="radiogroup"] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--space-4);
}

.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check--radio {
    display: grid;
    grid-template-columns: 18px minmax(0, 1fr);
    align-items: start;
    gap: var(--space-4);
    min-height: 0;
    padding: 6px 8px;
    border-radius: var(--radius-control);
    transition: background-color .12s, box-shadow .12s;
}

.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check--radio:hover { background: var(--surface-hover); }
.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check--radio:has(input:checked) {
    background: var(--accent-soft);
    box-shadow: inset 2px 0 0 var(--border-accent);
}
.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check--radio:has(input:focus-visible) {
    outline: 2px solid var(--focus-ring);
    outline-offset: 1px;
}
.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check--radio:has(input:disabled) { cursor: default; opacity: .72; }
.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check--radio:has(input:disabled):hover { background: transparent; }
.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check--radio:has(input:disabled:checked) { background: var(--accent-soft); }
.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check__box { margin-top: 3px; }
.umbra-choice[b-b56oczv081]  .umbra-choice__modes .ui-check__label { display: grid; gap: 1px; min-width: 0; }

.umbra-choice__mode[b-b56oczv081] {
    display: block;
    font-size: var(--font-size-md);
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-choice__help[b-b56oczv081] {
    display: block;
    font-size: var(--font-size-xs);
    line-height: 1.45;
    color: var(--text-muted);
}

/* ── Personnages connus : le même langage que les cartes de politique ───────────────────────────────────────── */
.umbra-choice__characters[b-b56oczv081] { display: grid; gap: var(--space-3); min-width: 0; }

.umbra-choice__grid[b-b56oczv081] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: var(--space-2) var(--space-4);
}

.umbra-choice__grid[b-b56oczv081]  .umbra-choice__character {
    justify-content: flex-start;
    height: auto;
    min-height: 0;
    padding: 6px 8px;
    border: 0;
    border-radius: var(--radius-control);
    background: transparent;
    box-shadow: none;
    text-align: left;
}

.umbra-choice__grid[b-b56oczv081]  .umbra-choice__character:hover:not(:disabled) { background: var(--surface-hover); }
.umbra-choice__grid[b-b56oczv081]  .umbra-choice__character[aria-pressed="true"] {
    background: var(--accent-soft);
    box-shadow: inset 2px 0 0 var(--border-accent);
}
.umbra-choice__grid[b-b56oczv081]  .umbra-choice__character[data-designated="true"] { box-shadow: inset 2px 0 0 var(--border); }
.umbra-choice__grid[b-b56oczv081]  .umbra-choice__character .ui-button__label { display: block; width: 100%; min-width: 0; }

.umbra-choice__card[b-b56oczv081] {
    display: grid;
    /* 28 px : l'avatar de classe (UmbraClassAvatar, gabarit moyen de UiAvatar). */
    grid-template-columns: 28px minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--space-4);
    min-width: 0;
    white-space: normal;
}

.umbra-choice__who[b-b56oczv081] { display: grid; gap: 1px; min-width: 0; }

.umbra-choice__name[b-b56oczv081] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--font-size-md);
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-choice__sub[b-b56oczv081] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: var(--font-size-xs);
    color: var(--text-muted);
}

.umbra-choice__foot[b-b56oczv081] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
}

/* ≤ 900 px (maquette « w-900 ») : une seule colonne, dans l'ordre de la maquette — serveur, prévision, politique,
   personnages — puis ce que le parent a placé à côté (la synthèse de session). */
@media (max-width: 900px) {
    .umbra-choice[b-b56oczv081] { grid-template-columns: minmax(0, 1fr); gap: var(--space-3); }
    .umbra-choice__side[b-b56oczv081],
    .umbra-choice__main[b-b56oczv081] { display: contents; }
    .umbra-choice__server[b-b56oczv081] { order: 1; }
    .umbra-choice[b-b56oczv081]  .umbra-choice__verdict { order: 2; }
    .umbra-choice[b-b56oczv081]  .umbra-choice__modes { order: 3; margin-top: var(--space-4); }
    .umbra-choice__characters[b-b56oczv081] { order: 4; margin-top: var(--space-4); }
    .umbra-choice__foot[b-b56oczv081] { order: 5; }
    .umbra-choice__aside[b-b56oczv081] { order: 6; margin-top: var(--space-4); }
}
/* /Components/Account/Shared/AccountConnectionSteps.razor.rz.scp.css */
/* Étapes — maquette validée (.steps, .step, .cpanel--inner) :
   groupes sous un surtitre 10 px / 700 / .08em ; une étape par ligne (icône 13 px, 8 px d'écart, 2 px de marge) ;
   « Avant la connexion » en sous-panneau : cadre 1 px, rayon 6 px, en-tête de 26 px (titre … n/N), séparateur, corps
   4 × 6 px. */
.umbra-steps[b-m2yy3y5m5i] {
    display: grid;
    gap: 2px;
    font-size: var(--font-size-sm);
}

.umbra-steps__group[b-m2yy3y5m5i] { display: grid; gap: 2px; }
.umbra-steps__group + .umbra-steps__group[b-m2yy3y5m5i] { margin-top: var(--space-4); }

.umbra-steps__head[b-m2yy3y5m5i] {
    display: flex;
    align-items: center;
    gap: var(--space-4);
}

.umbra-steps__title[b-m2yy3y5m5i] {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--text-muted);
}

.umbra-steps__group--boxed[b-m2yy3y5m5i] {
    gap: 0;
    margin-top: var(--space-4);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    overflow: hidden;
}

.umbra-steps__group--boxed > .umbra-steps__head[b-m2yy3y5m5i] {
    min-height: 26px;
    padding: 2px 6px 2px 8px;
    border-bottom: 1px solid var(--separator);
}

.umbra-steps__group--boxed > .umbra-steps__list[b-m2yy3y5m5i] { padding: 4px 6px 6px 8px; }

.umbra-steps__count[b-m2yy3y5m5i] {
    margin-left: auto;
    font-size: var(--font-size-xs);
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
}

.umbra-steps__list[b-m2yy3y5m5i] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0;
}

/* 8 px entre l'icône et le nom (4 d'écart + 4 de marge), 4 px seulement entre le nom et son détail. */
.umbra-steps__step[b-m2yy3y5m5i] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: var(--space-2);
    padding: 2px 0;
    line-height: 1.5;
}

.umbra-steps__mark[b-m2yy3y5m5i] {
    flex: 0 0 13px;
    margin-right: var(--space-2);
    display: inline-grid;
    place-items: center;
    align-self: center;
    font-size: 13px;
}

.umbra-steps__name[b-m2yy3y5m5i] { color: var(--text-muted); }

.umbra-steps__step[data-state="done"] .umbra-steps__name[b-m2yy3y5m5i] { color: var(--text-secondary); }
.umbra-steps__step[data-state="current"] .umbra-steps__name[b-m2yy3y5m5i] { color: var(--text-primary); font-weight: 600; }
.umbra-steps__step[data-state="failed"] .umbra-steps__name[b-m2yy3y5m5i] { color: var(--danger-text); font-weight: 600; }

/* Le détail suit le nom sur la même ligne (maquette : « Contrôle de sortie 203.0.113.24 », même police, même ton) ;
   un détail d'erreur ou d'étape en cours garde sa couleur. */
.umbra-steps[b-m2yy3y5m5i]  .umbra-steps__note,
.umbra-steps[b-m2yy3y5m5i]  .umbra-steps__detail {
    font-size: inherit;
    overflow-wrap: anywhere;
}

.umbra-steps[b-m2yy3y5m5i]  .umbra-steps__note { color: inherit; }
/* /Components/Account/Shared/AccountHeader.razor.rz.scp.css */
/* L'en-tête sur trois lignes (maquette) : chaque ligne porte un bloc de lecture à gauche et ses commandes à droite,
   et se replie proprement sur un écran étroit. */
.umbra-account-header[b-0egx8ia3sx] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4) var(--space-2);
    border-bottom: 1px solid var(--separator);
    flex: none;
}

.umbra-account-header__row[b-0egx8ia3sx] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2) var(--space-5);
    min-width: 0;
}

.umbra-account-header__lead[b-0egx8ia3sx] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-account-header__actions[b-0egx8ia3sx] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: var(--space-1);
    margin-left: auto;
}

.umbra-account-header__caption[b-0egx8ia3sx] {
    font-weight: 600;
    white-space: nowrap;
}

.umbra-account-header__level[b-0egx8ia3sx] {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    min-width: 2ch;
}

.umbra-account-header[b-0egx8ia3sx]  .umbra-account-header__xp {
    width: 100px;
    flex: none;
}

.umbra-account-header[b-0egx8ia3sx]  .umbra-account-header__frames {
    font-family: var(--font-family-mono);
    margin-left: auto;
}
/* /Components/Account/Shared/AccountModuleTabs.razor.rz.scp.css */
/* Les onglets du module occupent la zone de contenu ; la page routée est leur panneau. */
.umbra-account-tabs[b-4wdtv9ncft] {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    padding-top: var(--space-2);
}

.umbra-account-tabs[b-4wdtv9ncft]  .umbra-account-tabs__reason {
    padding: var(--space-1) var(--space-4) 0;
}
/* /Components/Account/Shared/AccountRail.razor.rz.scp.css */
/* Le rail tient toute la hauteur de l'espace de compte. */
.umbra-account-rail[b-hk67nzxrlb] {
    display: flex;
    min-height: 0;
}

/* P-01 : un module inerte hors jeu reste visible, DÉSACTIVÉ — il attend quelque chose, il ne manque pas. La couleur de
   désactivation du thème (celle des boutons désactivés), atténuée : au repos, les icônes du rail sont déjà discrètes,
   et le token seul ne s'en distinguait presque pas. Le survol ne l'allume plus : il ne doit pas passer pour un lien. Le
   clic, lui, dit toujours la raison (toast). */
.umbra-account-rail[b-hk67nzxrlb]  .umbra-account-rail__inert,
.umbra-account-rail[b-hk67nzxrlb]  .umbra-account-rail__inert:hover {
    color: var(--text-disabled);
    background: transparent;
    opacity: .6;
    cursor: not-allowed;
}

/* ≤ 900 px : Product.Ui masque .ui-rail (la barre latérale y devient un tiroir). Le rail des modules du compte, lui,
   RESTE (maquette : « rail conservé ») — sans lui, aucun module n'est atteignable. Il passe en bande horizontale au-dessus
   du contenu ; l'indicateur du module courant passe sous l'icône, l'infobulle dessous. */
@media (max-width: 900px) {
    .umbra-account-rail[b-hk67nzxrlb] {
        min-height: auto;
    }

    .umbra-account-rail[b-hk67nzxrlb]  .ui-rail {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        width: 100%;
        flex: none;
        gap: var(--space-2);
        padding: var(--space-2) var(--space-3);
        border-inline-end: none;
        border-bottom: 1px solid var(--separator);
    }

    .umbra-account-rail[b-hk67nzxrlb]  .ui-rail__item[aria-current="true"]::before {
        inset-inline-start: 5px;
        inset-inline-end: 5px;
        top: auto;
        bottom: -6px;
        width: auto;
        height: 2px;
    }

    .umbra-account-rail[b-hk67nzxrlb]  .ui-rail__item.ui-tip::after {
        inset-inline-start: 50%;
        inset-inline-end: auto;
        top: calc(100% + 8px);
        bottom: auto;
        transform: translateX(-50%) translateY(-3px);
    }

    .umbra-account-rail[b-hk67nzxrlb]  .ui-rail__item.ui-tip:hover::after,
    .umbra-account-rail[b-hk67nzxrlb]  .ui-rail__item.ui-tip:focus-visible::after {
        transform: translateX(-50%) translateY(0);
    }
}
/* /Components/Account/Shared/AccountSessionFacts.razor.rz.scp.css */
/* Fiche de synthèse : même langage que l'encart de prévision au-dessus (cadre 1 px, rayon 6 px) — une ligne par fait,
   libellé discret à gauche, valeur à droite, séparateur fin. */
.umbra-session-facts[b-rlr77es2w2] {
    display: grid;
    gap: var(--space-3);
    margin-top: var(--space-2);
    min-width: 0;
}

.umbra-session-facts[b-rlr77es2w2]  .ui-overline {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .09em;
    color: var(--text-muted);
}

.umbra-session-facts__sheet[b-rlr77es2w2] {
    display: grid;
    padding: 0 10px;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    background: var(--surface-inset);
}

.umbra-session-facts__sheet[b-rlr77es2w2]  .ui-meta { gap: 0; }

.umbra-session-facts__sheet[b-rlr77es2w2]  .ui-meta__item {
    flex-direction: row;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--space-5);
    padding: 4px 0;
    border-bottom: 1px solid var(--separator);
}

.umbra-session-facts__sheet[b-rlr77es2w2]  .ui-meta__item:last-child { border-bottom: 0; }
.umbra-session-facts__sheet[b-rlr77es2w2]  .ui-meta__key { flex: none; font-size: var(--font-size-sm); color: var(--text-muted); }

.umbra-session-facts__sheet[b-rlr77es2w2]  .ui-meta__val {
    min-width: 0;
    text-align: right;
    font-size: var(--font-size-sm);
    color: var(--text-primary);
}

.umbra-session-facts__mono[b-rlr77es2w2] { font-family: var(--font-family-mono); font-size: var(--font-size-xs); }

.umbra-session-facts__machine[b-rlr77es2w2] {
    display: grid;
    gap: 4px;
    padding: 6px 0;
    border-top: 1px solid var(--separator);
}

.umbra-session-facts__machine-key[b-rlr77es2w2] { font-size: var(--font-size-sm); color: var(--text-muted); }
.umbra-session-facts__machine[b-rlr77es2w2]  code { justify-self: start; max-width: 100%; overflow-wrap: anywhere; }
/* /Components/Account/Shared/AccountVitalsBar.razor.rz.scp.css */
/* Le pied de l'espace de compte (maquette) : trois jauges qui se partagent la ligne, puis kamas et position. */
.umbra-account-vitals[b-xglz93buua] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2) var(--space-5);
    padding: var(--space-2) var(--space-4);
    flex: none;
    border-top: 1px solid var(--separator);
}

.umbra-account-vitals__vital[b-xglz93buua] {
    flex: 1 1 200px;
    min-width: 0;
}

.umbra-account-vitals__fact[b-xglz93buua] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    white-space: nowrap;
}

.umbra-account-vitals__key[b-xglz93buua] {
    font-weight: 600;
}
/* /Components/Account/Shared/UmbraAssetIcon.razor.rz.scp.css */
/* Géométrie de l'icône de jeu : elle remplit la case de son parent, l'initiale et l'image s'y superposent. */
.umbra-asset-icon[b-avl1tcyplx] {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    border-radius: inherit;
    overflow: hidden;
}

.umbra-asset-icon__initial[b-avl1tcyplx] {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    font-weight: 600;
    color: var(--text-muted);
}

.umbra-asset-icon__image[b-avl1tcyplx] {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}
/* /Components/Account/Shared/UmbraCharacterRender.razor.rz.scp.css */
/* Le personnage rendu (carré de 256 px) : il occupe le centre du paperdoll sans en élargir la colonne. */
.umbra-character-render[b-a4tyu6salg] {
    display: block;
    width: min(100%, 220px);
    aspect-ratio: 1;
    object-fit: contain;
    user-select: none;
}
/* /Components/Account/Shared/UmbraClassAvatar.razor.rz.scp.css */
/* Gabarit de UiAvatar (.ui-avatar : 28 px, xs 18, lg 40, xl 56 ; fond enfoncé, rayon sm ou cercle) : l'emblème prend
   la place des initiales sans déplacer la ligne. */
.umbra-class-avatar[b-vdc10uy5w7] {
    display: inline-block;
    flex: none;
    box-sizing: border-box;
    width: 28px;
    height: 28px;
    padding: 3px;
    border-radius: var(--radius-sm);
    background: var(--surface-inset);
    vertical-align: middle;
}

.umbra-class-avatar--xs[b-vdc10uy5w7] { width: 18px; height: 18px; padding: 2px; }
.umbra-class-avatar--lg[b-vdc10uy5w7] { width: 40px; height: 40px; padding: 4px; }
.umbra-class-avatar--xl[b-vdc10uy5w7] { width: 56px; height: 56px; padding: 6px; }

.umbra-class-avatar[data-circle="true"][b-vdc10uy5w7] { border-radius: 50%; }

/* Les emblèmes remplissent leur carré jusqu'aux coins (la pelle de l'Enutrof) : le disque reste un fond, il ne rogne
   pas l'image. */
.umbra-class-avatar[b-vdc10uy5w7]  .umbra-asset-icon { border-radius: 0; }

/* Le chef de groupe : un liseré d'accent, l'emblème garde ses couleurs (le fond plein de .ui-avatar--accent l'écraserait). */
.umbra-class-avatar[data-accent="true"][b-vdc10uy5w7] { box-shadow: inset 0 0 0 2px var(--accent); }
/* /Components/Account/Shared/UmbraConsoleLog.razor.rz.scp.css */
/* Géométrie de la console : colonne d'heure, colonne de niveau figée (quatre caractères, legacy), message qui passe
   à la ligne ; les niveaux que le design system ne colore pas prennent une teinte de ses jetons. */
.umbra-console[b-0f4trxn2bg] {
    flex: 1;
    min-height: 160px;
    max-height: none;
    overflow: auto;
    border-radius: 0;
}

.umbra-console__line[b-0f4trxn2bg] {
    align-items: baseline;
}

.umbra-console__level[b-0f4trxn2bg] {
    flex: none;
    width: 4.5ch;
    font-weight: 600;
}

.umbra-console__message[b-0f4trxn2bg] {
    min-width: 0;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.umbra-console__context[b-0f4trxn2bg] {
    display: block;
    color: var(--text-muted);
}

.umbra-console__empty[b-0f4trxn2bg] {
    padding: var(--space-6) 0;
    text-align: center;
    color: var(--text-muted);
}

.umbra-console__line[data-kind="lua"][b-0f4trxn2bg] { color: var(--info-text); }
.umbra-console__line[data-kind="cmd"][b-0f4trxn2bg] { color: var(--text-accent); }
.umbra-console__line[data-kind="chat"][b-0f4trxn2bg] { color: var(--text-primary); }
.umbra-console__line[data-kind="pnj"][b-0f4trxn2bg] { color: var(--log-npc-text); }
.umbra-console__line[data-kind="rep"][b-0f4trxn2bg] { color: var(--log-reply-text); }
.umbra-console__line[data-kind="mouv"][b-0f4trxn2bg],
.umbra-console__line[data-kind="comb"][b-0f4trxn2bg] { color: var(--text-muted); }
/* /Components/Account/Shared/UmbraItemCard.razor.rz.scp.css */
/* La fiche d'un objet : vignette, nom, effets colorés par leur signe. */
.umbra-item-card[b-r2d0u75zsa] {
    display: grid;
    gap: var(--space-2);
}

.umbra-item-card__head[b-r2d0u75zsa] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
}

.umbra-item-card__icon[b-r2d0u75zsa] {
    width: 40px;
    height: 40px;
    flex: none;
    border-radius: var(--radius-sm);
    background: var(--surface-inset);
}

.umbra-item-card__title[b-r2d0u75zsa] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.umbra-item-card__name[b-r2d0u75zsa] {
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-item-card__effects[b-r2d0u75zsa] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 2px;
    font-size: var(--font-size-sm);
}

.umbra-item-card__effects li[data-sign="plus"][b-r2d0u75zsa] { color: var(--success-text); }
.umbra-item-card__effects li[data-sign="moins"][b-r2d0u75zsa] { color: var(--danger-text); }
.umbra-item-card__effects li[data-sign="neutre"][b-r2d0u75zsa] { color: var(--text-secondary); }

.umbra-item-card__ids[b-r2d0u75zsa] {
    font-family: var(--font-family-mono);
}
/* /Components/Account/Shared/UmbraPaperdoll.razor.rz.scp.css */
/* Géométrie du paperdoll (maquette) : 60 px par case, deux colonnes encadrant le buste, les six Dofus dessous. */
.umbra-paperdoll[b-33b6vuejbb] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-5);
}

.umbra-paperdoll__doll[b-33b6vuejbb] {
    display: grid;
    grid-template-columns: 60px minmax(120px, 1fr) 60px;
    gap: var(--space-3);
    align-items: center;
    width: 100%;
    max-width: 520px;
}

.umbra-paperdoll__col[b-33b6vuejbb] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.umbra-paperdoll__bust[b-33b6vuejbb] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-paperdoll__name[b-33b6vuejbb] {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}

.umbra-paperdoll__dofus[b-33b6vuejbb] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--space-3);
}

.umbra-paperdoll[b-33b6vuejbb]  .umbra-slot {
    position: relative;
    width: 60px;
    height: 60px;
    display: grid;
    place-items: center;
    border: 1px solid var(--border);
    background: var(--surface);
    color: var(--icon-muted);
    cursor: default;
}

.umbra-paperdoll[b-33b6vuejbb]  .umbra-slot[data-target="true"] {
    border-color: var(--border-accent);
    background: var(--accent-soft);
}

.umbra-paperdoll[b-33b6vuejbb]  .umbra-slot:focus-visible {
    outline: 2px solid var(--accent-ring);
    outline-offset: 1px;
}

.umbra-paperdoll[b-33b6vuejbb]  .umbra-slot__empty {
    font-size: var(--font-size-2xs);
    text-align: center;
    padding: 2px;
    line-height: 1.1;
}

.umbra-paperdoll[b-33b6vuejbb]  .umbra-slot__qty {
    position: absolute;
    top: 2px;
    right: 3px;
    font-size: var(--font-size-2xs);
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-paperdoll[b-33b6vuejbb]  .umbra-slot__deduced {
    position: absolute;
    bottom: 1px;
    left: 3px;
    font-size: var(--font-size-2xs);
    color: var(--warning-text);
}
/* /Components/Account/Shared/UmbraTechnicalLog.razor.rz.scp.css */
/* Même géométrie que la console (UmbraConsoleLog.razor.css) ; heure au millième, libellé sur cinq caractères
   (RECV, SEND, TRACE), nom du message en clair puis son détail discret sur la même ligne. */
.umbra-console[b-miujb9aund] {
    flex: 1;
    min-height: 160px;
    max-height: none;
    overflow: auto;
    border-radius: 0;
}

.umbra-console__line[b-miujb9aund] {
    align-items: baseline;
}

.umbra-console__level[b-miujb9aund] {
    flex: none;
    width: 5.5ch;
    font-weight: 600;
}

.umbra-console__message[b-miujb9aund] {
    min-width: 0;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.umbra-console__title[b-miujb9aund] {
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-console__detail[b-miujb9aund] {
    margin-left: var(--space-2);
    color: var(--text-muted);
}

.umbra-console__empty[b-miujb9aund] {
    padding: var(--space-6) 0;
    text-align: center;
    color: var(--text-muted);
}

.umbra-console__line[data-kind="cmd"] .umbra-console__level[b-miujb9aund] { color: var(--text-accent); }
.umbra-console__line[data-kind="mouv"] .umbra-console__level[b-miujb9aund] { color: var(--success-text); }
.umbra-console__line[data-kind="lua"] .umbra-console__level[b-miujb9aund] { color: var(--info-text); }
/* /Components/Account/Succes.razor.rz.scp.css */
/* Les succès (legacy) : les catégories du jeu à gauche, teintées de la couleur que le client leur donne ; la liste
   virtualisée à droite (cartes de 86 px). */
.umbra-achievements[b-t6f8peglve] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding: var(--space-3);
    min-height: 0;
    flex: 1;
}

.umbra-achievements__head[b-t6f8peglve] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-3);
}

.umbra-achievements[b-t6f8peglve]  .umbra-achievements__gauge {
    width: 160px;
}

.umbra-achievements__counter[b-t6f8peglve] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
}

.umbra-achievements__figure[b-t6f8peglve] {
    font-size: var(--font-size-lg);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.umbra-achievements__of[b-t6f8peglve] {
    font-size: var(--font-size-xs);
    color: var(--text-muted);
    font-weight: 400;
}

.umbra-achievements__body[b-t6f8peglve] {
    flex: 1;
    display: grid;
    grid-template-columns: minmax(0, 240px) minmax(0, 1fr);
    gap: var(--space-3);
    min-height: 0;
}

.umbra-achievements__rail[b-t6f8peglve] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    overflow: auto;
    min-height: 0;
    max-height: 70vh;
}

.umbra-achievements__cat[b-t6f8peglve],
.umbra-achievements__sub[b-t6f8peglve] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 2px var(--space-2);
    align-items: center;
    text-align: left;
    padding: var(--space-1) var(--space-2);
    border: 0;
    border-left: 3px solid var(--umbra-tint);
    background: transparent;
    color: var(--text-secondary);
    font: inherit;
    font-size: var(--font-size-sm);
    cursor: pointer;
}

.umbra-achievements__sub[b-t6f8peglve] {
    margin-left: var(--space-4);
}

.umbra-achievements__cat > :last-child[b-t6f8peglve] {
    grid-column: 1 / -1;
}

.umbra-achievements__cat:hover[b-t6f8peglve],
.umbra-achievements__sub:hover[b-t6f8peglve] { background: var(--surface-hover); }

.umbra-achievements__cat[aria-current="true"][b-t6f8peglve],
.umbra-achievements__sub[aria-current="true"][b-t6f8peglve] {
    background: var(--surface-selected);
    color: var(--text-primary);
}

.umbra-achievements__cat:focus-visible[b-t6f8peglve],
.umbra-achievements__sub:focus-visible[b-t6f8peglve] { outline: 2px solid var(--accent-ring); outline-offset: -2px; }

.umbra-achievements__cat-name[b-t6f8peglve] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-achievements__cat-count[b-t6f8peglve] {
    font-variant-numeric: tabular-nums;
}

.umbra-achievements__list[b-t6f8peglve] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-width: 0;
    min-height: 0;
}

.umbra-achievements__filters[b-t6f8peglve] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
}

.umbra-achievements__scroll[b-t6f8peglve] {
    flex: 1;
    min-height: 240px;
    max-height: 70vh;
    overflow: auto;
}

.umbra-achievements__card[b-t6f8peglve] {
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    gap: var(--space-3);
    min-height: 86px;
    padding: var(--space-2);
    border-left: 3px solid var(--umbra-tint);
    border-bottom: 1px solid var(--separator);
}

/* « À faire » se distingue sans opacité (le texte garde son contraste AA) : bordure pointillée, image désaturée. */
.umbra-achievements__card[data-state="todo"][b-t6f8peglve] {
    border-left-style: dashed;
}

.umbra-achievements__card[data-state="todo"] .umbra-achievements__icon[b-t6f8peglve]  img {
    filter: grayscale(1);
}

.umbra-achievements__icon[b-t6f8peglve] {
    position: relative;
    width: 52px;
    height: 52px;
    border-radius: var(--radius-sm);
    background: var(--surface-inset);
}

.umbra-achievements__check[b-t6f8peglve] {
    position: absolute;
    right: -4px;
    bottom: -4px;
    display: grid;
    place-items: center;
    width: 18px;
    height: 18px;
    border-radius: var(--radius-circle);
    background: var(--success);
    color: var(--text-inverse);
}

.umbra-achievements__text[b-t6f8peglve] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.umbra-achievements__line[b-t6f8peglve] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
}

.umbra-achievements__name[b-t6f8peglve] {
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-achievements__id[b-t6f8peglve] {
    font-family: var(--font-family-mono);
    margin-left: var(--space-2);
}

.umbra-achievements__desc[b-t6f8peglve] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-achievements__objectives[b-t6f8peglve] {
    font-size: var(--font-size-xs);
    color: var(--text-muted);
}

@media (max-width: 800px) {
    .umbra-achievements__body[b-t6f8peglve] { grid-template-columns: minmax(0, 1fr); }
}
/* /Components/Admin/Probe.razor.rz.scp.css */
/* axe link-in-text-block : un lien au fil d'un texte ne se distingue pas que par sa couleur. */
.umbra-text-links[b-4bi5sp5w12]  a { text-decoration: underline; text-underline-offset: 0.15em; }
/* /Components/Admin/ProtocolWorkbenchPanel.razor.rz.scp.css */
/* Atelier : file des causes à gauche, détail à droite (géométrie métier). */
.umbra-workbench[b-06d1mfw0sl] { display: grid; grid-template-columns: minmax(240px, 340px) minmax(0, 1fr); gap: var(--space-5); align-items: start; }
.umbra-workbench__queue[b-06d1mfw0sl] { max-height: 70vh; overflow: auto; }
.umbra-workbench__detail[b-06d1mfw0sl] { min-width: 0; }
@media (max-width: 1000px) { .umbra-workbench[b-06d1mfw0sl] { grid-template-columns: 1fr; } .umbra-workbench__queue[b-06d1mfw0sl] { max-height: none; } }
/* /Components/Auth/Login.razor.rz.scp.css */
/* axe link-in-text-block : un lien au fil d'un texte ne se distingue pas que par sa couleur. Les boutons-liens gardent
   leur apparence de bouton. */
.umbra-auth-page[b-vn1s4x9h2q]  a:not(.ui-button) { text-decoration: underline; text-underline-offset: 0.15em; }
/* /Components/Auth/Mfa.razor.rz.scp.css */
/* axe link-in-text-block : un lien au fil d'un texte ne se distingue pas que par sa couleur. Les boutons-liens gardent
   leur apparence de bouton. */
.umbra-auth-page[b-a5rm2u130k]  a:not(.ui-button) { text-decoration: underline; text-underline-offset: 0.15em; }
/* /Components/Auth/Register.razor.rz.scp.css */
/* axe link-in-text-block : un lien au fil d'un texte ne se distingue pas que par sa couleur. Les boutons-liens gardent
   leur apparence de bouton. */
.umbra-auth-page[b-36p5smtt62]  a:not(.ui-button) { text-decoration: underline; text-underline-offset: 0.15em; }
/* /Components/Game/Carte.razor.rz.scp.css */
/*
    La page Carte : géométrie de la zone de jeu (plateau, croix des voisins, volets, plein écran).
    ⭐ La TAILLE DU PLATEAU est la caractéristique principale de la page : plafonnée sur la hauteur de la fenêtre,
       elle grandit en combat et en plein écran.
*/
.umbra-carte[b-9psyhpmof4] {
    --umbra-plateau: min(74vh, 760px);
    --umbra-cbt-haut: min(82vh, 980px);
    display: block;
    min-width: 0;
    outline: none;
}

.umbra-carte[data-mode="combat"][b-9psyhpmof4] { --umbra-plateau: min(80vh, 920px); }
.umbra-carte:focus-visible[b-9psyhpmof4] { outline: 1px solid var(--accent-ring, var(--accent)); outline-offset: 4px; }

/* Le plein écran : la zone de jeu couvre l'écran, le reste s'efface. */
.umbra-carte[data-fullscreen][b-9psyhpmof4] {
    --umbra-plateau: min(88vh, 1180px);
    --umbra-cbt-haut: min(90vh, 1240px);
    position: fixed;
    inset: 0;
    z-index: 60;
    overflow: auto;
    padding: var(--space-5);
    background: var(--background);
}

.umbra-carte__layout[b-9psyhpmof4] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: var(--space-5);
    align-items: start;
}

.umbra-carte[data-fullscreen] .umbra-carte__layout[b-9psyhpmof4] { grid-template-columns: minmax(0, 1fr); }

.umbra-carte__main[b-9psyhpmof4] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    min-width: 0;
    padding: var(--space-5);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    background: var(--surface);
}

.umbra-carte__head[b-9psyhpmof4] { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
.umbra-carte__title[b-9psyhpmof4] { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.umbra-carte__pending[b-9psyhpmof4] { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-4) 0; }

/* ⭐ Les flèches sont AUTOUR du plateau, à la place qu'elles désignent. Un voisin absent reste en place, grisé :
      le retirer ferait sauter la carte d'un côté à l'autre à chaque franchissement. */
.umbra-carte__cross[b-9psyhpmof4] {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    grid-template-rows: auto minmax(0, 1fr) auto;
    align-items: center;
    justify-items: center;
    gap: var(--space-4);
}

.umbra-carte__arrow[data-edge="Top"][b-9psyhpmof4] { grid-column: 2; grid-row: 1; }
.umbra-carte__arrow[data-edge="Bottom"][b-9psyhpmof4] { grid-column: 2; grid-row: 3; }
.umbra-carte__arrow[data-edge="Left"][b-9psyhpmof4] { grid-column: 1; grid-row: 2; }
.umbra-carte__arrow[data-edge="Right"][b-9psyhpmof4] { grid-column: 3; grid-row: 2; }

.umbra-carte__canvas[b-9psyhpmof4] {
    position: relative;
    grid-column: 2;
    grid-row: 2;
    width: 100%;
    min-width: 0;
}

.umbra-carte__loading[b-9psyhpmof4] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    pointer-events: none;
}

/* Le dialogue et le zaap se posent PAR-DESSUS la carte, là où le client les met. */
.umbra-carte__overlay[b-9psyhpmof4] {
    position: absolute;
    left: 50%;
    bottom: var(--space-5);
    z-index: 5;
    width: min(620px, calc(100% - 24px));
    transform: translateX(-50%);
    box-shadow: var(--shadow-lg, 0 18px 48px rgba(0, 0, 0, .55));
}

.umbra-carte__status[b-9psyhpmof4] { min-height: 18px; font-size: var(--font-size-sm); color: var(--text-secondary); }

.umbra-carte__side[b-9psyhpmof4] {
    min-width: 0;
    padding: var(--space-4);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    background: var(--surface);
}

.umbra-carte__volet[b-9psyhpmof4] { display: flex; flex-direction: column; gap: var(--space-4); padding-top: var(--space-4); }
.umbra-carte__tools[b-9psyhpmof4] { display: flex; align-items: center; gap: var(--space-4); min-height: 20px; }
.umbra-carte__group[b-9psyhpmof4] { display: flex; flex-direction: column; gap: var(--space-2); padding-bottom: var(--space-4); border-bottom: 1px solid var(--separator); }
.umbra-carte__group:last-child[b-9psyhpmof4] { border-bottom: 0; padding-bottom: 0; }
.umbra-carte__info-row[b-9psyhpmof4] { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); }
.umbra-carte__id[b-9psyhpmof4] { font-family: var(--font-family-mono, ui-monospace, monospace); color: var(--text-primary); }
.umbra-carte__elements[b-9psyhpmof4] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); max-height: 52vh; overflow-y: auto; }
.umbra-carte__element[b-9psyhpmof4] { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3) 0; border-bottom: 1px solid var(--separator); }
.umbra-carte__element-name[b-9psyhpmof4] { display: flex; align-items: baseline; gap: var(--space-3); flex-wrap: wrap; }
.umbra-carte__element-actions[b-9psyhpmof4] { display: flex; gap: var(--space-2); flex-wrap: wrap; }

.umbra-carte__menu-detail[b-9psyhpmof4] { margin-left: auto; padding-left: var(--space-5); color: var(--text-muted); font-size: 10.5px; }
.umbra-carte__menu-reason[b-9psyhpmof4] { padding-left: var(--space-3); color: var(--text-muted); font-size: 10.5px; }

@media (max-width: 1100px) {
    .umbra-carte__layout[b-9psyhpmof4] { grid-template-columns: minmax(0, 1fr); }
}

/* Écran étroit : les quatre flèches passent en une rangée AU-DESSUS du plateau, qui prend toute la largeur (sur les
   côtés, « Gauche » et « Droite » lui volaient près d'un tiers de la place). L'ordre reste celui des bords. */
@media (max-width: 640px) {
    .umbra-carte__main[b-9psyhpmof4] { padding: var(--space-4); }
    .umbra-carte__cross[b-9psyhpmof4] { grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-rows: auto auto; gap: var(--space-3); }
    .umbra-carte__arrow[data-edge="Left"][b-9psyhpmof4] { grid-column: 1; grid-row: 1; }
    .umbra-carte__arrow[data-edge="Top"][b-9psyhpmof4] { grid-column: 2; grid-row: 1; }
    .umbra-carte__arrow[data-edge="Bottom"][b-9psyhpmof4] { grid-column: 3; grid-row: 1; }
    .umbra-carte__arrow[data-edge="Right"][b-9psyhpmof4] { grid-column: 4; grid-row: 1; }
    .umbra-carte__canvas[b-9psyhpmof4] { grid-column: 1 / -1; grid-row: 2; }
}
/* /Components/Game/UmbraCombatPreview.razor.rz.scp.css */
/* L'aperçu de simulation : un bloc borné en hauteur qui défile seul, sous les sorts. */
.umbra-preview[b-jd22z1h9ct] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-4) var(--space-5);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card, 8px);
    background: var(--surface-inset);
    font-size: var(--font-size-sm, 12px);
    max-height: 170px;
    overflow-y: auto;
    overflow-wrap: anywhere;
    overscroll-behavior: contain;
}

.umbra-preview__head[b-jd22z1h9ct] { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; }
.umbra-preview__lines[b-jd22z1h9ct] { display: flex; flex-wrap: wrap; gap: 5px 18px; margin: 0; }
.umbra-preview__line[b-jd22z1h9ct] { display: flex; flex-wrap: wrap; gap: 5px; }
.umbra-preview__line dt[b-jd22z1h9ct] { color: var(--text-secondary); }
.umbra-preview__line dd[b-jd22z1h9ct] { margin: 0; font-variant-numeric: tabular-nums; }
.umbra-preview__targets[b-jd22z1h9ct] { display: flex; flex-wrap: wrap; gap: 5px 18px; }
.umbra-preview__target[b-jd22z1h9ct] { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 9px; }
/* /Components/Game/UmbraCombatScreen.razor.rz.scp.css */
/*
    L'écran de combat : géométrie (plateau à gauche, panneau de 352 px à droite, 300 px sous 1280 px) et couleurs
    d'INFORMATION fixes (PV rouge, PA bleu, PM vert, tour ambre). L'ambiance (--umbra-cbt-*) ne repeint que le décor.
    ⭐ Une HAUTEUR RÉELLE (--umbra-cbt-haut, fournie par la page) : sans elle, le panneau ne défile plus et pousse
       la page, et l'ordre d'initiative sort du champ de vision.
*/
.umbra-cbt[b-3q3amy0wil] {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr);
    min-height: 0;
    height: var(--umbra-cbt-haut, min(82vh, 980px));
    font-size: 13px;
    background: var(--umbra-cbt-page, var(--background));
    color: var(--text-primary);
    border: 1px solid var(--umbra-cbt-line, var(--border-subtle));
    border-radius: var(--radius-card);
    overflow: hidden;
}

.umbra-cbt__head[b-3q3amy0wil] {
    display: flex;
    align-items: center;
    gap: var(--space-6);
    padding: var(--space-4) var(--space-7);
    border-bottom: 1px solid var(--umbra-cbt-line, var(--separator));
    background: var(--umbra-cbt-header, var(--background-secondary));
}

.umbra-cbt__where[b-3q3amy0wil] { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; }
.umbra-cbt__place[b-3q3amy0wil] { font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.umbra-cbt__spacer[b-3q3amy0wil] { margin-left: auto; }

.umbra-cbt__body[b-3q3amy0wil] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 352px;
    min-height: 0;
}

/* ══ PLATEAU ═══════════════════════════════════════════════════════════════════ */
.umbra-cbt__board[b-3q3amy0wil] {
    position: relative;
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    min-height: 0;
    background: var(--umbra-cbt-board, var(--surface-inset));
}

.umbra-cbt__timeline-band[b-3q3amy0wil] { display: flex; justify-content: center; padding: var(--space-5) var(--space-6) 0; min-width: 0; }

.umbra-cbt__timeline[b-3q3amy0wil] {
    display: flex;
    align-items: stretch;
    gap: var(--space-3);
    padding: var(--space-3);
    border-radius: 12px;
    background: color-mix(in srgb, var(--surface) 85%, transparent);
    border: 1px solid var(--border-subtle);
    max-width: 100%;
    overflow-x: auto;
}

.umbra-cbt__tl[b-3q3amy0wil] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    width: 84px;
    padding: 6px 6px 5px;
    border-radius: 9px;
    border: 1px solid var(--border-subtle);
    background: transparent;
    color: var(--text-primary);
    font: inherit;
    cursor: pointer;
    transition: transform .15s, border-color .15s;
}

.umbra-cbt__tl:hover[b-3q3amy0wil], .umbra-cbt__tl:focus-visible[b-3q3amy0wil] { border-color: var(--border-strong); }
.umbra-cbt__tl:focus-visible[b-3q3amy0wil] { outline: 2px solid var(--accent-ring, var(--accent)); outline-offset: 1px; }
/* Celui qui joue est soulevé ET encadré d'ambre : deux signaux. */
.umbra-cbt__tl[data-turn][b-3q3amy0wil] { border-color: #ffd76a99; background: #ffd76a14; transform: translateY(-2px); }
.umbra-cbt__tl[data-dead][b-3q3amy0wil] { opacity: .4; cursor: default; }
.umbra-cbt__tl[data-dead] .umbra-cbt__tl-name[b-3q3amy0wil], .umbra-cbt__tl[data-dead] .umbra-cbt__tl-token[b-3q3amy0wil] { text-decoration: line-through; }
.umbra-cbt__tl-rank[b-3q3amy0wil] { position: absolute; top: 3px; left: 5px; font-family: var(--font-family-mono); font-size: 9.5px; color: var(--text-muted); }

.umbra-cbt__tl-token[b-3q3amy0wil] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    margin-top: 4px;
    border: 2px solid currentColor;
    color: #fff;
    font-size: 14px;
    font-weight: 700;
}

.umbra-cbt__tl[data-role="moi"] .umbra-cbt__tl-token[b-3q3amy0wil] { background: #2a5c8f; border-color: #4da3ff; }
.umbra-cbt__tl[data-role="allie"] .umbra-cbt__tl-token[b-3q3amy0wil] { background: #245f45; border-color: #7ad4a0; }
.umbra-cbt__tl[data-role="ennemi"] .umbra-cbt__tl-token[b-3q3amy0wil] { background: #4a1917; border-color: #e2544f; }
.umbra-cbt__tl[data-dead] .umbra-cbt__tl-token[b-3q3amy0wil] { background: #2a2a32; border-color: #6b6b76; }
.umbra-cbt__tl-name[b-3q3amy0wil] { font-size: 10.5px; font-weight: 600; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.umbra-cbt__tl-bar[b-3q3amy0wil] { display: block; width: 100%; height: 3px; border-radius: 2px; background: #ffffff12; overflow: hidden; }
.umbra-cbt__tl-bar > span[b-3q3amy0wil] { display: block; height: 100%; transition: width .2s; }
.umbra-cbt__tl[data-role="moi"] .umbra-cbt__tl-bar > span[b-3q3amy0wil] { background: #4da3ff; }
.umbra-cbt__tl[data-role="allie"] .umbra-cbt__tl-bar > span[b-3q3amy0wil] { background: #7ad4a0; }
.umbra-cbt__tl[data-role="ennemi"] .umbra-cbt__tl-bar > span[b-3q3amy0wil] { background: #e2544f; }
.umbra-cbt__tl-hp[b-3q3amy0wil] { font-family: var(--font-family-mono); font-size: 9.5px; color: var(--text-secondary); white-space: nowrap; }

/* Le plateau s'ajuste à la place qu'on lui laisse, dans les deux dimensions. */
.umbra-cbt__plateau[b-3q3amy0wil] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--space-5) var(--space-6) 0;
    min-height: 0;
    overflow: hidden;
}

.umbra-cbt__plateau[b-3q3amy0wil]  .umbra-iso { width: 100%; height: 100%; min-height: 0; background: none; padding: 0; }
.umbra-cbt__plateau[b-3q3amy0wil]  .umbra-iso__svg { width: 100%; height: 100%; min-height: 0; max-height: none; }
.umbra-cbt__plateau[b-3q3amy0wil]  .umbra-iso__region { height: 100%; }

.umbra-cbt__intention[b-3q3amy0wil] {
    position: absolute;
    top: 14px;
    left: 18px;
    z-index: 3;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 12px;
    border-radius: 8px;
    background: color-mix(in srgb, var(--surface) 90%, transparent);
    border: 1px solid var(--border-subtle);
    pointer-events: none;
    max-width: 260px;
}

.umbra-cbt__intention strong[b-3q3amy0wil] { color: #b7ebc6; }

.umbra-cbt__challenge-chips[b-3q3amy0wil] {
    position: absolute;
    top: 14px;
    right: 18px;
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
}

.umbra-cbt__challenge-chip[b-3q3amy0wil] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 11px;
    border-radius: 8px;
    background: color-mix(in srgb, var(--surface) 90%, transparent);
    border: 1px solid #cba05e44;
}

.umbra-cbt__challenge-chip[data-result="echoue"][b-3q3amy0wil] { opacity: .72; }

.umbra-cbt__zoom[b-3q3amy0wil] { position: absolute; bottom: 12px; right: 18px; z-index: 3; border-radius: 8px; background: color-mix(in srgb, var(--surface) 90%, transparent); }
.umbra-cbt__zoom-value[b-3q3amy0wil] { min-width: 44px; text-align: center; font-family: var(--font-family-mono); font-size: 11px; color: var(--text-secondary); }

.umbra-cbt__themes[b-3q3amy0wil] { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.umbra-cbt__swatch[b-3q3amy0wil] { display: inline-block; width: 14px; height: 14px; border-radius: 4px; border: 2px solid; vertical-align: -2px; margin-right: 4px; }

/* ── Pied du plateau ─────────────────────────────────────────────────────────── */
.umbra-cbt__foot[b-3q3amy0wil] { display: flex; flex-direction: column; gap: 6px; padding: var(--space-4) var(--space-7) var(--space-5); }
.umbra-cbt__hover[b-3q3amy0wil] { display: flex; align-items: center; gap: 14px; min-height: 22px; font-size: 12px; color: var(--text-secondary); }
.umbra-cbt__hover > :last-child[b-3q3amy0wil] { margin-left: auto; }

.umbra-cbt__feedback[b-3q3amy0wil] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-radius: 8px;
    background: color-mix(in srgb, var(--surface) 40%, transparent);
    border: 1px solid var(--border-subtle);
}

.umbra-cbt__feedback > span[b-3q3amy0wil] { flex: 1; }

.umbra-cbt__log[b-3q3amy0wil] {
    margin: 0;
    padding: 6px 12px;
    list-style: none;
    max-height: 120px;
    overflow: auto;
    border-radius: 8px;
    background: var(--surface-inset);
    border: 1px solid var(--border-subtle);
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.umbra-cbt__log li[b-3q3amy0wil] { display: flex; gap: 10px; font-size: 11.5px; color: var(--text-secondary); }
.umbra-cbt__log-clock[b-3q3amy0wil] { color: var(--text-muted); flex: none; font-family: var(--font-family-mono); }
.umbra-cbt__log li[data-level="err"][b-3q3amy0wil] { color: #e8a29d; }
.umbra-cbt__log li[data-level="warn"][b-3q3amy0wil] { color: #e3b87c; }
.umbra-cbt__log li[data-level="combat"][b-3q3amy0wil] { color: #8fdfb4; }
.umbra-cbt__log li[data-level="mouv"][b-3q3amy0wil] { color: #a8ccff; }
.umbra-cbt__log li[data-level="pnj"][b-3q3amy0wil] { color: var(--log-npc-text); }
.umbra-cbt__log li[data-level="rep"][b-3q3amy0wil] { color: var(--log-reply-text); }
.umbra-cbt__log li[data-level="vide"][b-3q3amy0wil] { color: var(--text-muted); }

/* ══ PANNEAU ══════════════════════════════════════════════════════════════════ */
.umbra-cbt__panel[b-3q3amy0wil] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    min-width: 0;
    overflow: hidden;
    border-left: 1px solid var(--umbra-cbt-line, var(--separator));
    background: var(--umbra-cbt-panel, var(--surface));
}

.umbra-cbt__panel-head[b-3q3amy0wil] { padding: var(--space-5) var(--space-6) var(--space-4); border-bottom: 1px solid var(--separator); display: flex; flex-direction: column; gap: var(--space-3); }
.umbra-cbt__turn[b-3q3amy0wil] { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.umbra-cbt__round[b-3q3amy0wil] { font-family: var(--font-family-mono); font-size: 11px; letter-spacing: .1em; color: var(--text-muted); }
.umbra-cbt__turn-label[b-3q3amy0wil] { font-size: 12px; letter-spacing: .12em; }
.umbra-cbt__turn-label[data-turn="prep"][b-3q3amy0wil] { color: #63d6a0; }
.umbra-cbt__turn-label[data-turn="moi"][b-3q3amy0wil] { color: #6fa8ff; }
.umbra-cbt__turn-label[data-turn="autre"][b-3q3amy0wil] { color: var(--text-secondary); }

.umbra-cbt__panel-body[b-3q3amy0wil] { flex: 1; min-height: 0; min-width: 0; overflow-y: auto; overflow-x: hidden; display: flex; flex-direction: column; gap: var(--space-4); padding: var(--space-4) var(--space-6); }

/* ── Préparation ─────────────────────────────────────────────────────────────── */
.umbra-cbt__prep[b-3q3amy0wil] { display: flex; flex-direction: column; gap: 10px; }
.umbra-cbt__prep-block[b-3q3amy0wil] { display: flex; flex-direction: column; gap: 6px; }

.umbra-cbt__challenge[b-3q3amy0wil] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    text-align: left;
    padding: 10px 12px;
    border-radius: 10px;
    border: 1px solid var(--border-subtle);
    background: transparent;
    color: var(--text-primary);
    font: inherit;
    cursor: pointer;
}

.umbra-cbt__challenge[data-selected][b-3q3amy0wil] { border-color: #e9c46a88; background: #e9c46a14; }
.umbra-cbt__challenge:disabled[b-3q3amy0wil] { cursor: default; }
.umbra-cbt__challenge:focus-visible[b-3q3amy0wil] { outline: 2px solid var(--accent-ring, var(--accent)); outline-offset: 1px; }
.umbra-cbt__challenge-line[b-3q3amy0wil] { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.umbra-cbt__challenge-bonus[b-3q3amy0wil] { font-size: 11px; font-weight: 700; color: #efc272; }
.umbra-cbt__challenge-desc[b-3q3amy0wil] { font-size: 11.5px; color: var(--text-secondary); line-height: 1.4; }

/* ── Constantes vitales ──────────────────────────────────────────────────────── */
.umbra-cbt__vitals[b-3q3amy0wil] { display: flex; flex-direction: column; gap: 8px; }
.umbra-cbt__vital-head[b-3q3amy0wil] { display: flex; justify-content: space-between; align-items: baseline; }
.umbra-cbt__hp .umbra-cbt__vital-head strong[b-3q3amy0wil] { font-size: 20px; color: #f1707a; }
.umbra-cbt__max[b-3q3amy0wil] { font-size: 12px; color: var(--text-muted); }
.umbra-cbt__papm[b-3q3amy0wil] { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.umbra-cbt__pa[b-3q3amy0wil], .umbra-cbt__pm[b-3q3amy0wil] { padding: 6px 10px; border-radius: 9px; }
.umbra-cbt__pa[b-3q3amy0wil] { background: #6fa8ff0f; border: 1px solid #6fa8ff30; }
.umbra-cbt__pm[b-3q3amy0wil] { background: #63d6a00f; border: 1px solid #63d6a030; }
.umbra-cbt__pa .umbra-cbt__vital-head strong[b-3q3amy0wil] { font-size: 18px; color: #6fa8ff; }
.umbra-cbt__pm .umbra-cbt__vital-head strong[b-3q3amy0wil] { font-size: 18px; color: #63d6a0; }
.umbra-cbt__pips[b-3q3amy0wil] { display: flex; gap: 3px; margin-top: 5px; flex-wrap: wrap; }
.umbra-cbt__pips i[b-3q3amy0wil] { width: 9px; height: 9px; border-radius: 2px; transform: rotate(45deg); background: #ffffff14; }
.umbra-cbt__pa .umbra-cbt__pips i[data-on][b-3q3amy0wil] { background: #6fa8ff; }
.umbra-cbt__pm .umbra-cbt__pips i[data-on][b-3q3amy0wil] { background: #63d6a0; }

/* ── Sorts ───────────────────────────────────────────────────────────────────── */
.umbra-cbt__spells-head[b-3q3amy0wil] { display: flex; align-items: center; justify-content: space-between; padding-bottom: 8px; }
.umbra-cbt__pages[b-3q3amy0wil] { display: flex; gap: 4px; }
.umbra-cbt__grid[b-3q3amy0wil] { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
.umbra-cbt__spell-empty[b-3q3amy0wil] { aspect-ratio: 1; border-radius: 10px; border: 1px dashed var(--border-subtle); }

.umbra-cbt__spell[b-3q3amy0wil] {
    position: relative;
    aspect-ratio: 1;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    border-radius: 10px;
    border: 1px solid var(--border-subtle);
    background: var(--surface-inset);
    color: var(--text-primary);
    font: inherit;
    cursor: pointer;
    padding: 0;
    overflow: hidden;
    transition: transform .1s, border-color .12s;
}

.umbra-cbt__spell:hover:not(:disabled)[b-3q3amy0wil] { transform: translateY(-1px); border-color: var(--border-strong); }
.umbra-cbt__spell:focus-visible[b-3q3amy0wil] { outline: 2px solid var(--accent-ring, var(--accent)); outline-offset: 1px; }
.umbra-cbt__spell[data-spell-state="off"][b-3q3amy0wil] { opacity: .45; cursor: default; }
/* Un sort en relance garde son opacité : le voile chiffré dit déjà qu'il dort. */
.umbra-cbt__spell[data-spell-state="relance"][b-3q3amy0wil] { cursor: default; }
/* Le sort ARMÉ reprend sa propre teinte : c'est lui qu'on cherche des yeux. */
.umbra-cbt__spell[data-armed][b-3q3amy0wil] {
    border-color: var(--umbra-spell-hue, #6fa8ff);
    background: color-mix(in srgb, var(--umbra-spell-hue, #6fa8ff) 12%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--umbra-spell-hue, #6fa8ff) 40%, transparent), 0 0 18px -4px var(--umbra-spell-hue, #6fa8ff);
}

.umbra-cbt__spell-art[b-3q3amy0wil] {
    position: absolute;
    inset: 19px 7px 20px;
    border-radius: 7px;
    background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--umbra-spell-hue, #6fa8ff) 13%, transparent) 0 4px, transparent 4px 9px);
    border: 1px solid color-mix(in srgb, var(--umbra-spell-hue, #6fa8ff) 20%, transparent);
    display: grid;
    place-items: center;
    font-size: 15px;
    font-weight: 700;
    color: var(--umbra-spell-hue, #a8ccff);
}

.umbra-cbt__spell-key[b-3q3amy0wil] { position: absolute; top: 4px; left: 7px; font-family: var(--font-family-mono); font-size: 10px; line-height: 12px; color: var(--text-secondary); }
.umbra-cbt__spell-cost[b-3q3amy0wil] { position: absolute; top: 4px; right: 7px; font-family: var(--font-family-mono); font-size: 10px; line-height: 12px; font-weight: 600; color: #6fa8ff; }
.umbra-cbt__spell-name[b-3q3amy0wil] { position: absolute; left: 0; right: 0; bottom: 3px; font-size: 10.5px; line-height: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding: 0 6px; }
/* La relance couvre la vignette : un sort en relance ne doit pas avoir l'air jouable. */
.umbra-cbt__spell-cooldown[b-3q3amy0wil] { position: absolute; inset: 0; display: grid; place-items: center; background: #0a0c10aa; font-size: 22px; font-weight: 700; color: #e3b87c; }

.umbra-cbt__detail[b-3q3amy0wil] {
    margin-top: 10px;
    padding: 10px 12px;
    border-radius: 10px;
    background: var(--surface-inset);
    border: 1px solid var(--border-subtle);
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.umbra-cbt__detail-head[b-3q3amy0wil] { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.umbra-cbt__detail-head strong[b-3q3amy0wil] { color: #a8ccff; }
.umbra-cbt__detail-effect[b-3q3amy0wil] { font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }

/* ── Ce qui engage quelque chose ─────────────────────────────────────────────── */
.umbra-cbt__actions[b-3q3amy0wil] {
    padding: var(--space-5) var(--space-6);
    border-top: 1px solid var(--umbra-cbt-line, var(--separator));
    display: flex;
    flex-direction: column;
    gap: 6px;
    background: var(--umbra-cbt-footer, var(--background-secondary));
}

/* ── Raccourcis ──────────────────────────────────────────────────────────────── */
.umbra-cbt__binds[b-3q3amy0wil] { display: flex; flex-direction: column; gap: 5px; max-height: 60vh; overflow: auto; }
.umbra-cbt__bind[b-3q3amy0wil] { display: grid; grid-template-columns: 96px minmax(0, 1fr); align-items: center; gap: 14px; }
.umbra-cbt__bind-label[b-3q3amy0wil] { align-self: center; color: var(--text-secondary); font-size: 12px; }

/* Sous 1280 px le panneau rétrécit plutôt que de se déplacer : la disposition reste la même. */
@media (max-width: 1280px) {
    .umbra-cbt__body[b-3q3amy0wil] { grid-template-columns: minmax(0, 1fr) 300px; }
    .umbra-cbt__tl[b-3q3amy0wil] { width: 72px; }
}

@media (max-width: 820px) {
    .umbra-cbt[b-3q3amy0wil] { height: auto; }
    .umbra-cbt__body[b-3q3amy0wil] { grid-template-columns: minmax(0, 1fr); }
    .umbra-cbt__plateau[b-3q3amy0wil] { min-height: 360px; }
}

@media (prefers-reduced-motion: reduce) {
    .umbra-cbt__tl[b-3q3amy0wil], .umbra-cbt__spell[b-3q3amy0wil] { transition: none; }
}
/* /Components/Game/UmbraDialoguePanel.razor.rz.scp.css */
/* La bulle du PNJ défile seule : une réplique de huit lignes ne pousse pas les réponses hors de l'écran. */
.umbra-hud__bubble[b-qu5fxw7czf] {
    max-height: 160px;
    overflow-y: auto;
    padding: var(--space-4) var(--space-5);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    background: var(--surface-inset);
    color: var(--text-primary);
    line-height: 1.45;
}

.umbra-hud__bubble p[b-qu5fxw7czf] { margin: 0 0 var(--space-3); }
.umbra-hud__bubble p:last-child[b-qu5fxw7czf] { margin-bottom: 0; }
.umbra-hud__bubble[data-muette][b-qu5fxw7czf] { border-style: dashed; background: transparent; }
.umbra-hud__replies[b-qu5fxw7czf] { display: flex; flex-direction: column; gap: var(--space-2); }
/* /Components/Game/UmbraFightEffects.razor.rz.scp.css */
.umbra-effects[b-d19t44dcaj] { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; padding: var(--space-4) 0; }
.umbra-effects__list[b-d19t44dcaj] { display: flex; flex: 1 1 180px; flex-wrap: wrap; align-content: flex-start; gap: 6px; min-width: 0; max-height: 84px; overflow-y: auto; overscroll-behavior: contain; }
.umbra-effects__chip[b-d19t44dcaj] {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 7px;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
    padding: 4px 8px;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-sm, 6px);
    background: var(--surface-raised, var(--surface));
    color: var(--text-primary);
    font-size: 11px;
}
.umbra-effects__chip:focus-visible[b-d19t44dcaj] { outline: 2px solid var(--accent-ring, var(--accent)); outline-offset: 1px; }
.umbra-effects__chip strong[b-d19t44dcaj] { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.umbra-effects__chip[data-suspended][b-d19t44dcaj] { opacity: .65; border-style: dashed; }
.umbra-effects__value[b-d19t44dcaj] { color: var(--success, #d5e9af); font-variant-numeric: tabular-nums; }
.umbra-effects__time[b-d19t44dcaj] { flex-shrink: 0; color: var(--text-secondary); font-size: 10px; }
.umbra-effects__tip-line[b-d19t44dcaj] { display: block; }
/* /Components/Game/UmbraGameIcon.razor.rz.scp.css */
/* Géométrie d'une vignette raster : l'image remplit le cadre du parent, l'initiale la remplace au centre. */
.umbra-game-icon[b-nmc91gxdy3] {
    position: relative;
    display: block;
    width: 100%;
    height: 100%;
    min-width: 0;
    min-height: 0;
    border-radius: inherit;
    overflow: hidden;
}

.umbra-game-icon__initial[b-nmc91gxdy3] {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    font-weight: 700;
}

.umbra-game-icon__image[b-nmc91gxdy3] {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: contain;
}
/* /Components/Game/UmbraIsoMap.razor.rz.scp.css */
/*
    Le plateau isométrique : géométrie et palette MÉTIER des cases (legacy app.css, section IsoMap).
    ⭐ Les couleurs d'INFORMATION (position, portée, marche, placement, monstres, PNJ…) sont fixes : elles portent
       une décision et ne suivent ni le thème Product.Ui ni l'ambiance de combat. Seul le terrain (walk/block)
       reçoit, en combat, le remplissage du thème par l'attribut fill.
    ⚠️ Les textes et pions sont émis par RenderTreeBuilder : ils n'ont pas l'attribut d'isolation, d'où ::deep.
*/
.umbra-iso[b-tg8isholff] {
    position: relative;
    display: flex;
    justify-content: center;
    min-width: 0;
    border-radius: var(--radius-card, 10px);
    background: var(--surface-inset, #0f1116);
    padding: 8px;
    overflow: hidden;
}

.umbra-iso__empty[b-tg8isholff] { padding: 18px; }

/* La région du menu contextuel (racine de UiContextMenu) : elle ne change rien à la mise en page du dessin. */
.umbra-iso[b-tg8isholff]  .umbra-iso__region { display: flex; justify-content: center; width: 100%; min-width: 0; min-height: 0; }

.umbra-iso__svg[b-tg8isholff] {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
    max-height: var(--umbra-plateau, min(74vh, 760px));
    shape-rendering: crispEdges;
}

/* La carte affichée n'est plus celle du personnage : le dessin reste, voilé et inerte. */
.umbra-iso[data-stale] .umbra-iso__svg[b-tg8isholff] { opacity: .32; filter: grayscale(.6); pointer-events: none; }

.umbra-iso__cell[b-tg8isholff] {
    stroke: rgba(255, 255, 255, .06);
    stroke-width: .5;
    cursor: pointer;
    transition: fill .08s linear;
}

/* Le terrain : couleur par défaut, SAUF si l'ambiance de combat a posé son remplissage (attribut fill). */
.umbra-iso__cell[data-state="walk"]:not([fill])[b-tg8isholff] { fill: rgba(140, 160, 190, .16); }
.umbra-iso__cell[data-state="block"]:not([fill])[b-tg8isholff] { fill: rgba(255, 255, 255, .03); }
.umbra-iso__cell[data-state="block"][b-tg8isholff] { cursor: not-allowed; }
.umbra-iso__cell[data-state="farm"][b-tg8isholff] { fill: rgba(120, 200, 130, .34); }
.umbra-iso__cell[data-state="exit"][b-tg8isholff] { fill: rgba(230, 180, 90, .38); }
.umbra-iso__cell[data-state="path"][b-tg8isholff] { fill: rgba(90, 170, 255, .62); }
.umbra-iso__cell[data-state="actor"][b-tg8isholff] { fill: rgba(190, 120, 235, .52); }
.umbra-iso__cell[data-state="npc"][b-tg8isholff] { fill: rgba(235, 150, 70, .60); stroke: rgba(255, 200, 130, .75); stroke-width: .9; }
.umbra-iso__cell[data-state="teleport"][b-tg8isholff] { fill: rgba(90, 220, 220, .55); stroke: rgba(160, 250, 250, .9); stroke-width: 1; }
.umbra-iso__cell[data-state="interactive"][b-tg8isholff] { fill: rgba(255, 215, 100, .85); stroke: #fff3c4; stroke-width: 1.2; }
.umbra-iso__cell[data-state="interactive-vide"][b-tg8isholff] { fill: rgba(255, 215, 100, .10); stroke: rgba(255, 215, 100, .5); stroke-width: 1; stroke-dasharray: 3 2.5; }
.umbra-iso__cell[data-state="monster"][b-tg8isholff] { fill: rgba(215, 60, 70, .68); stroke: rgba(255, 140, 140, .85); stroke-width: 1; }
.umbra-iso__cell[data-state="castable"][b-tg8isholff] { fill: rgba(110, 230, 150, .55); stroke: rgba(180, 255, 205, .9); stroke-width: 1; }
.umbra-iso__cell[data-state="castable-aveugle"][b-tg8isholff] { fill: rgba(150, 150, 165, .22); stroke: rgba(190, 200, 215, .34); stroke-width: 1; stroke-dasharray: 2 2; }
.umbra-iso__cell[data-state="walkable"][b-tg8isholff] { fill: rgba(80, 150, 235, .40); stroke: rgba(150, 200, 255, .6); stroke-width: .8; }
.umbra-iso__cell[data-state="placement"][b-tg8isholff] { fill: rgba(110, 230, 150, .55); stroke: rgba(140, 255, 180, .85); stroke-width: 1; }
.umbra-iso__cell[data-state="placement"]:hover[b-tg8isholff] { fill: rgba(150, 255, 190, .78); }
.umbra-iso__cell[data-state="placement-ennemi"][b-tg8isholff] { fill: rgba(240, 110, 120, .30); stroke: rgba(240, 130, 140, .45); stroke-width: .6; }
.umbra-iso__cell[data-state="hover"][b-tg8isholff] { fill: rgba(255, 255, 255, .30); }
.umbra-iso__cell[data-state="me"][b-tg8isholff] { fill: rgba(255, 90, 90, .92); stroke: #fff; stroke-width: 1.1; }
.umbra-iso__cell[data-state="walk"]:hover[b-tg8isholff],
.umbra-iso__cell[data-state="farm"]:hover[b-tg8isholff],
.umbra-iso__cell[data-state="exit"]:hover[b-tg8isholff] { fill: rgba(255, 255, 255, .34); }

.umbra-iso__spell-overlay[b-tg8isholff] { pointer-events: none; }
.umbra-iso__preview-area[b-tg8isholff] { fill: #b997ee33; stroke: #d1b8f4; stroke-width: .9; stroke-dasharray: 2 1; }
.umbra-iso__preview-destination[b-tg8isholff] { fill: #f5c07633; stroke: #ffd596; stroke-width: 1.4; stroke-dasharray: 2 1; }

/* ── Textes et pions (RenderTreeBuilder) ─────────────────────────────────────────── */
.umbra-iso[b-tg8isholff]  .umbra-iso__name {
    fill: #F7F8FB;
    font-size: 7.5px;
    font-weight: 600;
    text-anchor: middle;
    paint-order: stroke;
    stroke: rgba(10, 10, 14, .92);
    stroke-width: 2.4px;
    stroke-linejoin: round;
    pointer-events: none;
}

.umbra-iso[b-tg8isholff]  .umbra-iso__numbers text {
    font-family: var(--font-family-mono, ui-monospace, monospace);
    font-size: 4.4px;
    fill: rgba(181, 193, 215, .5);
    text-anchor: middle;
    pointer-events: none;
}

.umbra-iso[b-tg8isholff]  .umbra-iso__ranks text {
    font-size: 6.5px;
    font-weight: 700;
    fill: #fff;
    stroke: #102820;
    stroke-width: 2;
    paint-order: stroke;
    stroke-linejoin: round;
    text-anchor: middle;
    pointer-events: none;
}

/* Un pion n'intercepte jamais le clic de sa case, sauf son jeton (clic et clic droit transmis par le module). */
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn * { pointer-events: none; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn .umbra-iso__pawn-token { pointer-events: visiblePainted; cursor: crosshair; stroke: rgba(10, 12, 16, .85); stroke-width: 1.4; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn:hover .umbra-iso__pawn-token { stroke: #fff; stroke-width: 2px; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-shadow { fill: rgba(0, 0, 0, .38); }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-token[data-pawn="moi"] { fill: #4da3ff; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-token[data-pawn="allie"] { fill: #7ad4a0; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-token[data-pawn="ennemi"] { fill: #e2544f; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-turn { fill: none; stroke: #ffd76a; stroke-width: 2; animation: umbra-iso-pouls-b-tg8isholff 1.4s ease-in-out infinite; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-self { fill: none; stroke: #fff; stroke-width: .8; stroke-dasharray: 2 1.5; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-initial { font-weight: 700; fill: #fff; stroke: none; text-anchor: middle; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-life-back { fill: rgba(10, 12, 16, .78); }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-life[data-life="haut"] { fill: #5ad07a; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-life[data-life="moyen"] { fill: #e6c14a; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-life[data-life="bas"] { fill: #e2544f; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-hp {
    font: 600 6.5px var(--font-family-mono, monospace);
    fill: #e8eef8;
    text-anchor: middle;
    paint-order: stroke;
    stroke: rgba(8, 10, 14, .9);
    stroke-width: 2.4;
}
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-name {
    font-size: 6.5px;
    font-weight: 600;
    text-anchor: middle;
    paint-order: stroke;
    stroke: rgba(8, 10, 14, .9);
    stroke-width: 2.4;
}
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-name[data-name-role="moi"] { fill: #a8d4ff; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-name[data-name-role="allie"] { fill: #b6ecd0; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-name[data-name-role="ennemi"] { fill: #ffb3ae; }
.umbra-iso[b-tg8isholff]  .umbra-iso__pawn-damage {
    font-size: 8px;
    font-weight: 700;
    fill: #ffb27a;
    stroke: #1a0e06;
    stroke-width: 2.4;
    paint-order: stroke;
    stroke-linejoin: round;
    text-anchor: middle;
}

/* L'aperçu local du trajet, dessiné par le module navigateur. */
.umbra-iso__local-preview[b-tg8isholff] { pointer-events: none; }
.umbra-iso[b-tg8isholff]  [data-preview-step] { fill: #63cda866; stroke: #9ceaca; stroke-width: .8; }
.umbra-iso[b-tg8isholff]  [data-preview-cost] {
    fill: #fff;
    font: bold 7px system-ui;
    text-anchor: middle;
    paint-order: stroke;
    stroke: #102820;
    stroke-width: 2px;
    stroke-linejoin: round;
}

@keyframes umbra-iso-pouls-b-tg8isholff {
    0%, 100% { opacity: .55; }
    50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .umbra-iso__cell[b-tg8isholff] { transition: none; }
    .umbra-iso[b-tg8isholff]  .umbra-iso__pawn-turn { animation: none; opacity: 1; }
}
/* /Components/Game/UmbraZaapPanel.razor.rz.scp.css */
/* La table des destinations : colonnes du client, défilement propre, ligne occupée en tête et dorée. */
.umbra-hud__table[b-dzbmkfguyk] {
    display: flex;
    flex-direction: column;
    max-height: min(46vh, 380px);
    overflow-y: auto;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-card);
    background: var(--surface-inset);
}

.umbra-hud__row[b-dzbmkfguyk] {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) 84px 80px 72px;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-3) var(--space-4);
    border-bottom: 1px solid var(--separator);
    font-size: var(--font-size-sm);
}

.umbra-hud__row--head[b-dzbmkfguyk] {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--background-secondary);
    color: var(--text-secondary);
    font-weight: 600;
}

.umbra-hud__row[data-here][b-dzbmkfguyk] { color: var(--warning-text, var(--warning)); }
.umbra-hud__row[data-active="false"]:not([data-here])[b-dzbmkfguyk] { opacity: .55; }
.umbra-hud__name[b-dzbmkfguyk] { display: flex; align-items: center; gap: var(--space-3); min-width: 0; }
.umbra-hud__num[b-dzbmkfguyk], .umbra-hud__cost[b-dzbmkfguyk] { font-variant-numeric: tabular-nums; }
.umbra-hud__cost[b-dzbmkfguyk] { text-align: right; }

@media (max-width: 640px) {
    .umbra-hud__row[b-dzbmkfguyk] { grid-template-columns: minmax(0, 1fr) 72px 72px; }
    .umbra-hud__row > :nth-child(2)[b-dzbmkfguyk], .umbra-hud__row > :nth-child(3)[b-dzbmkfguyk] { display: none; }
}
/* /Components/Game/UmbraZoneSketch.razor.rz.scp.css */
/* Damier d'une zone de sort : géométrie métier, couleurs issues des jetons du thème. */
.umbra-zone[b-f4cwq5varh] {
    display: block;
    width: 100%;
    max-width: 208px;
    height: auto;
}

/* Les cases hors zone restent visibles : c'est le damier qui donne l'échelle du dessin. */
.umbra-zone__case[b-f4cwq5varh] {
    fill: color-mix(in srgb, var(--text-primary) 4%, transparent);
    stroke: color-mix(in srgb, var(--text-primary) 14%, transparent);
    stroke-width: .6;
}

.umbra-zone__case[data-touchee][b-f4cwq5varh] {
    fill: color-mix(in srgb, var(--accent) 35%, transparent);
    stroke: color-mix(in srgb, var(--accent) 70%, var(--text-primary));
    stroke-width: 1;
}

/* La case visée : c'est d'elle que tout se compte. */
.umbra-zone__case[data-cible][b-f4cwq5varh] {
    stroke: var(--text-primary);
    stroke-width: 1.4;
}

/* Notre position, qui donne son sens à « devant », « en ligne », « depuis le lanceur ». */
.umbra-zone__case[data-lanceur][b-f4cwq5varh] {
    fill: color-mix(in srgb, var(--info, #4ea1d3) 35%, transparent);
    stroke: var(--info, #8fd0ef);
    stroke-width: 1.2;
}
/* /Components/Pages/Documentation.razor.rz.scp.css */
/* Documentation V2 (maquette validée : styles.css 729-831). Trois colonnes — sommaire 272 px, article centré (760 px),
   « Sur cette page » 220 px — chacune avec son propre défilement ; 1200 px : colonne droite masquée ; 900 px : sommaire
   en tiroir (bouton « Sommaire »). Le HTML de l'article vient de DocumentationMarkdown (::deep). Jetons du thème bleu. */

.umbra-docs__missing[b-5x47nn4gfz] { padding: var(--panel-padding); }

.umbra-docs[b-5x47nn4gfz] {
    display: grid;
    grid-template-columns: 272px minmax(0, 1fr) 220px;
    height: 100%;
    min-height: 0;
    background: var(--background);
}

/* ── Sommaire ─────────────────────────────────────────────────────────────────────────────────────────────── */
.umbra-docs__nav[b-5x47nn4gfz] { display: flex; flex-direction: column; min-height: 0; border-right: 1px solid var(--separator); background: var(--background-secondary); }
.umbra-docs__nav-head[b-5x47nn4gfz] { display: grid; gap: var(--space-3); padding: var(--space-4) var(--space-4) var(--space-3); border-bottom: 1px solid var(--separator); }
.umbra-docs__brand[b-5x47nn4gfz] { display: flex; align-items: center; gap: var(--space-2); font-size: 16px; font-weight: 700; color: var(--text-primary); }
.umbra-docs__collections[b-5x47nn4gfz] { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 3px; background: var(--surface-inset); border: 1px solid var(--border-subtle); border-radius: var(--radius-card); }
.umbra-docs__collection-btn[b-5x47nn4gfz] {
    height: 26px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--text-secondary);
    font: inherit; font-size: var(--font-size-sm); font-weight: 600; cursor: pointer;
}
.umbra-docs__collection-btn:hover[b-5x47nn4gfz] { background: var(--surface-hover); color: var(--text-primary); }
.umbra-docs__collection-btn[aria-pressed="true"][b-5x47nn4gfz] { background: var(--accent); color: var(--accent-contrast); }
.umbra-docs__collection-btn:focus-visible[b-5x47nn4gfz] { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
.umbra-docs__filter[b-5x47nn4gfz] { display: flex; align-items: center; gap: var(--space-2); }
.umbra-docs__filter[b-5x47nn4gfz]  .ui-field, .umbra-docs__filter[b-5x47nn4gfz]  .ui-search { flex: 1; min-width: 0; }
.umbra-docs__toc[b-5x47nn4gfz] { flex: 1; min-height: 0; overflow: auto; padding: var(--space-2) var(--space-2) var(--space-5); }
.umbra-docs__drawer-toc .umbra-docs__toc[b-5x47nn4gfz] { overflow: visible; padding: 0; }
.umbra-docs__drawer-toc .umbra-docs__nav-head[b-5x47nn4gfz] { padding: 0 0 var(--space-3); }
.umbra-docs__section[b-5x47nn4gfz] { margin-top: 10px; }
.umbra-docs__section-title[b-5x47nn4gfz] { padding: 4px 8px; font-size: 10px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--text-muted); }
.umbra-docs__list[b-5x47nn4gfz] { list-style: none; margin: 0; padding: 0; }
.umbra-docs__link[b-5x47nn4gfz] {
    display: grid; grid-template-columns: 22px 1fr; gap: 6px; align-items: baseline; padding: 5px 8px;
    border-radius: var(--radius-control); color: var(--text-secondary); font-size: var(--font-size-md); text-decoration: none;
}
.umbra-docs__link:hover[b-5x47nn4gfz] { background: var(--surface-hover); color: var(--text-primary); text-decoration: none; }
.umbra-docs__link:focus-visible[b-5x47nn4gfz] { outline: 2px solid var(--focus-ring); outline-offset: -2px; }
/* Chapitre courant : fond d'accent ET barre (jamais le fond seul). */
.umbra-docs__link[aria-current="page"][b-5x47nn4gfz] { background: var(--accent-soft-strong); color: #ffffff; box-shadow: inset 2px 0 0 var(--border-accent); }
.umbra-docs__n[b-5x47nn4gfz] { font: 11px var(--font-family-mono); color: var(--text-muted); text-align: right; }
.umbra-docs__link[aria-current="page"] .umbra-docs__n[b-5x47nn4gfz] { color: #dce8f7; }
.umbra-docs__link-title[b-5x47nn4gfz]  code, .umbra-docs__link-title code[b-5x47nn4gfz] { font-size: .9em; }

/* ── Colonne centrale ─────────────────────────────────────────────────────────────────────────────────────── */
.umbra-docs__main[b-5x47nn4gfz] { min-width: 0; min-height: 0; overflow: auto; scroll-behavior: smooth; }
.umbra-docs__bar[b-5x47nn4gfz] { display: none; padding: var(--space-4) var(--space-5) 0; }
.umbra-docs__article[b-5x47nn4gfz] { max-width: 760px; margin: 0 auto; padding: 28px 40px 60px; font-size: 14.5px; line-height: 1.72; color: #dcdfe4; overflow-wrap: anywhere; }
.umbra-docs__title[b-5x47nn4gfz] { margin: var(--space-3) 0 var(--space-2); font-size: 32px; line-height: 1.2; font-weight: 700; color: #ffffff; letter-spacing: -.01em; }
.umbra-docs__title[b-5x47nn4gfz]  code { font-size: .8em; }
.umbra-docs__lead[b-5x47nn4gfz] { margin: 0 0 14px; font-size: 16.5px; color: var(--text-secondary); }
.umbra-docs__meta[b-5x47nn4gfz] {
    display: flex; flex-wrap: wrap; gap: 10px; align-items: center; padding-bottom: 18px; margin-bottom: 22px;
    border-bottom: 1px solid var(--separator); color: var(--text-muted); font-size: var(--font-size-sm);
}
.umbra-docs__meta > span[b-5x47nn4gfz] { display: inline-flex; align-items: center; gap: 4px; }
.umbra-docs__meta code[b-5x47nn4gfz] { font-size: .95em; color: var(--text-secondary); }

/* Accueil en cartes */
.umbra-docs__home-title[b-5x47nn4gfz] { margin: 30px 0 10px; font-size: 21px; color: #ffffff; }
.umbra-docs__cards[b-5x47nn4gfz] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.umbra-docs__card[b-5x47nn4gfz] {
    display: grid; gap: 4px; padding: 16px; border: 1px solid var(--border-subtle); border-radius: var(--radius-overlay);
    background: var(--surface); color: var(--text-primary); text-decoration: none;
}
.umbra-docs__card:hover[b-5x47nn4gfz] { border-color: var(--border-accent); text-decoration: none; }
.umbra-docs__card:focus-visible[b-5x47nn4gfz] { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.umbra-docs__card-icon[b-5x47nn4gfz] { display: grid; place-items: center; width: 32px; height: 32px; border-radius: var(--radius-card); background: var(--accent-soft); color: var(--text-accent); }
.umbra-docs__card-text[b-5x47nn4gfz] { font-size: var(--font-size-sm); color: var(--text-muted); }

/* Précédent / suivant */
.umbra-docs__pager[b-5x47nn4gfz] { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 36px; }
.umbra-docs__pager-link[b-5x47nn4gfz] {
    display: grid; gap: 2px; padding: 12px 14px; border: 1px solid var(--border-subtle); border-radius: var(--radius-overlay);
    background: var(--surface); text-decoration: none;
}
.umbra-docs__pager-link:hover[b-5x47nn4gfz] { border-color: var(--border-accent); text-decoration: none; }
.umbra-docs__pager-link:focus-visible[b-5x47nn4gfz] { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.umbra-docs__pager-link small[b-5x47nn4gfz] { color: var(--text-muted); }
.umbra-docs__pager-link strong[b-5x47nn4gfz] { color: #ffffff; }
.umbra-docs__pager-link--next[b-5x47nn4gfz] { text-align: right; }

/* ── Sur cette page ──────────────────────────────────────────────────────────────────────────────────────── */
.umbra-docs__aside[b-5x47nn4gfz] { min-height: 0; overflow: auto; padding: 28px 16px; border-left: 1px solid var(--separator); font-size: var(--font-size-sm); }
.umbra-docs__aside-title[b-5x47nn4gfz] { font-size: 10px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--text-muted); }
.umbra-docs__onpage[b-5x47nn4gfz] { list-style: none; display: grid; gap: 2px; margin: 8px 0 0; padding: 0; border-left: 1px solid var(--separator); }
.umbra-docs__onpage a[b-5x47nn4gfz] { display: block; padding: 3px 10px; margin-left: -1px; border-left: 2px solid transparent; color: var(--text-muted); text-decoration: none; }
.umbra-docs__onpage-item--3 a[b-5x47nn4gfz] { padding-left: 22px; }
.umbra-docs__onpage a:hover[b-5x47nn4gfz] { color: var(--text-primary); }
.umbra-docs__onpage a.is-on[b-5x47nn4gfz] { color: var(--text-accent); border-left-color: var(--border-accent); }
.umbra-docs__onpage a:focus-visible[b-5x47nn4gfz] { outline: 2px solid var(--focus-ring); outline-offset: -2px; }

/* ── Contenu rendu (DocumentationMarkdown) ───────────────────────────────────────────────────────────────── */
.umbra-docs__body[b-5x47nn4gfz]  h2 { display: flex; align-items: center; gap: 8px; margin: 34px 0 10px; font-size: 21px; line-height: 1.3; color: #ffffff; scroll-margin-top: 20px; }
.umbra-docs__body[b-5x47nn4gfz]  h3 { display: flex; align-items: center; gap: 8px; margin: 24px 0 8px; font-size: 16.5px; color: #ffffff; scroll-margin-top: 20px; }
.umbra-docs__body[b-5x47nn4gfz]  h4, .umbra-docs__body[b-5x47nn4gfz]  h5, .umbra-docs__body[b-5x47nn4gfz]  h6 { margin: 20px 0 6px; font-size: 14.5px; color: #ffffff; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-anchor { opacity: 0; color: var(--text-muted); font-size: 16px; text-decoration: none; }
.umbra-docs__body[b-5x47nn4gfz]  h2:hover .doc-anchor, .umbra-docs__body[b-5x47nn4gfz]  h3:hover .doc-anchor, .umbra-docs__body[b-5x47nn4gfz]  .doc-anchor:focus-visible { opacity: 1; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-anchor:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
.umbra-docs__body[b-5x47nn4gfz]  p { margin: 0 0 14px; }
.umbra-docs__body[b-5x47nn4gfz]  a:not(.doc-anchor):not(.doc-api__errors) {
    color: var(--text-link); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(143, 184, 234, .5);
}
.umbra-docs__body[b-5x47nn4gfz]  ul, .umbra-docs__body[b-5x47nn4gfz]  ol { margin: 0 0 14px; padding-left: 22px; }
.umbra-docs__body[b-5x47nn4gfz]  li { margin: 4px 0; }
.umbra-docs__body[b-5x47nn4gfz]  li > ul, .umbra-docs__body[b-5x47nn4gfz]  li > ol { margin: 4px 0 0; }
/* Bloc de code et paragraphe DANS une puce (bloc indenté sous l'élément de liste) : détachés du texte de tête. */
.umbra-docs__body[b-5x47nn4gfz]  li > .doc-code { margin: 8px 0 10px; }
.umbra-docs__body[b-5x47nn4gfz]  li > p { margin: 0 0 6px; }
.umbra-docs__body[b-5x47nn4gfz]  li > :last-child { margin-bottom: 0; }
.umbra-docs__body[b-5x47nn4gfz]  hr { margin: 28px 0; border: 0; border-top: 1px solid var(--separator); }
.umbra-docs__body[b-5x47nn4gfz]  del { color: var(--text-muted); }
.umbra-docs[b-5x47nn4gfz]  :not(pre) > code {
    padding: 1px 6px; border-radius: 3px; background: #2b3140; border: 1px solid #36405a; color: #cfe0f7;
    font-family: var(--font-family-mono); font-size: .88em;
}
.umbra-docs__body[b-5x47nn4gfz]  blockquote { margin: 0 0 18px; padding: 4px 0 4px 14px; border-left: 3px solid var(--border-subtle); color: var(--text-secondary); }

/* Blocs de code */
.umbra-docs__body[b-5x47nn4gfz]  .doc-code { margin: 0 0 18px; border: 1px solid #333a48; border-radius: var(--radius-overlay); background: #17191e; overflow: hidden; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-code__head {
    display: flex; align-items: center; gap: 8px; padding: 4px 6px 4px 14px; background: #1d2029; border-bottom: 1px solid #2b3140;
    font-size: var(--font-size-xs); color: var(--text-muted);
}
.umbra-docs__body[b-5x47nn4gfz]  .doc-code__lang { flex: 1; font: 600 11px var(--font-family-mono); color: var(--text-accent); letter-spacing: .06em; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-code__copy {
    height: 22px; padding: 0 8px; border: 1px solid transparent; border-radius: var(--radius-control); background: transparent;
    color: var(--text-secondary); font: inherit; font-size: var(--font-size-xs); cursor: pointer;
}
.umbra-docs__body[b-5x47nn4gfz]  .doc-code__copy:hover { background: var(--surface-hover); color: var(--text-primary); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-code__copy:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 1px; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-code__pre { margin: 0; padding: 14px 16px; overflow: auto; font: 13px/1.65 var(--font-family-mono); color: #d4d4d4; white-space: pre; overflow-wrap: normal; }
.umbra-docs__body[b-5x47nn4gfz]  .tk-k { color: #7fb0ec; }
.umbra-docs__body[b-5x47nn4gfz]  .tk-s { color: #ce9178; }
.umbra-docs__body[b-5x47nn4gfz]  .tk-c { color: #6a9955; font-style: italic; }
.umbra-docs__body[b-5x47nn4gfz]  .tk-n { color: #b5cea8; }
.umbra-docs__body[b-5x47nn4gfz]  .tk-f { color: #dcdcaa; }
.umbra-docs__body[b-5x47nn4gfz]  .tk-t { color: #569cd6; }
.umbra-docs__body[b-5x47nn4gfz]  .tk-v { color: #9cdcfe; }

/* Encadrés */
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout { margin: 0 0 18px; padding: 12px 14px; border: 1px solid; border-radius: var(--radius-overlay); font-size: 14px; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout__title { margin-bottom: 2px; font-weight: 700; color: #ffffff; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout__body > :last-child { margin-bottom: 0; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--note, .umbra-docs__body[b-5x47nn4gfz]  .doc-callout--important { background: rgba(90, 143, 214, .10); border-color: rgba(90, 143, 214, .4); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--warn { background: rgba(224, 163, 64, .10); border-color: rgba(224, 163, 64, .4); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--danger { background: rgba(229, 83, 75, .10); border-color: rgba(229, 83, 75, .45); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--tip { background: rgba(63, 184, 106, .09); border-color: rgba(63, 184, 106, .38); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--note .doc-callout__title, .umbra-docs__body[b-5x47nn4gfz]  .doc-callout--important .doc-callout__title { color: var(--text-accent); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--warn .doc-callout__title { color: var(--warning-text); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--danger .doc-callout__title { color: var(--danger-text); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-callout--tip .doc-callout__title { color: var(--success-text); }

/* Tableaux : défilement interne, jamais la page */
.umbra-docs__body[b-5x47nn4gfz]  .doc-tableau { margin: 0 0 18px; overflow-x: auto; border: 1px solid var(--border-subtle); border-radius: var(--radius-card); }
.umbra-docs__body[b-5x47nn4gfz]  table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.umbra-docs__body[b-5x47nn4gfz]  th { padding: 8px 12px; background: #262a33; color: #ffffff; font-weight: 600; text-align: left; }
.umbra-docs__body[b-5x47nn4gfz]  td { padding: 8px 12px; border-top: 1px solid var(--separator); vertical-align: top; }
.umbra-docs__body[b-5x47nn4gfz]  tr:nth-child(even) td { background: rgba(255, 255, 255, .02); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-align-center { text-align: center; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-align-right { text-align: right; }

/* Référence API */
.umbra-docs__body[b-5x47nn4gfz]  .doc-api { display: grid; gap: 10px; margin: 0 0 22px; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__fn { padding: 10px 14px; border: 1px solid #36405a; border-left: 3px solid var(--border-accent); border-radius: var(--radius-card); background: #1b2029; scroll-margin-top: 20px; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__sig code { padding: 0; border: 0; background: none; font-size: 13px; color: #d4d4d4; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__ns { color: var(--text-muted); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__name { color: #dcdcaa; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__args { color: #9cdcfe; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__ret { color: var(--text-accent); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__meta { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 4px; font-size: var(--font-size-sm); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state { color: var(--text-secondary); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state--limited,
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state--partial,
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state--untested { color: #d7ba7d; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state--broken,
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state--stub { color: #f48771; }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state--planned,
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__state--legacy { color: var(--text-muted); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__cap { color: #9cdcfe; font-size: var(--font-size-sm); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__errors { color: var(--text-link); font-size: var(--font-size-sm); }
.umbra-docs__body[b-5x47nn4gfz]  .doc-api__note { margin: 6px 0 0; font-size: 13.5px; color: var(--text-secondary); }

/* ── Largeurs ─────────────────────────────────────────────────────────────────────────────────────────────── */
@media (max-width: 1200px) {
    .umbra-docs[b-5x47nn4gfz] { grid-template-columns: 250px minmax(0, 1fr); }
    .umbra-docs__aside[b-5x47nn4gfz] { display: none; }
}
@media (max-width: 900px) {
    .umbra-docs[b-5x47nn4gfz] { grid-template-columns: minmax(0, 1fr); }
    .umbra-docs__nav[b-5x47nn4gfz] { display: none; }
    .umbra-docs__bar[b-5x47nn4gfz] { display: block; }
}
@media (max-width: 480px) {
    .umbra-docs__bar[b-5x47nn4gfz] { padding: var(--space-3) var(--space-4) 0; }
    .umbra-docs__article[b-5x47nn4gfz] { padding: 16px 16px 40px; }
    .umbra-docs__title[b-5x47nn4gfz] { font-size: 26px; }
    .umbra-docs__cards[b-5x47nn4gfz], .umbra-docs__pager[b-5x47nn4gfz] { grid-template-columns: minmax(0, 1fr); }
    .umbra-docs__pager-link--next[b-5x47nn4gfz] { text-align: left; }
}
/* /Components/Shop/AdminShopReview.razor.rz.scp.css */
/* Modération : une ligne par version (état + action), qui se replie sur les petites largeurs. */
.umbra-moderation__version[b-b1l6xuvis6] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    margin-top: var(--space-2);
}
/* /Components/Tools/Cadence.razor.rz.scp.css */
/* Géométrie de la page Cadence : colonne de lecture bornée, pied d'action. */
.umbra-cadence[b-na7nfnsirj] {
    padding: var(--space-3);
    max-width: 960px;
}

.umbra-cadence__preset[b-na7nfnsirj] {
    display: inline-flex;
    flex-direction: column;
    gap: 2px;
    max-width: 260px;
}

.umbra-cadence__mono[b-na7nfnsirj] {
    font-family: var(--font-family-mono);
    font-variant-numeric: tabular-nums;
}

.umbra-cadence__pied[b-na7nfnsirj] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-3);
}
/* /Components/Tools/CombatIa.razor.rz.scp.css */
/* Géométrie du module Combat (maquette : table à gauche, panneau de 380 px à droite ; sections en colonnes
   auto-ajustées). Couleurs : jetons Product.Ui uniquement. */
.umbra-combat[b-0y372o8e15] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1;
}

.umbra-combat__panneau[b-0y372o8e15] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    padding: var(--space-2);
    min-height: 0;
}

.umbra-combat__interrupteurs[b-0y372o8e15] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: var(--space-2) var(--space-5);
    padding: var(--space-1) var(--space-2);
    border-bottom: 1px solid var(--separator);
}

.umbra-combat__sorts[b-0y372o8e15] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: var(--space-2);
    align-items: start;
    min-height: 0;
}

@media (max-width: 900px) {
    .umbra-combat__sorts[b-0y372o8e15] { grid-template-columns: minmax(0, 1fr); }
}

.umbra-combat__liste[b-0y372o8e15],
.umbra-combat__editeur[b-0y372o8e15] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-combat__editeur[b-0y372o8e15] {
    padding: var(--space-2);
    border: 1px solid var(--border-subtle);
    background: var(--surface-inset);
}

.umbra-combat__tete[b-0y372o8e15] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--space-2);
}

.umbra-combat__sort[b-0y372o8e15] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

/* Une règle désactivée se lit à son libellé atténué et à son badge — jamais par une opacité, qui ferait tomber le
   contraste du badge sous le seuil AA. */
.umbra-combat__sort.is-inactif .umbra-combat__sort-nom[b-0y372o8e15] {
    color: var(--text-muted);
    text-decoration: line-through;
}

.umbra-combat__sort-nom[b-0y372o8e15] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-combat__vide[b-0y372o8e15] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    padding: var(--space-3);
}

.umbra-combat__catalogue[b-0y372o8e15] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: var(--space-1) var(--space-3);
}

.umbra-combat__carte[b-0y372o8e15] {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    min-width: 0;
}


.umbra-combat__carte-nom[b-0y372o8e15] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-combat__carte-pa[b-0y372o8e15] {
    color: var(--text-muted);
}

.umbra-combat__sel[b-0y372o8e15] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-combat__sel-texte[b-0y372o8e15] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.umbra-combat__sel-nom[b-0y372o8e15] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
    font-weight: 600;
    color: var(--text-primary);
}

.umbra-combat__ordre[b-0y372o8e15] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-1);
}

/* Éditeur de la règle (maquette : libellés de 130 px à gauche, contrôle sur le reste). */
.umbra-combat__lignes[b-0y372o8e15] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.umbra-combat__lignes[b-0y372o8e15]  .ui-form-row {
    grid-template-columns: minmax(0, 130px) minmax(0, 1fr);
    gap: var(--space-3);
}

/* Barre de tête de « Gestion des combats » : préréglage, cadence et lien, sur fond secondaire. */
.umbra-combat__barre[b-0y372o8e15] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2) var(--space-6);
    padding: var(--space-2) var(--space-3);
    border-bottom: 1px solid var(--separator);
    background: var(--background-secondary);
}

.umbra-combat__barre[b-0y372o8e15]  .umbra-combat__barre-champ {
    grid-template-columns: auto minmax(0, 22rem);
    gap: var(--space-3);
    min-width: 0;
}

/* Sections pleine largeur, réglages en deux colonnes auto-ajustées (maquette : libellé 210 px + contrôle). */
.umbra-combat__champs[b-0y372o8e15] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 460px), 1fr));
    gap: var(--space-2) var(--space-8);
    align-items: center;
}

.umbra-combat__champs[b-0y372o8e15]  .ui-form-row {
    grid-template-columns: minmax(0, 210px) minmax(0, 1fr);
    gap: var(--space-3);
    min-height: 34px;
}

.umbra-combat__champs[b-0y372o8e15]  .ui-form-row > :last-child {
    max-width: 16rem;
}

.umbra-combat__interrupteur[b-0y372o8e15] {
    display: grid;
    grid-template-columns: minmax(0, 210px) minmax(0, 1fr);
    align-items: center;
    gap: var(--space-3);
    min-height: 34px;
}

.umbra-combat__interrupteur > label[b-0y372o8e15] {
    font-size: var(--font-size-md);
    color: var(--text-secondary);
    cursor: pointer;
}

.umbra-combat__resume[b-0y372o8e15] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

/* Sous 640 px, le libellé passe au-dessus du contrôle, comme le fait .ui-form-row. */
@media (max-width: 640px) {
    .umbra-combat__lignes[b-0y372o8e15]  .ui-form-row,
    .umbra-combat__champs[b-0y372o8e15]  .ui-form-row,
    .umbra-combat__barre[b-0y372o8e15]  .umbra-combat__barre-champ,
    .umbra-combat__interrupteur[b-0y372o8e15] {
        grid-template-columns: minmax(0, 1fr);
        gap: var(--space-1);
    }
}

.umbra-combat__pied[b-0y372o8e15] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    padding-top: var(--space-2);
    border-top: 1px solid var(--separator);
}

.umbra-mono[b-0y372o8e15] {
    font-family: var(--font-family-mono);
    font-variant-numeric: tabular-nums;
}

/* La vignette d'une icône de sort (l'icône remplit son conteneur). */
.umbra-combat__vignette[b-0y372o8e15] {
    width: 24px;
    height: 24px;
    flex: none;
    overflow: hidden;
    border-radius: var(--radius-control);
    background: var(--surface-inset);
    font-size: var(--font-size-xs);
    color: var(--text-muted);
}

.umbra-combat__vignette--grande[b-0y372o8e15] {
    width: 36px;
    height: 36px;
}
/* /Components/Tools/Scripts.razor.rz.scp.css */
/* Géométrie de la page Scripts : bandeau du chargeur, puis explorateur à trois colonnes (dossiers, liste, détail). */
.umbra-scripts[b-3ojplpfck0] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    padding: var(--space-2);
    min-width: 0;
}

.umbra-scripts__etat[b-3ojplpfck0] {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-scripts__chiffres[b-3ojplpfck0] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--space-3) var(--space-5);
}

.umbra-scripts__charge[b-3ojplpfck0] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 220px;
    flex: 1 1 260px;
}

.umbra-scripts__charge .umbra-scripts__mono[b-3ojplpfck0] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.umbra-scripts__seuil[b-3ojplpfck0] {
    display: flex;
    align-items: flex-end;
    gap: var(--space-2);
}

.umbra-scripts__cycle-mort[b-3ojplpfck0] {
    opacity: .45;
}

.umbra-scripts__explorateur[b-3ojplpfck0] {
    display: grid;
    grid-template-columns: minmax(160px, 220px) minmax(200px, 300px) minmax(0, 1fr);
    gap: var(--space-3);
    align-items: start;
    min-height: 0;
}

@media (max-width: 1100px) {
    .umbra-scripts__explorateur[b-3ojplpfck0] { grid-template-columns: minmax(0, 1fr); }
}

.umbra-scripts__dossiers[b-3ojplpfck0],
.umbra-scripts__liste[b-3ojplpfck0],
.umbra-scripts__detail[b-3ojplpfck0] {
    min-width: 0;
}

.umbra-scripts__dossiers[b-3ojplpfck0] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
}

.umbra-scripts__dossier[b-3ojplpfck0] {
    display: inline-flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2);
    width: 100%;
}

.umbra-scripts__capacite[b-3ojplpfck0] {
    display: inline-flex;
    flex-direction: column;
    gap: 2px;
}

.umbra-scripts__mono[b-3ojplpfck0] {
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
}
/* /Components/Tools/Sniffer.razor.rz.scp.css */
/* Géométrie du sniffer (maquette « Sniffer - Utilitaire ») : commandes à gauche, paquets au centre, inspecteur à droite. */
.umbra-sniffer[b-qqridfyh98] {
    display: grid;
    grid-template-columns: minmax(200px, 240px) minmax(0, 1fr) minmax(280px, 440px);
    gap: var(--space-2);
    padding: var(--space-2);
    min-height: 0;
    align-items: start;
}

@media (max-width: 1200px) {
    .umbra-sniffer[b-qqridfyh98] { grid-template-columns: minmax(0, 1fr); }
}

.umbra-sniffer__cote[b-qqridfyh98],
.umbra-sniffer__centre[b-qqridfyh98],
.umbra-sniffer__inspecteur[b-qqridfyh98],
.umbra-sniffer__trame[b-qqridfyh98] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-sniffer__inspecteur[b-qqridfyh98] {
    border: 1px solid var(--border-subtle);
    background: var(--surface-inset);
    padding: var(--space-2);
    min-height: 240px;
}

.umbra-sniffer__stats[b-qqridfyh98] {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.umbra-sniffer__frames[b-qqridfyh98] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

.umbra-sniffer__filtres[b-qqridfyh98],
.umbra-sniffer__pages[b-qqridfyh98] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
}

/* Filtres sur une ligne (maquette) : la recherche prend la place, les listes restent compactes. */
.umbra-sniffer__filtres[b-qqridfyh98]  .umbra-sniffer__recherche {
    flex: 1 1 14rem;
    min-width: 0;
}

.umbra-sniffer__filtres[b-qqridfyh98]  .umbra-sniffer__choix {
    flex: 0 1 11rem;
    width: auto;
    min-width: 8rem;
}

.umbra-sniffer__inspecteur-tete[b-qqridfyh98] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2);
    padding-bottom: var(--space-2);
    border-bottom: 1px solid var(--separator);
}

/* La grille virtualisée défile dans son propre cadre. */
.umbra-sniffer__centre[b-qqridfyh98]  .umbra-sniffer__grille {
    max-height: 60vh;
}

.umbra-sniffer__mono[b-qqridfyh98] {
    font-family: var(--font-family-mono);
    font-variant-numeric: tabular-nums;
    overflow-wrap: anywhere;
}

/* Une heure ne se coupe pas : sur écran étroit, la grille défile dans son propre cadre. */
.umbra-sniffer__heure[b-qqridfyh98] {
    white-space: nowrap;
    overflow-wrap: normal;
}

.umbra-sniffer__mono.is-emise[b-qqridfyh98] {
    color: var(--text-accent);
}

.umbra-sniffer__mono.is-recue[b-qqridfyh98] {
    color: var(--info);
}

.umbra-sniffer__journal[b-qqridfyh98] {
    display: flex;
    flex-direction: column;
    max-height: 60vh;
    overflow: auto;
    border: 1px solid var(--border-subtle);
    background: var(--surface-inset);
}

.umbra-sniffer__ligne[b-qqridfyh98] {
    display: grid;
    grid-template-columns: 96px 56px minmax(0, 1fr);
    gap: var(--space-2);
    padding: 2px var(--space-2);
    font-size: var(--font-size-sm);
    border-bottom: 1px solid var(--separator);
}

.umbra-sniffer__ligne.is-erreur[b-qqridfyh98] {
    color: var(--danger);
}

.umbra-sniffer__contexte[b-qqridfyh98] {
    display: block;
    color: var(--text-muted);
}

.umbra-sniffer__trame-tete[b-qqridfyh98] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-2);
}

.umbra-sniffer__champ[b-qqridfyh98] {
    display: inline-flex;
    align-items: baseline;
    gap: var(--space-2);
    min-width: 0;
    font-size: var(--font-size-sm);
}

.umbra-sniffer__champ.is-courant[b-qqridfyh98] {
    font-weight: 600;
}

.umbra-sniffer__tag[b-qqridfyh98],
.umbra-sniffer__kind[b-qqridfyh98] {
    color: var(--text-muted);
    font-family: var(--font-family-mono);
}

.umbra-sniffer__label[b-qqridfyh98] {
    color: var(--text-secondary);
}

.umbra-sniffer__valeur[b-qqridfyh98] {
    font-family: var(--font-family-mono);
    color: var(--text-primary);
    overflow-wrap: anywhere;
}

.umbra-sniffer__suite[b-qqridfyh98] {
    color: var(--text-accent);
    font-size: var(--font-size-sm);
}

.umbra-sniffer__detail[b-qqridfyh98] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    padding-top: var(--space-2);
    border-top: 1px solid var(--separator);
}

.umbra-sniffer__brut[b-qqridfyh98] {
    margin: 0;
    max-height: 200px;
    overflow: auto;
    padding: var(--space-1) var(--space-2);
    background: var(--surface);
    font-family: var(--font-family-mono);
    font-size: var(--font-size-xs);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}
/* /Components/Tools/UmbraCodeEditor.razor.rz.scp.css */
/* Géométrie de l'éditeur de code : police à chasse fixe, hauteur de travail, défilement horizontal.
   Product V2 — coloration : le calque (<pre>) a EXACTEMENT la géométrie du champ (bordure, marges, police, interligne,
   tabulations) et se place dessous ; le champ, transparent, garde le curseur, la sélection et la saisie. Le texte du
   champ ne devient transparent qu'une fois le calque peint (data-coloration="active") : sans JS, tout reste lisible. */
.umbra-code-cadre[b-g2768tnrf7] {
    position: relative;
    border-radius: var(--radius-control);
    background: var(--surface-inset);
    /* Couleurs des jetons (même palette que la documentation ; ≥ 4,5:1 sur tous les fonds sombres de Product.Ui). */
    --code-k: #7fb0ec;
    --code-s: #ce9178;
    --code-c: #6a9955;
    --code-n: #b5cea8;
    --code-f: #dcdcaa;
    --code-t: #569cd6;
}

:root[data-mode="light"] .umbra-code-cadre[b-g2768tnrf7] {
    --code-k: #275a9c;
    --code-s: #a31515;
    --code-c: #3f7a2e;
    --code-n: #116644;
    --code-f: #795e26;
    --code-t: #0000ff;
}

.umbra-code[b-g2768tnrf7],
.umbra-code__calque[b-g2768tnrf7] {
    display: block;
    width: 100%;
    margin: 0;
    padding: var(--space-2) var(--space-3);
    border: 1px solid var(--border);
    border-radius: var(--radius-control);
    font-family: var(--font-family-mono);
    font-size: var(--font-size-sm);
    line-height: 1.5;
    tab-size: 2;
    letter-spacing: normal;
    white-space: pre;
}

.umbra-code[b-g2768tnrf7] {
    position: relative;
    min-height: 320px;
    resize: vertical;
    background: var(--surface-inset);
    color: var(--text-primary);
    overflow: auto;
}

.umbra-code__calque[b-g2768tnrf7] {
    position: absolute;
    inset: 0;
    overflow: hidden;
    border-color: transparent;
    background: transparent;
    color: var(--text-primary);
    pointer-events: none;
    visibility: hidden;
}

.umbra-code__calque code[b-g2768tnrf7] {
    display: block;
    font: inherit;
    white-space: pre;
    will-change: transform;
}

/* Calque peint : le champ devient une vitre (curseur et sélection visibles, texte transparent). La couleur calculée du
   champ reste celle du texte : les contrôles de contraste portent sur la vraie couleur, le calque la montre. Vitre et
   calque dépendent du MÊME attribut : en passant à « hors-limite » (ou en en revenant), les deux basculent ensemble. */
.umbra-code-cadre[data-coloration="active"] > .umbra-code__calque[b-g2768tnrf7] { visibility: visible; }
.umbra-code-cadre[data-coloration="active"] > .umbra-code[b-g2768tnrf7] {
    background: transparent;
    -webkit-text-fill-color: transparent;
    caret-color: var(--text-primary);
}
.umbra-code-cadre[data-coloration="active"] > .umbra-code[b-g2768tnrf7]::selection {
    background: rgba(90, 143, 214, .35);
}

.umbra-code-cadre[b-g2768tnrf7]  .tk-k { color: var(--code-k); }
.umbra-code-cadre[b-g2768tnrf7]  .tk-s { color: var(--code-s); }
.umbra-code-cadre[b-g2768tnrf7]  .tk-c { color: var(--code-c); font-style: italic; }
.umbra-code-cadre[b-g2768tnrf7]  .tk-n { color: var(--code-n); }
.umbra-code-cadre[b-g2768tnrf7]  .tk-f { color: var(--code-f); }
.umbra-code-cadre[b-g2768tnrf7]  .tk-t { color: var(--code-t); }

.umbra-code:focus-visible[b-g2768tnrf7] {
    outline: 2px solid var(--accent-ring, var(--accent));
    outline-offset: 1px;
}

.umbra-code[readonly][b-g2768tnrf7] {
    color: var(--text-secondary);
}

.umbra-code__aide[b-g2768tnrf7] {
    display: block;
    margin-top: var(--space-1);
    font-size: var(--font-size-xs);
    color: var(--text-muted);
}
/* /Components/Tools/UmbraHexDump.razor.rz.scp.css */
/* Géométrie de l'hexdump : chasse fixe, défilement, trois colonnes distinguées par la couleur (jetons). */
.umbra-hex[b-1f3yvca503] {
    margin: 0;
    padding: var(--space-2) var(--space-3);
    max-height: 480px;
    overflow: auto;
    background: var(--surface-inset);
    border: 1px solid var(--border-subtle);
    font-family: var(--font-family-mono);
    font-size: var(--font-size-xs);
    line-height: 1.6;
    white-space: pre;
    tab-size: 4;
}

.umbra-hex:focus-visible[b-1f3yvca503] {
    outline: 2px solid var(--accent-ring, var(--accent));
    outline-offset: 1px;
}

.umbra-hex__off[b-1f3yvca503] {
    color: var(--text-disabled);
}

.umbra-hex__oct[b-1f3yvca503] {
    color: var(--text-secondary);
}

.umbra-hex__txt[b-1f3yvca503] {
    color: var(--text-muted);
}
/* /Components/Tools/UmbraRangePair.razor.rz.scp.css */
/* Géométrie de la paire de bornes : libellé à gauche, deux champs numériques compacts à droite (maquette,
   « Gestion des combats » : libellé 210 px, contrôle sur le reste). */
.umbra-range-pair[b-lk0l0k2qa2] {
    display: grid;
    grid-template-columns: minmax(0, 210px) minmax(0, 1fr);
    align-items: center;
    gap: var(--space-3);
    min-height: 34px;
}

.umbra-range-pair__label[b-lk0l0k2qa2] {
    font-size: var(--font-size-md);
    color: var(--text-secondary);
    min-width: 0;
}

.umbra-range-pair__fields[b-lk0l0k2qa2] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
}

/* Les deux champs se partagent la place sans jamais pousser « ms » à la ligne ni déborder. */
.umbra-range-pair__fields[b-lk0l0k2qa2]  .umbra-range-pair__champ {
    flex: 1 1 6rem;
    min-width: 4.5rem;
    max-width: 7rem;
}

@media (max-width: 640px) {
    .umbra-range-pair[b-lk0l0k2qa2] {
        grid-template-columns: minmax(0, 1fr);
        gap: var(--space-1);
    }
}
