/*
 * Project Finance — styles for our own Blade views inside the Filament panel.
 *
 * Filament 5 ships prebuilt CSS that only contains the classes Filament itself uses
 * (fi-*), and this app has no Tailwind/Vite build. Tailwind utilities written in our
 * views (grid, absolute, text-sm, bg-primary-500, …) therefore generate no CSS at all.
 * Our views use the plain classes below instead. This file is static (no build step)
 * and is linked on every panel page from AdminPanelProvider (STYLES_AFTER hook).
 *
 * Colours come from Filament's CSS variables (--gray-*, --primary-*, --success-*,
 * --danger-*), so they follow the panel palette; dark mode is the `.dark` class on <html>.
 */

/* ---------- Shared ---------- */
.pf-text-sm { font-size: .875rem; line-height: 1.25rem; }
.pf-muted { color: var(--gray-500); }
.dark .pf-muted { color: var(--gray-400); }
.pf-error { font-size: .875rem; line-height: 1.25rem; color: var(--danger-600); }
.dark .pf-error { color: var(--danger-400); }
.pf-strong { font-weight: 600; }
.pf-stack-sm > * + * { margin-top: .25rem; }
.pf-stack > * + * { margin-top: .75rem; }
.pf-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.pf-toolbar label { font-size: .875rem; font-weight: 500; }
.pf-toolbar .fi-input-wrp { width: auto; }
.pf-note { border-radius: .5rem; background: var(--gray-50); padding: .75rem; font-size: .875rem; line-height: 1.25rem; }
.dark .pf-note { background: rgba(255, 255, 255, .05); }
.pf-note-meta { font-size: .75rem; line-height: 1rem; color: var(--gray-500); }
.pf-note-body { margin-top: .25rem; white-space: pre-line; }
.pf-dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; font-size: .875rem; line-height: 1.25rem; margin: 0; }
.pf-dl dt { color: var(--gray-500); }
.dark .pf-dl dt { color: var(--gray-400); }
.pf-dl dd { margin: 0; font-weight: 600; }
.pf-dl .pf-dl-wide { grid-column: 1 / -1; }
.pf-dl .pf-dl-wide dd { font-weight: 400; }
@media (min-width: 768px) { .pf-dl { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pf-cell-pad { padding: .75rem; }
.pf-cell-pad-y { padding: 1rem .75rem; }
.pf-icon-lg { width: 2rem; height: 2rem; }

/* ---------- Go Allemagne: week calendar ---------- */
.ga-cal-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.ga-cal-week { font-weight: 600; white-space: nowrap; }
.ga-cal-toolbar .fi-input-wrp { width: auto; min-width: 9rem; }
.ga-cal-legend { display: inline-flex; align-items: center; gap: .375rem; font-size: .75rem; line-height: 1rem; color: var(--gray-500); }
.dark .ga-cal-legend { color: var(--gray-400); }
.ga-cal-swatch { display: inline-block; width: .75rem; height: .75rem; border-radius: .2rem; background: color-mix(in oklab, var(--success-500) 22%, transparent); }

/* The card scrolls both ways: sideways on phones (the grid has a min-width), and
   vertically so the sticky day headers and hour column stay in view. */
.ga-cal-scroll {
    overflow: auto;
    max-height: calc(100vh - 8rem);
    max-height: calc(100dvh - 8rem);
    border: 1px solid var(--gray-200);
    border-radius: .75rem;
    background: #fff;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
}
.dark .ga-cal-scroll { border-color: rgba(255, 255, 255, .1); background: var(--gray-900); }

.ga-cal-grid {
    display: grid;
    /* --ga-days: number of shown days (empty days can be hidden). */
    grid-template-columns: 3.25rem repeat(var(--ga-days, 7), minmax(7rem, 1fr));
    min-width: 52.25rem;
    min-width: calc(3.25rem + var(--ga-days, 7) * 7rem);
    font-size: .75rem;
    line-height: 1rem;
}

.ga-cal-head {
    position: sticky;
    top: 0;
    z-index: 4;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: .375rem .25rem;
    border-bottom: 1px solid var(--gray-200);
    border-left: 1px solid var(--gray-100);
    background: #fff;
}
.ga-cal-head > span:first-child { font-weight: 600; }
.ga-cal-head > span + span { color: var(--gray-500); }
.ga-cal-head--today > span { color: var(--primary-600); }
.ga-cal-corner { left: 0; z-index: 5; border-left: 0; }
.dark .ga-cal-head { background: var(--gray-900); border-bottom-color: rgba(255, 255, 255, .1); border-left-color: rgba(255, 255, 255, .06); }
.dark .ga-cal-head > span + span { color: var(--gray-400); }
.dark .ga-cal-head--today > span { color: var(--primary-400); }

.ga-cal-hours {
    position: sticky;
    left: 0;
    z-index: 3;
    background: #fff;
    border-right: 1px solid var(--gray-200);
}
.dark .ga-cal-hours { background: var(--gray-900); border-right-color: rgba(255, 255, 255, .1); }
.ga-cal-hour {
    position: absolute;
    right: .375rem;
    transform: translateY(-50%);
    font-size: .6875rem;
    font-variant-numeric: tabular-nums;
    color: var(--gray-500);
    white-space: nowrap;
}
.ga-cal-hour:first-child { transform: none; }
.dark .ga-cal-hour { color: var(--gray-400); }

/* A collapsed run of empty hours: one thin hatched row; its label sits in the (sticky) hour column and
   runs on over the day columns. The hour after it is labelled at its top, not across the line. */
.ga-cal-gap-label {
    position: absolute;
    left: .375rem;
    display: flex;
    align-items: center;
    font-size: .625rem;
    line-height: .75rem;
    font-style: italic;
    color: var(--gray-500);
    white-space: nowrap;
    pointer-events: none;
}
.dark .ga-cal-gap-label { color: var(--gray-400); }
.ga-cal-gap-label + .ga-cal-hour { transform: none; }
.ga-cal-gap {
    position: absolute;
    left: 0;
    right: 0;
    pointer-events: none;
    border-top: 1px solid var(--gray-200);
    border-bottom: 1px solid var(--gray-200);
    background: repeating-linear-gradient(135deg, var(--gray-50) 0 4px, transparent 4px 8px);
}
.dark .ga-cal-gap { border-color: rgba(255, 255, 255, .09); background: repeating-linear-gradient(135deg, rgba(255, 255, 255, .03) 0 4px, transparent 4px 8px); }
.ga-cal-check { display: inline-flex; align-items: center; gap: .375rem; font-size: .875rem; line-height: 1.25rem; cursor: pointer; white-space: nowrap; }
.ga-cal-check input { accent-color: var(--primary-600); }

.ga-cal-day { position: relative; border-left: 1px solid var(--gray-100); }
.dark .ga-cal-day { border-left-color: rgba(255, 255, 255, .06); }

.ga-cal-band { position: absolute; left: 0; right: 0; pointer-events: none; background: color-mix(in oklab, var(--success-500) 16%, transparent); }
.dark .ga-cal-band { background: color-mix(in oklab, var(--success-500) 20%, transparent); }

.ga-cal-cell {
    position: absolute;
    left: 0;
    right: 0;
    display: block;
    width: 100%;
    padding: 0;
    border: 0;
    border-top: 1px dashed var(--gray-100);
    background: transparent;
    cursor: pointer;
}
.ga-cal-cell--hour { border-top: 1px solid var(--gray-200); }
.ga-cal-cell:hover, .ga-cal-cell:focus-visible { background: color-mix(in oklab, var(--primary-500) 10%, transparent); outline: none; }
.dark .ga-cal-cell { border-top-color: rgba(255, 255, 255, .04); }
.dark .ga-cal-cell--hour { border-top-color: rgba(255, 255, 255, .09); }
.dark .ga-cal-cell:hover, .dark .ga-cal-cell:focus-visible { background: rgba(255, 255, 255, .06); }
/* 07:00 cell: no line under the header. Listed after the dark rules so it wins in both themes. */
.ga-cal-cell--first, .dark .ga-cal-cell--first { border-top-color: transparent; }

.ga-cal-free {
    position: absolute;
    top: 1px;
    right: 2px;
    pointer-events: none;
    padding: 0 .25rem;
    border-radius: .25rem;
    font-size: .625rem;
    line-height: .75rem;  /* fits a 14 px half-hour cell (28 px per hour) */
    white-space: nowrap;
    background: var(--success-50);
    color: var(--success-700);
}
.dark .ga-cal-free { background: color-mix(in oklab, var(--success-500) 18%, transparent); color: var(--success-300); }

.ga-cal-block {
    position: absolute;
    z-index: 1;
    overflow: hidden;
    padding: 1px .3rem;
    border-radius: .375rem;
    border-left: 3px solid rgba(0, 0, 0, .25);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .25);
    color: #fff;
    font-size: .6875rem;
    line-height: .8125rem;  /* title + time fit a one-hour block (28 px) */
}
.ga-cal-block:hover { z-index: 2; }
/* Short or side-by-side blocks clip their actions: hover, tap or Tab (tabindex) expands the block
   so Repl./Move/Cancel are always reachable. Stays under the sticky header and hour column.
   A block alone in its slot widens so the actions fit on one line; a side-by-side block keeps
   its lane width and grows downwards only, so it never covers the other lane's tap target. */
.ga-cal-block:hover, .ga-cal-block:focus-within {
    height: auto !important;   /* beats the inline height */
    min-height: var(--h);
    overflow: visible;
    z-index: 2;
    box-shadow: 0 4px 12px rgba(0, 0, 0, .35);
}
.ga-cal-block--solo:hover, .ga-cal-block--solo:focus-within { min-width: 7.5rem; }
.ga-cal-block--solo:hover .ga-cal-block-actions, .ga-cal-block--solo:focus-within .ga-cal-block-actions { flex-wrap: nowrap; }
.ga-cal-block:focus-within .ga-cal-block-title, .ga-cal-block:focus-within .ga-cal-block-meta { white-space: normal; overflow-wrap: anywhere; }
.ga-cal-block:focus-visible { outline: 2px solid var(--primary-500); outline-offset: 1px; }
.ga-cal-block--cancelled { opacity: .5; text-decoration: line-through; }
.ga-cal-block-title { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ga-cal-block-meta { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; opacity: .92; }
.ga-cal-block-actions { display: flex; flex-wrap: wrap; gap: 0 .5rem; margin-top: .125rem; }
.ga-cal-block-actions button { padding: 0; border: 0; background: none; color: inherit; font: inherit; font-weight: 500; text-decoration: underline; cursor: pointer; }

/* ---------- Go Allemagne: teacher weekly availability grid ---------- */
.ga-avail-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ga-avail-table { border-collapse: separate; border-spacing: 2px; font-size: .75rem; line-height: 1rem; }
.ga-avail-table th { padding: .25rem; font-weight: 600; text-align: center; }
.ga-avail-table td { padding: 0; }
.ga-avail-table td.ga-avail-time { padding-right: .5rem; text-align: right; color: var(--gray-500); font-variant-numeric: tabular-nums; white-space: nowrap; }
.dark .ga-avail-table td.ga-avail-time { color: var(--gray-400); }
.ga-avail-cell { display: block; width: 3rem; height: 1rem; padding: 0; border: 0; border-radius: .25rem; background: var(--gray-100); cursor: pointer; }
.ga-avail-cell:hover { background: var(--gray-200); }
.ga-avail-cell--on, .ga-avail-cell--on:hover { background: var(--primary-500); }
.dark .ga-avail-cell { background: rgba(255, 255, 255, .06); }
.dark .ga-avail-cell:hover { background: rgba(255, 255, 255, .12); }
.dark .ga-avail-cell--on, .dark .ga-avail-cell--on:hover { background: var(--primary-500); }
.ga-avail-table tr.ga-avail-hour td { padding-top: 3px; }
.ga-avail-save { margin-top: 1rem; }

/* Lead file (slide-over opened from the Leads tab) */
.pf-lead-file > * + * { margin-top: 1rem; }
.pf-lead-dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem 1rem; font-size: .875rem; line-height: 1.25rem; margin: 0; }
.pf-lead-dl dt { color: var(--gray-500); font-size: .75rem; line-height: 1rem; }
.dark .pf-lead-dl dt { color: var(--gray-400); }
.pf-lead-dl dd { margin: .125rem 0 0; font-weight: 600; }
.pf-lead-break { overflow-wrap: anywhere; }
.pf-lead-links { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: .25rem; font-weight: 400; }
.pf-lead-row { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.pf-lead-gap-top { margin-top: .75rem; }
.pf-lead-inline-badge { display: inline-flex; width: fit-content; }
.pf-lead-due { color: var(--danger-600); font-weight: 600; }
.dark .pf-lead-due { color: var(--danger-400); }
.pf-lead-table { width: 100%; border-collapse: collapse; font-size: .875rem; line-height: 1.25rem; margin-top: .5rem; }
.pf-lead-table th { text-align: left; font-weight: 500; font-size: .75rem; color: var(--gray-500); padding: .25rem .5rem .25rem 0; border-bottom: 1px solid var(--gray-200); }
.pf-lead-table td { padding: .375rem .5rem .375rem 0; border-bottom: 1px solid var(--gray-100); vertical-align: top; }
.dark .pf-lead-table th { color: var(--gray-400); border-bottom-color: rgba(255, 255, 255, .1); }
.dark .pf-lead-table td { border-bottom-color: rgba(255, 255, 255, .05); }
.pf-lead-num { white-space: nowrap; font-variant-numeric: tabular-nums; }
.pf-lead-history { list-style: none; margin: 0; padding: 0; font-size: .875rem; line-height: 1.25rem; }
.pf-lead-history li { display: flex; flex-wrap: wrap; align-items: baseline; gap: .25rem .5rem; padding: .375rem 0; border-bottom: 1px solid var(--gray-100); }
.dark .pf-lead-history li { border-bottom-color: rgba(255, 255, 255, .05); }
.pf-lead-history-date { color: var(--gray-500); font-variant-numeric: tabular-nums; min-width: 5.5rem; }
.dark .pf-lead-history-date { color: var(--gray-400); }
.pf-lead-history-text { flex: 1 1 12rem; white-space: pre-line; }
@media (min-width: 640px) { .pf-lead-dl { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pf-lead-head { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.pf-lead-title { margin: 0; font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; color: var(--gray-950); }
.dark .pf-lead-title { color: #fff; }
.pf-lead-group-meta { color: var(--gray-500); font-size: .8125rem; margin-top: .125rem; }
.dark .pf-lead-group-meta { color: var(--gray-400); }
.pf-lead-subhead { font-weight: 600; font-size: .8125rem; color: var(--gray-700); margin-bottom: .25rem; }
.dark .pf-lead-subhead { color: var(--gray-200); }
.pf-lead-warn { padding: .5rem .75rem; border-radius: .5rem; background: var(--warning-50); color: var(--warning-700); font-weight: 500; }
.dark .pf-lead-warn { background: rgba(245, 158, 11, .1); color: var(--warning-400); }
.pf-lead-suggestions { list-style: none; margin: 0; padding: 0; }
.pf-lead-callout { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem; padding: .75rem 1rem; border-radius: .75rem; border: 1px solid var(--warning-300); background: var(--warning-50); color: var(--warning-800); }
.pf-lead-callout-text { display: flex; flex-direction: column; gap: .125rem; min-width: 0; }
.dark .pf-lead-callout { border-color: color-mix(in oklab, var(--warning-500) 40%, transparent); background: rgba(245, 158, 11, .1); color: var(--warning-300); }
.pf-lead-toggle { margin-top: .5rem; padding: 0; border: 0; background: none; color: var(--primary-600); font-size: .8125rem; font-weight: 600; cursor: pointer; }
.pf-lead-toggle:hover { text-decoration: underline; }
.pf-lead-toggle:focus-visible { outline: 2px solid var(--primary-500); outline-offset: 2px; border-radius: .25rem; }
.dark .pf-lead-toggle { color: var(--primary-400); }
.pf-lead-suggestions li { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .5rem 0; border-bottom: 1px solid var(--gray-100); }
.pf-lead-suggestions li:last-child { border-bottom: 0; }
.dark .pf-lead-suggestions li { border-bottom-color: rgba(255, 255, 255, .05); }
.pf-lead-suggestion-main { min-width: 0; flex: 1 1 auto; }
.pf-lead-order { padding: .75rem; border: 1px solid var(--gray-200); border-radius: .75rem; }
.dark .pf-lead-order { border-color: rgba(255, 255, 255, .1); }
.pf-lead-order-closed { opacity: .65; }
.pf-lead-right { text-align: right; }

/* ---------- Go Allemagne: groups week overview + group file ---------- */
/* 600–700 shades: white block text stays readable. Green started, blue upcoming, amber waitlist. */
.ga-grp--started { --ga-grp: #15803d; }
.ga-grp--upcoming { --ga-grp: #2563eb; }
.ga-grp--waitlist { --ga-grp: #b45309; }
.ga-grp-dot { display: inline-block; flex: none; width: .75rem; height: .75rem; border-radius: 9999px; background: var(--ga-grp, var(--gray-400)); }
.ga-grp-legend { margin-bottom: .75rem; }
.ga-grp-scroll { max-height: calc(100vh - 12rem); max-height: calc(100dvh - 12rem); }
.ga-grp-line { position: absolute; left: 0; right: 0; height: 0; border-top: 1px solid var(--gray-100); pointer-events: none; }
.dark .ga-grp-line { border-top-color: rgba(255, 255, 255, .06); }
.ga-grp-block {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    text-align: left;
    margin: 0;
    border: 0;
    border-left: 3px solid rgba(0, 0, 0, .25);
    font-family: inherit;
    background: var(--ga-grp);
    cursor: pointer;
}
.ga-grp-block:hover, .ga-grp-block:focus-visible { filter: brightness(1.08); }
.ga-grp-block:focus { height: auto !important; min-height: var(--h); overflow: visible; z-index: 2; }
.ga-grp-block:focus .ga-cal-block-title, .ga-grp-block:focus .ga-cal-block-meta { white-space: normal; overflow-wrap: anywhere; }
.ga-grp-empty { margin-top: .5rem; }
.ga-grp-file-actions { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; margin-left: auto; }
.ga-grp-file .pf-lead-dl .ga-grp-file-wide { grid-column: span 2; }

/* ---------- Potential groups (Overview tab) ---------- */
.ga-pg > * + * { margin-top: 1rem; }
.ga-pg-controls .fi-input-wrp { min-width: 4.5rem; }
.ga-pg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); gap: 1rem; align-items: start; }
.ga-pg-head { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .5rem; }
.ga-pg-sub { font-size: .75rem; line-height: 1rem; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--gray-500); margin-bottom: .25rem; }
.dark .ga-pg-sub { color: var(--gray-400); }
.ga-pg-leads { list-style: none; margin: 0; padding: 0; }
.ga-pg-leads > li { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; padding: .25rem 0; border-top: 1px solid var(--gray-100); }
.ga-pg-leads > li:first-child { border-top: 0; }
.dark .ga-pg-leads > li { border-top-color: rgba(255, 255, 255, .06); }
.ga-pg-leads > li > :first-child { flex: 1 1 8rem; min-width: 0; overflow-wrap: anywhere; }
.ga-pg-name { background: none; border: 0; padding: 0; font: inherit; font-weight: 600; color: var(--primary-600); cursor: pointer; text-align: left; }
.ga-pg-name:hover, .ga-pg-name:focus-visible { text-decoration: underline; }
.dark .ga-pg-name { color: var(--primary-400); }
.ga-pg-group { border-radius: .5rem; background: var(--gray-50); padding: .5rem .75rem; }
.ga-pg-group + .ga-pg-group { margin-top: .5rem; }
.dark .ga-pg-group { background: rgba(255, 255, 255, .05); }
.ga-pg-actions { display: flex; justify-content: flex-end; }
.ga-pg-more { display: flex; justify-content: center; }

/* ---------- Pré-lancement / En cours boards (Paiements, Groupes en cours, Séances, Élèves actifs) ---------- */
.ga-board > * + * { margin-top: 1rem; }
.ga-board-card { border: 1px solid var(--gray-200); border-radius: .75rem; background: #fff; overflow: hidden; }
.dark .ga-board-card { border-color: rgba(255, 255, 255, .1); background: var(--gray-900); }
.ga-board-table { width: 100%; border-collapse: collapse; font-size: .875rem; line-height: 1.25rem; }
.ga-board-table th { text-align: left; font-weight: 500; font-size: .75rem; color: var(--gray-500); padding: .625rem .75rem; background: var(--gray-50); border-bottom: 1px solid var(--gray-200); white-space: nowrap; }
.ga-board-table td { padding: .625rem .75rem; border-bottom: 1px solid var(--gray-100); vertical-align: top; }
.ga-board-table tbody tr:last-child td { border-bottom: 0; }
.dark .ga-board-table th { color: var(--gray-400); background: rgba(255, 255, 255, .03); border-bottom-color: rgba(255, 255, 255, .1); }
.dark .ga-board-table td { border-bottom-color: rgba(255, 255, 255, .05); }
.ga-board-num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ga-board-table th.ga-board-num { text-align: right; }
.ga-board-nowrap { white-space: nowrap; }
.ga-board-link { max-width: 16rem; overflow-wrap: anywhere; }
.ga-board-badges { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; }
.ga-board-row--done td { color: var(--gray-500); }
.dark .ga-board-row--done td { color: var(--gray-400); }
.ga-board-facts { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr) minmax(0, 1fr); gap: .5rem 1rem; margin: 0; }
.ga-board-facts dt { font-size: .75rem; color: var(--gray-500); }
.dark .ga-board-facts dt { color: var(--gray-400); }
.ga-board-facts dd { margin: .125rem 0 0; font-weight: 600; }

/* Phones: each row becomes a small card, its cells labelled from data-label. */
@media (max-width: 767px) {
    .ga-board-facts { grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr) minmax(0, 1fr); }
    .ga-board-card { border: 0; background: transparent; overflow: visible; }
    .dark .ga-board-card { background: transparent; }
    .ga-board-table thead { display: none; }
    .ga-board-table, .ga-board-table tbody, .ga-board-table tr, .ga-board-table td { display: block; width: 100%; }
    .ga-board-table tr { border: 1px solid var(--gray-200); border-radius: .75rem; background: #fff; padding: .5rem .75rem; }
    .ga-board-table tr + tr { margin-top: .75rem; }
    .dark .ga-board-table tr { border-color: rgba(255, 255, 255, .1); background: var(--gray-900); }
    .ga-board-table td { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .375rem 0; text-align: right; }
    .ga-board-table td::before { content: attr(data-label); flex: none; font-size: .75rem; font-weight: 500; color: var(--gray-500); text-align: left; }
    .dark .ga-board-table td::before { color: var(--gray-400); }
    .ga-board-table td:first-child { display: block; text-align: left; font-size: 1rem; padding-bottom: .5rem; border-bottom: 1px solid var(--gray-100); }
    .dark .ga-board-table td:first-child { border-bottom-color: rgba(255, 255, 255, .06); }
    .ga-board-table td:first-child::before { content: none; }
    .ga-board-table tbody tr:last-child td { border-bottom: 1px solid var(--gray-100); }
    .ga-board-table tbody tr td:last-child, .ga-board-table tbody tr:last-child td:last-child { border-bottom: 0; }
    .ga-board-link { max-width: none; }
    .ga-board-badges { justify-content: flex-end; }
}
/* Lead file: Parcours (one line per enrolment) and money grouped by enrolment */
.pf-lead-journey { list-style: none; margin: 0; padding: 0; font-size: .875rem; line-height: 1.25rem; }
.pf-lead-journey li { padding: .625rem 0; border-bottom: 1px solid var(--gray-100); }
.pf-lead-journey li:first-child { padding-top: 0; }
.pf-lead-journey li:last-child { border-bottom: 0; padding-bottom: 0; }
.dark .pf-lead-journey li { border-bottom-color: rgba(255, 255, 255, .05); }
.pf-lead-journey-off { opacity: .6; }
.pf-lead-journey-group { font-weight: 600; color: var(--primary-600); text-align: left; background: none; border: 0; padding: 0; cursor: pointer; }
.pf-lead-journey-group:hover { text-decoration: underline; }
.dark .pf-lead-journey-group { color: var(--primary-400); }
.pf-lead-journey-money { margin-top: .375rem; }
.pf-lead-money-block { padding-top: .75rem; border-top: 1px solid var(--gray-200); }
.pf-lead-money-block > * + * { margin-top: .75rem; }
.dark .pf-lead-money-block { border-top-color: rgba(255, 255, 255, .1); }

/* Séances: Zoom leftovers */
.ga-board-zoomcount { margin: 0 0 .5rem; font-size: .875rem; font-weight: 600; color: var(--warning-700); }
.dark .ga-board-zoomcount { color: var(--warning-400); }
.ga-board-zoom { display: inline-block; margin-top: .25rem; padding: .0625rem .5rem; border-radius: .375rem; font-size: .75rem; font-weight: 600; background: var(--warning-100); color: var(--warning-800); }
.dark .ga-board-zoom { background: color-mix(in srgb, var(--warning-500) 20%, transparent); color: var(--warning-300); }

/* Prospects list: the whole row opens the lead file; Objectif, Statut and Niveau values filter the list. */
.fi-ta-row.pf-lead-tr { cursor: pointer; transition: background-color .12s ease; }
.fi-ta-row.pf-lead-tr:hover { background-color: var(--gray-50); }
.dark .fi-ta-row.pf-lead-tr:hover { background-color: rgb(255 255 255 / .04); }
.fi-ta-row.pf-lead-tr-due { background-color: var(--warning-50); }
.dark .fi-ta-row.pf-lead-tr-due { background-color: color-mix(in oklab, var(--warning-500) 10%, transparent); }
.pf-lead-filterable .fi-ta-col, .pf-lead-filterable button { cursor: zoom-in; }
.pf-lead-filterable:hover .fi-ta-text-item, .pf-lead-filterable:hover .fi-badge { text-decoration: underline dotted; text-underline-offset: 3px; }
.pf-lead-misfit { font-size: .75rem; line-height: 1rem; color: var(--warning-700); }
.dark .pf-lead-misfit { color: var(--warning-400); }

/* Payment flow: the activation card code to put in the parcel, and the row actions of Paiements */
.pf-card-code { margin-top: .375rem; padding: .375rem .625rem; border-radius: .5rem; border: 1px dashed var(--primary-400); background: var(--primary-50); color: var(--primary-700); font-weight: 600; font-size: .875rem; font-variant-numeric: tabular-nums; letter-spacing: .02em; overflow-wrap: anywhere; }
.dark .pf-card-code { border-color: var(--primary-500); background: rgba(255, 255, 255, .04); color: var(--primary-300); }
.pf-card-code-sm { display: inline-block; padding: .125rem .375rem; font-size: .75rem; margin-top: .25rem; white-space: nowrap; overflow-wrap: normal; letter-spacing: 0; }
.pf-pay-actions { display: flex; flex-direction: column; align-items: flex-start; gap: .25rem; min-width: 9.5rem; }
.pf-pay-actions .fi-btn, .pf-pay-actions .fi-link { white-space: nowrap; }
.pf-pay-table th, .pf-pay-table td { padding-left: .5rem; padding-right: .5rem; }
.pf-pay-table th:first-child, .pf-pay-table td:first-child { padding-left: .75rem; }
.pf-pay-group { margin-top: .25rem; font-size: .8125rem; }
.pf-pay-status { min-width: 8.5rem; }
.pf-pay-status .fi-badge { max-width: none; }
@media (max-width: 767px) {
    .pf-pay-actions { align-items: flex-end; min-width: 0; }
    .pf-pay-status { min-width: 0; }
}

/* =====================================================================
 * Density pass (all projects): smaller type scale on desktop, compact table rows,
 * a lighter page header, left-aligned tab bars with the inner tabs as an underline.
 * Phones keep the 16 px root (inputs under 16 px make iOS zoom in).
 * ===================================================================== */
@media (min-width: 1024px) {
    html { font-size: 15px; }
}
.fi-header-heading { font-size: 1.5rem; line-height: 2rem; }
@media (min-width: 640px) { .fi-header-heading { font-size: 1.625rem; line-height: 2.125rem; } }
.fi-page-header-main-ctn { row-gap: 1rem; }

/* Table rows: 2.5 instead of 4 spacing units top and bottom; header cells match. */
.fi-ta-text:not(.fi-inline), .fi-ta-text { padding-block: calc(var(--spacing) * 2.5); }
.fi-ta-header-cell { padding-block: calc(var(--spacing) * 2.5); }
.fi-ta-icon:not(.fi-inline), .fi-ta-toggle:not(.fi-inline), .fi-ta-image:not(.fi-inline) { padding-block: calc(var(--spacing) * 2); }
.fi-ta-text-description, .fi-ta-text .fi-ta-text-description { font-size: .8125rem; }

/* Top tab bars start on the left, like the content under them. */
.fi-page-sub-navigation-tabs.fi-tabs:not(.fi-contained) { margin-inline: 0; width: fit-content; max-width: 100%; padding: calc(var(--spacing) * 1); }
.fi-page-sub-navigation-tabs .fi-tabs-item { padding-block: calc(var(--spacing) * 1.5); }
/* Tabs inside a page (Pré-lancement / En cours sections): an underline, not a second floating pill bar. */
.fi-page .fi-sc-tabs > .fi-tabs:not(.fi-contained) {
    margin-inline: 0; padding: 0; border-radius: 0; background: transparent; box-shadow: none;
    border-bottom: 1px solid var(--gray-200); gap: calc(var(--spacing) * 4);
}
.dark .fi-page .fi-sc-tabs > .fi-tabs:not(.fi-contained) { background: transparent; border-bottom-color: rgba(255, 255, 255, .1); }
.fi-page .fi-sc-tabs > .fi-tabs:not(.fi-contained) .fi-tabs-item { border-radius: 0; padding-inline: 0; padding-block: calc(var(--spacing) * 2); margin-bottom: -1px; border-bottom: 2px solid transparent; background: transparent; }
.fi-page .fi-sc-tabs > .fi-tabs:not(.fi-contained) .fi-tabs-item.fi-active { border-bottom-color: var(--primary-600); background: transparent; }
.dark .fi-page .fi-sc-tabs > .fi-tabs:not(.fi-contained) .fi-tabs-item.fi-active { border-bottom-color: var(--primary-400); }
.fi-page .fi-sc-tabs .fi-sc-tabs-tab.fi-active { margin-top: calc(var(--spacing) * 4); }

/* Long names: one line with an ellipsis, the full name in the title. */
.ga-truncate { display: inline-block; max-width: 16rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: bottom; }

/* Level tag: neutral, not one more coloured badge. */
.ga-level, .pf-lead-level { display: inline-block; padding: 0 .375rem; border-radius: .375rem; border: 1px solid var(--gray-300); color: var(--gray-700); font-size: .75rem; line-height: 1.125rem; font-weight: 600; letter-spacing: .02em; font-variant-numeric: tabular-nums; }
.dark .ga-level, .dark .pf-lead-level { border-color: rgba(255, 255, 255, .2); color: var(--gray-200); }

/* ---------- Group label "A2.1 Soir · A2 ⓘ" + tip (suggestions, Potential groups, payment popup) ---------- */
.ga-chip { position: relative; display: inline-flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; max-width: 100%; }
.ga-chip-name, .ga-opt-name { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.ga-info {
    display: inline-flex; flex: none; align-items: center; justify-content: center;
    width: 1.125rem; height: 1.125rem; padding: 0; border-radius: 9999px;
    border: 1px solid var(--gray-400); background: transparent; color: var(--gray-600);
    font: italic 700 .6875rem/1 Georgia, 'Times New Roman', serif; cursor: help;
}
button.ga-info { cursor: pointer; }
.ga-info:hover, .ga-info:focus-visible, .ga-info[aria-expanded="true"] { border-color: var(--primary-500); color: var(--primary-600); outline: none; box-shadow: 0 0 0 2px color-mix(in oklab, var(--primary-500) 25%, transparent); }
.dark .ga-info { border-color: var(--gray-500); color: var(--gray-300); }
.ga-tip {
    position: absolute; top: calc(100% + .375rem); left: 0; z-index: 30;
    display: flex; flex-direction: column; gap: .125rem;
    width: max-content; max-width: min(20rem, 80vw); padding: .5rem .625rem; border-radius: .5rem;
    background: var(--gray-900); color: #fff; font-size: .8125rem; line-height: 1.25rem; font-weight: 400;
    box-shadow: 0 6px 18px rgba(0, 0, 0, .18);
}
.dark .ga-tip { background: var(--gray-700); }
.ga-tip-warn { color: var(--warning-300); }
.ga-opt-fit { display: inline-block; padding: 0 .375rem; border-radius: .375rem; font-size: .6875rem; line-height: 1.125rem; font-weight: 600; white-space: nowrap; }
.ga-opt-fit--ok { background: var(--success-50); color: var(--success-700); }
.ga-opt-fit--part { background: var(--warning-50); color: var(--warning-700); }
.ga-opt-fit--none { background: var(--danger-50); color: var(--danger-700); }
.dark .ga-opt-fit--ok { background: color-mix(in oklab, var(--success-500) 18%, transparent); color: var(--success-300); }
.dark .ga-opt-fit--part { background: color-mix(in oklab, var(--warning-500) 18%, transparent); color: var(--warning-300); }
.dark .ga-opt-fit--none { background: color-mix(in oklab, var(--danger-500) 18%, transparent); color: var(--danger-300); }
/* In the Select dropdown the tip is a line under the option: shown while the ⓘ is hovered or the option has the keyboard focus. */
.ga-opt { display: flex; flex-direction: column; min-width: 0; }
.ga-opt-main { display: inline-flex; align-items: center; gap: .5rem; min-width: 0; }
.ga-opt-tip { display: none; margin-top: .125rem; font-size: .75rem; line-height: 1rem; color: var(--gray-500); white-space: normal; }
.dark .ga-opt-tip { color: var(--gray-400); }
.ga-opt-main:has(.ga-info:hover) + .ga-opt-tip,
.fi-select-input-option:focus .ga-opt-tip,
.fi-select-input-option:focus-visible .ga-opt-tip { display: block; }
.fi-select-input-value-label .ga-opt-tip, .fi-select-input-btn .ga-opt-tip { display: none !important; }

/* Payment popup: product lines (name · price | qty) */
.ga-qty .fi-input-wrp { max-width: 6rem; margin-inline-start: auto; }
.ga-qty input { text-align: right; }
.ga-products .fi-section-header-heading { font-size: .875rem; font-weight: 600; }
.ga-products .fi-section { box-shadow: none; }

/* Boards: remaining money in the text colour (every row has some); empty cells hidden on phones. */
.ga-board-table .ga-board-num.pf-lead-due { color: inherit; }
.pf-pay-enrol { margin-top: .25rem; font-size: .75rem; line-height: 1rem; color: var(--gray-500); }
.dark .pf-pay-enrol { color: var(--gray-400); }
.ga-pg-leads .pf-pay-enrol { margin-top: 0; }
.ga-board-table th, .ga-board-table td { padding-block: .5rem; }
@media (max-width: 767px) {
    .ga-board-table td.ga-board-empty { display: none; }
    .ga-board-table td { padding: .25rem 0; }
}

/* Lead file: tighter rhythm */
.pf-lead-file > * + * { margin-top: .75rem; }
.pf-lead-suggestions li { padding: .375rem 0; }
@media (max-width: 767px) {
    .ga-board-table td.pf-pay-status { gap: .5rem; }
    .ga-board-table td.pf-pay-status::before { margin-right: auto; }
    .ga-board-table td.pf-pay-status .pf-pay-enrol { margin-top: 0; }
}

/* ---------- Relation-manager tabs: instant placeholder while the clicked tab loads ---------- */
.pf-tabs-loading > .fi-sc-tabs-tab { display: none; }
.pf-tabs-loading::after {
    content: "";
    display: block;
    height: 8rem;
    margin-top: 1.5rem;
    border-radius: .75rem;
    background: var(--gray-100);
    animation: pf-pulse 1.2s ease-in-out infinite;
}
.dark .pf-tabs-loading::after { background: rgba(255, 255, 255, .05); }
@keyframes pf-pulse { 50% { opacity: .5; } }

/* ---------- Go Allemagne "Site web" page ---------- */
.pf-site-intro { margin: 1rem 0; }
.pf-site-retry { margin-top: .75rem; }
.pf-site-loading { justify-content: center; padding: 3rem 0; color: var(--gray-500); font-size: .875rem; }
.pf-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .8125rem; }
.pf-link { color: var(--primary-600); text-decoration: underline; }
.dark .pf-link { color: var(--primary-400); }
.pf-faq-list { list-style: none; margin: 0; padding: 0; }
.pf-faq-item { display: flex; align-items: flex-start; gap: .75rem; padding: .875rem 0; border-top: 1px solid var(--gray-200); }
.pf-faq-item:first-child { border-top: 0; padding-top: 0; }
.dark .pf-faq-item { border-color: rgba(255, 255, 255, .1); }
.pf-faq-move { display: flex; flex-direction: column; flex-shrink: 0; }
.pf-faq-body { flex: 1 1 0%; min-width: 0; }
.pf-faq-other[dir="rtl"] { text-align: right; }
.pf-faq-answer { margin-top: .25rem; }
.pf-faq-other { margin-top: .25rem; color: var(--gray-600); }
.dark .pf-faq-other { color: var(--gray-300); }
.pf-faq-actions { display: flex; align-items: center; gap: .25rem; flex-shrink: 0; }
.pf-faq-state { min-width: 3.5rem; margin-right: .25rem; }
.pf-faq-toggle { position: relative; width: 2.25rem; height: 1.25rem; border-radius: 9999px; background: var(--gray-200); transition: background .15s; flex-shrink: 0; cursor: pointer; }
.dark .pf-faq-toggle { background: rgba(255, 255, 255, .1); }
.pf-faq-toggle--on, .dark .pf-faq-toggle--on { background: var(--primary-600); }
.pf-faq-toggle-dot { position: absolute; top: .125rem; left: .125rem; width: 1rem; height: 1rem; border-radius: 9999px; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .2); transition: transform .15s; }
.pf-faq-toggle--on .pf-faq-toggle-dot { transform: translateX(1rem); }
@media (max-width: 640px) {
    .pf-faq-item { flex-wrap: wrap; }
    .pf-faq-actions { width: 100%; justify-content: flex-end; }
}
.pf-video-upload { display: flex; flex-direction: column; gap: .5rem; padding: .875rem; border: 1px dashed var(--gray-300); border-radius: .75rem; }
.dark .pf-video-upload { border-color: rgba(255, 255, 255, .15); }
.pf-video-head { display: flex; justify-content: space-between; gap: .75rem; flex-wrap: wrap; }
.pf-video-row { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; }
.pf-video-input { font-size: .875rem; max-width: 100%; }
.pf-progress { height: .5rem; border-radius: 9999px; background: var(--gray-200); overflow: hidden; }
.dark .pf-progress { background: rgba(255, 255, 255, .1); }
.pf-progress-bar { height: 100%; background: var(--primary-600); transition: width .2s; }

/* Prerequisites missing in a popup (availability, group): red until filled. */
.pf-missing { border: 1px solid var(--danger-400) !important; background: var(--danger-50) !important; }
.pf-missing .fi-section-header-heading { color: var(--danger-700); }
.dark .pf-missing { border-color: color-mix(in oklab, var(--danger-500) 55%, transparent) !important; background: color-mix(in oklab, var(--danger-500) 10%, transparent) !important; }
.dark .pf-missing .fi-section-header-heading { color: var(--danger-300); }
.pf-field-missing .fi-input-wrp { box-shadow: 0 0 0 1.5px var(--danger-500) !important; }
.pf-field-missing .fi-fo-field-label-content { color: var(--danger-600); }
.dark .pf-field-missing .fi-fo-field-label-content { color: var(--danger-400); }
/* Availability editor: day chips and time presets wrap on phones. */
.pf-avail .fi-fo-toggle-buttons { flex-wrap: wrap; }

/* Go Allemagne: bank transfers waiting for the check (lead file, Payments board) */
.pf-transfer-line { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem .5rem; margin-top: .5rem; font-size: .8125rem; }
.pf-transfer-line > .pf-muted:last-child { flex-basis: 100%; }
.pf-pay-to-verify { margin-top: .25rem; font-size: .75rem; line-height: 1rem; color: var(--warning-600); font-weight: 500; }
.dark .pf-pay-to-verify { color: var(--warning-400); }
.pf-pay-not-found { margin-top: .25rem; display: flex; }

/* Availability editor: the added ranges of a row, compact */
.pf-avail-ranges .fi-fo-repeater-item { box-shadow: none; }

/* Go Allemagne: WhatsApp not sent, the message ready for wa.me or to copy */
.pf-wa-fallback { display: flex; flex-direction: column; gap: .75rem; }
.pf-wa-text { width: 100%; font-size: .875rem; line-height: 1.375rem; padding: .625rem .75rem; border: 1px solid var(--gray-300); border-radius: .5rem; background: var(--gray-50); color: var(--gray-950); resize: vertical; white-space: pre-wrap; }
.dark .pf-wa-text { border-color: rgba(255, 255, 255, .15); background: rgba(255, 255, 255, .05); color: #fff; }
.pf-wa-preview { font-size: .875rem; line-height: 1.375rem; padding: .625rem .75rem; border: 1px solid var(--gray-200); border-radius: .5rem; background: var(--gray-50); color: var(--gray-950); overflow-wrap: anywhere; }
.dark .pf-wa-preview { border-color: rgba(255, 255, 255, .1); background: rgba(255, 255, 255, .05); color: #fff; }
.pf-wa-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; }

/* ---------- Signature Allemande ---------- */
.sa-file .pf-lead-dl .sa-wide, .pf-lead-file .pf-lead-dl .sa-wide { grid-column: 1 / -1; }
.sa-file .pf-lead-dl .sa-wide dd { font-weight: 400; white-space: pre-line; }
.sa-head-actions { margin-left: auto; display: inline-flex; gap: .5rem; }
.sa-subhead-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .5rem; }
.sa-callout { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem .75rem; border-radius: .5rem; padding: .625rem .75rem; font-size: .875rem; background: var(--gray-50); }
.dark .sa-callout { background: rgba(255, 255, 255, .05); }
.sa-callout--warning { background: color-mix(in oklab, var(--warning-500) 12%, transparent); color: var(--warning-700); }
.dark .sa-callout--warning { color: var(--warning-300); }
.sa-items { list-style: none; margin: 0; padding: 0; }
.sa-items > * + * { margin-top: .5rem; }
.sa-item { border: 1px solid var(--gray-200); border-radius: .5rem; padding: .625rem .75rem; }
.dark .sa-item { border-color: rgba(255, 255, 255, .1); }
.sa-item > * + * { margin-top: .25rem; }
.sa-item-head { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem .5rem; }
.sa-item-actions { margin-left: auto; display: inline-flex; flex-wrap: wrap; align-items: center; gap: .25rem; }
.sa-shots { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .5rem; }
.sa-shots img { width: 4.5rem; height: 4.5rem; object-fit: cover; border-radius: .375rem; border: 1px solid var(--gray-200); }
.dark .sa-shots img { border-color: rgba(255, 255, 255, .1); }
.sa-list { list-style: none; margin: 0; padding: 0; }
.sa-list li { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .625rem; padding: .375rem 0; border-bottom: 1px solid var(--gray-100); }
.dark .sa-list li { border-color: rgba(255, 255, 255, .06); }
.sa-warn { color: var(--warning-600); font-weight: 500; }
.dark .sa-warn { color: var(--warning-400); }
.sa-neg { color: var(--danger-600); }
.sa-pos { color: var(--success-600); }
.dark .sa-neg { color: var(--danger-400); }
.dark .sa-pos { color: var(--success-400); }
.sa-dl { margin-top: .75rem; }
.sa-notes { margin-top: .75rem; white-space: pre-line; }
.sa-cards { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
@media (min-width: 768px) { .sa-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.sa-card-line { display: flex; flex-wrap: wrap; gap: .25rem .5rem; font-size: .875rem; margin: 0; }
.sa-card-line + .sa-card-line { margin-top: .375rem; }
.sa-link { color: var(--primary-600); }
.dark .sa-link { color: var(--primary-400); }
.sa-steps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
@media (min-width: 768px) { .sa-steps { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.sa-step { display: flex; flex-direction: column; gap: .125rem; border: 1px solid var(--gray-200); border-radius: .5rem; padding: .625rem .75rem; }
.dark .sa-step { border-color: rgba(255, 255, 255, .1); }
.sa-step:hover { background: var(--gray-50); }
.dark .sa-step:hover { background: rgba(255, 255, 255, .05); }
.sa-step-n { font-size: 1.5rem; line-height: 2rem; font-weight: 600; }
.sa-step-label { font-size: .8125rem; color: var(--gray-500); }
.dark .sa-step-label { color: var(--gray-400); }
/* Signature Allemande phase 2: profit figures, breakdown table, order-taking window calendar. */
.sa-kpis { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; }
@media (min-width: 768px) { .sa-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.sa-kpi { display: flex; flex-direction: column; gap: .125rem; border-radius: .75rem; padding: .875rem 1rem; background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .05); outline: 1px solid rgba(3, 7, 18, .05); }
.dark .sa-kpi { background: var(--gray-900); outline-color: rgba(255, 255, 255, .1); }
.sa-kpi-label { font-size: .8125rem; font-weight: 500; color: var(--gray-500); }
.dark .sa-kpi-label { color: var(--gray-400); }
.sa-kpi-value { font-size: 1.5rem; line-height: 2rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.sa-kpi-hint { font-size: .75rem; color: var(--gray-500); }
.dark .sa-kpi-hint { color: var(--gray-400); }
.sa-breakdown { width: 100%; border-collapse: collapse; }
.sa-breakdown th { text-align: left; font-weight: 500; color: var(--gray-500); padding: .375rem .5rem; border-bottom: 1px solid var(--gray-200); }
.sa-breakdown td { padding: .375rem .5rem; border-bottom: 1px solid var(--gray-100); }
.sa-breakdown th:not(:first-child), .sa-breakdown td:not(:first-child) { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.sa-breakdown tfoot td { font-weight: 600; border-bottom: 0; border-top: 1px solid var(--gray-300); }
.dark .sa-breakdown th { color: var(--gray-400); border-color: rgba(255, 255, 255, .1); }
.dark .sa-breakdown td { border-color: rgba(255, 255, 255, .06); }
.dark .sa-breakdown tfoot td { border-color: rgba(255, 255, 255, .15); }
.sa-window-line { display: flex; flex-wrap: wrap; gap: .25rem .5rem; margin: 0 0 .75rem; }
.sa-cal-months { display: flex; flex-wrap: wrap; gap: 1.25rem; }
.sa-cal { width: 15rem; max-width: 100%; }
.sa-cal-title { font-size: .8125rem; font-weight: 600; margin-bottom: .375rem; }
.sa-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.sa-cal-wd { font-size: .6875rem; text-align: center; color: var(--gray-400); }
.sa-cal-day { position: relative; font-size: .75rem; text-align: center; line-height: 1.75rem; border-radius: .25rem; color: var(--gray-500); font-variant-numeric: tabular-nums; }
.sa-cal-day sub { font-size: .5625rem; margin-left: 1px; }
.sa-cal-in { background: color-mix(in oklab, var(--primary-500) 22%, transparent); color: var(--gray-950); font-weight: 500; }
.dark .sa-cal-in { color: #fff; }
.sa-cal-shared { background: repeating-linear-gradient(135deg, color-mix(in oklab, var(--primary-500) 30%, transparent) 0 4px, color-mix(in oklab, var(--warning-500) 30%, transparent) 4px 8px); }
.sa-cal-today { outline: 2px solid var(--primary-600); outline-offset: -2px; }
.sa-cal-legend { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; margin-top: .75rem; }
.sa-cal-key { display: inline-block; width: .875rem; height: .875rem; border-radius: .2rem; }
.sa-cal-key + .sa-cal-key, .sa-cal-legend .sa-cal-key:not(:first-child) { margin-left: .75rem; }

/* Signature Allemande phase 3: refused callout, clickable KPI (money held by livreurs). */
.sa-callout--danger { background: color-mix(in oklab, var(--danger-500) 12%, transparent); color: var(--danger-700); }
.dark .sa-callout--danger { color: var(--danger-300); }
a.sa-kpi--link { text-decoration: none; color: inherit; transition: outline-color .15s; }
a.sa-kpi--link:hover { outline-color: var(--primary-500); }

/* Go Allemagne: sign-up page versions (A/B test) */
.pf-ab-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; }
.pf-ab-scroll { overflow-x: auto; }
.pf-ab-table td { vertical-align: middle; }
.pf-ab-name { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; }
.pf-ab-url { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem; margin-top: .125rem; max-width: 22rem; overflow-wrap: anywhere; }
.pf-ab-weight { width: 5rem; display: inline-flex; }
.pf-ab-best td { background: color-mix(in oklab, var(--success-500) 8%, transparent); }
.pf-ab-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; margin-top: .75rem; }
.pf-ab-notes { margin-top: .75rem; }
.pf-ab-notes > * + * { margin-top: .25rem; }
.pf-variant-badge { margin-left: .25rem; }
@media (max-width: 767px) {
    .pf-ab-url { max-width: none; justify-content: flex-end; }
    .pf-ab-table td:first-child .pf-ab-url { justify-content: flex-start; }
}

/* ---------- GA: sign-up page editor (texts left, live preview right) ---------- */
.ga-ed { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; align-items: start; }
@media (min-width: 1024px) { .ga-ed { grid-template-columns: minmax(20rem, 2fr) minmax(0, 3fr); } }
.ga-ed-form > * + * { margin-top: .75rem; }
.ga-ed-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; }
.ga-ed-form > .ga-ed-bar { position: sticky; top: 4.5rem; z-index: 5; padding: .5rem .75rem; border-radius: .75rem; background: #fff; box-shadow: 0 0 0 1px rgba(3, 7, 18, .08); }
.dark .ga-ed-form > .ga-ed-bar { background: var(--gray-900); box-shadow: 0 0 0 1px rgba(255, 255, 255, .1); }
.ga-ed-actions { display: flex; gap: .5rem; margin-left: auto; }
.ga-ed-locales { display: inline-flex; border-radius: .5rem; padding: .125rem; background: var(--gray-100); }
.dark .ga-ed-locales { background: rgba(255, 255, 255, .06); }
.ga-ed-tab { position: relative; padding: .25rem .75rem; border-radius: .375rem; font-size: .875rem; font-weight: 500; color: var(--gray-600); }
.dark .ga-ed-tab { color: var(--gray-300); }
.ga-ed-tab--on { background: #fff; color: var(--gray-950); box-shadow: 0 1px 2px rgba(3, 7, 18, .1); }
.dark .ga-ed-tab--on { background: var(--gray-700); color: #fff; }
.ga-ed-dot { position: absolute; top: .25rem; right: .25rem; width: .375rem; height: .375rem; border-radius: 9999px; background: var(--warning-500); }
.ga-ed-dirty { font-size: .875rem; font-weight: 600; color: var(--warning-700); }
.dark .ga-ed-dirty { color: var(--warning-400); }
.ga-ed-fields > * + * { margin-top: 1rem; }
.ga-ed-field > * + * { margin-top: .375rem; }
.ga-ed-label { display: flex; align-items: center; gap: .5rem; font-size: .875rem; font-weight: 500; }
.ga-ed-state { font-size: .75rem; font-weight: 500; color: var(--warning-700); }
.dark .ga-ed-state { color: var(--warning-400); }
.ga-ed-saved { font-size: .75rem; font-weight: 500; color: var(--success-600); }
.dark .ga-ed-saved { color: var(--success-400); }
.ga-ed-textarea { resize: vertical; min-height: 4.5rem; }
.ga-ed-invalid .fi-input-wrp { box-shadow: 0 0 0 1px var(--danger-600); }
.ga-ed-image { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; }
.ga-ed-image img { height: 6rem; max-width: 12rem; object-fit: cover; border-radius: .5rem; background: var(--gray-100); }
.ga-ed-image-actions { display: flex; flex-direction: column; gap: .25rem; min-width: 0; flex: 1; }
.ga-ed-file { align-self: flex-start; cursor: pointer; padding: .375rem .75rem; border-radius: .5rem; font-size: .875rem; font-weight: 500; box-shadow: 0 0 0 1px rgba(3, 7, 18, .15); }
.dark .ga-ed-file { box-shadow: 0 0 0 1px rgba(255, 255, 255, .2); }
.ga-ed-file:hover { background: var(--gray-50); }
.dark .ga-ed-file:hover { background: rgba(255, 255, 255, .05); }
.ga-ed-file-input { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.ga-ed-image-actions:has(.ga-ed-file-input:focus-visible) .ga-ed-file { outline: 2px solid var(--primary-500); outline-offset: 2px; }
.ga-ed-preview { position: sticky; top: 4.5rem; display: flex; flex-direction: column; gap: .5rem; }
.ga-ed-stage { display: flex; justify-content: center; border-radius: .75rem; padding: .75rem; background: var(--gray-100); height: calc(100vh - 9rem); min-height: 32rem; }
.dark .ga-ed-stage { background: rgba(255, 255, 255, .04); }
.ga-ed-frame { width: 100%; height: 100%; border: 0; border-radius: .5rem; background: #fff; box-shadow: 0 1px 3px rgba(3, 7, 18, .15); }
.ga-ed-frame--phone { width: 390px; max-width: 100%; }
@media (max-width: 1023px) { .ga-ed-preview { position: static; } .ga-ed-stage { height: 80vh; } }
.pf-ab-edit { margin-left: .25rem; }

/* Stock livres (Devoiri): books, reorders, monthly sales. */
.stk-scroll { overflow-x: auto; }
.stk-table { font-size: .875rem; min-width: 46rem; }
.stk-table td { vertical-align: top; }
.stk-sub { font-size: .75rem; line-height: 1rem; color: var(--gray-500); margin-top: .125rem; }
.dark .stk-sub { color: var(--gray-400); }
.stk-actions { display: flex; flex-wrap: wrap; gap: .25rem .5rem; margin-top: .375rem; }
.stk-big { font-size: 1.125rem; font-weight: 600; }
.stk-inactive { opacity: .55; }
.stk-line { display: inline-block; margin-right: 1rem; }
.stk-actions { align-items: center; }
.stk-left { color: var(--warning-600); font-weight: 500; }
.dark .stk-left { color: var(--warning-400); }
/* One-line status of the stock, above the books. */
.stk-summary { display: flex; flex-wrap: wrap; gap: .375rem; }
.stk-summary-item { display: inline-flex; align-items: center; gap: .4rem; padding: .3rem .7rem; border-radius: 9999px; font-size: .8125rem; font-weight: 500; background: #fff; box-shadow: 0 0 0 1px rgba(3, 7, 18, .08); }
.dark .stk-summary-item { background: rgba(255, 255, 255, .05); box-shadow: 0 0 0 1px rgba(255, 255, 255, .1); }
.stk-dot { width: .5rem; height: .5rem; border-radius: 9999px; background: var(--gray-400); flex: none; }
.stk-tone-success .stk-dot { background: var(--success-500); }
.stk-tone-danger .stk-dot { background: var(--danger-500); }
.stk-tone-danger { color: var(--danger-700); }
.dark .stk-tone-danger { color: var(--danger-400); }
.stk-tone-info .stk-dot { background: var(--info-500); }
/* First visit: nothing configured yet. */
.stk-firstrun { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding: 1rem 1.25rem; border-radius: .75rem; border: 1px dashed var(--primary-400); background: var(--primary-50); }
.dark .stk-firstrun { background: rgba(255, 255, 255, .03); border-color: var(--primary-600); }
.stk-firstrun > div { flex: 1 1 18rem; }
.stk-firstrun p + p { margin-top: .25rem; }

/* Exchange rates: lines with a missing or provisional rate. */
.pf-fx-note { font-size: .875rem; color: var(--gray-500); margin-bottom: .75rem; }
.pf-fx-list { font-size: .875rem; list-style: none; margin: 0; padding: 0; }
.pf-fx-list li { display: flex; justify-content: space-between; gap: .75rem; padding: .4rem 0; border-bottom: 1px solid rgba(0, 0, 0, .06); }
.dark .pf-fx-list li { border-color: rgba(255, 255, 255, .08); }
.pf-fx-count { color: var(--gray-500); white-space: nowrap; }
.pf-fx-badge { display: inline-block; margin-left: .375rem; padding: 0 .375rem; border-radius: .375rem; font-size: .7rem; font-weight: 600; }
.pf-fx-badge.is-missing { background: var(--danger-50); color: var(--danger-700); }
.pf-fx-badge.is-provisional { background: var(--warning-50); color: var(--warning-700); }
.dark .pf-fx-badge.is-missing { background: rgba(239, 68, 68, .15); color: var(--danger-300); }
.dark .pf-fx-badge.is-provisional { background: rgba(245, 158, 11, .15); color: var(--warning-300); }

/* Overview: projects of the month, extra rows (unassigned Meta, personal) and the total. */
.pf-ov-scroll { overflow-x: auto; }
.pf-ov-table { width: 100%; min-width: 40rem; font-size: .875rem; border-collapse: collapse; }
.pf-ov-table th { text-align: left; font-size: .7rem; text-transform: uppercase; letter-spacing: .03em; color: var(--gray-500); padding: .5rem .75rem .5rem 0; border-bottom: 1px solid rgba(0, 0, 0, .08); }
.pf-ov-table td { padding: .55rem .75rem .55rem 0; border-bottom: 1px solid rgba(0, 0, 0, .06); vertical-align: middle; }
.pf-ov-table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.pf-ov-table tfoot td { font-weight: 700; border-bottom: 0; border-top: 2px solid rgba(0, 0, 0, .12); }
.dark .pf-ov-table th, .dark .pf-ov-table td { border-color: rgba(255, 255, 255, .08); }
.dark .pf-ov-table tfoot td { border-top-color: rgba(255, 255, 255, .16); }
.pf-ov-extra td { color: var(--gray-600); font-style: italic; }
.dark .pf-ov-extra td { color: var(--gray-400); }
.pf-ov-inactive td { opacity: .7; }
.pf-ov-dot { display: inline-block; width: .6rem; height: .6rem; border-radius: 9999px; margin-right: .4rem; vertical-align: middle; }
.pf-ov-name { font-weight: 600; }
a.pf-ov-name:hover { text-decoration: underline; }
.pf-ov-tag { margin-left: .375rem; font-size: .7rem; color: var(--gray-500); }
.pf-ov-foot { margin-top: .75rem; font-size: .75rem; color: var(--gray-500); }
.pf-ov-toggle { margin-left: .5rem; font-weight: 600; color: var(--primary-600); }
.dark .pf-ov-toggle { color: var(--primary-400); }
.pf-pos { color: var(--success-600); font-weight: 600; }
.pf-neg { color: var(--danger-600); font-weight: 600; }
.dark .pf-pos { color: var(--success-400); }
.dark .pf-neg { color: var(--danger-400); }

/* Agency client page (Rosa Media). */
.pf-cl-head { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin: 0; }
@media (min-width: 640px) { .pf-cl-head { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.pf-cl-head dt { font-size: .75rem; color: var(--gray-500); }
.pf-cl-head dd { margin: 0; font-size: 1.125rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.pf-cl-contact { margin-top: .75rem; font-size: .875rem; }
.pf-cl-campaign { display: flex; justify-content: space-between; gap: 1rem; padding: .4rem 0; font-size: .875rem; border-bottom: 1px solid rgba(0, 0, 0, .06); }
.dark .pf-cl-campaign { border-color: rgba(255, 255, 255, .08); }
/* ---------------------------------------------------------------- Go Allemagne pages (GaMenuPage): one row of tabs at most */
.ga-menu-tabs { overflow-x: auto; scrollbar-width: thin; }
.ga-menu-body { margin-top: .25rem; }
/* An embedded page (Groupes, Site…) keeps its own header actions but no second page gap. */
.ga-menu-body .fi-page, .ga-menu-body .fi-page-header-main-ctn { padding: 0; }

/* ---------------------------------------------------------------- Accueil (GaInbox): key figures, then À faire */
.ga-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: 0; margin: 0; border: 1px solid var(--gray-200); border-radius: .75rem; background: #fff; overflow: hidden; }
.ga-kpi { padding: .75rem 1rem; border-left: 1px solid var(--gray-100); }
.ga-kpi:first-child { border-left: 0; }
.ga-kpi-label { font-size: .75rem; line-height: 1rem; color: var(--gray-500); }
.ga-kpi-value { margin: .125rem 0 0; font-size: 1.375rem; line-height: 1.75rem; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--gray-950); white-space: nowrap; }
.dark .ga-kpis { border-color: rgba(255, 255, 255, .1); background: var(--gray-900); }
.dark .ga-kpi { border-left-color: rgba(255, 255, 255, .06); }
.dark .ga-kpi-label { color: var(--gray-400); }
.dark .ga-kpi-value { color: #fff; }

@media (max-width: 640px) {
    .ga-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ga-kpi:nth-child(odd) { border-left: 0; }
    .ga-kpi:nth-child(n+3) { border-top: 1px solid var(--gray-100); }
    .ga-kpi-value { font-size: 1.125rem; }
}

/* Stock livres, simple layout: one books table (stacked cards on a phone), folded "Détails" and movements. */
.stk-books { font-size: .875rem; }
.stk-books td { vertical-align: top; }
.stk-books .stk-row-actions { width: 1%; }
.stk-books .stk-actions { margin-top: 0; justify-content: flex-end; flex-wrap: nowrap; }
.stk-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.stk-monthly { min-width: 0; }
@media (max-width: 640px) {
    .stk-books thead { display: none; }
    .stk-books, .stk-books tbody, .stk-books tr, .stk-books td { display: block; width: 100%; }
    .stk-books tr { display: grid; grid-template-columns: 1fr 1fr; gap: .25rem .75rem; padding: .75rem; margin-bottom: .5rem; border: 1px solid var(--gray-200); border-radius: .5rem; }
    .dark .stk-books tr { border-color: rgba(255, 255, 255, .1); }
    .stk-books td, .stk-books td:not(:first-child) { padding: 0; border: 0; text-align: left; white-space: normal; }
    .stk-books td.stk-book { grid-column: 1 / -1; }
    .stk-books td[data-label]::before { content: attr(data-label); display: block; font-size: .75rem; color: var(--gray-500); }
    .stk-books td.stk-row-actions { grid-column: 1 / -1; width: 100%; }
    .stk-books .stk-actions { justify-content: flex-start; flex-wrap: wrap; margin-top: .25rem; }
}
.stk-history { margin-top: .5rem; }
.stk-history-list { margin-top: .5rem; }
.stk-link { background: none; border: 0; padding: 0; font-size: .8125rem; color: var(--primary-600); cursor: pointer; }
.stk-link:hover { text-decoration: underline; }
.dark .stk-link { color: var(--primary-400); }
.stk-fold { border-radius: .75rem; background: #fff; box-shadow: 0 0 0 1px rgba(3, 7, 18, .05), 0 1px 2px rgba(0, 0, 0, .05); }
.dark .stk-fold { background: var(--gray-900); box-shadow: 0 0 0 1px rgba(255, 255, 255, .1); }
.stk-fold-head { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .75rem; width: 100%; padding: .75rem 1rem; background: none; border: 0; text-align: left; cursor: pointer; }
.stk-fold-title { font-weight: 600; font-size: .9375rem; }
.stk-fold-chevron { width: 1.25rem; height: 1.25rem; margin-left: auto; color: var(--gray-400); transition: transform .15s; }
.stk-fold-chevron-open { transform: rotate(180deg); }
.stk-fold-body { padding: 0 1rem 1rem; }
.stk-part + .stk-part { margin-top: 1.25rem; }
.stk-part-title { font-weight: 600; font-size: .875rem; margin-bottom: .375rem; }
.stk-moves { list-style: none; margin: 0; padding: 0; font-size: .875rem; }
.stk-move { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .625rem; padding: .375rem 0; border-bottom: 1px solid var(--gray-100); }
.dark .stk-move { border-color: rgba(255, 255, 255, .06); }
.stk-move-date { font-size: .75rem; min-width: 6.75rem; font-variant-numeric: tabular-nums; }
.stk-move-qty { font-weight: 600; font-variant-numeric: tabular-nums; min-width: 2.5rem; }
.stk-pos { color: var(--success-600); }
.dark .stk-pos { color: var(--success-400); }
.stk-move-note { flex: 1 1 12rem; min-width: 0; overflow-wrap: anywhere; }
.stk-more { margin-top: .5rem; }
[x-cloak] { display: none !important; }

/* Stock livres: where the books that left are (parcels) */
.stk-where { white-space: normal; }
.stk-chip { display: inline-block; margin: 0 .25rem .2rem 0; padding: .05rem .45rem; border-radius: 999px; font-size: .75rem; line-height: 1.4; border: 1px solid transparent; white-space: nowrap; }
.stk-chip-prep { background: rgb(254 243 199); color: rgb(146 64 14); border-color: rgb(253 230 138); }
.stk-chip-transit { background: rgb(219 234 254); color: rgb(30 64 175); border-color: rgb(191 219 254); }
.stk-chip-return { background: rgb(254 226 226); color: rgb(153 27 27); border-color: rgb(254 202 202); }
.stk-chip-done { background: rgb(220 252 231); color: rgb(22 101 52); border-color: rgb(187 247 208); }
.dark .stk-chip-prep { background: rgb(120 53 15 / .35); color: rgb(253 230 138); border-color: rgb(120 53 15); }
.dark .stk-chip-transit { background: rgb(30 58 138 / .35); color: rgb(191 219 254); border-color: rgb(30 58 138); }
.dark .stk-chip-return { background: rgb(127 29 29 / .35); color: rgb(254 202 202); border-color: rgb(127 29 29); }
.dark .stk-chip-done { background: rgb(20 83 45 / .35); color: rgb(187 247 208); border-color: rgb(20 83 45); }
/* ---------- Gestion: currency + EUR rate line (ProjectRate) ---------- */
.pf-rate-line { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .5rem; font-size: .875rem; line-height: 1.25rem; color: var(--gray-500); }
.dark .pf-rate-line { color: var(--gray-400); }
.pf-rate-line.pf-rate-warn { color: var(--warning-700); font-weight: 500; }
.dark .pf-rate-line.pf-rate-warn { color: var(--warning-400); }
.pf-rate-btn { border: 1px solid var(--gray-300); border-radius: .375rem; padding: .0625rem .5rem; font-size: .75rem; line-height: 1.25rem; font-weight: 500; color: var(--gray-700); background: transparent; cursor: pointer; }
.pf-rate-btn:hover { background: var(--gray-50); }
.dark .pf-rate-btn { border-color: var(--gray-600); color: var(--gray-200); }
.dark .pf-rate-btn:hover { background: rgba(255, 255, 255, .05); }
.pf-rate-warn .pf-rate-btn { border-color: var(--warning-500); color: var(--warning-700); }
.dark .pf-rate-warn .pf-rate-btn { color: var(--warning-400); }

/* ---------------------------------------------------------------- Group file (GroupFile): one row of tabs, then compact rows */
.ga-grp-file-tabs { overflow-x: auto; scrollbar-width: thin; }
.ga-gf-rows { list-style: none; margin: 0 0 .75rem; padding: 0; }
.ga-gf-rows > li { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .75rem; padding: .5rem 0; border-bottom: 1px solid var(--gray-100); }
.ga-gf-rows > li:last-child { border-bottom: 0; }
.dark .ga-gf-rows > li { border-bottom-color: rgba(255, 255, 255, .06); }
.ga-gf-rows > li > .pf-muted { flex: 1 1 10rem; min-width: 0; }

/* ================================================================ Go Allemagne workspaces (Opérations / Administration) */
/* Workspace switch on top of the page: two segments, the open one tinted with the project's primary colour. */
.ga-ws-header > * + * { margin-top: .75rem; }
.ga-ws-switch { display: inline-flex; padding: .1875rem; gap: .1875rem; border-radius: .625rem; background: var(--gray-100); box-shadow: inset 0 0 0 1px var(--gray-200); }
.dark .ga-ws-switch { background: rgba(255, 255, 255, .05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08); }
.ga-ws-switch-item { display: inline-flex; align-items: center; gap: .375rem; padding: .375rem .875rem; border-radius: .4375rem; font-size: .875rem; line-height: 1.25rem; font-weight: 600; color: var(--gray-600); text-decoration: none; }
.ga-ws-switch-item:hover { color: var(--gray-950); }
.ga-ws-switch-item:focus-visible { outline: 2px solid var(--primary-500); outline-offset: 1px; }
.ga-ws-switch-item.is-active { background: #fff; color: var(--primary-700); box-shadow: 0 1px 2px rgba(3, 7, 18, .08), 0 0 0 1px rgba(3, 7, 18, .04); }
.dark .ga-ws-switch-item { color: var(--gray-400); }
.dark .ga-ws-switch-item:hover { color: #fff; }
.dark .ga-ws-switch-item.is-active { background: var(--gray-800); color: var(--primary-300); }
.ga-ws-switch-icon { width: 1rem; height: 1rem; }
@media (max-width: 640px) {
    .ga-ws-switch { display: flex; width: 100%; }
    .ga-ws-switch-item { flex: 1 1 0; justify-content: center; }
}

/* ---------------------------------------------------------------- Aujourd'hui */
.ga-today > * + * { margin-top: 1rem; }
.ga-today-bar { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: .75rem; }
.ga-today-counters { display: flex; gap: .5rem; overflow-x: auto; scrollbar-width: none; padding-bottom: .125rem; min-width: 0; max-width: 100%; }
.ga-today-counters::-webkit-scrollbar { display: none; }
.ga-today-counter { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-start; min-width: 6.5rem; padding: .5rem .75rem .5625rem; border-radius: .625rem; border: 1px solid var(--gray-200); background: #fff; text-align: left; cursor: pointer; }
.ga-today-counter:hover { border-color: var(--gray-300); }
.ga-today-counter:focus-visible { outline: 2px solid var(--primary-500); outline-offset: 1px; }
.ga-today-counter-n { font-size: 1.375rem; line-height: 1.75rem; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--gray-950); }
.ga-today-counter-label { font-size: .75rem; line-height: 1rem; color: var(--gray-500); white-space: nowrap; }
.ga-today-counter.is-empty .ga-today-counter-n { color: var(--gray-300); }
.ga-today-counter.is-active { border-color: var(--primary-500); box-shadow: inset 0 0 0 1px var(--primary-500); background: var(--primary-50); }
.ga-today-counter.is-active .ga-today-counter-label { color: var(--primary-700); }
.ga-today-counter--reservations:not(.is-empty) .ga-today-counter-n, .ga-today-counter--incidents:not(.is-empty) .ga-today-counter-n { color: var(--danger-600); }
.dark .ga-today-counter { background: var(--gray-900); border-color: rgba(255, 255, 255, .1); }
.dark .ga-today-counter-n { color: #fff; }
.dark .ga-today-counter.is-empty .ga-today-counter-n { color: var(--gray-600); }
.dark .ga-today-counter.is-active { background: rgba(242, 107, 107, .12); border-color: var(--primary-400); box-shadow: inset 0 0 0 1px var(--primary-400); }
.dark .ga-today-counter.is-active .ga-today-counter-label { color: var(--primary-300); }
.ga-today-scope { display: inline-flex; padding: .125rem; border-radius: .5rem; background: var(--gray-100); }
.dark .ga-today-scope { background: rgba(255, 255, 255, .05); }
.ga-today-scope button { padding: .25rem .625rem; border: 0; border-radius: .375rem; background: transparent; font-size: .8125rem; line-height: 1.25rem; font-weight: 500; color: var(--gray-600); cursor: pointer; }
.ga-today-scope button.is-active { background: #fff; color: var(--gray-950); box-shadow: 0 1px 2px rgba(3, 7, 18, .08); }
.dark .ga-today-scope button { color: var(--gray-400); }
.dark .ga-today-scope button.is-active { background: var(--gray-800); color: #fff; }

.ga-today-list { list-style: none; margin: 0; padding: 0; border: 1px solid var(--gray-200); border-radius: .75rem; background: #fff; overflow: hidden; }
.dark .ga-today-list { border-color: rgba(255, 255, 255, .1); background: var(--gray-900); }
.ga-task { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr) auto; align-items: center; gap: .25rem 1rem; padding: .75rem 1rem .75rem .875rem; border-bottom: 1px solid var(--gray-100); border-left: 3px solid transparent; }
.ga-task:last-child { border-bottom: 0; }
.dark .ga-task { border-bottom-color: rgba(255, 255, 255, .05); }
.ga-task.is-overdue { border-left-color: var(--danger-500); }
.ga-task--reservations { border-left-color: var(--warning-400); }
.ga-task--reservations.is-overdue { border-left-color: var(--danger-500); }
.ga-task-due-value { font-size: .8125rem; line-height: 1.25rem; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--gray-600); }
.ga-task.is-overdue .ga-task-due-value { color: var(--danger-600); }
.dark .ga-task-due-value { color: var(--gray-300); }
.dark .ga-task.is-overdue .ga-task-due-value { color: var(--danger-400); }
.ga-task-head { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .5rem; }
.ga-task-person { font-weight: 600; color: var(--gray-950); text-decoration: none; }
a.ga-task-person:hover { text-decoration: underline; text-underline-offset: 2px; }
.dark .ga-task-person { color: #fff; }
.ga-task-context { display: flex; flex-wrap: wrap; gap: .125rem .75rem; margin-top: .125rem; font-size: .8125rem; line-height: 1.25rem; color: var(--gray-500); }
.ga-task-context a { color: inherit; }
.dark .ga-task-context { color: var(--gray-400); }
.ga-task-assignee { font-style: italic; }
.ga-task-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .375rem; }
.ga-today-empty { padding: 3rem 1rem; text-align: center; border: 1px dashed var(--gray-300); border-radius: .75rem; }
.dark .ga-today-empty { border-color: rgba(255, 255, 255, .15); }
.ga-today-empty-icon { width: 2.5rem; height: 2.5rem; margin: 0 auto .5rem; color: var(--success-500); }
.ga-today-empty-title { margin: 0 0 .25rem; font-size: 1.125rem; font-weight: 600; }
@media (max-width: 640px) {
    .ga-today-bar { align-items: stretch; }
    .ga-today-scope { align-self: flex-start; }
    .ga-task { grid-template-columns: minmax(0, 1fr); padding: .75rem .875rem; }
    .ga-task-due { order: 2; }
    .ga-task-main { order: 1; }
    .ga-task-actions { order: 3; justify-content: flex-start; }
}

/* ---------------------------------------------------------------- Vue d'ensemble, Équipe & Réglages */
.ga-overview > * + * { margin-top: 1.25rem; }

/* ---------------------------------------------------------------- Student page: main column + side column; one column on a phone (1 → 7) */
.ga-student { display: grid; grid-template-columns: minmax(0, 1fr) 22rem; gap: 1.25rem; align-items: start; }
.ga-student-main > * + *, .ga-student-side > * + * { margin-top: 1.25rem; }
@media (max-width: 1023px) {
    .ga-student { display: flex; flex-direction: column; align-items: stretch; gap: 1rem; }
    .ga-student-main, .ga-student-side { display: contents; }
    .ga-student-main > * + *, .ga-student-side > * + * { margin-top: 0; }
    .ga-student-order-1 { order: 1; } .ga-student-order-2 { order: 2; } .ga-student-order-3 { order: 3; } .ga-student-order-4 { order: 4; }
    .ga-student-order-5 { order: 5; } .ga-student-order-6 { order: 6; } .ga-student-order-7 { order: 7; } .ga-student-order-8 { order: 8; }
}
@media (min-width: 1024px) { .ga-student-side { position: sticky; top: 5rem; } }

/* Next action: the one line that says what to do now. */
.ga-next { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.25rem; padding: 1rem 1.25rem; border-radius: .75rem; background: #fff; border: 1px solid var(--gray-200); border-left: 4px solid var(--gray-300); }
.dark .ga-next { background: var(--gray-900); border-color: rgba(255, 255, 255, .1); }
.ga-next--primary { border-left-color: var(--primary-500); }
.ga-next--info { border-left-color: var(--info-500); }
.ga-next--warning { border-left-color: var(--warning-500); }
.ga-next--danger { border-left-color: var(--danger-500); }
.ga-next--success { border-left-color: var(--success-500); }
.ga-next-kicker { margin: 0; font-size: .75rem; line-height: 1rem; color: var(--gray-500); }
.ga-next-title { margin: .125rem 0 0; font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; color: var(--gray-950); }
.dark .ga-next-title { color: #fff; }
.ga-next-due { margin: .125rem 0 0; font-size: .8125rem; color: var(--gray-500); }
.ga-next-due.is-late { color: var(--danger-600); font-weight: 600; }
.ga-next-actions { display: flex; flex-wrap: wrap; gap: .5rem; }

/* Guided sign-up */
.ga-signup { padding: 1rem 1.25rem; border-radius: .75rem; background: #fff; border: 1px solid var(--gray-200); }
.dark .ga-signup { background: var(--gray-900); border-color: rgba(255, 255, 255, .1); }
.ga-signup--cta, .ga-signup--progress { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.25rem; background: var(--primary-50); border-color: var(--primary-200); }
.dark .ga-signup--cta, .dark .ga-signup--progress { background: rgba(242, 107, 107, .08); border-color: rgba(242, 107, 107, .25); }
.ga-signup--progress { background: var(--gray-50); border-color: var(--gray-200); }
.ga-signup--cta > div:first-child, .ga-signup--progress > div:first-child { flex: 1 1 18rem; }
.ga-signup-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: .75rem; }
.ga-signup-title { margin: 0; font-size: 1.0625rem; line-height: 1.5rem; font-weight: 700; }
.ga-signup-close { border: 0; background: none; font-size: .875rem; color: var(--gray-500); cursor: pointer; }
.ga-signup-close:hover { color: var(--gray-950); text-decoration: underline; }
.ga-signup-wizard .fi-sc-wizard-header { border-radius: .625rem; }
.ga-signup-groups .fi-fo-radio-label-text, .ga-signup-groups label { font-weight: 600; }
.ga-signup--done { border-color: var(--success-200); background: var(--success-50); }
.dark .ga-signup--done { background: rgba(34, 197, 94, .08); border-color: rgba(34, 197, 94, .25); }
.ga-signup-done-head { display: flex; gap: .75rem; align-items: flex-start; }
.ga-signup-done-icon { width: 1.75rem; height: 1.75rem; flex: 0 0 auto; color: var(--success-600); }
.ga-signup-sends { list-style: none; margin: .75rem 0; padding: 0; font-size: .875rem; }
.ga-signup-sends li { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem .5rem; padding: .25rem 0; }
.ga-signup-sends li.is-failed { color: var(--danger-700); }
.dark .ga-signup-sends li.is-failed { color: var(--danger-400); }
.ga-signup-send-icon { width: 1rem; height: 1rem; }
.ga-signup-summary { font-size: .875rem; }
.ga-signup-summary > * + * { margin-top: .75rem; }
.ga-signup-summary-dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem 1rem; margin: 0; }
.ga-signup-summary-dl dt { color: var(--gray-500); font-size: .75rem; }
.ga-signup-summary-dl dd { margin: 0; font-weight: 600; }
.ga-signup-summary-table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.ga-signup-summary-table td, .ga-signup-summary-table th { padding: .375rem 0; border-bottom: 1px solid var(--gray-100); text-align: left; }
.ga-signup-summary-table td:last-child, .ga-signup-summary-table th:last-child { text-align: right; white-space: nowrap; }
.ga-signup-summary-table tfoot th { border-bottom: 0; padding-top: .5rem; font-size: 1rem; }
.dark .ga-signup-summary-table td, .dark .ga-signup-summary-table th { border-bottom-color: rgba(255, 255, 255, .06); }
@media (max-width: 640px) { .ga-signup-summary-dl { grid-template-columns: minmax(0, 1fr); } .ga-signup, .ga-next { padding: .875rem 1rem; } }

/* Identity, availability, timeline */
.ga-identity-badges { display: flex; flex-wrap: wrap; gap: .375rem; }
.ga-identity-contact { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem; }
.ga-identity-dl { display: grid; grid-template-columns: minmax(0, 1fr); gap: .5rem; margin: .875rem 0 0; font-size: .875rem; }
.ga-identity-dl > div { display: grid; grid-template-columns: 7rem minmax(0, 1fr); gap: .5rem; }
.ga-identity-dl dt { color: var(--gray-500); }
.ga-identity-dl dd { margin: 0; }
.ga-identity-actions { margin-top: .875rem; }
.ga-availability-buttons { margin-top: .75rem; }
.ga-timeline { list-style: none; margin: 0; padding: 0; font-size: .8125rem; line-height: 1.25rem; }
.ga-timeline-item { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: .5rem; padding: .375rem 0 .375rem .625rem; border-left: 2px solid var(--gray-200); }
.dark .ga-timeline-item { border-left-color: rgba(255, 255, 255, .1); }
.ga-timeline-item--payment { border-left-color: var(--success-500); }
.ga-timeline-item--order { border-left-color: var(--info-500); }
.ga-timeline-date { color: var(--gray-500); font-variant-numeric: tabular-nums; }
.ga-timeline-text { overflow-wrap: anywhere; white-space: pre-line; }

/* ---------------------------------------------------------------- Colis › À préparer */
.ga-ship-list { list-style: none; margin: 0; padding: 0; border: 1px solid var(--gray-200); border-radius: .75rem; background: #fff; overflow: hidden; }
.dark .ga-ship-list { border-color: rgba(255, 255, 255, .1); background: var(--gray-900); }
.ga-ship-row { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.4fr) 8.5rem auto; align-items: center; gap: .5rem 1.25rem; padding: .875rem 1rem; border-bottom: 1px solid var(--gray-100); }
.ga-ship-row:last-child { border-bottom: 0; }
.dark .ga-ship-row { border-bottom-color: rgba(255, 255, 255, .05); }
.ga-ship-what { display: flex; flex-wrap: wrap; gap: .375rem; }
.ga-ship-item, .ga-ship-card { display: inline-flex; align-items: center; padding: .1875rem .5rem; border-radius: .375rem; font-size: .8125rem; line-height: 1.25rem; background: var(--gray-100); color: var(--gray-700); }
.dark .ga-ship-item { background: rgba(255, 255, 255, .06); color: var(--gray-300); }
.ga-ship-card { background: var(--primary-50); color: var(--primary-700); font-weight: 700; font-variant-numeric: tabular-nums; box-shadow: inset 0 0 0 1px var(--primary-200); }
.ga-ship-card.is-pending { background: transparent; color: var(--gray-500); font-weight: 500; box-shadow: inset 0 0 0 1px var(--gray-300); border: 0; outline: 1px dashed var(--gray-300); outline-offset: -1px; }
.dark .ga-ship-card { background: rgba(242, 107, 107, .1); color: var(--primary-300); box-shadow: inset 0 0 0 1px rgba(242, 107, 107, .3); }
.ga-ship-cod { display: flex; flex-direction: column; align-items: flex-end; text-align: right; }
.ga-ship-cod-amount { font-weight: 700; font-variant-numeric: tabular-nums; color: var(--gray-950); }
.dark .ga-ship-cod-amount { color: #fff; }
.ga-ship-cod-label { font-size: .75rem; color: var(--gray-500); }
@media (max-width: 767px) {
    .ga-ship-row { grid-template-columns: minmax(0, 1fr) auto; padding: .875rem; }
    .ga-ship-who { grid-column: 1 / -1; }
    .ga-ship-what { grid-column: 1 / -1; }
    .ga-ship-cod { align-items: flex-start; text-align: left; }
}

/* ---------------------------------------------------------------- Colis › packing screen (phone first) */
.ga-pack { display: flex; flex-direction: column; gap: 1rem; max-width: 42rem; }
.ga-pack-to { display: flex; justify-content: space-between; gap: 1rem; padding: 1rem 1.125rem; border-radius: .75rem; background: #fff; border: 1px solid var(--gray-200); }
.dark .ga-pack-to { background: var(--gray-900); border-color: rgba(255, 255, 255, .1); }
.ga-pack-person { margin: 0; font-size: 1.25rem; line-height: 1.75rem; font-weight: 700; color: var(--gray-950); }
.ga-pack-person a { color: inherit; text-decoration: none; }
.ga-pack-person a:hover { text-decoration: underline; text-underline-offset: 3px; }
.dark .ga-pack-person { color: #fff; }
.ga-pack-phone { display: inline-block; margin-top: .125rem; font-size: 1rem; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--primary-700); text-decoration: none; }
.dark .ga-pack-phone { color: var(--primary-300); }
.ga-pack-address { margin: .5rem 0 0; font-size: .9375rem; line-height: 1.375rem; color: var(--gray-700); }
.dark .ga-pack-address { color: var(--gray-300); }
.ga-pack-note { margin: .375rem 0 0; font-size: .8125rem; color: var(--gray-500); font-style: italic; }
.ga-pack-to-side { display: flex; flex-direction: column; align-items: flex-end; gap: .375rem; flex: 0 0 auto; }
.ga-pack-ref { font-size: .8125rem; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--gray-500); }

/* The printed card: drawn like the card in the hand, its number the biggest thing on the screen. */
.ga-pack-cardzone { display: flex; }
.ga-pack-printed { position: relative; display: grid; grid-template-columns: 1fr auto; grid-template-areas: "kicker level" "no no" "hint hint"; align-items: end; gap: .125rem .75rem; width: 100%; max-width: 22rem; aspect-ratio: 1.586; padding: 1rem 1.25rem; border-radius: .875rem; color: #fff; background: linear-gradient(135deg, var(--primary-600), var(--primary-800)); box-shadow: 0 1px 2px rgba(3, 7, 18, .12), 0 8px 24px -12px rgba(3, 7, 18, .45); overflow: hidden; }
.ga-pack-printed::after { content: ""; position: absolute; inset: auto -20% -55% 35%; height: 90%; border-radius: 50%; background: rgba(255, 255, 255, .08); pointer-events: none; }
.ga-pack-printed-kicker { grid-area: kicker; align-self: start; font-size: .8125rem; font-weight: 500; opacity: .85; }
.ga-pack-printed-level { grid-area: level; align-self: start; font-size: .875rem; font-weight: 700; letter-spacing: .04em; opacity: .9; }
.ga-pack-printed-no { grid-area: no; font-size: 3.5rem; line-height: 1; font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.ga-pack-printed-n { margin-right: .375rem; font-size: 1.25rem; font-weight: 600; opacity: .75; letter-spacing: 0; }
.ga-pack-printed-hint { grid-area: hint; font-size: .8125rem; opacity: .9; }
.ga-pack-printed.is-pending { color: var(--gray-700); background: var(--gray-50); border: 2px dashed var(--gray-300); box-shadow: none; grid-template-areas: "kicker kicker" "no no" "hint hint" "btn btn"; aspect-ratio: auto; min-height: 9rem; }
.ga-pack-printed.is-pending::after { display: none; }
.ga-pack-printed.is-pending .fi-btn { grid-area: btn; justify-self: start; margin-top: .5rem; }
.dark .ga-pack-printed.is-pending { color: var(--gray-300); background: rgba(255, 255, 255, .03); border-color: rgba(255, 255, 255, .15); }

.ga-pack-check, .ga-pack-money { padding: 1rem 1.125rem; border-radius: .75rem; background: #fff; border: 1px solid var(--gray-200); }
.dark .ga-pack-check, .dark .ga-pack-money { background: var(--gray-900); border-color: rgba(255, 255, 255, .1); }
.ga-pack-h { margin: 0 0 .5rem; font-size: 1rem; font-weight: 700; }
.ga-pack-list { list-style: none; margin: 0; padding: 0; }
.ga-pack-list > li + li { border-top: 1px solid var(--gray-100); }
.dark .ga-pack-list > li + li { border-top-color: rgba(255, 255, 255, .06); }
.ga-pack-line { display: flex; align-items: center; gap: .875rem; min-height: 3.25rem; padding: .5rem 0; cursor: pointer; font-size: 1rem; line-height: 1.375rem; }
.ga-pack-line.is-card { font-weight: 600; }
.ga-pack-line.is-disabled { cursor: not-allowed; opacity: .55; }
.ga-pack-box { flex: 0 0 auto; width: 1.625rem; height: 1.625rem; border-radius: .4375rem; accent-color: var(--primary-600); cursor: inherit; }
.ga-pack-box:focus-visible { outline: 2px solid var(--primary-500); outline-offset: 2px; }
.ga-pack-line:has(.ga-pack-box:checked) .ga-pack-line-text { color: var(--gray-500); text-decoration: line-through; text-decoration-color: var(--gray-300); }
.ga-pack-serial { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .75rem; margin: 0 0 .75rem 2.5rem; font-size: .8125rem; color: var(--gray-600); }
.dark .ga-pack-serial { color: var(--gray-400); }
.ga-pack-serial-input { width: 7rem; padding: .5rem .75rem; border-radius: .5rem; border: 1px solid var(--gray-300); background: #fff; font-size: 1.125rem; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: .04em; }
.ga-pack-serial-input:focus { outline: 2px solid var(--primary-500); outline-offset: 0; border-color: transparent; }
.dark .ga-pack-serial-input { background: var(--gray-950); border-color: rgba(255, 255, 255, .15); color: #fff; }
.ga-pack-money { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .25rem 1rem; }
.ga-pack-money-label { display: block; font-size: .8125rem; color: var(--gray-500); }
.ga-pack-money-amount { font-size: 1.5rem; line-height: 2rem; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--gray-950); }
.dark .ga-pack-money-amount { color: #fff; }
.ga-pack-form { display: flex; flex-direction: column; gap: 1rem; }
.ga-pack-bar { display: flex; align-items: center; justify-content: flex-end; gap: 1rem; }
.ga-pack-bar-count { font-size: .875rem; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--gray-500); }
.ga-pack-done { display: flex; gap: .875rem; padding: 1.125rem 1.25rem; border-radius: .75rem; border: 1px solid var(--success-200); background: var(--success-50); }
.ga-pack-done.is-warning { border-color: var(--warning-200); background: var(--warning-50); }
.dark .ga-pack-done { background: rgba(34, 197, 94, .08); border-color: rgba(34, 197, 94, .25); }
.dark .ga-pack-done.is-warning { background: rgba(245, 158, 11, .08); border-color: rgba(245, 158, 11, .25); }
.ga-pack-done > div > * + * { margin-top: .375rem; }
.ga-pack-done-icon { width: 1.75rem; height: 1.75rem; flex: 0 0 auto; color: var(--success-600); }
.ga-pack-done.is-warning .ga-pack-done-icon { color: var(--warning-600); }
.ga-pack-done-title { margin: 0; font-size: 1.125rem; font-weight: 700; }
.ga-pack-tracking { margin: 0; font-size: 1.375rem; font-weight: 800; font-variant-numeric: tabular-nums; letter-spacing: .02em; }
.ga-pack-done-links { display: flex; flex-wrap: wrap; gap: .5rem; padding-top: .5rem; }
@media (max-width: 640px) {
    .ga-pack-to { flex-direction: column; padding: .875rem 1rem; }
    .ga-pack-to-side { flex-direction: row; flex-wrap: wrap; align-items: center; }
    .ga-pack-printed { max-width: none; aspect-ratio: 2.4; padding: .875rem 1.125rem; }
    .ga-pack-printed-no { font-size: 3rem; }
    .ga-pack-serial { margin-left: 0; }
    /* The send button stays under the thumb. */
    .ga-pack-bar { position: sticky; bottom: 0; z-index: 10; margin: 0 -1rem; padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom)); background: rgba(255, 255, 255, .96); border-top: 1px solid var(--gray-200); backdrop-filter: blur(6px); }
    .dark .ga-pack-bar { background: rgba(17, 24, 39, .96); border-top-color: rgba(255, 255, 255, .1); }
    .ga-pack-bar .fi-btn { flex: 1 1 auto; justify-content: center; }
}

/* ---------------------------------------------------------------- Colis › Incidents */
.ga-task--incidents { border-left-color: var(--danger-400); }
.ga-incident-checklist { list-style: none; margin: .375rem 0 0; padding: 0; font-size: .8125rem; line-height: 1.25rem; color: var(--warning-700); }
.dark .ga-incident-checklist { color: var(--warning-400); }
.ga-incident-checklist li { display: flex; align-items: center; gap: .375rem; }
.ga-incident-check-icon { width: 1rem; height: 1rem; flex: 0 0 auto; }

/* ---------------------------------------------------------------- Virements à vérifier: one compact block per transfer */
.fi-ta-split .fi-ta-stack .fi-ta-text { padding-block: .125rem; }
.fi-ta-split .fi-ta-stack { row-gap: 0; }
