/* UnlockRapide customer design system */
:root {
    color-scheme: light;
    --bg: #f2f9f8;
    --surface-2: #f1f7f6;
    --panel: #ffffff;
    --chip: #eef2f7;
    --ink: #101828;
    --ink-strong: #0b1b2e;
    --muted: #64748b;
    --line: #e3eae9;
    --brand: #007878;
    --brand-strong: #005f5f;
    --brand-soft: #e6f5f4;
    --brand-bright: #27cfcd;
    --brand-rgb: 0, 120, 120;
    --topbar-bg: rgba(0, 104, 104, .95);
    --topbar-bg-mobile: rgba(0, 102, 102, .98);
    --topbar-shadow: 0 12px 32px rgba(0, 60, 60, .26);
    --footer-bg: linear-gradient(150deg, #022a29, #01443f);
    --footer-feature-bg: linear-gradient(135deg, #005f5f, #007878 55%, #0aa79c);
    --accent: #e02428;
    --accent-strong: #c31d21;
    --accent-soft: #feeeee;
    --navy: #0a2f66;
    --navy-deep: #071e44;
    --gold: #fbbc04;
    --ok: #087252;
    --ok-soft: #e5f6ef;
    --warn: #8a4b00;
    --warn-soft: #fff3e0;
    --bad: #b42333;
    --bad-soft: #fdeef0;
    --r-sm: 8px;
    --r-md: 12px;
    --r-lg: 16px;
    --r-xl: 20px;
    --shadow-sm: 0 1px 2px rgba(16, 40, 70, .05), 0 4px 12px rgba(16, 40, 70, .05);
    --shadow-md: 0 10px 28px rgba(16, 43, 76, .10);
    --shadow-lg: 0 24px 60px rgba(7, 30, 68, .16);
    --font-head: "Inter", "Segoe UI", system-ui, Arial, sans-serif;
    --font-body: "Inter", "Segoe UI", system-ui, Arial, sans-serif;
    --font-mono: "Inter", ui-monospace, Consolas, monospace;
    --ring: 0 0 0 4px rgba(var(--brand-rgb), .16);
    --dash-ease: cubic-bezier(.22, 1, .36, 1);
    --dash-balance-grad:
        radial-gradient(120% 140% at 88% -20%, rgba(251, 188, 4, .16), transparent 46%),
        radial-gradient(120% 130% at -10% 120%, rgba(39, 207, 205, .20), transparent 50%),
        linear-gradient(135deg, #05193a 0%, #043f3a 48%, #006763 100%);
    --auth-visual-grad:
        radial-gradient(circle at 86% -8%, rgba(251, 188, 4, .20), transparent 44%),
        radial-gradient(circle at -6% 108%, rgba(39, 207, 205, .28), transparent 46%),
        linear-gradient(150deg, var(--navy-deep), var(--navy) 30%, var(--brand-strong) 72%, var(--brand) 100%);
}
:root[data-theme="dark"] {
    color-scheme: dark;
    --bg: #15201e;
    --surface-2: #24322e;
    --panel: #1d2a27;
    --chip: #2b3833;
    --ink: #e8f1ef;
    --ink-strong: #f5faf9;
    --muted: #9fb2af;
    --line: #34443e;
    --brand: #18b6b0;
    --brand-strong: #3ad9d2;
    --brand-soft: rgba(24, 182, 176, .16);
    --brand-bright: #5eead4;
    --brand-rgb: 24, 182, 176;
    --accent: #ff5c60;
    --accent-strong: #ff7d80;
    --accent-soft: rgba(224, 36, 40, .20);
    --navy: #0c2036;
    --navy-deep: #06101c;
    --gold: #fbbf24;
    --ok: #34d399;
    --ok-soft: rgba(16, 185, 129, .16);
    --warn: #fbbf24;
    --warn-soft: rgba(245, 158, 11, .16);
    --bad: #f87171;
    --bad-soft: rgba(239, 68, 68, .16);
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, .32), 0 6px 16px rgba(0, 0, 0, .26);
    --shadow-md: 0 14px 34px rgba(0, 0, 0, .38);
    --shadow-lg: 0 26px 64px rgba(0, 0, 0, .48);
    --ring: 0 0 0 4px rgba(var(--brand-rgb), .32);
    --auth-visual-grad:
        radial-gradient(circle at 86% -8%, rgba(251, 188, 4, .16), transparent 44%),
        radial-gradient(circle at -6% 108%, rgba(39, 207, 205, .24), transparent 46%),
        linear-gradient(150deg, #041016, #06212c 34%, #063d3a 78%, #075048 100%);
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    /* Sticky footer : sur les pages courtes (ex. commande sans champ), le body
       remplit le viewport et le footer reste colle en bas — sinon un vide (blanc
       sur Firefox, ou le fond propage sur Chrome) apparait sous le footer. */
    min-height: 100vh;
    min-height: 100dvh;
    display: flex;
    flex-direction: column;
    font-family: var(--font-body);
    font-synthesis: none;
    font-variant-numeric: tabular-nums;
    letter-spacing: -.006em;
    font-size: 14px;
    line-height: 1.55;
    color: var(--ink);
    background:
        radial-gradient(720px 340px at 4% -4%, rgba(var(--brand-rgb), .09), transparent 60%),
        radial-gradient(720px 340px at 98% -8%, rgba(var(--brand-rgb), .06), transparent 60%),
        var(--bg);
}
h1, h2, h3, h4 {
    margin: 0;
    font-family: var(--font-head);
    font-weight: 700;
    letter-spacing: -0.01em;
    line-height: 1.18;
    overflow-wrap: anywhere;
    word-break: break-word;
}
h1 { font-size: clamp(24px, 3.4vw, 32px); font-weight: 800; }
h2 { font-size: 19px; margin-bottom: 12px; }
h3 { font-size: 15px; }
p { margin: 0 0 12px; }
a { color: var(--brand); text-decoration: none; }
a:hover { text-decoration: underline; }
.muted { color: var(--muted); }
.breakable { overflow-wrap: anywhere; word-break: break-word; }
:focus-visible {
    outline: 2px solid var(--brand);
    outline-offset: 2px;
    border-radius: 4px;
}

/* â”€â”€ Buttons â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 44px;
    padding: 0 20px;
    border: 1px solid transparent;
    border-radius: var(--r-md);
    background: linear-gradient(135deg, var(--brand), #009488);
    color: #fff;
    font-family: var(--font-head);
    font-size: 13px;
    font-weight: 600;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 8px 20px rgba(var(--brand-rgb), .24);
    transition: transform .2s var(--dash-ease), box-shadow .2s var(--dash-ease), background .2s var(--dash-ease), border-color .2s var(--dash-ease), color .2s var(--dash-ease);
}
.button:hover {
    background: linear-gradient(135deg, var(--brand-strong), var(--brand));
    box-shadow: 0 14px 30px rgba(var(--brand-rgb), .32);
    transform: translateY(-2px);
    text-decoration: none;
}
.button:focus-visible {
    outline: none;
    box-shadow: 0 8px 20px rgba(var(--brand-rgb), .24), var(--ring);
}
.button:active { transform: translateY(0); box-shadow: 0 4px 12px rgba(var(--brand-rgb), .22); }
.button.secondary {
    background: var(--panel);
    border-color: var(--line);
    color: var(--brand-strong);
    box-shadow: var(--shadow-sm);
}
.button.secondary:hover {
    background: var(--brand-soft);
    border-color: rgba(0, 120, 120, .35);
    box-shadow: var(--shadow-sm);
}
.button.accent {
    background: linear-gradient(135deg, #ffd873, var(--gold));
    color: #3a2c00;
    box-shadow: 0 10px 24px rgba(251, 188, 4, .34);
}
.button.accent:hover {
    background: linear-gradient(135deg, #ffe08a, #ffd045);
    color: #3a2c00;
    box-shadow: 0 14px 30px rgba(251, 188, 4, .42);
    transform: translateY(-2px);
}
.button.block { width: 100%; }
.button:disabled:not(.is-loading), .button[disabled]:not(.is-loading) {
    background: var(--chip);
    border-color: var(--line);
    color: var(--muted);
    cursor: not-allowed;
    transform: none;
    box-shadow: none;
    pointer-events: none;
}
.button .icon { flex: 0 0 auto; }
/* Etat chargement : anti double-clic sur les boutons de soumission */
.button.is-loading {
    position: relative;
    color: transparent !important;
    opacity: 1 !important;
    pointer-events: none;
    cursor: wait;
}
.button.is-loading::after {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 18px;
    height: 18px;
    margin: -9px 0 0 -9px;
    border: 2.5px solid rgba(255, 255, 255, .4);
    border-top-color: #fff;
    border-radius: 50%;
    animation: btn-spin .6s linear infinite;
}
.button.secondary.is-loading::after,
.button.outline.is-loading::after {
    border-color: color-mix(in srgb, var(--brand-strong) 28%, transparent);
    border-top-color: var(--brand-strong);
}
.button.accent.is-loading::after,
.topbar .button.accent-cta.is-loading::after {
    border-color: rgba(58, 44, 0, .28);
    border-top-color: #3a2c00;
}
@keyframes btn-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
    .button.is-loading::after { animation: none; }
}
.link-button {
    border: 0;
    background: none;
    padding: 0;
    color: var(--brand);
    font: inherit;
    font-weight: 700;
    cursor: pointer;
}
.link-button:hover { text-decoration: underline; }
.mini-link { font-size: 12.5px; font-weight: 600; }

/* â”€â”€ Badges, alerts, flash â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-height: 24px;
    padding: 3px 11px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--chip);
    color: var(--muted);
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    line-height: 1;
}
.badge.success { color: var(--ok); background: var(--ok-soft); border-color: color-mix(in srgb, var(--ok) 30%, transparent); }
.badge.rejected { color: var(--bad); background: var(--bad-soft); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }
.badge.waiting_action { color: var(--warn); background: var(--warn-soft); border-color: color-mix(in srgb, var(--warn) 30%, transparent); }
.badge.price { color: var(--accent); background: var(--accent-soft); border-color: color-mix(in srgb, var(--accent) 30%, transparent); }
.badge.time { color: var(--warn); background: var(--warn-soft); border-color: color-mix(in srgb, var(--warn) 30%, transparent); }
.alert {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    padding: 12px 16px;
    margin-bottom: 18px;
    background: var(--panel);
    font-weight: 600;
    box-shadow: var(--shadow-sm);
}
.alert.error { border-color: color-mix(in srgb, var(--bad) 30%, var(--line)); background: var(--bad-soft); color: var(--bad); }
.alert.ok { border-color: color-mix(in srgb, var(--ok) 30%, var(--line)); background: var(--ok-soft); color: var(--ok); }
.alert.warn { border-color: color-mix(in srgb, var(--warn, #b45309) 30%, var(--line)); background: var(--warn-soft, rgba(245, 158, 11, .12)); color: var(--warn, #b45309); }
.site-flash { border-bottom: 1px solid var(--line); background: var(--panel); }
.site-flash-inner {
    width: min(1160px, calc(100% - 32px));
    min-height: 42px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 8px 0;
    font-weight: 700;
    text-align: center;
}
.site-flash a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.site-flash.info { background: var(--brand-soft); color: var(--brand-strong); border-color: color-mix(in srgb, var(--brand) 22%, transparent); }
.site-flash.success { background: var(--ok-soft); color: var(--ok); border-color: color-mix(in srgb, var(--ok) 35%, transparent); }
.site-flash.warning { background: var(--warn-soft); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 35%, transparent); }

/* Signal public : activite metier reelle, uniquement pour les visiteurs. */
.client-activity-toast {
    /* Pastille COMPACTE facon ToutLike : une seule rangee (media + texte + croix),
       barre de progression fine en bas. Beaucoup plus petite que l'ancienne carte. */
    position: fixed;
    left: 16px;
    bottom: calc(16px + env(safe-area-inset-bottom));
    z-index: 900;
    width: min(322px, calc(100vw - 32px));
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 8px 9px 11px;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--activity-tone) 22%, var(--line));
    border-radius: 13px;
    background: var(--panel);
    color: var(--ink-strong);
    box-shadow: var(--shadow-lg);
    opacity: 0;
    transform: translateY(12px);
    transition: opacity .22s var(--dash-ease), transform .22s var(--dash-ease);
    --activity-tone: var(--brand);
    --activity-tone-soft: var(--brand-soft);
    isolation: isolate;
}
:root[data-client-theme="midnight"] {
    --bg: #eaf2fb;
    --surface-2: #e1ecf8;
    --panel: #f8fbff;
    --chip: #d9e6f4;
    --ink: #102a46;
    --ink-strong: #071b31;
    --muted: #58708b;
    --line: #cbdced;
    --brand: #1768ad;
    --brand-strong: #0c4f8d;
    --brand-soft: #dcecff;
    --brand-bright: #46b4ff;
    --brand-rgb: 23, 104, 173;
    --topbar-bg: rgba(7, 26, 49, .96);
    --topbar-bg-mobile: rgba(7, 26, 49, .99);
    --topbar-shadow: 0 12px 34px rgba(1, 10, 22, .34);
    --footer-bg: linear-gradient(150deg, #071426, #0a2643);
    --footer-feature-bg: linear-gradient(135deg, #0b2f57, #1768ad 58%, #2687c9);
    --accent: #ff5b68;
    --accent-strong: #dc3545;
    --accent-soft: #ffe7ea;
    --navy: #123b66;
    --navy-deep: #071426;
    --gold: #ffc857;
    --ok: #056b58;
    --ok-soft: #ddf5ef;
    --warn: #874d00;
    --warn-soft: #fff0d7;
    --bad: #a92236;
    --bad-soft: #ffe6ea;
    --shadow-sm: 0 1px 2px rgba(7, 25, 48, .06), 0 7px 18px rgba(7, 40, 75, .07);
    --shadow-md: 0 14px 34px rgba(7, 40, 75, .13);
    --shadow-lg: 0 28px 70px rgba(7, 25, 48, .20);
    --auth-visual-grad:
        radial-gradient(circle at 86% -8%, rgba(255, 200, 87, .20), transparent 44%),
        radial-gradient(circle at -6% 108%, rgba(70, 180, 255, .26), transparent 46%),
        linear-gradient(150deg, #071426, #0b2f57 42%, #12538a 78%, #1768ad 100%);
}
:root[data-client-theme="midnight"][data-theme="dark"] {
    color-scheme: dark;
    --bg: #071426;
    --surface-2: #0d2036;
    --panel: #0a1a2e;
    --chip: #132a44;
    --ink: #e8f2ff;
    --ink-strong: #f6faff;
    --muted: #94aac3;
    --line: #1d3856;
    --brand: #3c9de5;
    --brand-strong: #79c5ff;
    --brand-soft: rgba(60, 157, 229, .16);
    --brand-bright: #67d4ff;
    --brand-rgb: 60, 157, 229;
    --topbar-bg: rgba(5, 20, 38, .96);
    --topbar-bg-mobile: rgba(5, 20, 38, .99);
    --topbar-shadow: 0 12px 34px rgba(0, 0, 0, .42);
    --footer-bg: linear-gradient(150deg, #030b16, #071a31);
    --footer-feature-bg: linear-gradient(135deg, #082542, #0d4f86 58%, #1768ad);
    --accent: #ff6573;
    --accent-strong: #ff8a94;
    --accent-soft: rgba(255, 101, 115, .17);
    --navy: #0b2f57;
    --navy-deep: #030b16;
    --gold: #ffc857;
    --ok: #45d7b5;
    --ok-soft: rgba(69, 215, 181, .14);
    --warn: #ffc857;
    --warn-soft: rgba(255, 200, 87, .14);
    --bad: #ff7c89;
    --bad-soft: rgba(255, 101, 115, .15);
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, .42), 0 8px 20px rgba(0, 0, 0, .25);
    --shadow-md: 0 16px 38px rgba(0, 0, 0, .42);
    --shadow-lg: 0 30px 72px rgba(0, 0, 0, .55);
    --auth-visual-grad:
        radial-gradient(circle at 86% -8%, rgba(255, 200, 87, .15), transparent 44%),
        radial-gradient(circle at -6% 108%, rgba(70, 180, 255, .24), transparent 46%),
        linear-gradient(150deg, #030b16, #071a31 38%, #0b3158 75%, #124c7e 100%);
}
:root[data-client-theme="lagoon"] {
    --bg: #eef9fb;
    --surface-2: #e4f4f7;
    --panel: #fbfeff;
    --chip: #dceff2;
    --ink: #16333d;
    --ink-strong: #0b252e;
    --muted: #5b7780;
    --line: #cbe3e8;
    --brand: #087f8c;
    --brand-strong: #05616b;
    --brand-soft: #d8f1f3;
    --brand-bright: #2bc4d0;
    --brand-rgb: 8, 127, 140;
    --topbar-bg: rgba(5, 83, 94, .96);
    --topbar-bg-mobile: rgba(5, 83, 94, .99);
    --topbar-shadow: 0 12px 32px rgba(3, 54, 63, .25);
    --footer-bg: linear-gradient(150deg, #06303a, #07505a);
    --footer-feature-bg: linear-gradient(135deg, #05616b, #087f8c 58%, #20aebe);
    --navy: #0b3b52;
    --navy-deep: #062334;
    --gold: #f5bd43;
    --shadow-sm: 0 1px 2px rgba(6, 46, 55, .06), 0 6px 14px rgba(6, 46, 55, .06);
    --shadow-md: 0 12px 28px rgba(6, 46, 55, .12);
    --shadow-lg: 0 26px 58px rgba(6, 35, 52, .18);
    --dash-balance-grad: linear-gradient(135deg, #062334, #087f8c 62%, #08707c);
    --auth-visual-grad: linear-gradient(150deg, #062334, #07505a 48%, #087f8c 78%, #2bc4d0);
}
:root[data-client-theme="lagoon"][data-theme="dark"] {
    color-scheme: dark;
    --bg: #061b22;
    --surface-2: #0c2931;
    --panel: #09232b;
    --chip: #12343d;
    --ink: #e4f8fb;
    --ink-strong: #f4fcfd;
    --muted: #93b1b8;
    --line: #19434c;
    --brand: #31bec9;
    --brand-strong: #77dde3;
    --brand-soft: rgba(49, 190, 201, .15);
    --brand-bright: #69e0dc;
    --brand-rgb: 49, 190, 201;
    --topbar-bg: rgba(4, 24, 31, .97);
    --topbar-bg-mobile: rgba(4, 24, 31, .99);
    --topbar-shadow: 0 12px 34px rgba(0, 0, 0, .38);
    --footer-bg: linear-gradient(150deg, #031116, #06262d);
    --footer-feature-bg: linear-gradient(135deg, #07444d, #087f8c 58%, #20aebe);
    --navy: #083645;
    --navy-deep: #020d12;
    --shadow-sm: 0 2px 7px rgba(0, 0, 0, .28);
    --shadow-md: 0 12px 28px rgba(0, 0, 0, .36);
    --shadow-lg: 0 24px 54px rgba(0, 0, 0, .46);
    --dash-balance-grad: linear-gradient(135deg, #031116, #07505a 65%, #08707c);
    --auth-visual-grad: linear-gradient(150deg, #020d12, #06262d 50%, #07505a 82%, #087f8c);
}
:root[data-client-theme="savanna"] {
    --bg: #f7f4ea;
    --surface-2: #efe9d7;
    --panel: #fffdf7;
    --chip: #e9e2cd;
    --ink: #303426;
    --ink-strong: #222719;
    --muted: #706f5b;
    --line: #ded7c0;
    --brand: #66853a;
    --brand-strong: #465c29;
    --brand-soft: #e8efd9;
    --brand-bright: #96b952;
    --brand-rgb: 102, 133, 58;
    --topbar-bg: rgba(54, 72, 31, .97);
    --topbar-bg-mobile: rgba(54, 72, 31, .99);
    --topbar-shadow: 0 12px 32px rgba(43, 49, 24, .24);
    --footer-bg: linear-gradient(150deg, #29321d, #3f5129);
    --footer-feature-bg: linear-gradient(135deg, #465c29, #66853a 58%, #8eaa48);
    --navy: #39482b;
    --navy-deep: #202819;
    --gold: #e6a62d;
    --warn: #7a4900;
    --warn-soft: #f8ead0;
    --shadow-sm: 0 2px 7px rgba(56, 58, 34, .08);
    --shadow-md: 0 12px 26px rgba(56, 58, 34, .13);
    --shadow-lg: 0 24px 54px rgba(56, 58, 34, .19);
    --dash-balance-grad: linear-gradient(135deg, #29321d, #536d30 65%, #536d30);
    --auth-visual-grad: linear-gradient(150deg, #202819, #465c29 54%, #66853a 82%, #8eaa48);
}
:root[data-client-theme="savanna"][data-theme="dark"] {
    color-scheme: dark;
    --bg: #161b11;
    --surface-2: #252c1d;
    --panel: #1e2518;
    --chip: #303925;
    --ink: #edf3e4;
    --ink-strong: #f9fcf5;
    --muted: #abb69b;
    --line: #3a4630;
    --brand: #9abd5b;
    --brand-strong: #c3df8c;
    --brand-soft: rgba(154, 189, 91, .15);
    --brand-bright: #d5e77c;
    --brand-rgb: 154, 189, 91;
    --topbar-bg: rgba(22, 28, 16, .97);
    --topbar-bg-mobile: rgba(22, 28, 16, .99);
    --topbar-shadow: 0 12px 34px rgba(0, 0, 0, .40);
    --footer-bg: linear-gradient(150deg, #0f130b, #202a16);
    --footer-feature-bg: linear-gradient(135deg, #34431f, #55742f 58%, #779941);
    --navy: #2a351f;
    --navy-deep: #0d1109;
    --gold: #f0bd55;
    --shadow-sm: 0 2px 7px rgba(0, 0, 0, .28);
    --shadow-md: 0 12px 28px rgba(0, 0, 0, .36);
    --shadow-lg: 0 24px 54px rgba(0, 0, 0, .46);
    --dash-balance-grad: linear-gradient(135deg, #0f130b, #465c29 68%, #536d30);
    --auth-visual-grad: linear-gradient(150deg, #0d1109, #29351e 52%, #465c29 82%, #66853a);
}
:root[data-client-theme="orchid"] {
    --bg: #fbf3f8;
    --surface-2: #f6e8f1;
    --panel: #fffafd;
    --chip: #f0deea;
    --ink: #3b2a39;
    --ink-strong: #2a1d28;
    --muted: #7e6678;
    --line: #ead2e2;
    --brand: #a0447c;
    --brand-strong: #7b2c5b;
    --brand-soft: #f7dfed;
    --brand-bright: #d26ba9;
    --brand-rgb: 160, 68, 124;
    --topbar-bg: rgba(104, 34, 73, .96);
    --topbar-bg-mobile: rgba(104, 34, 73, .99);
    --topbar-shadow: 0 12px 32px rgba(67, 24, 49, .25);
    --footer-bg: linear-gradient(150deg, #451d36, #672b4c);
    --footer-feature-bg: linear-gradient(135deg, #7b2c5b, #a0447c 58%, #c75f9b);
    --navy: #5b2a51;
    --navy-deep: #31162b;
    --gold: #e5ad54;
    --shadow-sm: 0 2px 7px rgba(76, 35, 62, .07);
    --shadow-md: 0 12px 28px rgba(76, 35, 62, .13);
    --shadow-lg: 0 24px 56px rgba(76, 35, 62, .19);
    --dash-balance-grad: linear-gradient(135deg, #451d36, #7b2c5b 65%, #833865);
    --auth-visual-grad: linear-gradient(150deg, #31162b, #672b4c 50%, #a0447c 82%, #c75f9b);
}
:root[data-client-theme="orchid"][data-theme="dark"] {
    color-scheme: dark;
    --bg: #21131f;
    --surface-2: #321d2f;
    --panel: #2a1827;
    --chip: #40243a;
    --ink: #faeaf5;
    --ink-strong: #fff7fc;
    --muted: #c2a1b7;
    --line: #533047;
    --brand: #d36fae;
    --brand-strong: #f0abd2;
    --brand-soft: rgba(211, 111, 174, .16);
    --brand-bright: #f39dd0;
    --brand-rgb: 211, 111, 174;
    --topbar-bg: rgba(31, 16, 29, .97);
    --topbar-bg-mobile: rgba(31, 16, 29, .99);
    --topbar-shadow: 0 12px 34px rgba(0, 0, 0, .42);
    --footer-bg: linear-gradient(150deg, #140c13, #321d2f);
    --footer-feature-bg: linear-gradient(135deg, #5e2449, #8b3569 58%, #b84f8c);
    --navy: #48213f;
    --navy-deep: #120a11;
    --shadow-sm: 0 2px 7px rgba(0, 0, 0, .28);
    --shadow-md: 0 12px 28px rgba(0, 0, 0, .36);
    --shadow-lg: 0 24px 54px rgba(0, 0, 0, .46);
    --dash-balance-grad: linear-gradient(135deg, #140c13, #672b4c 68%, #833865);
    --auth-visual-grad: linear-gradient(150deg, #120a11, #321d2f 52%, #672b4c 82%, #a0447c);
}
:root[data-client-theme="aurora"] {
    --bg: #f4f3ff;
    --surface-2: #ebe9fb;
    --panel: #fdfcff;
    --chip: #e2def8;
    --ink: #2d2944;
    --ink-strong: #1c1832;
    --muted: #6d6788;
    --line: #d9d4f2;
    --brand: #6d4ee8;
    --brand-strong: #5034bd;
    --brand-soft: #e8e3ff;
    --brand-bright: #16b8c7;
    --brand-rgb: 109, 78, 232;
    --topbar-bg: rgba(60, 43, 139, .97);
    --topbar-bg-mobile: rgba(60, 43, 139, .99);
    --topbar-shadow: 0 12px 34px rgba(43, 30, 105, .28);
    --footer-bg: linear-gradient(150deg, #28204f, #3d2e79);
    --footer-feature-bg: linear-gradient(135deg, #5034bd, #6d4ee8 58%, #16a8b8);
    --navy: #362f75;
    --navy-deep: #1b173c;
    --gold: #f0b84b;
    --shadow-sm: 0 2px 7px rgba(53, 44, 110, .08);
    --shadow-md: 0 12px 28px rgba(53, 44, 110, .14);
    --shadow-lg: 0 25px 58px rgba(53, 44, 110, .21);
    --dash-balance-grad: linear-gradient(135deg, #28204f, #5034bd 64%, #5540ba);
    --auth-visual-grad: linear-gradient(150deg, #1b173c, #3d2e79 48%, #6d4ee8 80%, #16a8b8);
}
:root[data-client-theme="aurora"][data-theme="dark"] {
    color-scheme: dark;
    --bg: #0c0b1a;
    --surface-2: #19162f;
    --panel: #15132a;
    --chip: #24203e;
    --ink: #f0edff;
    --ink-strong: #fbfaff;
    --muted: #aaa3c8;
    --line: #312b50;
    --brand: #9b87ff;
    --brand-strong: #c2b6ff;
    --brand-soft: rgba(155, 135, 255, .17);
    --brand-bright: #4de4d5;
    --brand-rgb: 155, 135, 255;
    --topbar-bg: rgba(10, 9, 24, .97);
    --topbar-bg-mobile: rgba(10, 9, 24, .99);
    --topbar-shadow: 0 12px 36px rgba(0, 0, 0, .48);
    --footer-bg: linear-gradient(150deg, #070612, #17132d);
    --footer-feature-bg: linear-gradient(135deg, #382879, #6448c5 58%, #158f9d);
    --navy: #28204f;
    --navy-deep: #070612;
    --shadow-sm: 0 2px 7px rgba(0, 0, 0, .30);
    --shadow-md: 0 12px 30px rgba(0, 0, 0, .40);
    --shadow-lg: 0 26px 58px rgba(0, 0, 0, .52);
    --dash-balance-grad: linear-gradient(135deg, #17132d, #5e42bf 62%, #4c3c9c);
    --auth-visual-grad: linear-gradient(150deg, #070612, #28204f 48%, #5e42bf 80%, #158f9d);
}
:root[data-client-theme="graphite"] {
    --bg: #f1f4f5;
    --surface-2: #e7ecee;
    --panel: #fbfcfc;
    --chip: #dde5e7;
    --ink: #252d30;
    --ink-strong: #151c1e;
    --muted: #647176;
    --line: #d0dadd;
    --brand: #3e6f78;
    --brand-strong: #2c535a;
    --brand-soft: #dce9eb;
    --brand-bright: #7fb8bc;
    --brand-rgb: 62, 111, 120;
    --topbar-bg: rgba(36, 52, 56, .97);
    --topbar-bg-mobile: rgba(36, 52, 56, .99);
    --topbar-shadow: 0 12px 32px rgba(22, 31, 34, .27);
    --footer-bg: linear-gradient(150deg, #20292b, #344346);
    --footer-feature-bg: linear-gradient(135deg, #2c535a, #3e6f78 58%, #668f93);
    --navy: #33474b;
    --navy-deep: #1b2527;
    --gold: #c6d65c;
    --shadow-sm: 0 2px 7px rgba(31, 43, 46, .08);
    --shadow-md: 0 12px 26px rgba(31, 43, 46, .13);
    --shadow-lg: 0 24px 52px rgba(31, 43, 46, .19);
    --dash-balance-grad: linear-gradient(135deg, #20292b, #3e6f78 68%, #41666d);
    --auth-visual-grad: linear-gradient(150deg, #1b2527, #344346 52%, #3e6f78 82%, #668f93);
}
:root[data-client-theme="graphite"][data-theme="dark"] {
    color-scheme: dark;
    --bg: #111617;
    --surface-2: #20282a;
    --panel: #1a2224;
    --chip: #293336;
    --ink: #edf5f4;
    --ink-strong: #f8fbfa;
    --muted: #a2b0b1;
    --line: #374447;
    --brand: #77b8bc;
    --brand-strong: #a8d3d4;
    --brand-soft: rgba(119, 184, 188, .15);
    --brand-bright: #b6d15f;
    --brand-rgb: 119, 184, 188;
    --topbar-bg: rgba(15, 20, 21, .97);
    --topbar-bg-mobile: rgba(15, 20, 21, .99);
    --topbar-shadow: 0 12px 34px rgba(0, 0, 0, .44);
    --footer-bg: linear-gradient(150deg, #090d0e, #1b2527);
    --footer-feature-bg: linear-gradient(135deg, #29464a, #3e6f78 58%, #668f93);
    --navy: #29383b;
    --navy-deep: #080c0d;
    --gold: #d3df6b;
    --shadow-sm: 0 2px 7px rgba(0, 0, 0, .30);
    --shadow-md: 0 12px 28px rgba(0, 0, 0, .38);
    --shadow-lg: 0 24px 54px rgba(0, 0, 0, .48);
    --dash-balance-grad: linear-gradient(135deg, #090d0e, #29464a 66%, #456c71);
    --auth-visual-grad: linear-gradient(150deg, #080c0d, #1b2527 52%, #29464a 82%, #507e83);
}
.client-activity-toast[hidden] { display: none; }
.client-activity-toast.is-visible { opacity: 1; transform: none; }
.client-activity-toast[data-kind="payment"],
.client-activity-toast[data-kind="signup"] { --activity-tone: var(--ok); --activity-tone-soft: var(--ok-soft); }
.client-activity-toast[data-kind="activation"],
.client-activity-toast[data-kind="credits"] { --activity-tone: var(--warn); --activity-tone-soft: var(--warn-soft); }
/* Rangee unique media + texte : c'est elle qui fait le fondu lors d'une rotation
   « en place » (la vignette ne glisse pas dehors/dedans entre deux evenements). */
.client-activity-row {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1 1 auto;
    min-width: 0;
    transition: opacity .18s ease;
}
.client-activity-row.is-swapping { opacity: 0; }
.client-activity-media {
    position: relative;
    flex: none;
    width: 40px;
    height: 40px;
    display: grid;
    place-items: center;
    overflow: visible;
    border: 1px solid color-mix(in srgb, var(--activity-tone) 20%, var(--line));
    border-radius: 10px;
    background: color-mix(in srgb, var(--activity-tone-soft) 42%, var(--surface-2));
}
.client-activity-media img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
    padding: 4px;
    border-radius: 9px;
    /* Vignettes de service transparentes : plaque claire mais ADOUCIE (une plaque
       blanche pure faisait une boite blanche criarde sur le panneau sombre). */
    background: color-mix(in srgb, #ffffff 86%, var(--activity-tone-soft));
}
.client-activity-media img[hidden] { display: none; }
.client-activity-icon {
    width: 100%;
    height: 100%;
    display: grid;
    place-items: center;
    color: var(--activity-tone);
}
/* Point « live » qui pulse dans le coin du media, facon ToutLike. */
.client-activity-live {
    position: absolute;
    top: -3px;
    right: -3px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--activity-tone);
    border: 2px solid var(--panel);
    animation: client-activity-pulse 1.6s ease-in-out infinite;
}
@keyframes client-activity-pulse {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--activity-tone) 55%, transparent); }
    70% { box-shadow: 0 0 0 5px color-mix(in srgb, var(--activity-tone) 0%, transparent); }
}
.client-activity-copy { min-width: 0; display: grid; }
/* Titre redondant ("Compte rechargé", "Outil activé"...) retire de l'affichage :
   le message est deja une phrase complete, on libere la place pour le texte —
   surtout sur mobile. Element garde en hook cache (comme kicker / lien) pour ne
   pas toucher au JS. */
.client-activity-title { display: none; }
.client-activity-msg {
    display: -webkit-box;
    overflow: hidden;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    line-clamp: 3;
    margin: 0;
    color: var(--ink);
    font-size: 13px;
    font-weight: 500;
    line-height: 1.34;
    text-wrap: pretty;
}
.client-activity-link {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--brand-strong);
    font-size: 11px;
    font-weight: 800;
    text-decoration: none;
}
.client-activity-link[hidden] { display: none; }
.client-activity-close {
    /* Cible tactile WCAG 44x44 REELLE ; les marges negatives la replient dans
       la pastille compacte sans reduire la zone cliquable. */
    flex: none;
    width: 44px;
    height: 44px;
    margin: -5px -6px -5px -4px;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--muted);
    cursor: pointer;
    transition: background .15s ease, color .15s ease;
}
.client-activity-close:hover { background: var(--surface-2); color: var(--ink-strong); }
/* outline-offset NEGATIF : le toast a overflow:hidden, un anneau exterieur serait rogne. */
.client-activity-close:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }
.client-activity-progress {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 2px;
    background: var(--activity-tone);
    transform: scaleX(0);
    transform-origin: left center;
}
.client-activity-toast.is-counting .client-activity-progress { animation: client-activity-progress var(--activity-visible, 9s) linear forwards; }
.client-activity-toast.is-paused .client-activity-progress { animation-play-state: paused; }
@keyframes client-activity-progress {
    from { transform: scaleX(1); }
    to { transform: scaleX(0); }
}
@media (max-width: 560px) {
    /* Mobile : pastille encore plus petite, elle ne doit pas couvrir l'ecran. */
    .client-activity-toast {
        left: 12px;
        right: auto;
        bottom: calc(12px + env(safe-area-inset-bottom));
        width: min(290px, calc(100vw - 80px));
        gap: 9px;
        padding: 8px 6px 8px 10px;
    }
    .client-activity-media { width: 36px; height: 36px; border-radius: 9px; }
    .client-activity-msg { font-size: 12.5px; -webkit-line-clamp: 2; line-clamp: 2; }
    .client-activity-close { width: 44px; height: 44px; margin: -6px -6px -6px -4px; }
}
@media (max-width: 360px) {
    .client-activity-toast { width: calc(100vw - 64px); }
}
@media (prefers-reduced-motion: reduce) {
    .client-activity-toast { transition: opacity .12s linear; transform: none; }
    .client-activity-toast.is-counting .client-activity-progress { animation: none; transform: scaleX(1); }
    .client-activity-row { transition: none; }
    .client-activity-live { animation: none; }
}

/* Lien d'evitement clavier (accessibilite) */
.skip-link {
    position: fixed;
    top: 10px;
    left: 10px;
    z-index: 1000;
    padding: 10px 16px;
    border-radius: var(--r-md);
    background: var(--brand);
    color: #fff;
    font-family: var(--font-head);
    font-weight: 700;
    text-decoration: none;
    box-shadow: var(--shadow-md);
    transform: translateY(-160%);
    transition: transform .2s var(--dash-ease, ease);
}
.skip-link:focus {
    transform: translateY(0);
    outline: 3px solid #fff;
    outline-offset: 2px;
}

/* â”€â”€ Forms â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.field { margin-bottom: 15px; }
label {
    display: block;
    margin-bottom: 6px;
    font-family: var(--font-head);
    font-size: 12.5px;
    font-weight: 600;
    color: var(--ink-strong);
}
.label-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
}
input, select, textarea {
    width: 100%;
    min-height: 46px;
    border: 1.5px solid var(--line);
    border-radius: var(--r-md);
    padding: 10px 13px;
    font: inherit;
    font-size: 14px;
    background: var(--panel);
    color: var(--ink);
    transition: border-color .18s var(--dash-ease), box-shadow .18s var(--dash-ease), background .18s var(--dash-ease);
}
input::placeholder, textarea::placeholder { color: var(--muted); opacity: 1; }
input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: var(--brand);
    box-shadow: var(--ring);
}
input:hover:not(:focus):not(:disabled),
select:hover:not(:focus):not(:disabled),
textarea:hover:not(:focus):not(:disabled) {
    border-color: color-mix(in srgb, var(--brand) 40%, var(--line));
}
input:disabled, select:disabled, textarea:disabled {
    background: var(--surface-2);
    color: var(--muted);
    cursor: not-allowed;
    opacity: .75;
}
input[aria-invalid="true"], select[aria-invalid="true"], textarea[aria-invalid="true"],
.field.has-error input, .field.has-error select, .field.has-error textarea {
    border-color: var(--bad);
    background: var(--bad-soft);
}
input[aria-invalid="true"]:focus,
.field.has-error input:focus, .field.has-error select:focus, .field.has-error textarea:focus {
    border-color: var(--bad);
    box-shadow: 0 0 0 4px var(--bad-soft);
}
.order-field-help {
    display: block;
    margin-top: 6px;
}
.order-field-guidance {
    display: flex;
    align-items: flex-start;
    gap: 7px;
    margin-top: 7px;
    padding: 8px 10px;
    border: 1px solid color-mix(in srgb, var(--bad) 30%, var(--line));
    border-radius: 8px;
    background: var(--bad-soft);
    color: var(--bad);
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1.4;
}
.order-field-guidance::before {
    content: "!";
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    margin-top: 1px;
    border-radius: 50%;
    background: var(--bad);
    color: #fff;
    font-size: 11px;
    font-weight: 800;
    line-height: 1;
}
.order-field-guidance[hidden] { display: none !important; }
select {
    appearance: none;
    -webkit-appearance: none;
    padding-right: 38px;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 14px center;
}
:root[data-theme="dark"] select {
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5l5 5 5-5' fill='none' stroke='%239fb2af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
    background-repeat: no-repeat;
    background-position: right 14px center;
}
.input-wrap { position: relative; }
.input-wrap .input-lead {
    position: absolute;
    left: 14px;
    top: 50%;
    transform: translateY(-50%);
    display: grid;
    place-items: center;
    color: #94a3b8;
    pointer-events: none;
}
.input-wrap input { padding-left: 42px; }
.input-wrap input:focus ~ .input-lead, .input-wrap:focus-within .input-lead { color: var(--brand); }
.input-wrap .input-trail {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 36px;
    height: 36px;
    display: grid;
    place-items: center;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: #94a3b8;
    cursor: pointer;
    transition: color .16s ease, background .16s ease;
}
.input-wrap .input-trail:hover { color: var(--brand); background: var(--brand-soft); }
.input-wrap:has(.input-trail) input { padding-right: 46px; }
.check-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 2px 0 16px;
    font-family: var(--font-body);
    font-size: 13.5px;
    font-weight: 500;
    color: var(--ink);
    cursor: pointer;
}
.check-row input {
    width: 18px;
    height: 18px;
    min-height: 0;
    margin: 0;
    accent-color: var(--brand);
    cursor: pointer;
}
.form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 14px;
}
.form-errors {
    display: grid;
    gap: 4px;
    margin-bottom: 14px;
    padding: 11px 14px;
    border: 1px solid color-mix(in srgb, var(--bad) 30%, transparent);
    border-radius: 10px;
    background: var(--bad-soft);
    color: var(--bad);
    font-size: 13px;
    font-weight: 600;
}
.qty-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: stretch;
}
.qty-total {
    display: inline-flex;
    align-items: center;
    min-height: 46px;
    max-width: 220px;
    padding: 0 16px;
    border: 1.5px solid var(--line);
    border-radius: 10px;
    background: var(--surface-2);
    color: var(--brand-strong);
    font-family: var(--font-mono);
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.secret-block {
    display: block;
    width: 100%;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    background: var(--surface-2);
    color: var(--ink);
    font-size: 13px;
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* â”€â”€ Topbar â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.topbar {
    position: sticky;
    top: 0;
    z-index: 40;
    background: var(--topbar-bg);
    backdrop-filter: blur(16px) saturate(160%);
    -webkit-backdrop-filter: blur(16px) saturate(160%);
    border-bottom: 1px solid rgba(255, 255, 255, .10);
    box-shadow: 0 1px 0 rgba(255, 255, 255, .06) inset, var(--topbar-shadow);
}
/* Mobiles modestes : le blur permanent d'un bandeau sticky se paie a chaque
   frame de scroll — fond quasi opaque, meme rendu, zero cout GPU. */
@media (max-width: 700px) {
    .topbar { background: var(--topbar-bg-mobile); backdrop-filter: none; -webkit-backdrop-filter: none; }
}
.topbar-inner {
    width: min(1280px, calc(100% - 28px));
    min-height: 64px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 14px;
    align-items: center;
    color: #fff;
}
.brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    color: #fff;
    font-family: var(--font-head);
    font-size: 19px;
    font-weight: 700;
    line-height: 1;
}
.brand:hover { color: #fff; text-decoration: none; }
.brand-mark {
    width: 36px;
    height: 36px;
    display: inline-grid;
    place-items: center;
    border-radius: 10px;
    background: linear-gradient(135deg, var(--brand), var(--brand-bright));
    color: #fff;
    font-size: 13px;
    font-weight: 800;
    box-shadow: 0 6px 16px rgba(0, 120, 120, .4);
}
.brand-logo {
    display: block;
    width: auto;
    max-width: 178px;
    max-height: 44px;
    object-fit: contain;
    border-radius: 8px;
}
@media (max-width: 480px) {
    .brand-logo { max-width: 140px; max-height: 38px; }
}
.nav {
    display: flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
}
.nav-main, .nav-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
}
.nav-main {
    justify-self: center;
    width: max-content;
    max-width: 100%;
    justify-content: center;
    gap: 2px;
    padding: 4px;
    overflow-x: auto;
    scrollbar-width: none;
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: var(--r-md);
    background: rgba(4, 35, 55, .12);
}
.nav-main::-webkit-scrollbar, .nav-actions::-webkit-scrollbar { display: none; }
.nav-actions { justify-content: flex-end; }
.nav .nav-link,
.nav .nav-summary,
.nav .nav-pill {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 11px;
    border: 0;
    border-radius: 9px;
    background: transparent;
    color: rgba(255, 255, 255, .92);
    font-family: var(--font-head);
    font-size: 12.5px;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    text-decoration: none;
    cursor: pointer;
    transition: background .18s var(--dash-ease), color .18s var(--dash-ease), box-shadow .18s var(--dash-ease);
}
.nav-main .nav-link {
    padding: 0 12px 0 7px;
    border-radius: var(--r-sm);
}
.nav-main .nav-link > .icon {
    width: 30px;
    height: 30px;
    padding: 6px;
    border-radius: var(--r-sm);
    background: rgba(39, 207, 205, .12);
    color: #aaf5ef;
    transition: background .18s var(--dash-ease), color .18s var(--dash-ease), transform .18s var(--dash-ease);
}
.nav-main .nav-link:focus-visible {
    outline-color: var(--gold);
    outline-offset: 2px;
}
.nav .nav-link[aria-current="page"],
.nav .nav-link.is-current,
.nav .nav-link.active {
    position: relative;
    background: rgba(251, 188, 4, .12);
    color: #fff;
    font-weight: 700;
}
.nav .nav-link[aria-current="page"]::after,
.nav .nav-link.is-current::after,
.nav .nav-link.active::after {
    content: '';
    position: absolute;
    right: 12px;
    bottom: 4px;
    left: 45px;
    height: 2px;
    border-radius: 999px;
    background: var(--gold);
}
.nav .nav-link[aria-current="page"] .icon,
.nav .nav-link.is-current .icon,
.nav .nav-link.active .icon {
    background: var(--gold);
    color: #3a2c00;
}
.nav .nav-link:hover, .nav .nav-summary:hover {
    background: rgba(255, 255, 255, .12);
    color: #fff;
    text-decoration: none;
}
.nav .nav-link svg, .nav .nav-summary svg, .nav .nav-pill svg {
    width: 17px;
    height: 17px;
    flex: 0 0 auto;
}
.nav-details { position: relative; flex: 0 0 auto; }
.nav-summary { list-style: none; }
.nav-summary::-webkit-details-marker { display: none; }
.nav-caret {
    width: 7px;
    height: 7px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
    opacity: .75;
    transition: transform .2s var(--dash-ease);
}
.nav-details[open] .nav-caret { transform: rotate(225deg) translateY(-1px); }
.nav-menu {
    position: absolute;
    top: calc(100% + 10px);
    /* Ancré à droite du déclencheur (le compte vit au bord droit de la topbar)
       et jamais plus large que l'écran : indébordable quel que soit l'état. */
    right: 0;
    left: auto;
    z-index: 80;
    min-width: 240px;
    max-width: min(340px, calc(100vw - 16px));
    display: grid;
    gap: 2px;
    padding: 8px;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    color: var(--ink);
    box-shadow: var(--shadow-lg);
    transform-origin: top right;
    animation: menu-pop .2s var(--dash-ease);
}
@keyframes menu-pop {
    from { opacity: 0; transform: translateY(-6px) scale(.98); }
    to { opacity: 1; transform: none; }
}
.nav-menu a, .nav-menu button {
    min-height: 40px;
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 0 11px;
    border: 0;
    border-radius: 9px;
    background: transparent;
    color: var(--ink-strong);
    font-family: var(--font-head);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    transition: background .16s var(--dash-ease), color .16s var(--dash-ease);
}
.nav-menu a:hover, .nav-menu button:hover {
    background: var(--brand-soft);
    color: var(--brand-strong);
    text-decoration: none;
}
.nav-menu .menu-item .icon { color: var(--brand); }
.nav-menu .menu-item.danger { color: var(--bad); }
.nav-menu .menu-item.danger .icon { color: var(--bad); }
.nav-menu .menu-item.danger:hover { background: var(--bad-soft); color: var(--bad); }
.nav-menu-divider { height: 1px; margin: 5px 8px; border: 0; background: var(--line); }
.nav-pill {
    border: 1px solid rgba(255, 255, 255, .22);
    background: rgba(255, 255, 255, .10);
}
.account-menu { width: min(268px, calc(100vw - 28px)); }
.account-menu .nav-summary,
.account-menu .nav-menu { width: 100%; }
.account-menu .nav-summary {
    border: 1px solid rgba(255, 255, 255, .16);
    background: rgba(255, 255, 255, .08);
    transition: background .18s var(--dash-ease), border-color .18s var(--dash-ease), box-shadow .18s var(--dash-ease);
}
.account-menu .nav-summary:hover {
    background: rgba(255, 255, 255, .16);
    border-color: rgba(255, 255, 255, .30);
}
.account-menu[open] .nav-summary {
    background: rgba(255, 255, 255, .18);
    border-color: rgba(255, 255, 255, .34);
    box-shadow: 0 4px 8px rgba(0, 40, 40, .24);
}
.currency-pill { padding-inline: 13px; font-weight: 700; letter-spacing: .03em; }
.lang-toggle {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 0 12px;
    border-radius: 9px;
    border: 1px solid rgba(255, 255, 255, .22);
    background: rgba(255, 255, 255, .10);
    color: #fff;
    font-family: var(--font-head);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .04em;
    text-decoration: none;
    flex: 0 0 auto;
    transition: background .16s ease, transform .16s ease;
}
.lang-toggle:hover { background: rgba(255, 255, 255, .18); color: #fff; text-decoration: none; }
.lang-toggle:active { transform: scale(.96); }
.lang-toggle svg { width: 15px; height: 15px; opacity: .85; flex: none; }
.topbar .button, .topbar .button.secondary {
    min-height: 42px;
    padding-inline: 14px;
    border-radius: 9px;
    font-size: 12.5px;
    box-shadow: none;
}
.topbar .button.ghost-light {
    background: rgba(255, 255, 255, .10);
    border-color: rgba(255, 255, 255, .26);
    color: #fff;
}
.topbar .button.ghost-light:hover { background: rgba(255, 255, 255, .18); transform: none; }
.topbar .button.accent-cta {
    background: var(--panel);
    border-color: transparent;
    color: var(--brand-strong);
    box-shadow: 0 8px 18px rgba(0, 40, 40, .28);
}
.topbar .button.accent-cta:hover { background: var(--brand-soft); color: var(--brand-strong); transform: none; }
.account-menu .nav-menu {
    min-width: 0;
    left: 0;
    right: auto;
    border: 0;
    box-shadow: 0 12px 28px rgba(3, 24, 43, .20);
}
.account-menu form { margin: 0; }

/* â”€â”€ Page scaffolding â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.page, .footer-inner, .tool-dock-inner, .utility-inner, .partner-strip-inner {
    width: min(1160px, calc(100% - 32px));
    margin: 0 auto;
}
.page { flex: 1 0 auto; padding: 28px 0 56px; }
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.header {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: flex-end;
    margin-bottom: 22px;
}
.section-title { margin: 30px 0 14px; }
.content { max-width: 760px; }
.content p { margin: 0 0 12px; }
.panel {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 24px;
    margin-bottom: 18px;
    box-shadow: var(--shadow-md);
}
.grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
    gap: 16px;
}
.metric {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 18px;
    box-shadow: var(--shadow-sm);
    transition: transform .18s var(--dash-ease), box-shadow .18s var(--dash-ease);
}
.metric strong { display: block; font-family: var(--font-head); font-size: 24px; overflow-wrap: anywhere; }
.announcement { background: var(--brand-soft); border-color: rgba(var(--brand-rgb), .25); }
.announcement.warning { background: var(--warn-soft); border-color: transparent; }
.announcement.success { background: var(--ok-soft); border-color: transparent; }
.actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.table {
    width: 100%;
    border-collapse: collapse;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
}
.table th, .table td {
    padding: 12px 14px;
    border-bottom: 1px solid var(--line);
    text-align: left;
    vertical-align: top;
    overflow-wrap: anywhere;
    word-break: break-word;
}
.table th {
    background: var(--surface-2);
    color: var(--muted);
    font-family: var(--font-head);
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    white-space: nowrap;
}
.table tbody tr { transition: background .18s var(--dash-ease); }
.table tbody tr:hover { background: var(--brand-soft); }
.table tr:last-child td { border-bottom: 0; }

/* Historique commandes */
.order-history-shell {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    box-shadow: var(--shadow-sm);
}
.order-history-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 18px 28px;
    padding: 22px 24px;
    border-bottom: 1px solid var(--line);
    background: linear-gradient(180deg, var(--surface-2), var(--panel));
}
.order-history-heading { display: grid; gap: 9px; min-width: 0; }
.order-history-head h1 {
    display: flex;
    align-items: center;
    gap: 11px;
    margin: 0;
    font-size: 22px;
    font-weight: 800;
    letter-spacing: -.02em;
    text-transform: none;
    color: var(--ink);
}
.order-history-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-width: 25px;
    height: 23px;
    white-space: nowrap;
    padding: 0 9px;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--brand-strong);
    font-family: var(--font-head);
    font-size: 12.5px;
    font-weight: 800;
    letter-spacing: 0;
}
.order-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 7px;
    margin: 0;
    color: var(--muted);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.order-breadcrumb a { color: var(--muted); }
.order-breadcrumb a:hover { color: var(--brand); text-decoration: none; }
.order-breadcrumb span { color: var(--line); }
.order-breadcrumb span[aria-current] { color: var(--brand-strong); }
.order-history-search {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: min(100%, 340px);
}
.order-history-search-field {
    position: relative;
    display: flex;
    align-items: center;
    flex: 1 1 auto;
}
.order-history-search-field .icon {
    position: absolute;
    left: 13px;
    color: var(--muted);
    pointer-events: none;
}
.order-history-search-field input {
    min-height: 44px;
    padding-left: 40px;
    border-radius: 10px;
}
.order-history-table-wrap { overflow-x: auto; }
.order-history-table {
    width: 100%;
    min-width: 940px;
    border-collapse: collapse;
}
.order-history-table th,
.order-history-table td {
    padding: 13px 18px;
    border-bottom: 1px solid var(--line);
    text-align: left;
    vertical-align: middle;
}
.order-history-table thead th {
    color: var(--muted);
    background: var(--surface-2);
    font-family: var(--font-head);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
    border-bottom: 1px solid var(--line);
}
.order-history-table tbody tr {
    cursor: pointer;
    transition: background .18s var(--dash-ease);
}
.order-history-table tbody tr:hover { background: var(--brand-soft); }
.order-history-table td.order-cell-sec { white-space: nowrap; }
.order-history-table tbody tr:last-child td { border-bottom: 0; }
.order-row-go {
    width: 46px;
    color: var(--muted);
    text-align: right;
}
.order-row-go .icon { transition: transform .18s var(--dash-ease); }
.order-row-go-text { display: none; }
.order-history-table tbody tr:hover .order-row-go { color: var(--brand); }
.order-history-table tbody tr:hover .order-row-go .icon { transform: translateX(3px); }
.order-service-name {
    display: inline-block;
    max-width: 360px;
    color: var(--ink-strong);
    font-weight: 600;
    overflow-wrap: anywhere;
}
.order-status-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-width: 116px;
    min-height: 27px;
    padding: 4px 12px;
    border: 1px solid color-mix(in srgb, var(--status-color) 44%, var(--line));
    border-radius: 999px;
    background: var(--status-bg);
    background: color-mix(in srgb, var(--status-color) 18%, var(--panel));
    color: var(--status-color);
    color: color-mix(in srgb, var(--status-color) 55%, var(--ink-strong));
    font-family: var(--font-head);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .01em;
    white-space: nowrap;
}
:root[data-theme="dark"] .order-status-pill {
    background: color-mix(in srgb, var(--status-color) 22%, var(--panel));
    border-color: color-mix(in srgb, var(--status-color) 52%, var(--line));
    color: color-mix(in srgb, var(--status-color) 45%, #ffffff);
}
.order-id-button,
.order-service-button,
.order-copy-button {
    border: 0;
    background: transparent;
    color: var(--ink);
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.order-id-button {
    font-family: var(--font-mono);
    font-weight: 700;
    color: var(--brand-strong);
    letter-spacing: -.01em;
}
.order-service-button {
    max-width: 360px;
    color: var(--ink-strong);
    font-weight: 600;
}
.order-id-button:hover,
.order-service-button:hover { color: var(--brand); text-decoration: underline; }
.order-money {
    font-family: var(--font-mono);
    font-weight: 700;
    color: var(--ink);
    white-space: nowrap;
}
.order-history-empty {
    padding: 46px 24px !important;
    color: var(--muted);
    text-align: center !important;
}
.order-history-empty .icon {
    display: block;
    margin: 0 auto 10px;
    color: var(--muted);
    opacity: .7;
}
.order-history-pager { padding: 16px 24px; border-top: 1px solid var(--line); }

.finance-list-shell {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    box-shadow: var(--shadow-sm);
}
.finance-list-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    padding: 20px 24px;
    border-bottom: 1px solid var(--line);
    background: linear-gradient(180deg, var(--surface-2), var(--panel));
}
.finance-list-head h1 {
    margin: 0;
    font-size: 20px;
    font-weight: 800;
    letter-spacing: -.02em;
    text-transform: none;
    color: var(--ink);
}
.finance-list-hint {
    max-width: 560px;
    margin: 6px 0 0;
    color: var(--muted);
    font-size: 13px;
    line-height: 1.5;
}
.finance-list-search {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: min(100%, 360px);
}
.finance-list-search input { min-height: 44px; border-radius: 10px; }
.finance-table-wrap { overflow-x: auto; }
.finance-table {
    width: 100%;
    min-width: 960px;
    border-collapse: collapse;
}
.finance-table-invoices { min-width: 780px; }
.finance-table-statements { min-width: 860px; }
.finance-table th,
.finance-table td {
    padding: 11px 16px;
    border-bottom: 1px solid var(--line);
    text-align: left;
    vertical-align: middle;
}
.finance-table th {
    color: var(--muted);
    background: var(--surface-2);
    font-family: var(--font-head);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    white-space: nowrap;
}
.finance-table tbody tr { transition: background .18s var(--dash-ease); }
.finance-table tbody tr:hover { background: var(--brand-soft); }
.finance-table small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
    font-size: 12px;
}
.finance-recharge-link { font-size: 14px; }
.finance-statement-link { font-size: 14px; }
.finance-statement-date time { color: var(--muted); font-size: 11.5px; }
.finance-operation-label {
    display: block;
    color: var(--ink-strong);
    font-size: 13px;
    font-weight: 800;
}
.finance-operation-label + small { margin-top: 6px; }
.finance-signed-amount { font-size: 14px; }
.finance-source-empty { color: var(--muted); font-size: 12.5px; font-weight: 650; }
.finance-reference {
    display: flex !important;
    align-items: baseline;
    gap: 5px;
    min-width: 0;
}
.finance-reference span { flex: none; font-weight: 600; }
.finance-reference b {
    min-width: 0;
    color: var(--muted);
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 700;
    overflow-wrap: anywhere;
}
.finance-primary-link,
.finance-source-link {
    color: var(--brand-strong);
    font-weight: 800;
    text-decoration: none;
}
.finance-primary-link:hover,
.finance-source-link:hover { color: var(--brand); text-decoration: underline; }
.finance-status-pill,
.finance-type-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 92px;
    min-height: 26px;
    padding: 4px 12px;
    border-radius: 999px;
    font-family: var(--font-head);
    font-size: 11px;
    font-style: normal;
    font-weight: 800;
    letter-spacing: .03em;
    text-transform: uppercase;
    white-space: nowrap;
}
.finance-status-pill.status-paid,
.finance-type-pill.type-credit { color: #05664b; background: rgba(47, 172, 125, .16); }
.finance-status-pill.status-pending,
.finance-status-pill.status-unpaid { color: #9a5b00; background: rgba(245, 158, 11, .18); }
.finance-status-pill.status-failed,
.finance-status-pill.status-cancelled,
.finance-type-pill.type-debit { color: #c01f27; background: rgba(224, 36, 40, .12); }
.finance-money {
    font-family: var(--font-mono);
    font-weight: 800;
    white-space: nowrap;
}
.finance-money.credit { color: #05664b; }
.finance-money.debit { color: #c01f27; }
:root[data-theme="dark"] .finance-status-pill.status-paid,
:root[data-theme="dark"] .finance-type-pill.type-credit,
:root[data-theme="dark"] .finance-money.credit { color: #3ad9d2; }
:root[data-theme="dark"] .finance-status-pill.status-pending,
:root[data-theme="dark"] .finance-status-pill.status-unpaid { color: #fbbf24; }
:root[data-theme="dark"] .finance-status-pill.status-failed,
:root[data-theme="dark"] .finance-status-pill.status-cancelled,
:root[data-theme="dark"] .finance-type-pill.type-debit,
:root[data-theme="dark"] .finance-money.debit { color: #ff8f92; }
.finance-detail-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-height: 44px;
    padding: 0 13px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    color: var(--brand-strong);
    background: var(--surface-2);
    font-size: 12px;
    font-weight: 800;
    text-decoration: none;
    transition: color .18s var(--dash-ease), background .18s var(--dash-ease), border-color .18s var(--dash-ease);
}
.finance-detail-button:hover {
    color: var(--brand-strong);
    border-color: var(--brand);
    background: var(--brand-soft);
    text-decoration: none;
}
.finance-empty {
    padding: 46px 24px !important;
    color: var(--muted);
    text-align: center !important;
}
.finance-pager { padding: 16px 24px; border-top: 1px solid var(--line); }
.finance-detail-page { display: grid; gap: 18px; }
.finance-detail-hero {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border: 1px solid var(--line);
    border-radius: 8px;
    overflow: hidden;
    background: var(--panel);
    box-shadow: var(--shadow-sm);
}
.finance-detail-hero > div {
    display: grid;
    gap: 7px;
    padding: 18px;
    border-right: 1px solid var(--line);
}
.finance-detail-hero > div:last-child { border-right: 0; }
.finance-detail-hero span,
.finance-detail-list dt {
    color: var(--muted);
    font-family: var(--font-head);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.finance-detail-hero strong:not(.finance-status-pill) {
    color: var(--ink-strong);
    font-family: var(--font-mono);
    font-size: 20px;
}
.finance-detail-panel {
    padding: 20px;
    border: 1px solid var(--line);
    border-radius: 8px;
    background: var(--panel);
    box-shadow: var(--shadow-sm);
}
.finance-detail-panel h2 { margin: 0 0 16px; font-size: 20px; }
.finance-detail-list {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
    margin: 0;
    border: 1px solid var(--line);
    border-radius: 8px;
    overflow: hidden;
}
.finance-detail-list div { padding: 14px; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.finance-detail-list div:nth-child(2n) { border-right: 0; }
.finance-detail-list div:nth-last-child(-n+2) { border-bottom: 0; }
.finance-detail-list dd { margin: 6px 0 0; color: var(--ink-strong); font-weight: 800; }

.invoice-detail-page-panel { padding: 0; overflow: hidden; }
dialog.modal.order-detail-modal.invoice-detail-modal { width: min(620px, calc(100vw - 24px)); }
.invoice-detail-modal-card [data-invoice-dialog-body] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
.invoice-detail-modal-card [data-invoice-dialog-body][aria-busy="true"] { padding: 18px 20px 20px; }
.invoice-detail-content { display: grid; gap: 16px; }
.invoice-detail-modal-card .invoice-detail-content { padding: 18px 20px 20px; }
.invoice-detail-page-panel .invoice-detail-content { padding: 24px; }
.invoice-detail-amount-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px;
    border: 1px solid color-mix(in srgb, var(--brand) 28%, var(--line));
    border-radius: var(--r-md);
    background: var(--brand-soft);
}
.invoice-detail-amount-card > div { min-width: 0; }
.invoice-detail-amount-card > div > span,
.invoice-detail-section h3,
.invoice-detail-meta dt,
.invoice-statement-item dt {
    color: var(--muted);
    font-family: var(--font-head);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.invoice-detail-amount-card > div > strong {
    display: block;
    margin-top: 4px;
    color: var(--brand-strong);
    font-family: var(--font-mono);
    font-size: clamp(22px, 4vw, 29px);
    line-height: 1.1;
}
.invoice-detail-section {
    padding-top: 15px;
    border-top: 1px solid var(--line);
}
.invoice-detail-section h3 { margin: 0 0 10px; }
.invoice-detail-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1px;
    margin: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--line);
}
.invoice-detail-meta > div {
    min-width: 0;
    padding: 12px 13px;
    background: var(--panel);
}
.invoice-detail-meta dd {
    margin: 5px 0 0;
    color: var(--ink-strong);
    font-size: 13px;
    font-weight: 750;
    overflow-wrap: anywhere;
}
.invoice-detail-meta .invoice-detail-id {
    color: var(--brand-strong);
    font-family: var(--font-mono);
    font-size: 16px;
    font-weight: 900;
}
.invoice-detail-reference dd { font-family: var(--font-mono); font-size: 11.5px; }
.invoice-statement-list { display: grid; gap: 10px; }
.invoice-statement-item {
    padding: 12px 13px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--surface-2);
}
.invoice-statement-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 10px;
}
.invoice-statement-head time { color: var(--muted); font-size: 11.5px; }
.invoice-statement-item dl {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin: 0;
}
.invoice-statement-item dl > div { min-width: 0; }
.invoice-statement-item dd { margin: 4px 0 0; }
.invoice-statement-empty { margin: 0; color: var(--muted); font-size: 13px; }

.statement-detail-page-panel { padding: 0; overflow: hidden; }
dialog.modal.order-detail-modal.statement-detail-modal { width: min(620px, calc(100vw - 24px)); }
.statement-detail-modal-card [data-statement-dialog-body] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}
.statement-detail-modal-card [data-statement-dialog-body][aria-busy="true"] { padding: 18px 20px 20px; }
.statement-detail-content { display: grid; gap: 16px; }
.statement-detail-modal-card .statement-detail-content { padding: 18px 20px 20px; }
.statement-detail-page-panel .statement-detail-content { padding: 24px; }
.statement-detail-amount-card > div > strong.credit { color: #05664b; }
.statement-detail-amount-card > div > strong.debit { color: #c01f27; }
:root[data-theme="dark"] .statement-detail-amount-card > div > strong.credit { color: #3ad9d2; }
:root[data-theme="dark"] .statement-detail-amount-card > div > strong.debit { color: #ff8f92; }
.statement-source-card {
    display: grid;
    gap: 10px;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--surface-2);
}
.statement-source-card > div:first-child {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.statement-source-card > div:first-child > span,
.statement-source-card dt {
    color: var(--muted);
    font-family: var(--font-head);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.statement-source-card a {
    color: var(--brand-strong);
    font-weight: 850;
    text-decoration: none;
}
.statement-source-card a:hover { color: var(--brand); text-decoration: underline; }
.statement-source-card dl { margin: 0; }
.statement-source-card dl > div { min-width: 0; }
.statement-source-card dd {
    margin: 4px 0 0;
    color: var(--ink-strong);
    font-family: var(--font-mono);
    font-size: 11.5px;
    font-weight: 750;
    overflow-wrap: anywhere;
}
.statement-source-card p { margin: 0; color: var(--ink); font-size: 13px; line-height: 1.55; }
.statement-source-card .statement-source-empty { color: var(--muted); }
.statement-detail-description {
    margin: 0;
    padding: 13px 14px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    color: var(--ink);
    background: var(--surface-2);
    font-size: 13px;
    line-height: 1.6;
    overflow-wrap: anywhere;
    white-space: pre-wrap;
}

.payment-return-page {
    width: min(860px, 100%);
    margin: 0 auto;
    gap: 24px;
}
.payment-return-head { align-items: flex-start; }
.payment-return-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.payment-return-head h1 { margin-top: 8px; }
.payment-return-head-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 8px;
    margin: 4px 0 0;
    color: var(--muted);
    font-size: 12px;
    font-weight: 650;
}
.payment-return-card {
    --payment-state: var(--warn);
    --payment-state-soft: var(--warn-soft);
    padding: 0;
    overflow: hidden;
    border-top: 4px solid var(--payment-state);
    border-radius: var(--r-lg);
    box-shadow: var(--shadow-sm);
}
.payment-return-card.status-paid {
    --payment-state: var(--ok);
    --payment-state-soft: var(--ok-soft);
}
.payment-return-card.status-failed,
.payment-return-card.status-cancelled {
    --payment-state: var(--bad);
    --payment-state-soft: var(--bad-soft);
}
.payment-return-outcome {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr) auto;
    gap: 16px;
    align-items: start;
    padding: 24px;
    background: color-mix(in srgb, var(--payment-state-soft) 56%, var(--panel));
}
.payment-return-icon {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border: 1px solid color-mix(in srgb, var(--payment-state) 28%, var(--line));
    border-radius: var(--r-md);
    color: var(--payment-state);
    background: color-mix(in srgb, var(--payment-state-soft) 72%, var(--panel));
}
.payment-return-message { min-width: 0; }
.payment-return-message h2 {
    margin: 0 0 4px;
    color: var(--ink-strong);
    font-size: 20px;
}
.payment-return-message p {
    max-width: 620px;
    margin: 0;
    color: var(--muted);
    line-height: 1.6;
}
.payment-return-outcome .finance-status-pill { align-self: start; }
.payment-return-amounts {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    border-top: 1px solid var(--line);
}
.payment-return-amounts > div {
    min-width: 0;
    padding: 20px 24px;
}
.payment-return-amounts > div + div { border-left: 1px solid var(--line); }
.payment-return-amounts span,
.payment-return-meta dt {
    color: var(--muted);
    font-family: var(--font-head);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.payment-return-amounts strong {
    display: block;
    margin-top: 4px;
    color: var(--ink-strong);
    font-size: clamp(20px, 4vw, 24px);
    line-height: 1.2;
    overflow-wrap: anywhere;
    white-space: normal;
}
.payment-return-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin: 0;
    border-top: 1px solid var(--line);
}
.payment-return-meta > div {
    min-width: 0;
    padding: 16px 24px;
}
.payment-return-meta > div:nth-child(odd) { border-right: 1px solid var(--line); }
.payment-return-meta > div:nth-child(n+3) { border-top: 1px solid var(--line); }
.payment-return-meta dd {
    margin: 4px 0 0;
    color: var(--ink-strong);
    font-size: 13px;
    font-weight: 750;
    overflow-wrap: anywhere;
}
.payment-return-meta .payment-return-id {
    color: var(--brand-strong);
    font-family: var(--font-mono);
    font-size: 16px;
    font-weight: 900;
}
.payment-return-reference dd {
    font-family: var(--font-mono);
    font-size: 11.5px;
}
.payment-return-actions {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    padding: 16px 24px;
    border-top: 1px solid var(--line);
    background: color-mix(in srgb, var(--surface-2) 76%, var(--panel));
}
.payment-return-actions .button {
    min-width: 176px;
    box-shadow: none;
}

.order-detail-page { display: grid; gap: 18px; }
.order-detail-page-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 18px;
}
.order-detail-page-head h1 { margin-top: 6px; }
.order-detail-page-panel { padding: 0; overflow: hidden; }
dialog.modal.order-detail-modal { width: min(540px, calc(100vw - 20px)); }
.order-detail-modal-card.modal-card {
    display: flex;
    flex-direction: column;
    max-height: min(92vh, calc(100dvh - 24px));
    padding: 0;
    overflow: hidden;
    border: 0;
    background: var(--panel);
    border-radius: var(--r-lg);
}
.order-detail-modal-card .modal-close {
    top: 13px;
    right: 13px;
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, .95);
    color: var(--brand-strong);
    box-shadow: 0 3px 10px rgba(2, 38, 36, .3);
}
.order-detail-modal-card .modal-close:hover {
    background: var(--panel);
    color: var(--accent);
}
.order-detail-modal-card > h2 {
    flex: 0 0 auto;
    margin: 0;
    padding: 14px 56px 14px 20px;
    background: linear-gradient(135deg, var(--brand-strong), var(--brand));
    color: #fff;
    font-size: 16px;
    letter-spacing: 0;
}
.order-detail-content { display: grid; gap: 10px; }
.order-detail-modal-card .order-detail-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    padding: 15px 18px 18px;
}
.order-detail-page-panel .order-detail-content { padding: 24px; }
.order-detail-service {
    margin: 0;
    color: var(--ink-strong);
    font-size: 14px;
    line-height: 1.35;
    font-weight: 700;
}
.order-detail-amount-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
    gap: 5px;
    padding: 9px 12px;
    border: 1px solid rgba(0, 120, 120, .18);
    border-radius: var(--r-md);
    background: var(--brand-soft);
}
/* Montant + pastille de statut sur la MEME ligne : carte plus courte, modal
   moins charge. La pastille se replie dessous si le montant est trop long. */
.order-detail-amount-line {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px 8px;
    min-width: 0;
}
.order-detail-section {
    padding: 10px 0 0;
    border-top: 1px solid var(--line);
}
.order-detail-amount-card > span,
.order-detail-section h3,
.order-timeline-list dt,
.order-field-list span {
    color: var(--muted);
    font-family: var(--font-head);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.order-detail-amount-card strong {
    display: block;
    color: var(--brand-strong);
    font-family: var(--font-mono);
    font-size: 16px;
    line-height: 1.2;
}
.order-detail-amount-card small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
}
.order-detail-section h3 { margin: 0 0 8px; }
.order-timeline-list,
.order-field-list {
    display: grid;
    gap: 0;
    margin: 0;
}
.order-timeline-list div,
.order-field-list div {
    display: grid;
    grid-template-columns: minmax(92px, .34fr) minmax(0, 1fr);
    gap: 6px 12px;
    align-items: baseline;
    padding: 7px 0;
    border-bottom: 1px solid var(--line);
}
.order-timeline-list div:first-child,
.order-field-list div:first-child { padding-top: 0; }
.order-timeline-list div:last-child,
.order-field-list div:last-child { border-bottom: 0; padding-bottom: 0; }
.order-timeline-list dd,
.order-field-list strong {
    margin: 0;
    color: var(--ink-strong);
    font-weight: 700;
    overflow-wrap: anywhere;
}
.order-duration { color: var(--ok) !important; }
.order-detail-section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 9px;
}
.order-detail-section-head h3 { margin: 0; }
.order-copy-button {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 32px;
    padding: 5px 12px;
    border: 1px solid rgba(0, 120, 120, .4);
    border-radius: 999px;
    color: var(--brand-strong);
    font-family: var(--font-head);
    font-size: 12px;
    font-weight: 800;
}
.order-copy-button:hover { background: var(--brand-soft); border-color: var(--brand); text-decoration: none; }
.order-result-box {
    margin: 0 0 4px;
    padding: 12px 13px;
    min-height: 48px;
    max-height: min(34dvh, 260px);
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--surface-2);
    color: var(--ink-strong);
    font-family: var(--font-mono);
    font-size: 13.5px;
    line-height: 1.5;
    font-weight: 600;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

/* â”€â”€ Icon boxes & tiles â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.icon { flex: 0 0 auto; }
.icon-box {
    width: 44px;
    height: 44px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: var(--brand-soft);
    color: var(--brand);
}
.icon-box.sm { width: 36px; height: 36px; border-radius: 10px; }
.icon-box.tone-wait { background: var(--chip); color: #64748b; }
.icon-box.tone-process { background: var(--warn-soft); color: var(--warn); }
.icon-box.tone-ok { background: var(--brand-soft); color: var(--brand); }
.icon-box.tone-bad { background: var(--accent-soft); color: var(--accent); }
.stat-tile { display: flex !important; align-items: center; gap: 14px; text-align: left; }
.stat-tile strong { font-family: var(--font-head); font-size: 22px; }
.gateway-card {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px;
    margin-bottom: 18px;
    border: 1.5px solid rgba(0, 120, 120, .25);
    border-radius: var(--r-md);
    background: var(--brand-soft);
}
.gateway-card .icon-box { background: var(--panel); box-shadow: var(--shadow-sm); }
.gateway-card strong { display: block; font-family: var(--font-head); }
.gateway-card .muted { font-size: 12.5px; }

/* â”€â”€ Bandes home, cartes services, boutique â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.group-card, .service-card {
    min-width: 0;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    box-shadow: var(--shadow-sm);
}
.group-card { padding: 16px; text-align: center; }
.service-card {
    display: grid;
    gap: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    box-shadow: var(--shadow-sm);
    transition: transform .2s var(--dash-ease), box-shadow .2s var(--dash-ease), border-color .2s var(--dash-ease);
}
.service-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); border-color: rgba(var(--brand-rgb), .35); }
.service-card-media {
    padding: 0;
    background: var(--surface-2);
}
.service-card-media .service-thumb {
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    border-radius: 0;
}
.service-card-body { padding: 16px; display: grid; gap: 7px; }
/* Cartes de hauteur uniforme : titre + sous-titre sur une seule ligne (fin tronquee) */
.service-card-body > h3,
.service-card-body > .muted {
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.service-thumb {
    width: 64px;
    height: 52px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    border-radius: 10px;
    background: linear-gradient(140deg, var(--brand), var(--brand-bright));
    color: #fff;
    font-weight: 800;
    text-transform: uppercase;
    overflow: hidden;
}
.service-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: inherit;
}
.service-thumb.dark { background: linear-gradient(140deg, #171f2d, #303b4f); }
.service-thumb .icon { width: 46%; height: 46%; color: rgba(255, 255, 255, .95); }
/* Real logo tiles are transparent (icons « sans fond ») — show the card surface, not the teal fallback fill. */
.service-thumb:has(img) { background: transparent; }
.service-card-media .service-thumb img { object-fit: cover; }
.service-price {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    justify-self: start;
    padding: 4px 11px;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--brand-strong);
    font-family: var(--font-head);
    font-size: 15px;
    font-weight: 800;
    white-space: nowrap;
}
.service-meta { display: flex; flex-wrap: wrap; gap: 8px; }
/* Catalogue global : une section par type de service (jamais melanges) */
.service-type-section { margin-bottom: 30px; }
.service-type-section:last-child { margin-bottom: 0; }
.service-type-head {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 0 0 16px;
    padding-bottom: 12px;
    border-bottom: 2px solid var(--type-soft, var(--line));
}
.service-type-icon {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    flex: none;
    border-radius: 10px;
    background: var(--type-soft, var(--chip));
    color: var(--type-color, var(--brand));
}
.service-type-head h2 {
    margin: 0;
    font-family: var(--font-head);
    font-size: 18px;
    font-weight: 700;
    letter-spacing: -.01em;
    color: var(--ink-strong);
}
.service-type-count {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    height: 25px;
    padding: 0 9px;
    border-radius: 999px;
    background: var(--type-soft, var(--chip));
    color: var(--type-color, var(--muted));
    font-family: var(--font-mono);
    font-size: 12.5px;
    font-weight: 700;
}
.service-list {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}
.shop-service-row {
    position: relative;
    display: grid;
    grid-template-columns: 132px minmax(0, 1fr);
    gap: 14px;
    align-items: center;
    height: 136px;
    padding: 11px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--panel);
    color: var(--ink);
    box-shadow: none;
    transition: transform .16s var(--dash-ease), box-shadow .16s var(--dash-ease), border-color .16s var(--dash-ease), background .16s var(--dash-ease);
}
.shop-service-row:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 8px rgba(var(--brand-rgb), .10);
    border-color: rgba(var(--brand-rgb), .48);
    text-decoration: none;
}
.nav-main .nav-link:hover > .icon {
    background: rgba(39, 207, 205, .22);
    color: #fff;
    transform: translateY(-1px);
}
.nav-main .nav-link[aria-current="page"]:hover > .icon,
.nav-main .nav-link.is-current:hover > .icon,
.nav-main .nav-link.active:hover > .icon {
    background: var(--gold);
    color: #3a2c00;
}
.nav-main .nav-link[aria-current="page"]:hover,
.nav-main .nav-link.is-current:hover,
.nav-main .nav-link.active:hover {
    background: rgba(251, 188, 4, .16);
}
.shop-service-row .service-thumb {
    width: 132px;
    height: 88px;
    aspect-ratio: 3 / 2;
    padding: 0;
    border-radius: 10px;
    border: 1px solid var(--line);
    background: var(--surface-2);
}
.shop-service-row .service-thumb:has(img) { background: var(--surface-2); }
.shop-service-row .service-thumb img {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    object-position: center;
    border-radius: 8px;
}
.service-card-info {
    min-width: 0;
    min-height: 88px;
    display: flex;
    flex-direction: column;
    flex: 1;
    align-self: stretch;
    justify-content: center;
    gap: 8px;
    padding: 0;
}
.service-card-title {
    display: -webkit-box;
    margin: 0;
    color: var(--ink-strong);
    font-family: var(--font-body);
    font-size: 14.5px;
    font-weight: 600;
    line-height: 1.4;
    height: 2.8em;
    flex: 0 0 2.8em;
    letter-spacing: -.008em;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.shop-service-row .service-meta {
    display: flex;
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: flex-start;
    gap: 6px;
    min-height: 54px;
    margin-top: auto;
}
.shop-service-row .service-price-row {
    display: flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    max-width: 100%;
}
.shop-service-row .service-price {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 3px 9px;
    border: 1px solid color-mix(in srgb, var(--ok) 30%, var(--line));
    border-radius: 7px;
    background: var(--ok-soft);
    color: color-mix(in srgb, var(--ok) 78%, var(--ink-strong));
    font-size: 14px;
    font-weight: 750;
    line-height: 1.2;
}
.shop-service-row .badge {
    min-height: 24px;
    padding: 2px 8px;
    border-radius: 7px;
    font-size: 10.5px;
}
.shop-service-row .service-delivery {
    max-width: 100%;
    border-color: color-mix(in srgb, var(--warn) 34%, var(--line));
    background: var(--warn-soft);
    color: color-mix(in srgb, var(--warn) 78%, var(--ink-strong));
    letter-spacing: .025em;
}
.shop-service-row .service-delivery .icon {
    flex: none;
    color: currentColor;
}
.mini-service-list {
    display: grid;
    gap: 0;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--panel);
    box-shadow: var(--shadow-sm);
}
.mini-service-row, .related-service-row {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 12px;
    border-bottom: 1px solid var(--line);
}
.mini-service-row:last-child, .related-service-row:last-child { border-bottom: 0; }
.mini-service-row h3, .related-service-row h3 { font-size: 13px; line-height: 1.3; }
.mini-service-row .service-thumb { width: 56px; height: 46px; }
.pinned-board { display: grid; gap: 4px; }
/* Fix responsive : quand le bloc epingle / la liste devient etroit, le prix passe
   SOUS le nom pour ne pas ecraser la colonne du titre (sinon le nom se casse
   caractere par caractere, en vertical). Base sur la largeur reelle du bloc. */
.pinned-board, .mini-service-list { container-type: inline-size; }
@container (max-width: 260px) {
    .mini-service-row, .related-service-row { grid-template-columns: 56px minmax(0, 1fr); }
    .mini-service-row > .service-price, .related-service-row > .service-price {
        grid-column: 2;
        justify-self: start;
        margin-top: 3px;
    }
}
.shop-panel {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) auto;
    gap: 18px;
    align-items: center;
    margin-top: 26px;
    padding: clamp(22px, 4vw, 34px);
    border-radius: var(--r-xl);
    background:
        radial-gradient(circle at 90% 20%, rgba(39, 207, 205, .3), transparent 40%),
        radial-gradient(circle at 6% 110%, rgba(251, 188, 4, .18), transparent 42%),
        #033533;
    color: #fff;
    box-shadow: var(--shadow-lg);
}
.shop-panel p { color: rgba(255, 255, 255, .82); }
.shop-panel .button { background: linear-gradient(135deg, var(--gold), #f59e0b); color: #22262e; box-shadow: 0 10px 24px rgba(245, 158, 11, .35); }
.catalogue-showcase {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr);
    gap: 18px;
    margin: 28px 0;
}
.promo-stack { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.promo-card {
    min-height: 164px;
    display: grid;
    align-content: end;
    gap: 8px;
    padding: 18px;
    border-radius: var(--r-md);
    background: linear-gradient(135deg, rgba(9, 47, 106, .94), rgba(0, 120, 120, .84)), var(--navy);
    color: #fff;
    box-shadow: var(--shadow-md);
}
.promo-card:nth-child(2) {
    background: linear-gradient(135deg, rgba(223, 36, 41, .93), rgba(246, 162, 26, .84)), var(--accent);
}
.promo-card h3 { font-size: 17px; }
.home-action-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin: 24px 0 34px;
}
.home-action-card {
    display: grid;
    justify-items: center;
    gap: 10px;
    padding: 24px 16px;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    color: var(--ink);
    text-align: center;
    box-shadow: var(--shadow-sm);
    transition: transform .18s ease, box-shadow .18s ease;
}
.home-action-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); text-decoration: none; }
.home-action-icon, .dashboard-icon {
    width: 52px;
    height: 52px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    background: var(--accent-soft);
    color: var(--accent);
}
.home-action-icon .icon, .dashboard-icon .icon { width: 46%; height: 46%; }
.category-ribbon {
    display: flex;
    gap: 10px;
    margin: 0 0 18px;
    overflow-x: auto;
    padding-bottom: 4px;
    scrollbar-width: thin;
}
.category-chip {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 0 14px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--panel);
    color: var(--ink);
    font-family: var(--font-head);
    font-size: 12.5px;
    font-weight: 600;
    box-shadow: var(--shadow-sm);
    transition: border-color .16s ease, color .16s ease;
}
.category-chip:hover { border-color: rgba(0, 120, 120, .4); color: var(--brand-strong); text-decoration: none; }
.category-chip span { color: var(--brand); font-size: 12px; }
.category-badge {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    min-width: 54px;
    padding: 0 10px;
    border: 1px solid var(--line);
    border-radius: 999px;
    background: var(--panel);
    color: var(--brand);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .03em;
    text-transform: uppercase;
}
.partner-strip { display: none; }
.utility-strip { background: var(--accent); color: #fff; font-size: 12px; font-weight: 700; }
.utility-inner {
    min-height: 28px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}
.shop-filter {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(210px, 280px) auto;
    gap: 12px;
    align-items: end;
}
.shop-filter .field { margin-bottom: 0; }
.shop-filter.panel { padding: 18px; }

/* Filtre categorie : dropdown custom (remplace le <select> natif) */
.cat-select { position: relative; }
.cat-select-btn {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    padding: 0 14px;
    border: 1.5px solid var(--line);
    border-radius: var(--r-md);
    background: var(--panel);
    color: var(--ink);
    font-family: var(--font-body);
    font-size: 14px;
    font-weight: 500;
    list-style: none;
    cursor: pointer;
    user-select: none;
    transition: border-color .18s var(--dash-ease), box-shadow .18s var(--dash-ease);
}
.cat-select-btn::-webkit-details-marker { display: none; }
.cat-select-btn > span[data-cat-label] { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cat-select-btn .icon { flex: none; color: var(--muted); transition: transform .2s var(--dash-ease); }
.cat-select-btn:hover { border-color: color-mix(in srgb, var(--brand) 45%, var(--line)); }
.cat-select[open] .cat-select-btn { border-color: var(--brand); box-shadow: var(--ring); }
.cat-select[open] .cat-select-btn .icon { transform: rotate(180deg); }
.cat-select-menu {
    position: absolute;
    z-index: 40;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    max-height: 320px;
    overflow-y: auto;
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    box-shadow: var(--shadow-lg);
    animation: menu-pop .16s var(--dash-ease);
}
.cat-option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    width: 100%;
    padding: 9px 12px;
    border: 0;
    border-radius: var(--r-sm);
    background: transparent;
    color: var(--ink);
    text-align: left;
    font-family: var(--font-body);
    font-size: 13.5px;
    cursor: pointer;
    transition: background .14s var(--dash-ease), color .14s var(--dash-ease);
}
.cat-option > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cat-option:hover { background: var(--brand-soft); color: var(--brand-strong); }
.cat-option.is-active { background: var(--brand-soft); color: var(--brand-strong); font-weight: 600; }
.cat-option-count {
    flex: none;
    min-width: 24px;
    padding: 1px 7px;
    border-radius: 999px;
    background: var(--chip);
    color: var(--muted);
    font-family: var(--font-mono);
    font-size: 11.5px;
    font-weight: 700;
    text-align: center;
}
.cat-option:hover .cat-option-count,
.cat-option.is-active .cat-option-count { background: var(--panel); color: var(--brand-strong); }

/* Filtrage client : masquage fiable meme sur les elements display:grid/flex */
.shop-service-row[hidden],
.service-type-section[hidden],
.services-filter-empty[hidden],
[data-filter-actions][hidden] { display: none !important; }

.catalogue-progress {
    display: flex;
    min-height: 58px;
    margin: 20px 0 4px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
}
.catalogue-progress[hidden],
.catalogue-load-error[hidden] { display: none !important; }
.catalogue-more-button {
    min-width: 176px;
    justify-content: center;
}
.catalogue-more-button[aria-busy="true"] {
    opacity: .72;
    pointer-events: none;
}
.catalogue-load-error {
    max-width: 52ch;
    margin: 0;
    color: var(--danger);
    font-size: 12.5px;
    text-align: center;
}

/* â”€â”€ Commande / factures â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.order-layout, .dashboard-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(300px, .75fr);
    gap: 22px;
    align-items: start;
}
.order-layout { grid-template-columns: minmax(0, 1fr) 330px; }
.order-summary {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 16px;
    align-items: center;
}
.order-summary h2 { font-size: 21px; }
.order-breadcrumb { margin-top: 6px; color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: .04em; }
.order-form-panel {
    padding: 0;
    overflow: hidden;
    border-radius: 16px;
    box-shadow: var(--shadow-md);
}
.order-hero {
    display: grid;
    grid-template-columns: 150px minmax(0, 1fr);
    gap: 18px;
    align-items: center;
    padding: 18px 22px;
    border-bottom: 1px solid var(--line);
    background:
        linear-gradient(135deg, rgba(var(--brand-rgb), .10), rgba(var(--brand-rgb), .04)),
        var(--panel);
}
.order-service-logo {
    width: 100%;
    height: auto;
    aspect-ratio: 3 / 2;
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: var(--panel);
    color: var(--brand);
    box-shadow: var(--shadow-md);
}
.order-service-logo .icon { width: 42%; height: 42%; }
.order-service-logo-image {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    object-position: center;
    border-radius: 12px;
}
.order-hero-main { min-width: 0; display: grid; gap: 5px; }
.order-hero-main h1 {
    max-width: 760px;
    margin: 0;
    color: var(--ink-strong);
    font-size: clamp(20px, 2.1vw, 24px);
    line-height: 1.15;
}
.order-back-link {
    width: max-content;
    color: var(--brand-strong);
    font-family: var(--font-head);
    font-size: 12px;
    font-weight: 700;
}
.order-form-body { padding: 22px; }
.order-form-entry { display: grid; gap: 18px; }
.order-summary-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin: 0;
    overflow: hidden;
    border: 0;
    border-radius: 14px;
    background: var(--navy);
}
.order-summary-item {
    display: grid;
    gap: 7px;
    min-width: 0;
    padding: 16px 18px;
    border-right: 1px solid rgba(255, 255, 255, .16);
}
.order-summary-item:last-child { border-right: 0; }
.order-summary-item dt {
    color: rgba(255, 255, 255, .66);
    font-family: var(--font-head);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .04em;
    line-height: 1;
    text-transform: uppercase;
}
.order-summary-item dd {
    display: flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
    margin: 0;
    font-family: var(--font-mono);
    font-size: 16px;
    font-weight: 800;
    line-height: 1.2;
}
.order-summary-price dd { color: #fff; font-size: 19px; }
.order-summary-delivery dd { color: #ffd36a; }
.order-summary-status dd { color: #67e8bc; }
.order-summary-price dd > span {
    border-radius: 999px;
    background: var(--accent-soft);
    color: var(--accent);
    font-family: var(--font-head);
    font-size: 10px;
    font-weight: 800;
    padding: 3px 7px;
    text-transform: uppercase;
    white-space: nowrap;
}
.order-submit { min-width: min(280px, 100%); }
.order-form-panel form > .actions {
    align-items: center;
    justify-content: space-between;
    padding-top: 4px;
}
.order-check-card { position: sticky; top: 86px; }
.order-check-card p { margin: 4px 0 14px; }
.service-rule-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 14px; }
.service-rule-grid .badge { justify-content: flex-start; min-height: 34px; border-radius: 8px; }
.related-services { margin-top: 0; }
/* Fiche commande : garanties collées au CTA (dans le panneau de commande) + ressources (liens) */
/* Le bouton porte le montant : un seul point de decision, pas de prix a
   rechercher plus haut dans la page. */
.order-cta { display: grid; gap: 9px; margin-top: 6px; }
.order-cta .order-submit { width: 100%; min-width: 0; min-height: 50px; font-size: 14.5px; }
.order-cta-total { font-variant-numeric: tabular-nums; }
.order-cta-total::before { content: "—"; margin-right: 7px; opacity: .55; }
.order-cta-note {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
    gap: 4px 9px; margin: 0; color: var(--muted); font-size: 12.5px; text-align: center;
}
.order-cta-balance { display: inline-flex; align-items: center; gap: 7px; }
.order-cta-balance::before { content: ""; flex: none; width: 4px; height: 4px; border-radius: 999px; background: currentColor; opacity: .55; }
.order-cta-balance strong { color: var(--ink-strong); font-variant-numeric: tabular-nums; }
.order-guarantee-inline {
    margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line);
    display: flex; flex-direction: column; gap: 10px;
}
.order-guarantee-label,
.order-tools-label {
    font-size: 11px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase;
    color: var(--muted);
}
/* Garanties en fiche technique : hairlines partagees (gap 1px sur fond --line),
   donc aucune double bordure entre deux lignes. */
.guarantee-list {
    display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
    margin: 0; padding: 0; list-style: none;
    background: var(--line); border: 1px solid var(--line);
    border-radius: var(--r-md); overflow: hidden;
}
.guarantee-row {
    display: flex; align-items: center; gap: 9px; min-height: 44px; padding: 11px 13px;
    background: var(--panel); color: var(--ink);
    font-size: 12.5px; font-weight: 600; line-height: 1.3;
}
.guarantee-row:last-child:nth-child(odd) { grid-column: 1 / -1; }
.guarantee-row .icon { flex: none; color: var(--ok); }
.guarantee-row.tone-info { color: var(--muted); font-weight: 500; }
.guarantee-row.tone-info .icon { color: var(--muted); }
.guarantee-row.tone-warn { color: var(--warn); font-weight: 500; }
.guarantee-row.tone-warn .icon { color: var(--warn); }
.order-tools { margin-top: 16px; display: flex; flex-direction: column; gap: 10px; }
.tool-segment {
    display: flex; padding: 4px; border: 1px solid var(--line);
    border-radius: var(--r-md); background: var(--surface-2);
}
.tool-link {
    flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-width: 0; min-height: 42px; padding: 0 12px; border-radius: 9px; text-align: center;
    color: var(--brand-strong); font-size: 12.5px; font-weight: 600; text-decoration: none;
    transition: background .15s var(--dash-ease);
}
.tool-link + .tool-link { box-shadow: inset 1px 0 0 var(--line); }
.tool-link:hover { background: var(--panel); box-shadow: none; }
.tool-link:hover + .tool-link { box-shadow: none; }
.tool-link .icon { flex: none; }
.order-description h2 { font-size: 15px; margin-bottom: 10px; }
.order-description p { margin: 0; max-width: 68ch; }
.related-services .mini-service-list { box-shadow: none; margin-top: 12px; }
.related-services .related-service-row {
    grid-template-columns: 64px minmax(0, 1fr);
    align-items: center;
}
a.related-service-row,
a.related-service-row:hover,
a.related-service-row:focus-visible {
    color: inherit;
    text-decoration: none;
}
a.related-service-row:hover { background: var(--surface-2); }
a.related-service-row h3 { color: var(--brand-strong); text-decoration: none; }
.related-services .service-thumb {
    width: 64px;
    height: 44px;
    padding: 0;
    border-radius: 10px;
    background: var(--panel);
    border: 1px solid var(--line);
}
.related-services .service-thumb img {
    display: block;
    width: auto;
    height: auto;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    object-position: center;
    border-radius: 8px;
}
.related-services .service-thumb .icon { color: var(--brand); }
.related-services .service-price {
    min-height: 24px;
    padding: 2px 9px;
    border-radius: 6px;
    background: var(--surface-2);
    color: var(--ink-strong);
    font-size: 12px;
}
.fact-card {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 22px;
    box-shadow: var(--shadow-md);
}
.fact-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 18px 0; }
.fact-tile {
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--surface-2);
    transition: border-color .16s var(--dash-ease), background .16s var(--dash-ease);
}
.fact-tile strong { display: block; margin-top: 5px; font-family: var(--font-head); color: var(--brand-strong); overflow-wrap: anywhere; }
.quick-amounts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 4px 0 16px; }
.quick-amounts .chip { justify-content: center; padding: 0 10px; border-radius: var(--r-md); }
.chip {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 0 16px;
    border: 1.5px solid var(--line);
    border-radius: 999px;
    background: var(--panel);
    color: var(--ink);
    font-family: var(--font-head);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color .18s var(--dash-ease), color .18s var(--dash-ease), background .18s var(--dash-ease), box-shadow .18s var(--dash-ease), transform .18s var(--dash-ease);
}
.chip:hover, .chip.active {
    border-color: var(--brand);
    color: var(--brand-strong);
    background: var(--brand-soft);
}

/* â”€â”€ Dashboard â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.dashboard-top {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 280px;
    gap: 18px;
    margin-bottom: 18px;
}
.dashboard-balance {
    position: relative;
    overflow: hidden;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 18px;
    align-items: center;
    padding: clamp(22px, 4vw, 32px);
    border-radius: var(--r-xl);
    background:
        radial-gradient(circle at 86% 10%, rgba(255, 255, 255, .28), transparent 32%),
        linear-gradient(135deg, var(--brand), var(--brand-bright));
    color: #fff;
    box-shadow: 0 18px 44px rgba(0, 120, 120, .32);
}
.dashboard-balance::after {
    content: "";
    position: absolute;
    width: 220px;
    height: 220px;
    right: -70px;
    bottom: -110px;
    border-radius: 50%;
    border: 30px solid rgba(255, 255, 255, .12);
}
.dashboard-balance > * { position: relative; z-index: 1; }
.dashboard-balance strong { display: block; font-family: var(--font-head); font-size: clamp(30px, 5vw, 44px); font-weight: 800; }
.dashboard-balance .button { background: rgba(255, 255, 255, .95); color: var(--brand-strong); box-shadow: 0 10px 24px rgba(0, 40, 38, .25); }
.dashboard-balance .button:hover { background: var(--panel); }
.dashboard-recharge {
    display: grid;
    align-content: center;
    justify-items: center;
    gap: 10px;
    padding: 22px;
    border: 1px dashed rgba(0, 120, 120, .45);
    border-radius: var(--r-xl);
    background: var(--brand-soft);
    text-align: center;
}
.dashboard-recharge strong { font-family: var(--font-head); }
.dashboard-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); margin-bottom: 18px; }
.dashboard-tile {
    display: grid;
    gap: 8px;
    min-height: 112px;
    align-content: center;
    padding: 18px;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    color: var(--ink);
    text-decoration: none;
    box-shadow: var(--shadow-sm);
    transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease;
}
a.dashboard-tile:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); border-color: rgba(0, 120, 120, .3); text-decoration: none; }
.dashboard-shortcuts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; }
.account-dashboard {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 24px;
    min-width: 0;
}
.account-rail {
    position: sticky;
    top: 92px;
    display: grid;
    align-content: start;
    gap: 6px;
    align-self: start;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--panel);
    box-shadow: var(--shadow-sm);
    min-width: 0;
    max-width: 100%;
    box-sizing: border-box;
}
.account-dashboard .account-rail {
    border-color: var(--dash-card-border);
    border-radius: var(--dash-card-radius);
    background: var(--dash-card-bg);
    box-shadow: var(--dash-card-shadow);
}
.account-rail a {
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 44px;
    padding: 0 12px;
    border: 1px solid transparent;
    border-radius: var(--r-sm);
    color: var(--ink-strong);
    font-family: var(--font-head);
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
    transition: background .16s var(--dash-ease), border-color .16s var(--dash-ease), color .16s var(--dash-ease);
}
.account-rail a:hover {
    border-color: var(--line);
    background: var(--surface-2);
    color: var(--ink-strong);
}
.account-rail a.active {
    border-color: rgba(var(--brand-rgb), .30);
    background: var(--brand-soft);
    color: var(--brand-strong);
}
.account-rail a.active .icon { color: var(--brand-strong); }
.dashboard-main { min-width: 0; }
.dashboard-header { margin-bottom: 20px; }
.dashboard-overview {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(360px, .95fr);
    gap: 18px;
    margin-bottom: 22px;
}
.dashboard-balance-card {
    display: grid;
    align-content: center;
    gap: 20px;
    min-height: 260px;
    padding: clamp(22px, 3vw, 28px);
    border-radius: var(--r-lg);
    background: var(--dash-balance-grad);
    color: #fff;
    box-shadow: var(--shadow-lg);
    isolation: isolate;
}
.dashboard-balance-card > span {
    color: rgba(255, 255, 255, .86);
    font-family: var(--font-head);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}
.dashboard-balance-card > strong {
    font-family: var(--font-mono);
    font-size: clamp(31px, 4vw, 43px);
    font-weight: 800;
    line-height: 1.05;
    letter-spacing: -0.02em;
}
.dashboard-balance-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}
.dashboard-balance-meta span {
    display: grid;
    gap: 5px;
    padding: 13px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: var(--r-sm);
    background: rgba(255, 255, 255, .08);
    color: rgba(255, 255, 255, .86);
    font-size: 11px;
    letter-spacing: .04em;
}
.dashboard-balance-meta b {
    color: #fff;
    font-family: var(--font-mono);
    font-size: 16px;
    letter-spacing: -0.01em;
}
.dashboard-balance-card .button {
    width: 100%;
    justify-content: center;
    color: #3a2c00;
    background: linear-gradient(135deg, #ffd873, var(--gold));
    border-color: transparent;
    box-shadow: 0 12px 28px rgba(251, 188, 4, .34);
}
.dashboard-balance-card .button:hover {
    color: #3a2c00;
    background: linear-gradient(135deg, #ffd873, var(--gold));
    transform: translateY(-1px);
    box-shadow: 0 16px 34px rgba(251, 188, 4, .44);
}
.dashboard-mini-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 22px;
}
.dashboard-mini-panel {
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    box-shadow: var(--shadow-sm);
}
.dashboard-mini-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 16px 20px;
    border-bottom: 1px solid var(--line);
}
.dashboard-mini-head > div { display: grid; gap: 2px; min-width: 0; }
.dashboard-mini-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-head);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--brand-strong);
}
.dashboard-mini-eyebrow::before {
    content: "";
    width: 22px;
    height: 2px;
    border-radius: 2px;
    background: var(--gold);
}
.dashboard-mini-head h2 {
    margin: 0;
    font-family: var(--font-head);
    font-size: clamp(16px, 2vw, 18px);
    font-weight: 800;
    line-height: 1.15;
    letter-spacing: -0.01em;
    color: var(--ink);
}
.dashboard-mini-head > a {
    flex: none;
    color: var(--brand-strong);
    font-family: var(--font-head);
    font-size: 12px;
    font-weight: 800;
    text-decoration: none;
    transition: color .16s var(--dash-ease);
}
.dashboard-mini-head > a:hover { color: var(--brand); text-decoration: underline; }
.dashboard-mini-list { display: grid; }
.dashboard-mini-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 14px;
    align-items: center;
    padding: 13px 20px;
    border-bottom: 1px solid var(--line);
    color: var(--ink);
    text-decoration: none;
    transition: background .16s var(--dash-ease);
}
.dashboard-mini-row:last-child { border-bottom: 0; }
.dashboard-mini-row:hover { background: var(--surface-2); text-decoration: none; }
.dashboard-mini-row strong {
    display: block;
    color: var(--ink-strong);
    font-size: 13px;
    font-weight: 700;
}
.dashboard-mini-row small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
    font-size: 12px;
}
.dashboard-mini-row > b {
    font-family: var(--font-mono);
    font-size: 13px;
    font-weight: 800;
    color: var(--ink-strong);
}
.dashboard-mini-empty { margin: 0; padding: 18px 20px; color: var(--muted); }
.dashboard-mini-panel .order-history-shell { border: 0; border-radius: 0; box-shadow: none; }
.dashboard-mini-panel .order-history-head,
.dashboard-mini-panel .order-history-pager { display: none; }
@media (prefers-reduced-motion: reduce) {
    .dashboard-balance-card .button:hover { transform: none; }
}

/* â”€â”€ Auth (pages plein Ã©cran) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.auth-shell {
    display: grid;
    grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
    align-items: stretch;
    max-width: 960px;
    margin: 0 auto;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    background: var(--panel);
    box-shadow: var(--shadow-lg);
}
.auth-shell .panel { margin: 0; border: 0; border-radius: 0; box-shadow: none; padding: clamp(24px, 4vw, 38px); }
.two-factor-profile-card { margin-top: 22px; }
.two-factor-profile-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.two-factor-profile-head h2 { margin: 0; }
.two-factor-disable-form { margin-top: 22px; padding-top: 20px; border-top: 1px solid var(--line); }
.two-factor-disable-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(220px, .65fr) auto; gap: 14px; align-items: end; }
.two-factor-disable-fields .field { margin: 0; }
.two-factor-disable-fields .button { min-height: 46px; }
.two-factor-visual { min-height: 560px; }
.two-factor-qr { width: 228px; padding: 8px; border-radius: 16px; background: #fff; box-shadow: 0 18px 42px rgba(0, 0, 0, .24); }
.two-factor-qr svg { display: block; width: 100%; height: auto; }
.two-factor-visual .secret-block { max-width: 320px; background: rgba(255, 255, 255, .14); border-color: rgba(255, 255, 255, .28); color: #fff; text-align: center; font-family: var(--font-mono); letter-spacing: .08em; }
.two-factor-auth-shell .button.outline,
.two-factor-recovery-shell .button { margin-top: 12px; }
.two-factor-recovery-visual { min-height: 440px; }
.two-factor-recovery-codes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 18px 0 24px; }
.two-factor-recovery-codes code { padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); color: var(--ink-strong); font-family: var(--font-mono); font-weight: 700; text-align: center; }
.auth-shell input::placeholder,
.modal-form input::placeholder { color: var(--muted); opacity: 1; }
.auth-visual {
    position: relative;
    overflow: hidden;
    min-height: 480px;
    display: grid;
    justify-items: center;
    align-content: center;
    gap: 14px;
    padding: clamp(24px, 4vw, 38px);
    background: var(--auth-visual-grad);
    color: #fff;
}
.auth-visual > * { position: relative; z-index: 1; }
.auth-visual h2 { color: #fff; font-size: clamp(19px, 2.4vw, 24px); margin: 10px 0 4px; text-align: center; }
.auth-visual .auth-feature strong { color: #fff; }
.auth-visual .auth-feature span { color: rgba(255, 255, 255, .88); }
.auth-visual .auth-feature .icon-box {
    background: rgba(255, 255, 255, .14);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .22);
    box-shadow: none;
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}
.auth-visual .illus { filter: drop-shadow(0 20px 44px rgba(3, 20, 24, .4)); }
.auth-visual .auth-feature { width: 100%; max-width: 340px; }
.auth-visual.auth-products {
    place-items: stretch;
    min-height: 480px;
}
.auth-visual.auth-products .auth-product-gallery {
    width: min(100%, 390px);
    margin: auto;
}
.auth-device { display: none; }
.auth-feature {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}
.auth-feature .icon-box {
    width: 38px;
    height: 38px;
    border-radius: 10px;
    background: var(--panel);
    color: var(--brand);
    box-shadow: var(--shadow-sm);
}
.auth-feature strong { display: block; font-family: var(--font-head); font-size: 13.5px; color: var(--ink); }
.auth-feature span { color: var(--muted); font-size: 12.5px; }

/* â”€â”€ Modals (login / inscription) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
dialog.modal {
    padding: 0;
    border: 0;
    border-radius: var(--r-xl);
    background: transparent;
    width: min(460px, calc(100vw - 28px));
    margin: auto;
}
dialog.modal.wide { width: min(640px, calc(100vw - 28px)); }
dialog.modal::backdrop {
    background: rgba(2, 38, 36, .6);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    animation: modal-backdrop-in .24s var(--dash-ease);
}
@keyframes modal-backdrop-in { from { opacity: 0; } to { opacity: 1; } }
.modal-card {
    position: relative;
    max-height: calc(100vh - 48px);
    overflow-y: auto;
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    padding: 26px;
    box-shadow: var(--shadow-lg), 0 40px 100px rgba(7, 30, 68, .30);
}
dialog.modal[open] .modal-card { animation: modal-pop .26s var(--dash-ease); }
@keyframes modal-pop {
    from { opacity: 0; transform: translateY(16px) scale(.97); }
    to { opacity: 1; transform: none; }
}
.modal-close {
    position: absolute;
    top: 14px;
    right: 14px;
    z-index: 2;
    width: 38px;
    height: 38px;
    display: grid;
    place-items: center;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--surface-2);
    color: var(--muted);
    cursor: pointer;
    transition: color .18s var(--dash-ease), background .18s var(--dash-ease), border-color .18s var(--dash-ease), transform .18s var(--dash-ease);
}
.modal-close:hover { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, var(--line)); background: var(--bad-soft); transform: rotate(90deg); }
.modal-head {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    margin: 0 40px 18px 0;
}
.modal-head h2 { font-size: 20px; margin: 0; }
.modal-head .muted { font-size: 13px; margin: 3px 0 0; }
.modal-glyph {
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: linear-gradient(135deg, var(--brand), var(--brand-bright));
    color: #fff;
    box-shadow: 0 10px 22px rgba(0, 120, 120, .35);
}
.modal-glyph.accent { background: linear-gradient(135deg, var(--accent), #f04a4e); box-shadow: 0 10px 22px rgba(224, 36, 40, .3); }
.modal-switch {
    margin: 16px 0 0;
    text-align: center;
    color: var(--muted);
    font-size: 13.5px;
}

/* â”€â”€ Modals scindÃ©s, Ã©tapes, jauge, succÃ¨s â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
dialog.modal.split { width: min(900px, calc(100vw - 28px)); }
dialog.modal.split.wide { width: min(980px, calc(100vw - 28px)); }
.modal-card.split {
    display: grid;
    grid-template-columns: minmax(0, .88fr) minmax(0, 1.12fr);
    padding: 0;
}
.modal-illus {
    position: relative;
    overflow: hidden;
    display: grid;
    place-items: center;
    padding: 30px;
    background: var(--auth-visual-grad);
}
.modal-illus .illus { filter: drop-shadow(0 20px 44px rgba(3, 20, 24, .4)); }
.modal-illus.auth-products { place-items: stretch; padding: 24px; }
.auth-product-gallery {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 18px;
    width: 100%;
}
.auth-product-intro { display: grid; gap: 4px; text-align: center; color: #fff; }
.auth-product-intro strong { font-family: var(--font-head); font-size: 20px; line-height: 1.2; text-wrap: balance; }
.auth-product-intro span { color: rgba(255, 255, 255, .78); font-size: 12.5px; }
.auth-product-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.auth-product-tile {
    min-width: 0;
    min-height: 138px;
    margin: 0;
    overflow: hidden;
    display: grid;
    grid-template-rows: minmax(0, 1fr) auto;
    border-radius: 12px;
    background: #fff;
}
.auth-product-tile img {
    width: 100%;
    height: 108px;
    padding: 10px;
    object-fit: contain;
}
.auth-product-tile figcaption {
    padding: 7px 9px;
    border-top: 1px solid #e5e7eb;
    color: #263238;
    font-size: 11.5px;
    font-weight: 750;
    text-align: center;
}
.modal-form { padding: 26px 30px 24px; min-width: 0; }
.modal-form .modal-head { margin-right: 40px; }
.auth-shell .register-phone-field,
.auth-shell .register-currency-field,
#registerModal .modal-phone-field,
#registerModal .modal-currency-field { grid-column: 1 / -1; }
.divider-or {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 16px 0;
    color: var(--muted);
    font-size: 11.5px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
}
.divider-or::before, .divider-or::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--line);
}
.button.outline {
    background: var(--panel);
    border: 1.5px solid rgba(0, 120, 120, .5);
    color: var(--brand-strong);
    box-shadow: none;
}
.button.outline:hover {
    background: var(--brand-soft);
    border-color: var(--brand);
    box-shadow: none;
}
/* Bouton « Continuer avec Google » : blanc de la charte Google + G officiel,
   volontairement identique en clair et en sombre (version officielle du bouton). */
.button.google {
    background: #fff;
    border: 1.5px solid #dadce0;
    color: #3c4043;
    box-shadow: none;
}
.button.google:hover {
    background: #f8fafc;
    border-color: #c6cacf;
    color: #202124;
    box-shadow: 0 1px 6px rgba(15, 23, 42, .12);
}
.button.google .google-g { flex: 0 0 auto; }
.modal-form > .button.google + .button.outline { margin-top: 12px; }
/* Téléphone : sélecteur d'indicatif à drapeaux + numéro national. */
.phone-row { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; }
.phone-row .input-wrap { min-width: 0; }
.phone-row input[type="tel"] { width: 100%; min-width: 0; }
.phone-dial {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 44px;
    padding: 0 11px;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: var(--panel);
    color: var(--ink-strong);
    font: inherit;
    font-size: 13.5px;
    font-weight: 600;
    cursor: pointer;
    transition: border-color .16s var(--dash-ease);
}
.phone-dial:hover { border-color: var(--brand); }
.phone-dial:focus-visible {
    border-color: var(--brand);
    outline: 3px solid var(--brand-soft);
    outline-offset: 2px;
}
.phone-flag {
    width: 20px;
    height: 14px;
    flex: 0 0 auto;
    border-radius: 3px;
    background: var(--line) center / cover no-repeat;
}
.phone-caret {
    width: 6px;
    height: 6px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translateY(-1px);
    opacity: .6;
    transition: transform .16s var(--dash-ease);
}
.phone-dial[aria-expanded="true"] .phone-caret { transform: rotate(225deg) translate(-1px, -1px); }
.phone-menu {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 60;
    width: min(320px, calc(100vw - 32px));
    max-height: min(300px, 42vh);
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    display: grid;
    gap: 2px;
    padding: 6px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--panel);
    box-shadow: 0 8px 8px rgba(3, 20, 24, .12);
}
.phone-menu[hidden] { display: none; }
.phone-option {
    display: flex;
    align-items: center;
    gap: 9px;
    min-height: 36px;
    padding: 0 9px;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: var(--ink-strong);
    font: inherit;
    font-size: 13px;
    text-align: left;
    cursor: pointer;
}
.phone-option:hover, .phone-option:focus-visible, .phone-option[aria-selected="true"] { background: var(--brand-soft); }
.phone-option:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }
.phone-option[aria-selected="true"]::after {
    content: "✓";
    margin-left: auto;
    color: var(--brand-strong);
    font-weight: 800;
}
.phone-option small {
    flex: 1 1 auto;
    color: var(--muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.phone-option-dial { flex: 0 0 auto; font-weight: 600; font-variant-numeric: tabular-nums; }
@media (max-width: 520px) {
    .phone-menu { width: 100%; max-height: min(280px, 48vh); }
}
@media (prefers-reduced-motion: reduce) {
    .phone-caret { transition: none; }
}
/* Page « votre numéro » imposée après une inscription Google. */
.phone-gate { max-width: 480px; margin: 24px auto; }
.step-badge {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    min-height: 26px;
    padding: 0 11px;
    border-radius: 999px;
    background: var(--brand-strong);
    color: #fff;
    font-family: var(--font-head);
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .04em;
}
.progress-track {
    height: 4px;
    margin: 4px 0 18px;
    border-radius: 999px;
    background: var(--line);
    overflow: hidden;
}
.progress-track i {
    display: block;
    height: 100%;
    width: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--brand), var(--brand-bright));
    transform: scaleX(.5);
    transform-origin: 0 50%;
    transition: transform .3s var(--dash-ease);
}
[data-step] { display: none; }
[data-step].active { display: block; animation: step-in .22s ease; }
@keyframes step-in {
    from { opacity: 0; transform: translateX(12px); }
    to { opacity: 1; transform: none; }
}
.step-nav { display: flex; gap: 10px; margin-top: 2px; }
.step-nav .button { flex: 1; }
.step-nav .button.secondary { flex: 0 0 auto; }
.strength { display: grid; gap: 6px; margin-top: 9px; }
.strength-bars { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
.strength-bars i { height: 5px; border-radius: 999px; background: var(--line); transition: background .2s ease; }
.strength-label { font-size: 12px; font-weight: 600; color: var(--muted); min-height: 16px; }
.strength[data-level="1"] .strength-bars i:nth-child(1) { background: var(--bad); }
.strength[data-level="2"] .strength-bars i:nth-child(-n+2) { background: var(--warn); }
.strength[data-level="3"] .strength-bars i:nth-child(-n+3) { background: var(--gold); }
.strength[data-level="4"] .strength-bars i { background: var(--ok); }
.success-card { text-align: center; padding: 36px 32px 28px; }
.success-check {
    position: relative;
    width: 80px;
    height: 80px;
    margin: 0 auto 18px;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: linear-gradient(135deg, #14b98a, var(--ok));
    color: #fff;
    box-shadow: 0 16px 36px rgba(12, 138, 99, .4);
    animation: check-pop .45s var(--dash-ease);
}
.success-check::after {
    content: "";
    position: absolute;
    inset: -10px;
    border-radius: 50%;
    border: 2px solid rgba(20, 185, 138, .4);
    animation: ring-pulse 1.8s ease-out infinite;
}
@keyframes check-pop { from { transform: scale(.35); opacity: 0; } 70% { transform: scale(1.05); } to { transform: scale(1); opacity: 1; } }
@keyframes ring-pulse { from { transform: scale(.92); opacity: .9; } to { transform: scale(1.3); opacity: 0; } }
.success-card h2 { margin: 0 0 4px; }
.success-card .button { margin-top: 18px; }
.order-success-modal { width: min(520px, calc(100vw - 28px)); }
.order-success-card { padding: 38px 34px 30px; }
.order-success-check {
    width: 104px;
    height: 104px;
    margin-bottom: 24px;
    background: var(--panel);
    border: 10px solid #2fb084;
    color: #2fb084;
    box-shadow: none;
}
.order-success-check::after { display: none; }
.order-success-ref {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    margin: 10px 0 0;
    padding: 4px 12px;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--brand-strong);
    font-family: var(--font-mono);
    font-size: 12.5px;
    font-weight: 700;
}
.order-success-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr);
    gap: 10px;
    margin-top: 26px;
}
.order-success-actions .button {
    width: 100%;
    margin-top: 0;
    box-shadow: none;
}
.payment-success-modal { width: min(560px, calc(100vw - 28px)); }
.payment-success-card { overflow: hidden; padding: 38px 34px 30px; }
.payment-success-card::before {
    content: "";
    position: absolute;
    inset: 0 0 auto;
    height: 5px;
    background: linear-gradient(90deg, var(--brand), #2fb084, var(--brand-bright));
}
.payment-success-kicker { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 18px; color: var(--brand-strong); font-size: 11px; font-weight: 800; letter-spacing: .11em; text-transform: uppercase; }
.payment-success-kicker::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 5px color-mix(in srgb, var(--ok) 14%, transparent); }
.payment-success-card > p { max-width: 420px; margin: 8px auto 0; color: var(--muted); line-height: 1.6; }
.payment-success-amount { margin: 24px 0 12px; padding: 19px 20px; border: 1px solid color-mix(in srgb, var(--ok) 24%, var(--line)); border-radius: var(--r-lg); background: linear-gradient(135deg, var(--ok-soft), var(--panel)); }
.payment-success-amount span { display: block; margin-bottom: 4px; color: var(--muted); font-size: 12px; font-weight: 700; }
.payment-success-amount strong { display: block; color: var(--ink); font-family: var(--font-head); font-size: clamp(28px, 6vw, 38px); line-height: 1.1; font-variant-numeric: tabular-nums; }
.payment-success-meta { margin: 0; border: 1px solid var(--line); border-radius: var(--r-lg); overflow: hidden; text-align: left; }
.payment-success-meta > div { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 11px 14px; }
.payment-success-meta > div + div { border-top: 1px solid var(--line); }
.payment-success-meta dt { color: var(--muted); font-size: 12.5px; }
.payment-success-meta dd { margin: 0; color: var(--ink); font-size: 13px; font-weight: 750; text-align: right; }
.payment-success-meta .payment-success-ref { font-family: var(--font-mono); font-size: 11.5px; overflow-wrap: anywhere; }
.payment-failure-card::before { background: var(--bad); }
.payment-failure-kicker { color: var(--bad); }
.payment-failure-kicker::before {
    background: var(--bad);
    box-shadow: 0 0 0 5px color-mix(in srgb, var(--bad) 13%, transparent);
}
.payment-failure-mark {
    background: var(--bad-soft);
    border: 1px solid color-mix(in srgb, var(--bad) 32%, var(--line));
    color: var(--bad);
    box-shadow: none;
    animation: none;
}
.payment-failure-mark::after { display: none; }
.payment-failure-amount {
    border-color: color-mix(in srgb, var(--bad) 26%, var(--line));
    background: color-mix(in srgb, var(--bad-soft) 58%, var(--panel));
}

/* â”€â”€ Illustration auth (composition CSS originale) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.illus { position: relative; width: min(300px, 84%); aspect-ratio: 1; }
.illus-card {
    position: absolute;
    inset: 16% 8% 20% 6%;
    background: var(--panel);
    border-radius: 18px;
    box-shadow: 0 26px 60px rgba(16, 43, 76, .16);
    transform: rotate(-5deg);
    padding: 18px;
    display: grid;
    gap: 11px;
    align-content: start;
}
.illus-dots { display: flex; gap: 5px; }
.illus-dots i { width: 7px; height: 7px; border-radius: 50%; background: var(--line); }
.illus-dots i:first-child { background: var(--accent); opacity: .7; }
.illus-line { height: 11px; border-radius: 999px; background: var(--surface-2); width: 86%; }
.illus-line.lg { width: 62%; height: 14px; background: linear-gradient(90deg, var(--brand-soft), #d4f1ee); }
.illus-line.sm { width: 44%; }
.illus-pill {
    width: 46%;
    height: 26px;
    margin-top: 6px;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--brand), var(--brand-bright));
    box-shadow: 0 10px 20px rgba(0, 120, 120, .3);
}
.illus-badge {
    position: absolute;
    display: grid;
    place-items: center;
    background: var(--panel);
    box-shadow: 0 14px 32px rgba(16, 43, 76, .18);
    animation: illus-float 5.5s ease-in-out infinite alternate;
}
.illus-badge.shield {
    top: 2%;
    right: 6%;
    width: 74px;
    height: 74px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--brand), var(--brand-bright));
    color: #fff;
    box-shadow: 0 18px 40px rgba(0, 120, 120, .38), 0 0 0 8px rgba(255, 255, 255, .65);
}
.illus-badge.mail {
    top: 16%;
    left: -2%;
    width: 58px;
    height: 58px;
    border-radius: 16px;
    color: var(--brand);
    animation-delay: 1.2s;
}
.illus-count {
    position: absolute;
    top: -7px;
    right: -7px;
    min-width: 20px;
    height: 20px;
    display: grid;
    place-items: center;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-family: var(--font-head);
    font-size: 10.5px;
    font-weight: 700;
}
.illus-badge.user {
    bottom: 8%;
    right: 2%;
    width: 52px;
    height: 52px;
    border-radius: 14px;
    color: var(--brand);
    animation-delay: 2.1s;
}
.illus-spark { position: absolute; border-radius: 50%; animation: illus-float 4.5s ease-in-out infinite alternate; }
.illus-spark.s1 { top: 8%; left: 22%; width: 10px; height: 10px; background: var(--gold); }
.illus-spark.s2 { top: 40%; right: -3%; width: 8px; height: 8px; background: var(--brand-bright); animation-delay: .8s; }
.illus-spark.s3 { bottom: 4%; left: 12%; width: 12px; height: 12px; background: var(--brand-soft); border: 2px solid var(--brand-bright); animation-delay: 1.6s; }
.illus-spark.s4 { top: 2%; left: 48%; width: 7px; height: 7px; background: var(--accent-soft); border: 2px solid var(--accent); animation-delay: 2.4s; }
@keyframes illus-float { from { transform: translateY(-7px); } to { transform: translateY(7px); } }

/* â”€â”€ Chip compte (topbar) & bande marques â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.account-chip { padding: 0 12px 0 6px !important; }
.avatar {
    width: 32px;
    height: 32px;
    flex: 0 0 auto;
    display: inline-grid;
    place-items: center;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--brand), var(--brand-bright));
    color: #fff;
    font-family: var(--font-head);
    font-size: 13px;
    font-weight: 700;
}
.account-meta { min-width: 0; display: grid; line-height: 1.15; text-align: left; }
.account-meta strong {
    max-width: 130px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12.5px;
    font-weight: 700;
}
.account-meta small { font-size: 9.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: rgba(255, 255, 255, .62); }
.account-balance {
    padding-left: 11px;
    margin-left: 3px;
    border-left: 1px solid rgba(255, 255, 255, .28);
    font-family: var(--font-head);
    font-size: 12.5px;
    font-weight: 700;
    white-space: nowrap;
    /* Le solde exact est prioritaire; le nom flexible absorbe la réduction. */
    overflow: visible;
    text-overflow: clip;
}
.account-menu .account-balance {
    flex: 0 0 auto;
    margin-left: auto;
}
.nav-menu .menu-topup {
    min-height: 54px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 10px 8px 12px;
    border-radius: 10px;
    background: var(--brand-soft);
    color: var(--brand-strong);
}
.nav-menu .menu-topup:hover,
.nav-menu .menu-topup.is-active {
    background: color-mix(in srgb, var(--brand) 18%, var(--panel));
    color: var(--brand-strong);
}
.menu-topup-label {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.menu-topup-icon,
.menu-item-icon {
    flex: none;
    display: inline-grid;
    place-items: center;
    border-radius: 8px;
}
.menu-topup-icon {
    width: 32px;
    height: 32px;
    background: var(--panel);
    color: var(--brand-strong);
}
.menu-topup-icon .icon { color: inherit; }
.menu-topup-label strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: var(--font-head);
    font-size: 13px;
    font-weight: 750;
}
.menu-topup-currency {
    flex: 0 0 auto;
    padding: 4px 7px;
    border-radius: 999px;
    background: var(--panel);
    color: var(--ink);
    font-family: var(--font-mono);
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .04em;
    white-space: nowrap;
}
.account-menu .menu-item {
    min-height: 46px;
    gap: 11px;
    padding: 5px 8px;
    font-size: 13.5px;
    font-weight: 650;
}
.menu-item-icon {
    width: 30px;
    height: 30px;
    background: var(--surface-2);
    color: var(--brand-strong);
}
.menu-item-icon .icon { width: 16px; height: 16px; color: inherit; }
.menu-item-label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.nav-menu .menu-item.is-active {
    background: var(--brand-soft);
    color: var(--brand-strong);
    font-weight: 700;
}
.nav-menu .menu-item.is-active .menu-item-icon {
    background: var(--brand);
    color: #fff;
}
.nav-menu .menu-item.is-active .menu-item-icon .icon { color: #fff; }
.nav-menu .menu-item.danger {
    background: var(--bad-soft);
    font-weight: 700;
}
.nav-menu .menu-item.danger .menu-item-icon {
    background: color-mix(in srgb, var(--bad) 14%, transparent);
    color: var(--bad);
}
.nav-menu .menu-item.danger .menu-item-icon .icon { color: var(--bad); }
.brand-strip { padding: 20px 22px 22px; }
.strip-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 16px;
    color: var(--brand-strong);
    font-size: 15px;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.strip-title::before {
    content: "";
    width: 4px;
    height: 20px;
    border-radius: 2px;
    background: var(--brand);
}
.brand-tiles {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 14px;
}
.brand-tile {
    display: grid;
    place-items: center;
    min-height: 96px;
    padding: 12px;
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    background: var(--panel);
    box-shadow: var(--shadow-sm);
    transition: transform .16s ease, box-shadow .16s ease;
}
.brand-tile:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.brand-tile img { max-width: 100%; max-height: 72px; object-fit: contain; border-radius: 8px; }
.service-price,
.account-balance,
.dashboard-balance strong,
.stat-tile strong,
.metric strong,
.fact-tile strong,
.hero-metric strong,
.mono {
    font-family: var(--font-mono);
    letter-spacing: -0.02em;
}

/* â”€â”€ Services cliquables â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
a.service-card, a.mini-service-row { color: inherit; }
a.service-card:hover, a.mini-service-row:hover { text-decoration: none; color: inherit; }
.mini-service-row { transition: background .15s ease; }
a.mini-service-row:hover { background: var(--surface-2); }
a.mini-service-row:hover h3 { color: var(--brand-strong); }
.shop-service-row .actions, .shop-service-row .service-meta, .shop-service-row .service-price { position: relative; z-index: 2; }
.stretch-link::after { content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 1; }
.row-link { color: inherit; }
.row-link:hover { color: var(--brand-strong); text-decoration: none; }
.shop-service-row:hover .row-link { color: var(--brand-strong); }

/* â”€â”€ Menu mobile (drawer) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.nav-burger {
    display: none;
    width: 44px;
    height: 44px;
    flex: 0 0 auto;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .26);
    border-radius: var(--r-md);
    background: rgba(255, 255, 255, .10);
    color: #fff;
    cursor: pointer;
    transition: background .18s var(--dash-ease), transform .12s var(--dash-ease);
}
.nav-burger:hover { background: rgba(255, 255, 255, .18); }
.nav-burger:active { transform: scale(.94); }
dialog.modal.drawer {
    margin: 0 0 0 auto;
    width: min(330px, 88vw);
    height: 100dvh;
    max-height: 100dvh;
    border-radius: 0;
}
.drawer-card {
    height: 100dvh;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    background: var(--panel);
    border-left: 1px solid var(--line);
}
dialog.modal.drawer[open] .drawer-card { animation: drawer-in .28s var(--dash-ease); }
@keyframes drawer-in {
    from { transform: translateX(44px); opacity: .4; }
    to { transform: none; opacity: 1; }
}
.drawer-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 12px 16px;
    background: linear-gradient(135deg, var(--brand-strong), var(--brand));
    color: #fff;
}
.drawer-head .brand { min-height: 0; font-size: 17px; }
.drawer-head .brand-logo { max-height: 36px; }
.drawer-close {
    width: 44px;
    height: 44px;
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    border: 1px solid rgba(255, 255, 255, .3);
    border-radius: var(--r-md);
    background: rgba(255, 255, 255, .12);
    color: #fff;
    cursor: pointer;
    transition: background .18s var(--dash-ease), transform .18s var(--dash-ease);
}
.drawer-close:hover { background: rgba(255, 255, 255, .22); transform: rotate(90deg); }
.drawer-section { padding: 14px 14px 6px; }
.drawer-label {
    display: block;
    margin-bottom: 6px;
    padding: 0 10px;
    color: var(--muted);
    font-family: var(--font-head);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.drawer-link {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 46px;
    padding: 0 10px;
    border: 0;
    border-bottom: 1px solid var(--line);
    background: none;
    color: var(--ink);
    font-family: var(--font-head);
    font-size: 13.5px;
    font-weight: 600;
    text-align: left;
    cursor: pointer;
}
.drawer-section > .drawer-link:last-child, .drawer-section > form:last-child .drawer-link { border-bottom: 0; }
.drawer-link:hover { background: var(--brand-soft); color: var(--brand-strong); border-radius: 10px; text-decoration: none; }
.drawer-link[aria-current="page"], .drawer-link.is-current {
    border-radius: 10px;
    background: var(--brand-soft);
    color: var(--brand-strong);
    font-weight: 700;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--brand) 38%, transparent);
}
.drawer-link[aria-current="page"] .chev, .drawer-link.is-current .chev { color: var(--brand); }
.drawer-link .icon { color: var(--brand); flex: 0 0 auto; }
.drawer-link .chev { margin-left: auto; display: inline-grid; color: #b8c6c4; }
.drawer-link.danger { color: var(--bad); }
.drawer-link.danger .icon { color: var(--bad); }
.drawer-link.danger:hover { background: var(--bad-soft); color: var(--bad); }
.drawer-auth { display: grid; gap: 10px; padding: 14px 16px 4px; }
.drawer-foot {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 16px;
    border-top: 1px solid var(--line);
}
.drawer-foot .nav-pill { border-color: var(--line); background: var(--surface-2); color: var(--ink); }
.drawer-foot .lang-toggle { border-color: var(--line); background: var(--surface-2); color: var(--ink); }
.drawer-foot .lang-toggle:hover { background: var(--brand-soft); color: var(--brand-strong); }
.drawer-foot .drawer-balance { display: inline-flex; align-items: center; gap: 7px; min-height: 40px; padding: 0 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-2); color: var(--ink-strong); font-family: var(--font-head); font-weight: 800; font-size: 13px; letter-spacing: .01em; font-variant-numeric: tabular-nums; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.drawer-foot .drawer-balance svg { flex: none; width: 15px; height: 15px; color: var(--brand-strong); }
.drawer-foot .drawer-balance.is-low { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 42%, var(--line)); background: var(--bad-soft); }
.drawer-foot .drawer-balance.is-low svg { color: var(--bad); }

/* â”€â”€ Footer â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.footer { flex-shrink: 0; margin-top: 20px; background: var(--footer-bg); color: rgba(255, 255, 255, .78); }
.tool-dock { overflow: hidden; background: var(--footer-feature-bg); color: #fff; }
.tool-dock-inner { display: grid; grid-template-columns: minmax(180px, .28fr) minmax(0, 1fr); gap: 26px; align-items: center; padding: 18px 0; }
.tool-dock-copy { display: grid; gap: 3px; }
.tool-dock-copy strong { margin: 0; color: #fff; font-size: 15px; }
.tool-dock-copy span { color: rgba(255, 255, 255, .72); font-size: 12px; line-height: 1.35; }
.tool-dock-viewport {
    min-width: 0;
    overflow: hidden;
    padding: 2px 0;
    mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
}
.tool-dock-track { display: flex; width: max-content; animation: tool-dock-flow 34s linear infinite; }
.tool-dock-viewport:hover .tool-dock-track,
.tool-dock-viewport:focus .tool-dock-track { animation-play-state: paused; }
.tool-dock-group { display: flex; flex: none; gap: 10px; padding-right: 10px; }
.tool-dock-item {
    width: 146px;
    height: 64px;
    margin: 0;
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    align-items: center;
    gap: 9px;
    padding: 7px 10px 7px 7px;
    border-radius: 12px;
    background: rgba(255, 255, 255, .94);
    color: #132238;
}
.tool-dock-logo { width: 48px; height: 48px; display: grid; place-items: center; }
.tool-dock-logo img { width: 100%; height: 100%; object-fit: contain; display: block; }
.tool-dock-item figcaption { min-width: 0; font-size: 11.5px; font-weight: 800; line-height: 1.2; overflow-wrap: anywhere; }
@keyframes tool-dock-flow { to { transform: translateX(-50%); } }
@media (max-width: 720px) {
    .tool-dock-inner { width: 100%; padding: 16px; }
    .tool-dock-viewport { overflow-x: auto; mask-image: none; -webkit-mask-image: none; scrollbar-width: none; scroll-snap-type: x proximity; }
    .tool-dock-viewport::-webkit-scrollbar { display: none; }
    .tool-dock-track { animation: none; }
    .tool-dock-group[aria-hidden="true"] { display: none; }
    .tool-dock-item { scroll-snap-align: start; }
}
@media (prefers-reduced-motion: reduce) {
    .tool-dock-viewport { overflow-x: auto; mask-image: none; -webkit-mask-image: none; }
    .tool-dock-track { animation: none; }
    .tool-dock-group[aria-hidden="true"] { display: none; }
}
.footer-inner { display: grid; gap: 24px; padding: 28px 0 20px; }
.footer-contact-icon {
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    color: #7de8df;
    background: rgba(125, 232, 223, .12);
}
.footer-columns {
    display: grid;
    grid-template-columns: minmax(240px, 1.35fr) repeat(auto-fit, minmax(150px, .72fr));
    gap: clamp(24px, 4vw, 60px);
}
.footer-column-title {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 14px;
    padding-bottom: 10px;
    color: #fff;
    font-family: var(--font-head);
    font-size: 14px;
}
.footer-column-title::after {
    content: "";
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 2px;
    border-radius: 2px;
    background: linear-gradient(90deg, var(--gold) 0 46px, rgba(255, 255, 255, .09) 46px 100%);
}
.footer-title-icon { flex: 0 0 auto; color: var(--gold); }
.footer-contact-list { display: grid; gap: 10px; }
.footer-contact-item {
    display: grid;
    grid-template-columns: 30px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    color: rgba(255, 255, 255, .78);
    line-height: 1.3;
}
.footer-contact-icon { width: 30px; height: 30px; border-radius: 8px; }
.footer-contact-item > span:last-child { min-width: 0; overflow-wrap: anywhere; }
.footer-contact-item small { display: block; margin-bottom: 2px; color: rgba(255, 255, 255, .5); font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
.footer a { color: rgba(255, 255, 255, .76); text-decoration: none; }
.footer a:hover { color: #fff; }
.footer a:focus-visible { outline: 2px solid #7de8df; outline-offset: 3px; }
.footer-nav { display: grid; gap: 10px; align-content: start; }
.footer-nav a { width: fit-content; display: inline-flex; align-items: center; gap: 8px; line-height: 1.35; }
.footer-nav a .footer-link-icon {
    flex: 0 0 auto;
    color: #7de8df;
    opacity: .72;
    transition: color .18s var(--dash-ease), opacity .18s var(--dash-ease), transform .18s var(--dash-ease);
}
.footer-nav a:hover .footer-link-icon { color: var(--gold); opacity: 1; transform: translateX(2px); }
.footer-bottom {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    padding-top: 18px;
    border-top: 1px solid rgba(255, 255, 255, .14);
    color: rgba(255, 255, 255, .78);
    font-size: 12px;
    line-height: 1.45;
}
.footer-legal-note { max-width: 62ch; text-align: right; }

/* â”€â”€ Responsive & prÃ©fÃ©rences â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 1080px) {
    .topbar-inner { grid-template-columns: auto minmax(0, 1fr); gap: 10px; padding: 8px 0; }
    .brand { justify-self: start; }
    .nav-main { display: none; }
    .nav-actions { width: auto; justify-content: flex-end; overflow: visible; padding-bottom: 0; gap: 8px; }
    .nav-burger { display: grid; }
    .account-meta small { display: none; }
}
@media (max-width: 980px) {
    .catalogue-showcase, .dashboard-top, .order-layout { grid-template-columns: 1fr; }
    .account-dashboard, .dashboard-overview { grid-template-columns: 1fr; }
    .account-rail {
        position: static;
        grid-auto-flow: column;
        grid-auto-columns: max-content;
        overflow-x: auto;
        width: 100%;
    }
    .dashboard-mini-grid { grid-template-columns: 1fr; }
    .service-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
    .dashboard-grid, .dashboard-shortcuts { grid-template-columns: 1fr 1fr; }
    .home-steps { grid-template-columns: 1fr 1fr; }
    .footer-columns { grid-template-columns: 1fr 1fr; }
    .tool-dock-inner { grid-template-columns: 1fr; gap: 12px; }
    .auth-shell { grid-template-columns: 1fr; }
    .auth-visual { min-height: 0; }
    .two-factor-profile-head { align-items: flex-start; flex-direction: column; }
    .two-factor-disable-fields { grid-template-columns: 1fr; }
    .two-factor-disable-fields .button { width: 100%; }
    .two-factor-visual { min-height: 0; }
    .two-factor-recovery-codes { grid-template-columns: 1fr; }
    .auth-visual.auth-products { min-height: 0; padding: 22px; }
    .modal-card.split { grid-template-columns: 1fr; }
    .modal-illus:not(.auth-products) { display: none; }
    .modal-illus.auth-products { padding: 16px 22px; }
    .auth-product-gallery { gap: 10px; }
    .auth-product-intro span { display: none; }
    .auth-product-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .auth-product-tile { min-height: 82px; }
    .auth-product-tile img { height: 64px; padding: 6px; }
    .auth-product-tile figcaption { padding: 5px; font-size: 10.5px; }
    .account-meta small { display: none; }
    .order-check-card { position: static; }
}
@media (max-width: 720px) {
    .modal-illus.auth-products { display: none; }
    .auth-visual.auth-products .auth-product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .auth-visual.auth-products .auth-product-tile { min-height: 92px; }
    .auth-visual.auth-products .auth-product-tile img { height: 70px; }
    .topbar-inner { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 0; }
    .nav-actions { width: auto; overflow: visible; padding-bottom: 0; gap: 8px; }
    .nav-actions .currency-pill,
    .nav-actions .button.ghost-light,
    .nav-actions .button.accent-cta,
    .nav-actions .account-menu,
    .nav-actions .lang-toggle { display: none; }
    .nav-burger { display: grid; }
    .account-chip .account-meta, .account-chip .account-balance { display: none; }
    .header, .home-band-header { align-items: flex-start; flex-direction: column; }
    .table { display: block; overflow-x: auto; }
    .table.stack { display: block; border: 0; background: transparent; box-shadow: none; overflow: visible; }
    .table.stack thead { display: none; }
    .table.stack tbody, .table.stack tr, .table.stack th, .table.stack td { display: block; }
    .table.stack tr {
        background: var(--panel);
        border: 1px solid var(--line);
        border-radius: var(--r-md);
        margin-bottom: 12px;
        overflow: hidden;
        box-shadow: var(--shadow-sm);
    }
    .table.stack tbody th {
        padding: 12px;
        border-bottom: 1px solid var(--line);
        color: var(--muted);
        font-size: 12px;
        text-align: left;
        text-transform: uppercase;
    }
    .table.stack td {
        border-bottom: 1px solid var(--line);
        display: grid;
        grid-template-columns: minmax(108px, 40%) 1fr;
        gap: 10px;
        align-items: start;
    }
    .table.stack td:not([data-label]) { display: block; }
    .table.stack td::before {
        content: attr(data-label);
        color: var(--muted);
        font-size: 12px;
        font-weight: 700;
        text-transform: uppercase;
    }
    .table.stack td:not([data-label])::before { content: none; }
    .table.stack td:last-child { border-bottom: 0; }
    .hero { grid-template-columns: 1fr; min-height: 0; padding: 22px; }
    .hero h1 { font-size: 30px; }
    .hero-metrics, .fact-list, .home-steps, .shop-panel,
    .promo-stack, .home-action-cards, .service-rule-grid,
    .dashboard-grid, .dashboard-shortcuts,
    .footer-columns, .form-grid { grid-template-columns: 1fr; }
    .footer-bottom { align-items: flex-start; flex-direction: column; }
    .footer-legal-note { text-align: left; }
    .hero-device-row { min-height: 120px; }
    .hero-phone { width: 70px; height: 122px; }
    .order-hero { grid-template-columns: 108px minmax(0, 1fr); gap: 14px; align-items: start; padding: 16px; }
    .order-service-logo { width: 108px; height: 72px; }
    .order-hero-main h1 { font-size: 18px; line-height: 1.18; }
    .order-summary-strip { grid-template-columns: 1fr; }
    .order-summary-item {
        grid-template-columns: minmax(88px, .42fr) minmax(0, 1fr);
        align-items: center;
        border-right: 0;
        border-bottom: 1px solid var(--line);
        padding: 13px 14px;
    }
    .order-summary-item:last-child { border-bottom: 0; }
    .order-summary-item dd { justify-content: flex-end; text-align: right; }
    .order-form-body { padding: 18px; }
    .order-form-panel form > .actions { align-items: stretch; flex-direction: column; }
    .order-submit { width: 100%; }
    .guarantee-list { grid-template-columns: 1fr; }
    .guarantee-row:last-child:nth-child(odd) { grid-column: auto; }
    .tool-segment { flex-direction: column; gap: 2px; padding: 6px; }
    .tool-link { justify-content: flex-start; min-height: 46px; }
    .tool-link + .tool-link { box-shadow: inset 0 1px 0 var(--line); }
    .order-history-head,
    .order-detail-page-head { align-items: stretch; flex-direction: column; }
    .order-history-search { min-width: 0; width: 100%; flex-direction: column; align-items: stretch; }
    .finance-list-head { align-items: stretch; flex-direction: column; }
    .finance-list-search { min-width: 0; width: 100%; flex-direction: column; align-items: stretch; }
    .finance-table {
        display: block;
        min-width: 0;
    }
    .finance-table thead { display: none; }
    .finance-table tbody,
    .finance-table tr,
    .finance-table td { display: block; }
    .finance-table tr {
        margin: 12px;
        border: 1px solid var(--line);
        border-radius: 10px;
        background: var(--panel);
        box-shadow: var(--shadow-sm);
        overflow: hidden;
    }
    .finance-table td {
        display: grid;
        grid-template-columns: minmax(0, 122px) minmax(0, 1fr);
        gap: 4px 12px;
        align-items: baseline;
        padding: 11px 13px;
    }
    .finance-table td::before {
        content: attr(data-label);
        min-width: 0;
        color: var(--muted);
        font-family: var(--font-head);
        font-size: 10.5px;
        font-weight: 800;
        letter-spacing: .04em;
        line-height: 1.3;
        text-transform: uppercase;
        overflow-wrap: anywhere;
    }
    .finance-table td.finance-empty {
        display: block;
        margin: 12px;
    }
    .finance-table td.finance-empty::before { content: none; }
    .finance-status-pill,
    .finance-type-pill { width: max-content; min-width: 0; }
    .finance-detail-hero,
    .finance-detail-list { grid-template-columns: 1fr; }
    .finance-detail-hero > div,
    .finance-detail-list div {
        border-right: 0;
        border-bottom: 1px solid var(--line);
    }
    .finance-detail-hero > div:last-child,
    .finance-detail-list div:last-child { border-bottom: 0; }
    .finance-reference { align-items: flex-start; flex-direction: column; gap: 2px; }
    .finance-detail-button { width: max-content; }
    .invoice-detail-page-panel .invoice-detail-content,
    .invoice-detail-modal-card .invoice-detail-content { padding: 16px; }
    .invoice-detail-modal-card [data-invoice-dialog-body][aria-busy="true"] { padding: 16px; }
    .invoice-detail-amount-card { align-items: flex-start; flex-direction: column; }
    .invoice-detail-meta,
    .invoice-statement-item dl { grid-template-columns: 1fr; }
    .invoice-statement-head { align-items: flex-start; flex-direction: column; gap: 6px; }
    .statement-detail-page-panel .statement-detail-content,
    .statement-detail-modal-card .statement-detail-content { padding: 16px; }
    .statement-detail-modal-card [data-statement-dialog-body][aria-busy="true"] { padding: 16px; }
    .statement-source-card > div:first-child { align-items: flex-start; flex-direction: column; }
    .payment-return-page { gap: 16px; }
    .payment-return-outcome {
        grid-template-columns: 48px minmax(0, 1fr);
        padding: 20px;
    }
    .payment-return-outcome .finance-status-pill {
        grid-column: 2;
        justify-self: start;
    }
    .payment-return-amounts { grid-template-columns: 1fr; }
    .payment-return-amounts > div {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        gap: 12px;
        padding: 16px 20px;
    }
    .payment-return-amounts > div + div {
        border-top: 1px solid var(--line);
        border-left: 0;
    }
    .payment-return-amounts span { max-width: 44%; }
    .payment-return-amounts strong {
        max-width: 56%;
        margin-top: 0;
        text-align: right;
    }
    .payment-return-meta { grid-template-columns: 1fr; }
    .payment-return-meta > div:nth-child(odd) { border-right: 0; }
    .payment-return-meta > div:nth-child(n+3) { border-top: 0; }
    .payment-return-meta > div + div { border-top: 1px solid var(--line); }
    .payment-return-actions {
        flex-direction: column;
        padding: 16px 20px 20px;
    }
    .payment-return-actions .button { width: 100%; }
    .dashboard-balance-meta { grid-template-columns: 1fr; }
    .dashboard-mini-row { grid-template-columns: 1fr; align-items: start; }
    .order-id-button {
        white-space: normal;
        overflow-wrap: anywhere;
        word-break: break-word;
    }
    .account-rail {
        grid-auto-flow: row;
        grid-auto-columns: initial;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        overflow: visible;
    }
    .account-rail a {
        min-width: 0;
        white-space: normal;
    }
    .order-history-table {
        display: block;
        min-width: 0;
    }
    .order-history-table thead { display: none; }
    .order-history-table tbody,
    .order-history-table tr,
    .order-history-table td { display: block; }
    .order-history-table tr {
        margin: 12px;
        border: 1px solid var(--line);
        border-radius: 10px;
        background: var(--panel);
        box-shadow: var(--shadow-sm);
        overflow: hidden;
    }
    .order-history-table td.order-row-go {
        display: flex;
        width: auto;
        align-items: center;
        justify-content: center;
        gap: 6px;
        margin: 2px 13px 12px;
        padding: 11px;
        border-radius: 10px;
        background: var(--brand-soft);
        color: var(--brand-strong);
        font-family: var(--font-head);
        font-size: 12.5px;
        font-weight: 800;
        letter-spacing: .01em;
    }
    .order-history-table td.order-row-go::before { content: none; }
    .order-history-table td.order-row-go .order-row-go-text { display: inline; }
    .order-history-table td.order-row-go .icon { transform: rotate(90deg); }
    /* Carte commande mobile compacte : les champs secondaires vivent dans « Voir details » */
    .order-history-table td.order-cell-sec { display: none; }
    .order-history-table td {
        display: grid;
        grid-template-columns: minmax(108px, .38fr) minmax(0, 1fr);
        gap: 12px;
        padding: 11px 13px;
    }
    .order-history-table td::before {
        content: attr(data-label);
        color: var(--muted);
        font-family: var(--font-head);
        font-size: 11px;
        font-weight: 800;
        letter-spacing: .04em;
        text-transform: uppercase;
    }
    .order-filter-date { display: flex; width: 100%; }
    .order-filter-date input { flex: 1 1 auto; width: 100%; min-width: 0; min-height: 42px; }
    .order-history-table td.order-history-empty { display: block; }
    .order-history-table td.order-history-empty::before { content: none; }
    .order-status-pill { min-width: 0; width: max-content; }
    dialog.modal.order-detail-modal { width: min(540px, calc(100vw - 16px)); }
    .order-detail-modal-card.modal-card { max-height: min(94vh, calc(100dvh - 16px)); }
    .order-detail-modal-card .modal-close { top: 10px; right: 10px; width: 40px; height: 40px; }
    .order-detail-modal-card > h2 { padding: 13px 52px 13px 18px; font-size: 15px; }
    .order-detail-modal-card .order-detail-content { padding: 13px 14px 15px; }
    .order-detail-page-panel .order-detail-content { padding: 18px; }
    .order-detail-amount-card { gap: 4px; padding: 8px 10px; }
    .order-detail-amount-card strong { font-size: 15px; }
    .order-timeline-list div,
    .order-field-list div { grid-template-columns: minmax(82px, .34fr) minmax(0, 1fr); gap: 5px 9px; padding: 6px 0; }
    .order-detail-section-head { align-items: center; flex-direction: row; }
    .order-result-box { max-height: min(30dvh, 220px); font-size: 13px; line-height: 1.48; }
    .service-rule-grid { grid-template-columns: 1fr; }
    .mini-service-row, .related-service-row { grid-template-columns: 52px minmax(0, 1fr); }
    .mini-service-row > .service-price, .related-service-row > .service-price { grid-column: 2; }
    .service-list { grid-template-columns: 1fr; gap: 10px; }
    .shop-service-row { grid-template-columns: 104px minmax(0, 1fr); height: 124px; padding: 10px; gap: 11px; }
    .shop-service-row .service-thumb { width: 104px; height: 70px; padding: 0; }
    .shop-service-row .service-card-info { min-height: 82px; }
    .shop-service-row .service-card-title { font-size: 13.5px; line-height: 1.36; height: 2.72em; flex-basis: 2.72em; }
    .shop-service-row .service-price { font-size: 13px; }
    .dashboard-balance { grid-template-columns: 1fr; }
    .page .actions { width: 100%; }
    .page .actions form, .page .actions .button, .page .actions button { width: 100%; }
    .shop-filter { grid-template-columns: minmax(0, 1fr); }
    .shop-filter > * { min-width: 0; }
    .modal-card { padding: 20px; }
    .order-success-card { padding: 34px 20px 22px; }
    .order-success-check { width: 92px; height: 92px; border-width: 8px; }
    .order-success-actions { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
    }
    html { scroll-behavior: auto; }
}

/* Pagination compacte (commandes, factures, releves) */
.pager { display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; margin-top: 18px; }
.pager .is-disabled { opacity: .45; pointer-events: none; }
.pager-info { font-family: var(--font-mono); font-size: 13px; color: var(--muted); white-space: nowrap; }

/* Ajout de solde : choix du mode de paiement */
.balance-add-layout { min-width: 0; }
.balance-add-layout > * { min-width: 0; }
.balance-step { min-width: 0; }
.balance-step + .balance-step { margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
.bal-step-head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 13px; }
.bal-step-num {
    flex: none;
    width: 30px;
    height: 30px;
    display: grid;
    place-items: center;
    border-radius: 10px;
    background: var(--brand-soft);
    color: var(--brand-strong);
    font-family: var(--font-head);
    font-size: 13.5px;
    font-weight: 800;
}
.bal-step-txt { min-width: 0; }
.bal-step-txt label, .bal-step-label { display: block; margin: 0; font-family: var(--font-head); font-size: 14.5px; font-weight: 800; color: var(--ink-strong); }
.bal-step-txt .muted { margin: 3px 0 0; font-size: 12.5px; line-height: 1.45; }
.balance-amount-input {
    min-height: 58px;
    padding-right: 78px;
    font-size: 22px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: .01em;
}
.balance-amount-currency {
    position: absolute;
    top: 50%;
    right: 14px;
    transform: translateY(-50%);
    padding-left: 11px;
    border-left: 1px solid var(--line);
    color: var(--brand-strong);
    font-family: var(--font-head);
    font-size: 12.5px;
    font-weight: 800;
    letter-spacing: .04em;
    pointer-events: none;
}
.balance-add-form-panel .quick-amounts .chip { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pay-modes { display: flex; flex-direction: column; gap: 10px; margin: 6px 0 16px; }
.gateway-preference-status { min-height: 18px; margin: -7px 0 0; font-size: 12px; }
.gateway-preference-status[data-state="saved"] { color: var(--ok); }
.gateway-preference-status[data-state="failed"] { color: var(--bad); }
.pay-mode { position: relative; display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 13px 14px; border: 1.5px solid var(--line); border-radius: 16px; background: var(--panel); cursor: pointer; transition: border-color .15s, box-shadow .15s, background .15s; }
.pay-mode input { position: absolute; opacity: 0; pointer-events: none; }
.pay-mode:hover { border-color: #99f6e4; }
.pay-mode:has(input:checked) { border-color: #0d9488; background: var(--brand-soft); box-shadow: 0 0 0 3px rgba(13, 148, 136, .12); }
.pay-mode-logo { width: 52px; height: 52px; border-radius: 14px; background: var(--panel); border: 1px solid var(--line); display: grid; place-items: center; overflow: hidden; flex: none; }
.pay-mode-logo img { width: 100%; height: 100%; object-fit: contain; }
.pay-mode-logo.ops { padding: 4px; gap: 3px; grid-template-columns: 1fr 1fr; place-items: stretch; }
.pay-mode-logo.ops img { width: 100%; height: 100%; object-fit: cover; border-radius: 4px; }
.pay-mode-logo.mono { background: linear-gradient(135deg, #7c3aed, #06b6d4); color: #fff; font-weight: 800; font-size: 17px; border: 0; }
.pay-mode-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.pay-mode-main .muted { font-size: 12.5px; overflow-wrap: anywhere; }
.pay-mode-main .pay-mode-limits { color: var(--muted); font-size: 12.5px; white-space: nowrap; overflow-wrap: normal; }
.pay-mode-dot { width: 20px; height: 20px; border-radius: 50%; border: 2px solid #cbd5e1; flex: none; position: relative; transition: border-color .15s; }
.pay-mode:has(input:checked) .pay-mode-dot { border-color: #0d9488; }
.pay-mode:has(input:checked) .pay-mode-dot::after { content: ''; position: absolute; inset: 3px; border-radius: 50%; background: #0d9488; }
.pay-mode.is-soon { opacity: .65; cursor: not-allowed; background: var(--surface-2); }
.pay-soon-badge { flex: none; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #92400e; background: #fef3c7; border: 1px solid #fde68a; padding: 3px 8px; border-radius: 999px; }

/* Ajout de solde : mini-carte portefeuille + recap du paiement */
.bal-wallet {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    padding: 16px 16px 14px;
    border-radius: var(--r-lg);
    background: var(--dash-balance-grad);
    color: #fff;
    box-shadow: var(--shadow-sm);
}
.bal-wallet::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: radial-gradient(circle at 92% -40%, rgba(255, 255, 255, .20), transparent 55%);
    pointer-events: none;
}
.bal-wallet-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; color: rgba(255, 255, 255, .85); }
.bal-wallet-label { font-family: var(--font-head); font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.bal-wallet-amount { display: block; margin-top: 7px; font-family: var(--font-mono); font-size: 25px; font-weight: 800; letter-spacing: -.02em; line-height: 1.05; overflow-wrap: anywhere; }
.bal-wallet-after { margin-top: 11px; padding-top: 10px; border-top: 1px solid rgba(255, 255, 255, .18); display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 12px; color: rgba(255, 255, 255, .88); }
.bal-wallet-after strong { font-family: var(--font-mono); font-weight: 800; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; text-align: right; }
.pay-summary { margin-top: 14px; border-top: 1px solid var(--line); padding-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.pay-summary-row { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 13.5px; color: var(--ink-strong); }
.pay-summary-row strong { color: var(--ink-strong); font-variant-numeric: tabular-nums; white-space: nowrap; }
.pay-summary-row.total { border-top: 1px dashed var(--line); padding-top: 10px; font-weight: 700; }
.pay-limit-note { font-size: 12px; color: var(--muted); min-height: 15px; }
.pay-limit-note.warn { color: var(--warn); font-weight: 600; }
.bal-secure { display: flex; align-items: flex-start; gap: 9px; margin-top: 14px; padding-top: 13px; border-top: 1px solid var(--line); color: var(--ok); }
.bal-secure svg { flex: none; margin-top: 1px; }
.bal-secure p { margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--muted); }

@media (max-width: 980px) {
    .balance-add-layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 420px) {
    .balance-add-form-panel .quick-amounts .chip { padding: 0 6px; font-size: 12px; }
}

@media (max-width: 720px) {
    .balance-add-layout { gap: 0; }
    .balance-add-form-panel {
        margin-bottom: 0;
        border-bottom: 0;
        border-radius: var(--r-xl) var(--r-xl) 0 0;
        box-shadow: none;
    }
    .balance-add-summary {
        margin-top: 0;
        border-radius: 0 0 var(--r-xl) var(--r-xl);
        box-shadow: var(--shadow-md);
    }

    .balance-step-amount {
        margin-top: 18px;
        padding-top: 18px;
        border-top: 1px solid var(--line);
    }
    .bal-wallet-amount { font-size: 22px; }
    .payment-success-card { padding: 34px 20px 22px; }
    .payment-success-meta > div { align-items: flex-start; flex-direction: column; gap: 3px; }
    .payment-success-meta dd { text-align: left; }
    .pay-mode.is-soon {
        display: grid;
        grid-template-columns: 42px minmax(0, 1fr);
    }
    .pay-mode.is-soon .pay-soon-badge {
        grid-column: 2;
        justify-self: start;
    }
}

/* Bandeau admin : maintenance active pendant la previsualisation du site */
.admin-maint-note { background: #7c2d12; color: #ffedd5; font-size: 13px; padding: 8px 16px; text-align: center; }
.admin-maint-note a { color: #fdba74; font-weight: 700; margin-left: 6px; }


/* ── Dark mode toggle + chrome fixes ─────────────────────────────────── */
.theme-toggle {
    min-height: 44px;
    min-width: 42px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 10px;
    border-radius: 9px;
    border: 1px solid rgba(255, 255, 255, .22);
    background: rgba(255, 255, 255, .10);
    color: #fff;
    cursor: pointer;
    flex: 0 0 auto;
    transition: background .16s ease, transform .16s ease;
}
.theme-toggle:hover { background: rgba(255, 255, 255, .18); }
.theme-toggle:active { transform: scale(.94); }
.theme-toggle svg { width: 18px; height: 18px; }
.theme-ico-sun { display: none; }
.theme-ico-moon { display: inline-flex; }
:root[data-theme="dark"] .theme-ico-sun { display: inline-flex; }
:root[data-theme="dark"] .theme-ico-moon { display: none; }
.drawer-foot .theme-toggle { min-height: 40px; border-color: var(--line); background: var(--surface-2); color: var(--ink); }
/* white "pop" elements that sit on the dark topbar stay light in dark mode */
:root[data-theme="dark"] .topbar .button.accent-cta { background: #fff; color: #0b3f8a; }
:root[data-theme="dark"] .topbar .button.accent-cta:hover { background: #e6eef7; color: #0b3f8a; }

/* ── Chip states + pay-mode tokens (harmonised controls) ───────────────── */
.chip:focus-visible,
.pay-mode:focus-within { outline: none; border-color: var(--brand); box-shadow: var(--ring); }
.chip:active { transform: translateY(1px); }
.chip:disabled, .chip[disabled] { opacity: .5; cursor: not-allowed; pointer-events: none; }
.pay-mode:hover { border-color: rgba(var(--brand-rgb), .55); }
.pay-mode:has(input:checked) { border-color: var(--brand); background: var(--brand-soft); box-shadow: 0 0 0 3px rgba(var(--brand-rgb), .14); }
.pay-mode-dot { border-color: var(--line); }
.pay-mode:has(input:checked) .pay-mode-dot { border-color: var(--brand); }
.pay-mode:has(input:checked) .pay-mode-dot::after { background: var(--brand); }

/* ── Shared scroll reveal — armed by JS (.cust-anim, never on home); no-JS = visible ── */
html.cust-anim .panel,
html.cust-anim .metric,
html.cust-anim .fact-card,
html.cust-anim .dashboard-overview,
html.cust-anim .dashboard-mini-grid,
html.cust-anim .order-hero,
html.cust-anim .order-history-shell,
html.cust-anim .finance-list-shell,
html.cust-anim .service-card {
    opacity: 0;
    transform: translateY(14px);
    transition: opacity .5s var(--dash-ease), transform .5s var(--dash-ease);
}
html.cust-anim .panel.is-in,
html.cust-anim .metric.is-in,
html.cust-anim .fact-card.is-in,
html.cust-anim .dashboard-overview.is-in,
html.cust-anim .dashboard-mini-grid.is-in,
html.cust-anim .order-hero.is-in,
html.cust-anim .order-history-shell.is-in,
html.cust-anim .finance-list-shell.is-in,
html.cust-anim .service-card.is-in {
    opacity: 1;
    transform: none;
}
@media (prefers-reduced-motion: reduce) {
    html.cust-anim .panel,
    html.cust-anim .metric,
    html.cust-anim .fact-card,
    html.cust-anim .dashboard-overview,
    html.cust-anim .dashboard-mini-grid,
    html.cust-anim .order-hero,
    html.cust-anim .order-history-shell,
    html.cust-anim .finance-list-shell,
    html.cust-anim .service-card { opacity: 1; transform: none; transition: none; }
}

/* ════════════════════════════════════════════════════════════════════════
   Console d'operations — dashboard client (layout distinctif, hors template secteur)
   ══════════════════════════════════════════════════════════════════════ */
.console-main { display: grid; gap: 18px; min-width: 0; }

/* Connexion client : confirmation utile, intégrée à la page et non bloquante. */
.auth-arrival {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    padding: 12px 14px;
    border: 1px solid color-mix(in srgb, var(--brand) 32%, var(--line));
    border-radius: 12px;
    background: color-mix(in srgb, var(--brand) 7%, var(--panel));
    color: var(--ink);
    transition: opacity 180ms ease-out, transform 180ms ease-out;
}
.auth-arrival[data-leaving] { opacity: 0; transform: translateY(-4px); }
.auth-arrival-icon {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: var(--brand);
    color: #fff;
}
.auth-arrival-copy { display: grid; gap: 2px; min-width: 0; }
.auth-arrival-copy strong { color: var(--ink-strong); font-size: 14px; }
.auth-arrival-copy span { color: var(--ink); font-size: 13px; }
.auth-arrival-copy small { color: var(--muted); font-size: 11.5px; overflow-wrap: anywhere; }
.auth-arrival-actions { display: flex; align-items: center; gap: 8px; }
.auth-arrival-actions a {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    min-height: 36px;
    padding: 0 12px;
    border-radius: 9px;
    background: var(--brand);
    color: #fff;
    font-size: 12.5px;
    font-weight: 700;
    text-decoration: none;
}
.auth-arrival-actions a:hover { background: var(--brand-strong); color: #fff; text-decoration: none; }
.auth-arrival-actions button {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 0;
    border-radius: 9px;
    background: transparent;
    color: var(--muted);
    cursor: pointer;
}
.auth-arrival-actions button:hover { background: var(--surface-2); color: var(--ink-strong); }
.auth-arrival-actions a:focus-visible,
.auth-arrival-actions button:focus-visible { outline: 3px solid var(--brand); outline-offset: 2px; }

/* Dashboard : police Inter (chargee via @push('head') sur la page dashboard uniquement) */
.account-dashboard {
    --font-head: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-body: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
    --font-mono: "Inter", system-ui, ui-monospace, "Segoe UI", sans-serif;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.006em;
}

/* Atelier d'apparence : réglages persistants du dashboard client. */
:root {
    --dash-card-radius: 16px;
    --dash-card-bg: var(--panel);
    --dash-card-border: var(--line);
    --dash-card-shadow: 0 2px 6px rgba(13, 34, 45, .09);
    --dash-pad: 18px;
    --dash-row-y: 13px;
}
:root[data-card-shape="sharp"] { --dash-card-radius: 6px; }
:root[data-card-shape="balanced"] { --dash-card-radius: 12px; }
:root[data-card-shape="soft"] { --dash-card-radius: 18px; }
:root[data-card-shape="round"] { --dash-card-radius: 24px; }
:root[data-card-style="tinted"] {
    --dash-card-bg: color-mix(in srgb, var(--brand) 7%, var(--panel));
    --dash-card-border: color-mix(in srgb, var(--brand) 28%, var(--line));
}
:root[data-card-style="glass"] {
    --dash-card-bg: color-mix(in srgb, var(--panel) 84%, transparent);
    --dash-card-border: color-mix(in srgb, var(--brand) 22%, var(--line));
}
:root[data-card-style="outline"] {
    --dash-card-bg: var(--bg);
    --dash-card-border: color-mix(in srgb, var(--brand) 46%, var(--line));
}
:root[data-card-elevation="flat"] { --dash-card-shadow: none; }
:root[data-card-elevation="soft"] { --dash-card-shadow: 0 2px 6px rgba(13, 34, 45, .09); }
:root[data-card-elevation="lifted"] { --dash-card-shadow: 0 6px 8px rgba(13, 34, 45, .16); }
:root[data-theme="dark"][data-card-elevation="soft"] { --dash-card-shadow: 0 2px 6px rgba(0, 0, 0, .24); }
:root[data-theme="dark"][data-card-elevation="lifted"] { --dash-card-shadow: 0 6px 8px rgba(0, 0, 0, .34); }
:root[data-ui-density="compact"] { --dash-pad: 14px; --dash-row-y: 10px; }
:root[data-ui-density="comfortable"] { --dash-pad: 18px; --dash-row-y: 13px; }
:root[data-ui-density="airy"] { --dash-pad: 24px; --dash-row-y: 16px; }

/* Bandeau de commande (signature) */
.cns-cmd {
    position: relative; overflow: hidden; isolation: isolate;
    padding: clamp(20px, 3vw, 26px);
    border-radius: var(--dash-card-radius);
    background: var(--dash-balance-grad);
    color: #fff;
    box-shadow: var(--dash-card-shadow);
}
.cns-cmd-grid { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: clamp(16px, 3vw, 28px); align-items: center; }
.cns-lab { margin: 0; font-family: var(--font-head); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #fff; }
.cns-bal { font-family: var(--font-mono); font-size: clamp(29px, 5vw, 40px); font-weight: 800; line-height: 1.02; letter-spacing: -.02em; margin-top: 6px; }
.cns-sub { margin-top: 9px; display: flex; flex-wrap: wrap; gap: 8px 16px; font-size: 12px; color: #fff; }
.cns-sub b { color: #fff; font-family: var(--font-mono); }
.cns-spark { width: 100%; height: 66px; display: block; }
.cns-add {
    display: inline-flex; align-items: center; justify-content: center; gap: 9px;
    min-height: 46px; padding: 0 20px; border: 0; border-radius: 12px;
    font-family: var(--font-head); font-weight: 800; font-size: 13.5px; color: #3a2c00;
    background: linear-gradient(135deg, #ffd873, var(--gold));
    box-shadow: 0 12px 28px rgba(251, 188, 4, .36); white-space: nowrap; cursor: pointer;
    transition: transform .18s var(--dash-ease), box-shadow .18s var(--dash-ease);
}
.cns-add:hover { transform: translateY(-2px); box-shadow: 0 16px 34px rgba(251, 188, 4, .46); color: #3a2c00; text-decoration: none; }
.cns-ribbon { position: relative; margin-top: 20px; padding-top: 16px; border-top: 1px solid rgba(255, 255, 255, .14); display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.cns-rib { display: flex; align-items: center; gap: 11px; color: #fff; text-decoration: none; }
.cns-rib:hover { text-decoration: none; }
.cns-rib .d { width: 10px; height: 10px; border-radius: 50%; flex: none; box-shadow: 0 0 0 4px rgba(255, 255, 255, .07); }
.cns-rib > span:not(.d) { display: inline-flex; align-items: baseline; gap: 7px; }
.cns-rib .n { font-family: var(--font-mono); font-size: 19px; font-weight: 800; line-height: 1; }
.cns-rib .t { font-size: 11.5px; color: #fff; font-weight: 600; }
.cns-rib .d-ok { background: #34d399; } .cns-rib .d-proc { background: var(--gold); } .cns-rib .d-wait { background: #8aa0ab; } .cns-rib .d-bad { background: #ff6b6f; }

/* Coque carte console */
.cns-card { background: var(--dash-card-bg); border: 1px solid var(--dash-card-border); border-radius: var(--dash-card-radius); box-shadow: var(--dash-card-shadow); }
:root[data-card-style="glass"] .cns-card,
:root[data-card-style="glass"] .cns-kpis,
:root[data-card-style="glass"] .account-rail { backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.cns-card-h { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: var(--dash-row-y) var(--dash-pad); border-bottom: 1px solid var(--line); }
.cns-eyebrow { margin: 0; display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-head); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--brand-strong); }
.cns-eyebrow::before { content: ""; width: 20px; height: 2px; border-radius: 2px; background: var(--gold); }
.cns-link { font-family: var(--font-head); font-size: 12px; font-weight: 800; color: var(--brand-strong); }
.cns-link:hover { color: var(--brand); text-decoration: none; }

/* Jauge de reussite + KPI */
.cns-row2 { display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 18px; align-items: start; }
.cns-gauge { display: grid; place-items: center; padding: var(--dash-pad); text-align: center; }
.cns-gauge-wrap { position: relative; width: 180px; height: 180px; }
.cns-gauge-wrap svg { width: 180px; height: 180px; transform: rotate(-90deg); }
.cns-gauge-cen { position: absolute; inset: 0; display: grid; place-content: center; }
.cns-gauge-cen .pct { font-family: var(--font-mono); font-size: 34px; font-weight: 800; color: var(--brand-strong); letter-spacing: -.02em; }
.cns-gauge-cen .pl { font-family: var(--font-head); font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-top: 2px; }
.cns-legend { display: flex; gap: 18px; margin-top: 16px; font-size: 12px; font-weight: 700; color: var(--ink); }
.cns-legend i { width: 9px; height: 9px; border-radius: 3px; display: inline-block; margin-right: 6px; }
.cns-legend .v { font-family: var(--font-mono); }
.cns-kpis { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--dash-card-border); border: 1px solid var(--dash-card-border); border-radius: var(--dash-card-radius); overflow: hidden; box-shadow: var(--dash-card-shadow); }
.cns-kpi { position: relative; background: var(--dash-card-bg); padding: var(--dash-pad); display: grid; gap: 6px; align-content: start; }
.cns-kpi .k { font-family: var(--font-head); font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.cns-kpi .v { font-family: var(--font-mono); font-size: clamp(21px, 3vw, 26px); font-weight: 800; letter-spacing: -.02em; line-height: 1.05; color: var(--ink-strong); overflow-wrap: anywhere; }
.cns-kpi .v small { font-family: var(--font-head); font-size: 13px; color: var(--muted); }
.cns-kpi .m { font-size: 12px; color: var(--muted); }
.cns-kpi .ic { position: absolute; top: 15px; right: 15px; width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; background: var(--brand-soft); color: var(--brand-strong); }

/* Flux d'activite + registre des mouvements */
.cns-row3 { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 18px; align-items: start; }
.cns-feed, .cns-led { display: grid; }
.cns-fr {
    display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 13px; align-items: center;
    width: 100%; padding: var(--dash-row-y) var(--dash-pad); border: 0; border-bottom: 1px solid var(--line);
    background: none; color: var(--ink); text-align: left; text-decoration: none; cursor: pointer; font: inherit;
    transition: background .16s var(--dash-ease);
}
.cns-fr:last-child { border-bottom: 0; }
.cns-fr:hover { background: var(--surface-2); }
.cns-fr .st { width: 30px; height: 30px; border-radius: 9px; display: grid; place-items: center; flex: none; }
.cns-fr .st.ok { background: var(--ok-soft); color: var(--ok); }
.cns-fr .st.bad { background: var(--bad-soft); color: var(--bad); }
.cns-fr .st.proc { background: var(--warn-soft); color: var(--warn); }
.cns-fr .st.wait { background: var(--chip); color: var(--muted); }
.cns-fr > span:not(.st):not(.amt) { min-width: 0; }
.cns-fr .nm { font-family: var(--font-head); font-weight: 700; font-size: 13.5px; color: var(--ink-strong); display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cns-fr .meta { font-size: 11.5px; color: var(--muted); margin-top: 2px; display: flex; gap: 8px; align-items: center; }
.cns-tag { font-family: var(--font-head); font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; color: var(--brand-strong); background: var(--brand-soft); padding: 2px 7px; border-radius: 6px; }
.cns-fr .amt { font-family: var(--font-mono); font-weight: 800; font-size: 13px; text-align: right; white-space: nowrap; color: var(--ink-strong); }
.cns-fr .amt .tm { display: block; font-family: var(--font-body); font-size: 11px; font-weight: 600; color: var(--muted); margin-top: 2px; }
.cns-lr { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 12px; align-items: center; padding: var(--dash-row-y) var(--dash-pad); border-bottom: 1px solid var(--line); }
.cns-lr:last-child { border-bottom: 0; }
.cns-lr .lab { font-family: var(--font-head); font-weight: 700; font-size: 13px; color: var(--ink-strong); min-width: 0; overflow-wrap: anywhere; }
.cns-lr .lab small { display: block; margin-top: 2px; font-family: var(--font-body); font-weight: 600; font-size: 11px; color: var(--muted); }
.cns-lr .val { font-family: var(--font-mono); font-weight: 800; font-size: 13px; white-space: nowrap; }
.cns-lr .val.in { color: var(--ok); }
.cns-lr .val.out { color: var(--ink-strong); }
.cns-flow { font-family: var(--font-head); font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; border: 1px solid transparent; white-space: nowrap; }
.cns-flow.in { color: var(--ok); background: var(--ok-soft); border-color: color-mix(in srgb, var(--ok) 28%, transparent); }
.cns-flow.out { color: var(--bad); background: var(--bad-soft); border-color: color-mix(in srgb, var(--bad) 28%, transparent); }
.cns-empty { padding: 34px 18px; text-align: center; color: var(--muted); }

@media (max-width: 980px) {
    .cns-row2 { grid-template-columns: 1fr; }
    .cns-row3 { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
    .auth-arrival { grid-template-columns: auto minmax(0, 1fr); align-items: start; }
    .auth-arrival-actions { grid-column: 1 / -1; }
    .auth-arrival-actions a { flex: 1; justify-content: center; }
    .cns-cmd-grid { grid-template-columns: 1fr; }
    .cns-add { width: 100%; }
    .cns-spark { height: 48px; }
    .cns-ribbon { grid-template-columns: repeat(2, 1fr); gap: 14px 10px; }
}
@media (prefers-reduced-motion: reduce) {
    .auth-arrival { transition: none; }
    .auth-arrival[data-leaving] { transform: none; }
}
/* ── Etats vides enseignants + dialog de detail partagee ─────────────── */
.table-empty-state { display: grid; justify-items: center; gap: 6px; padding: 30px 16px; text-align: center; color: var(--muted); }
.table-empty-state .icon { opacity: .55; }
.table-empty-state strong { color: var(--ink); font-size: 15px; }
.table-empty-state .button { margin-top: 8px; }
.order-history-table-wrap:has(.order-history-empty),
.finance-table-wrap:has(.finance-empty) { overflow-x: hidden; }
.order-detail-loading { display: grid; gap: 10px; padding: 6px 0 2px; }
.order-detail-loading i { height: 13px; border-radius: 7px; background: linear-gradient(90deg, var(--chip) 25%, var(--surface-2) 40%, var(--chip) 55%); background-size: 200% 100%; animation: odl-shimmer 1.1s linear infinite; }
.order-detail-loading i:nth-child(1) { width: 62%; }
.order-detail-loading i:nth-child(3) { width: 78%; }
@keyframes odl-shimmer { to { background-position: -200% 0; } }
.order-detail-error { color: var(--bad); font-size: 13.5px; }
.order-detail-error a { color: var(--brand); font-weight: 600; }
@media (prefers-reduced-motion: reduce) { .order-detail-loading i { animation: none; } }

/* ── Page API revendeur : plafonds d'utilisation ─────────────────────── */
.api-limits { display: grid; margin: 0; border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; }
.api-limits > div { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding: 12px 14px; background: var(--panel); }
.api-limits > div + div { border-top: 1px solid var(--line); }
.api-limits dt { color: var(--muted); font-size: 13px; }
.api-limits dd { margin: 0; font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; }

/* ── Fiche service consultée sans compte ─────────────────────────────── */
.order-form-entry input:disabled,
.order-form-entry select:disabled,
.order-form-entry textarea:disabled { background: var(--chip); color: var(--muted); cursor: not-allowed; opacity: .8; }
.order-guest-gate { margin-top: 6px; padding: 14px 16px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--surface-2); }
.order-guest-gate p { margin: 0 0 12px; color: var(--muted); font-size: 13.5px; }
.order-guest-gate .actions { margin: 0; }

/* Feedback discret pour les navigations qui depassent 350 ms. */
.page-transition-loader {
    position: fixed;
    inset: 0;
    z-index: 950;
    display: grid;
    place-items: center;
    padding: 24px;
    background: var(--bg);
    background: color-mix(in srgb, var(--bg) 96%, transparent);
    cursor: wait;
}
.page-transition-loader[hidden] { display: none !important; }
.page-transition-loader__card {
    display: grid;
    justify-items: center;
    gap: 5px;
    min-width: 180px;
    padding: 20px 24px 18px;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    background: var(--panel);
    box-shadow: var(--shadow-md);
    color: var(--ink-strong);
    text-align: center;
}
.page-transition-loader__africa {
    width: 78px;
    height: 92px;
    margin-bottom: 4px;
    overflow: visible;
}
.page-transition-loader__outline {
    fill: transparent;
    stroke: var(--brand-strong);
    stroke-width: 5;
    stroke-linecap: round;
    stroke-linejoin: round;
    opacity: .9;
}
.page-transition-loader__fill {
    fill: url(#pageTransitionAfricaGradient);
    stroke: none;
    clip-path: inset(100% 0 0 0);
    animation: page-africa-fill 1.55s cubic-bezier(.4, 0, .2, 1) infinite;
}
.page-transition-loader__card strong { font-family: var(--font-head); font-size: 14px; }
.page-transition-loader__card span { color: var(--muted); font-size: 12px; }
@keyframes page-africa-fill {
    0% { clip-path: inset(100% 0 0 0); opacity: 1; }
    72% { clip-path: inset(0 0 0 0); opacity: 1; }
    88% { clip-path: inset(0 0 0 0); opacity: .55; }
    100% { clip-path: inset(0 0 0 0); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
    .page-transition-loader__fill {
        clip-path: inset(45% 0 0 0);
        animation: none;
    }
}

/* ── Login modal : état de succès (connexion AJAX, zéro rechargement) ────── */
.auth-msuccess { display: grid; justify-items: center; gap: 8px; padding: 26px 4px 10px; text-align: center; animation: amsIn .45s cubic-bezier(.22,1,.36,1) both; }
.auth-msuccess-check {
    display: grid; place-items: center; width: 76px; height: 76px; margin-bottom: 4px;
    border-radius: 50%; background: var(--brand-soft); color: var(--brand-strong);
}
.ams-ring { stroke-dasharray: 148; stroke-dashoffset: 148; animation: amsDraw .55s ease .1s forwards; opacity: .45; }
.ams-tick { stroke-dasharray: 30; stroke-dashoffset: 30; animation: amsDraw .4s cubic-bezier(.22,1,.36,1) .45s forwards; }
.auth-msuccess strong { font-size: 19px; font-weight: 800; letter-spacing: -.01em; color: var(--ink-strong); }
.auth-msuccess-name { font-size: 14.5px; color: var(--ink); }
.auth-msuccess small { font-size: 12.5px; color: var(--muted); }
.auth-msuccess .button { margin-top: 14px; }
.auth-msuccess-count { font-size: 12.5px; color: var(--muted); }
@keyframes amsDraw { to { stroke-dashoffset: 0; } }
@keyframes amsIn { from { opacity: 0; transform: translateY(10px) scale(.97); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
    .auth-msuccess { animation: none; }
    .ams-ring, .ams-tick { animation: none; stroke-dashoffset: 0; }
}

/* bouton en attente (soumission AJAX) */
.btn-wait { position: relative; color: transparent !important; pointer-events: none; }
.btn-wait::after {
    content: ""; position: absolute; inset: 0; margin: auto; width: 20px; height: 20px;
    border-radius: 50%; border: 2.5px solid rgba(255, 255, 255, .4); border-top-color: #fff;
    animation: btnWaitSpin .7s linear infinite;
}
@keyframes btnWaitSpin { to { transform: rotate(360deg); } }

/* ── Topbar : « Ajouter du crédit » toujours visible ─────────────────────── */
.topup-cta {
    display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 15px;
    border-radius: 999px; font-weight: 700; font-size: 13px; text-decoration: none; white-space: nowrap;
    background: linear-gradient(135deg, #ffd76a, var(--gold, #f2b41c));
    color: #33270a; box-shadow: 0 6px 16px rgba(242, 180, 28, .28);
    transition: transform .2s ease, box-shadow .2s ease;
}
.topup-cta:hover { transform: translateY(-1px); box-shadow: 0 10px 22px rgba(242, 180, 28, .42); color: #33270a; text-decoration: none; }
.topup-cta svg { flex: none; }
@media (max-width: 760px) {
    .topup-cta { height: 38px; padding: 0 11px; }
    .topup-cta-label { display: none; }
}

/* ── Garde-fou de déconnexion ────────────────────────────────────────────── */
#logoutConfirm { border: 0; padding: 0; background: transparent; }
#logoutConfirm::backdrop { background: rgba(3, 16, 22, .55); backdrop-filter: blur(4px); }
.confirm-card {
    width: min(400px, calc(100vw - 40px)); padding: 26px 24px 22px;
    border-radius: 18px; background: var(--panel); border: 1px solid var(--line);
    box-shadow: var(--shadow-lg); display: grid; justify-items: center; gap: 8px; text-align: center;
}
#logoutConfirm[open] .confirm-card { animation: amsIn .3s cubic-bezier(.22, 1, .36, 1); }
.confirm-illus {
    width: 52px; height: 52px; display: grid; place-items: center; border-radius: 50%;
    background: rgba(220, 38, 38, .1); color: #dc2626; margin-bottom: 2px;
}
.confirm-card h2 { margin: 0; font-size: 18px; font-weight: 800; color: var(--ink-strong); }
.confirm-card p { margin: 0; font-size: 13.5px; max-width: 34ch; }
.confirm-actions { display: flex; gap: 10px; width: 100%; margin-top: 12px; }
.confirm-actions .button { flex: 1; }
.button-danger { background: #dc2626; color: #fff; border: 0; }
.button-danger:hover { background: #b91c1c; color: #fff; }

/* Toast d'activité : jamais visible pendant qu'un modal est ouvert
   (il transparaissait sous le backdrop flouté comme une barre claire). */
body:has(dialog[open]) .client-activity-toast { display: none !important; }

/* ── Solde faible : passe en rouge (topbar + carte solde du dashboard).
   Rouge clair : les deux surfaces sont sombres dans les deux thèmes. ── */
.account-balance.is-low { color: #fda29b; }
.cns-bal.is-low { color: #fda29b; }

/* ── Historique : barre de filtres (statut · période) ───────────────────── */
.order-history-filters { flex-wrap: wrap; align-items: center; gap: 10px; }
.order-filter-select,
.order-filter-date input {
    height: 42px; padding: 0 12px; border-radius: 11px;
    border: 1px solid var(--line); background-color: var(--panel); color: var(--ink);
    font-size: 13.5px; font-family: inherit;
}
.order-filter-select:focus,
.order-filter-date input:focus { outline: 0; border-color: var(--brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand) 18%, transparent); }
.order-filter-date { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: var(--muted); }
.order-history-filters .button { min-height: 42px; }

/* ── Toast utilitaire (copie, retours rapides) ──────────────────────────── */
.ui-toast {
    position: fixed; left: 50%; bottom: 26px; z-index: 720;
    transform: translate(-50%, 14px); opacity: 0; pointer-events: none;
    max-width: min(440px, calc(100vw - 40px));
    padding: 11px 18px; border-radius: 999px;
    background: var(--ink-strong); color: var(--panel);
    font-size: 13.5px; font-weight: 650; text-align: center;
    box-shadow: 0 14px 34px rgba(9, 30, 50, .28);
    transition: opacity .25s ease, transform .25s ease;
}
.ui-toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
.ui-toast.is-error { background: #dc2626; color: #fff; }

/* ── Dialogs : la barre de défilement n'appartient JAMAIS au <dialog> ─────
   (l'UA lui met overflow:auto + max-height ~100%-34px : au moindre pixel de
   dépassement une scrollbar flotte sur le backdrop). C'est la carte qui
   scrolle en interne, avec une barre fine. ── */
dialog.modal { overflow: visible; max-height: none; }
.modal-card { scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--ink) 28%, transparent) transparent; }
.modal-card::-webkit-scrollbar { width: 8px; }
.modal-card::-webkit-scrollbar-track { background: transparent; }
.modal-card::-webkit-scrollbar-thumb { border-radius: 999px; background: color-mix(in srgb, var(--ink) 24%, transparent); }
.modal-card::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--ink) 38%, transparent); }

/* ── Prix masqué aux visiteurs (réglage « show_prices_before_login ») ────────
   Pastille compacte et neutre : cadenas + « Prix membre ». La phrase complète
   « Connectez-vous pour voir le prix » reste au survol (title) et sur la page
   de commande — fini le texte long tronqué sur toutes les cartes. */
.service-price.service-price--locked {
    gap: 5px;
    background: var(--surface-2);
    border: 1px solid var(--line);
    color: var(--muted);
    font-weight: 700;
}
.service-price.service-price--locked svg { flex: none; opacity: .75; }

/* ── Délai « instantané » : foudre + teinte positive — un service sans attente
   ne porte pas d'horloge. (Placé en fin de fichier pour primer à spécificité
   égale sur .badge.time et .shop-service-row .service-delivery.) */
.badge.time.service-delivery--instant,
.shop-service-row .service-delivery.service-delivery--instant {
    color: var(--ok);
    background: var(--ok-soft);
    border-color: color-mix(in srgb, var(--ok) 32%, transparent);
}
