/* Public palettes; subscription and profile geometry lives in client-layout.css. */
html.client-theme-system {
    color-scheme: dark;
    --theme-page: radial-gradient(circle at 15% 20%, rgba(34, 197, 94, .14), transparent 24%), radial-gradient(circle at 84% 12%, rgba(56, 189, 248, .16), transparent 26%), radial-gradient(circle at 78% 72%, rgba(251, 191, 36, .08), transparent 24%), linear-gradient(-45deg, #020617, #111827, #0f172a, #12324a);
    --theme-glow: radial-gradient(circle at 18% 18%, rgba(125, 211, 252, .24), transparent 22%), radial-gradient(circle at 76% 26%, rgba(74, 222, 128, .18), transparent 24%);
    --theme-card: linear-gradient(155deg, #1e293b, #0f172a);
    --theme-surface: linear-gradient(145deg, #1b3043, #112235);
    --theme-action-surface: linear-gradient(145deg, #1e3448, #112235);
    --theme-booking-surface: linear-gradient(145deg, #193c43, #112b35);
    --theme-border: #456477;
    --theme-text: #e5e7eb;
    --theme-muted: #b4c8d8;
    --theme-accent: #4ade80;
    --theme-accent-strong: #22c55e;
    --theme-accent-display: #86efac;
    --theme-track: #334155;
    --theme-cta-text: #052e16;
    --theme-cta-bg: linear-gradient(110deg, #22c55e, #86efac);
    --theme-active-bg: #163c30;
    --theme-active-border: #456d5b;
    --theme-active-text: #86efac;
    --theme-shadow: rgba(2, 6, 23, .3);
    --theme-halo: rgba(74, 222, 128, .12);
    --theme-strip-glow: rgba(74, 222, 128, .2);
    --theme-sheen: none;
    --theme-panel-sheen: none;
    --theme-icon-bg: linear-gradient(145deg, #24433b, #162e2b);
    --theme-icon-border: #456d5b;
    --theme-icon-color: #86efac;
    --theme-icon-glow: rgba(74, 222, 128, .12);
    --theme-progress-gradient: linear-gradient(90deg, #22c55e, #86efac);
    --theme-skeleton-base: #1e293b;
    --theme-skeleton-highlight: #334155;
}

html.client-theme-graphite-mint {
    --theme-page: radial-gradient(circle at 78% 14%, rgba(115, 239, 193, .16), transparent 28%), radial-gradient(circle at 13% 76%, rgba(74, 138, 126, .11), transparent 35%), linear-gradient(155deg, #0b1215, #172126 65%, #0d1519);
    --theme-glow: radial-gradient(circle at 75% 18%, rgba(103, 237, 187, .2), transparent 31%), radial-gradient(circle at 18% 78%, rgba(65, 168, 145, .11), transparent 30%);
    --theme-card: radial-gradient(circle at 82% 4%, rgba(115, 239, 193, .13), transparent 36%), linear-gradient(160deg, rgba(37, 49, 52, .97), rgba(14, 22, 26, .98) 75%);
    --theme-surface: linear-gradient(165deg, rgba(255, 255, 255, .055), transparent 50%), linear-gradient(145deg, #243034, #151e22);
    --theme-action-surface: radial-gradient(circle at 100% 0%, rgba(134, 242, 196, .11), transparent 50%), linear-gradient(145deg, #29363a, #192328 72%);
    --theme-booking-surface: radial-gradient(circle at 90% 15%, rgba(86, 217, 168, .17), transparent 52%), linear-gradient(140deg, #253a37, #172326 72%);
    --theme-border: #4b6564;
    --theme-text: #f2f7f5;
    --theme-muted: #b0c1c2;
    --theme-accent: #86f2c4;
    --theme-accent-strong: #49dca0;
    --theme-accent-display: #a4f6d2;
    --theme-track: #36454a;
    --theme-cta-text: #102b25;
    --theme-cta-bg: linear-gradient(180deg, rgba(255, 255, 255, .25), transparent 48%), linear-gradient(115deg, #40d69a, #9cf6c9 52%, #52dba8);
    --theme-active-bg: linear-gradient(160deg, #20503d, #173c30);
    --theme-active-border: #3d9a72;
    --theme-active-text: #a5f8d0;
    --theme-shadow: rgba(0, 8, 10, .36);
    --theme-halo: rgba(88, 227, 172, .19);
    --theme-strip-glow: rgba(86, 234, 174, .42);
    --theme-sheen: radial-gradient(circle at 15% 0%, rgba(255, 255, 255, .10), transparent 38%), linear-gradient(155deg, transparent 60%, rgba(100, 236, 184, .045));
    --theme-panel-sheen: radial-gradient(circle at 0% 0%, rgba(255, 255, 255, .075), transparent 55%);
    --theme-icon-bg: radial-gradient(circle at 30% 20%, #455b56, #283c3a 50%, #1d292d);
    --theme-icon-border: #648b7b;
    --theme-icon-color: #e9f4f1;
    --theme-icon-glow: rgba(100, 236, 184, .18);
    --theme-progress-gradient: linear-gradient(90deg, #35ca91, #a4f9d2 55%, #69e7b3);
    --theme-skeleton-base: #233136;
    --theme-skeleton-highlight: #3d5a53;
}

html.client-theme-midnight-violet {
    --theme-page: radial-gradient(circle at 78% 16%, rgba(136, 81, 252, .3), transparent 34%), radial-gradient(circle at 8% 78%, rgba(87, 67, 211, .16), transparent 35%), linear-gradient(150deg, #090d25, #111035 65%, #090d25);
    --theme-glow: radial-gradient(circle at 80% 23%, rgba(130, 75, 249, .32), transparent 30%), radial-gradient(circle at 18% 80%, rgba(91, 73, 208, .19), transparent 30%);
    --theme-card: radial-gradient(circle at 85% 2%, rgba(163, 112, 255, .2), transparent 38%), linear-gradient(160deg, rgba(39, 31, 94, .98), rgba(11, 12, 40, .98) 76%);
    --theme-surface: linear-gradient(165deg, rgba(255, 255, 255, .07), transparent 48%), linear-gradient(145deg, #30266f, #191746);
    --theme-action-surface: radial-gradient(circle at 100% 0%, rgba(173, 131, 255, .2), transparent 54%), linear-gradient(140deg, #382c80, #1b194c 75%);
    --theme-booking-surface: radial-gradient(circle at 90% 20%, rgba(174, 122, 255, .24), transparent 52%), linear-gradient(140deg, #30266e, #171743 74%);
    --theme-border: #7863ca;
    --theme-text: #f6f3ff;
    --theme-muted: #bdb4eb;
    --theme-accent: #b38aff;
    --theme-accent-strong: #8157f1;
    --theme-accent-display: #cbaaff;
    --theme-track: #36336f;
    --theme-cta-text: #ffffff;
    --theme-cta-bg: linear-gradient(180deg, rgba(255, 255, 255, .12), transparent 48%), linear-gradient(110deg, #6941c6, #754aca 54%, #6740b4);
    --theme-active-bg: linear-gradient(160deg, #15534b, #103e39);
    --theme-active-border: #2b9f83;
    --theme-active-text: #82f4ce;
    --theme-shadow: rgba(5, 3, 35, .42);
    --theme-halo: rgba(155, 109, 255, .27);
    --theme-strip-glow: rgba(176, 126, 255, .54);
    --theme-sheen: radial-gradient(circle at 15% 0%, rgba(255, 255, 255, .13), transparent 36%), linear-gradient(155deg, transparent 55%, rgba(157, 100, 255, .09));
    --theme-panel-sheen: radial-gradient(circle at 0% 0%, rgba(204, 177, 255, .13), transparent 54%);
    --theme-icon-bg: radial-gradient(circle at 28% 18%, #7056bd, #3b2d83 52%, #251d60);
    --theme-icon-border: #8970da;
    --theme-icon-color: #e6d5ff;
    --theme-icon-glow: rgba(168, 117, 255, .33);
    --theme-progress-gradient: linear-gradient(90deg, #8057f1, #c8a5ff 55%, #9f74fa);
    --theme-skeleton-base: #27215a;
    --theme-skeleton-highlight: #5a4795;
}

html.client-theme-ocean-mist {
    --theme-page: radial-gradient(circle at 85% 12%, rgba(71, 198, 209, .24), transparent 35%), radial-gradient(circle at 8% 74%, rgba(117, 210, 226, .22), transparent 35%), linear-gradient(160deg, #f2fbfe, #dff4f8 66%, #eaf9fc);
    --theme-glow: radial-gradient(circle at 80% 16%, rgba(45, 188, 197, .24), transparent 35%), radial-gradient(circle at 15% 79%, rgba(117, 210, 226, .17), transparent 35%);
    --theme-card: radial-gradient(circle at 86% 0%, rgba(120, 226, 226, .23), transparent 40%), linear-gradient(155deg, rgba(255, 255, 255, .94), rgba(235, 250, 252, .85) 76%);
    --theme-surface: linear-gradient(165deg, rgba(255, 255, 255, .96), rgba(255, 255, 255, .15) 44%), linear-gradient(145deg, #f8feff, #e8f7fb);
    --theme-action-surface: radial-gradient(circle at 100% 0%, rgba(82, 197, 207, .17), transparent 54%), linear-gradient(145deg, #ffffff, #edfafe 74%);
    --theme-booking-surface: radial-gradient(circle at 92% 14%, rgba(79, 202, 207, .22), transparent 54%), linear-gradient(145deg, #ffffff, #e5f8fa 76%);
    --theme-border: #b5dce7;
    --theme-text: #0c3b55;
    --theme-muted: #426d83;
    --theme-accent: #28b8c2;
    --theme-accent-strong: #168f9e;
    --theme-accent-display: #087e89;
    --theme-track: #d2eaf0;
    --theme-cta-text: #ffffff;
    --theme-cta-bg: linear-gradient(180deg, rgba(255, 255, 255, .1), transparent 48%), linear-gradient(110deg, #006e7c, #087182 52%, #0a6978);
    --theme-active-bg: linear-gradient(160deg, #e9fcfa, #d1f1ef);
    --theme-active-border: #a6e4df;
    --theme-active-text: #087b77;
    --theme-shadow: rgba(42, 114, 139, .13);
    --theme-halo: rgba(41, 171, 186, .16);
    --theme-strip-glow: rgba(53, 185, 198, .27);
    --theme-sheen: radial-gradient(circle at 15% 0%, rgba(255, 255, 255, .95), transparent 40%), linear-gradient(155deg, transparent 57%, rgba(55, 178, 190, .06));
    --theme-panel-sheen: radial-gradient(circle at 0% 0%, rgba(255, 255, 255, .95), transparent 55%);
    --theme-icon-bg: radial-gradient(circle at 28% 18%, #ffffff, #e0f7fb 55%, #beeaf0);
    --theme-icon-border: #ace0e7;
    --theme-icon-color: #0c3b55;
    --theme-icon-glow: rgba(51, 171, 183, .16);
    --theme-progress-gradient: linear-gradient(90deg, #0f9ca9, #5bdbd6 55%, #21aeb9);
    --theme-skeleton-base: #dff2f6;
    --theme-skeleton-highlight: #ffffff;
}

html.client-theme body {
    color: var(--theme-text);
    background: var(--theme-page);
    background-size: auto;
    animation: none;
}

html.client-theme body::after { display: none; }

html.client-theme .page-glow {
    background: var(--theme-glow);
    animation: none;
}

html.client-theme .card {
    background: var(--theme-card);
    border-color: var(--theme-border);
    box-shadow:
        0 28px 68px var(--theme-shadow),
        0 0 42px var(--theme-halo),
        inset 0 1px 0 rgba(255, 255, 255, .22),
        inset 0 0 0 1px rgba(255, 255, 255, .045);
}

html.client-theme .card::before {
    background: linear-gradient(90deg, var(--theme-accent-strong), var(--theme-accent));
    box-shadow: 0 0 22px var(--theme-strip-glow);
}

html.client-theme .card.inactive-card::before {
    background: linear-gradient(90deg, #dc5555, #ff8888);
    box-shadow: 0 0 18px rgba(239, 96, 100, .32);
}

html.client-theme .card::after {
    background: var(--theme-sheen);
    opacity: 1;
}

html.client-theme .client-name,
html.client-theme .big,
html.client-theme .next-booking-date,
html.client-theme .last-visit-date {
    color: var(--theme-text);
}

html.client-theme .subscription-note,
html.client-theme .muted,
html.client-theme .label,
html.client-theme .info-panel-label {
    color: var(--theme-muted);
}

html.client-theme .stat-card,
html.client-theme .progress-card,
html.client-theme .next-booking-panel,
html.client-theme .info-panel {
    color: var(--theme-text);
    background: var(--theme-surface);
    border-color: var(--theme-border);
    box-shadow:
        0 12px 28px var(--theme-shadow),
        0 0 18px var(--theme-halo),
        inset 0 1px 0 rgba(255, 255, 255, .17);
}

html.client-theme .stat-card::before,
html.client-theme .progress-card::before,
html.client-theme .next-booking-panel::before,
html.client-theme .info-panel::before {
    display: block;
    background: var(--theme-panel-sheen);
}

html.client-theme .next-booking-panel,
html.client-theme .info-panel-last-visit {
    background: var(--theme-booking-surface);
    box-shadow:
        0 14px 32px var(--theme-shadow),
        0 0 24px var(--theme-halo),
        inset 0 1px 0 rgba(255, 255, 255, .2);
}

html.client-theme .action-link {
    color: var(--theme-text);
    background: var(--theme-action-surface);
    border-color: var(--theme-border);
    box-shadow:
        0 8px 20px var(--theme-shadow),
        inset 0 1px 0 rgba(255, 255, 255, .19);
}

html.client-theme .action-link:hover {
    color: var(--theme-text);
    background: var(--theme-action-surface);
    border-color: var(--theme-accent);
    box-shadow:
        0 12px 26px var(--theme-shadow),
        0 0 18px var(--theme-halo),
        inset 0 1px 0 rgba(255, 255, 255, .24);
}
html.client-theme .action-link:focus-visible,
html.client-theme .next-booking-calendar:focus-visible,
html.client-theme .visit-history-toggle:focus-visible,
html.client-theme .visit-history-download:focus-visible {
    outline: 2px solid var(--theme-accent-strong);
    outline-offset: 2px;
}

html.client-theme .action-link-title,
html.client-theme .action-link-arrow,
html.client-theme .action-link-icon svg { color: var(--theme-text); stroke: currentColor; }
html.client-theme .action-link-hint { color: var(--theme-muted); }
html.client-theme .action-link-icon {
    background: var(--theme-card);
    border-color: var(--theme-border);
}

html.client-theme .action-link--chat,
html.client-theme .action-link--chat:hover {
    background: var(--theme-cta-bg);
    border-color: var(--theme-accent);
    color: var(--theme-cta-text);
    box-shadow:
        0 11px 26px var(--theme-shadow),
        0 0 22px var(--theme-strip-glow),
        inset 0 1px 0 rgba(255, 255, 255, .35);
}

html.client-theme .action-link--chat:hover {
    box-shadow:
        0 14px 30px var(--theme-shadow),
        0 0 30px var(--theme-strip-glow),
        inset 0 1px 0 rgba(255, 255, 255, .42);
}

html.client-theme .action-link--chat .action-link-title,
html.client-theme .action-link--chat .action-link-hint,
html.client-theme .action-link--chat .action-link-arrow,
html.client-theme .action-link--chat .action-link-icon,
html.client-theme .action-link--chat .action-link-icon svg {
    color: var(--theme-cta-text);
}

html.client-theme .action-link--chat .action-link-icon {
    background: transparent;
    border-color: currentColor;
}

html.client-theme .action-link--carousel,
html.client-theme .action-link--carousel:hover {
    background: var(--theme-action-surface);
    border-color: var(--theme-accent-strong);
    color: var(--theme-text);
}

html.client-theme .action-link--carousel .action-link-icon,
html.client-theme .action-link--carousel .action-link-arrow { color: var(--theme-accent); }

html.client-theme .active {
    color: var(--theme-active-text);
    background: var(--theme-active-bg);
    border-color: var(--theme-active-border);
    box-shadow:
        0 0 15px var(--theme-halo),
        inset 0 1px 0 rgba(255, 255, 255, .18);
}

html.client-theme .active::before {
    background: var(--theme-active-text);
    box-shadow: 0 0 10px var(--theme-active-text);
}

html.client-theme .progress {
    background: var(--theme-track);
    border-color: var(--theme-border);
    box-shadow:
        inset 0 2px 5px var(--theme-shadow),
        0 0 15px var(--theme-halo);
}

html.client-theme .progress-bar {
    background: var(--theme-progress-gradient);
    box-shadow: 0 0 16px var(--theme-strip-glow);
}

html.client-theme .progress-value,
html.client-theme .stat-card:nth-child(1) .big,
html.client-theme .stat-card:nth-child(2) .big {
    color: var(--theme-accent-display);
    text-shadow: 0 0 18px var(--theme-halo);
}

html.client-theme .next-booking-panel .info-panel-label,
html.client-theme .info-panel-last-visit .info-panel-label { color: var(--theme-muted); }

html.client-theme .next-booking-time,
html.client-theme .next-booking-calendar,
html.client-theme .visit-history-toggle,
html.client-theme .visit-history-download,
html.client-theme .visit-history-item {
    color: var(--theme-text);
    background: var(--theme-surface);
    border-color: var(--theme-border);
    box-shadow:
        0 5px 14px var(--theme-shadow),
        inset 0 1px 0 rgba(255, 255, 255, .17);
}

html.client-theme .next-booking-calendar:hover,
html.client-theme .visit-history-toggle:hover,
html.client-theme .visit-history-download:hover {
    color: var(--theme-text);
    border-color: var(--theme-accent);
}

html.client-theme .skeleton-line,
html.client-theme .skeleton-panel {
    background: linear-gradient(90deg, var(--theme-skeleton-base) 0%, var(--theme-skeleton-highlight) 42%, var(--theme-skeleton-base) 84%);
    background-size: 220% 100%;
    border-color: var(--theme-border);
}

html.client-theme-ocean-mist .card {
    border-color: rgba(111, 177, 194, .38);
}

html.client-theme-ocean-mist .expired {
    color: #a52d35;
    background: linear-gradient(160deg, #fff5f5, #ffeaec);
    border-color: #efb9be;
    box-shadow: 0 0 14px rgba(203, 81, 91, .12), inset 0 1px 0 rgba(255, 255, 255, .8);
}

html.client-theme-ocean-mist .expired::before {
    background: #c74e58;
    box-shadow: 0 0 8px rgba(199, 78, 88, .28);
}

html.client-theme-ocean-mist .eyebrow.inactive,
html.client-theme-ocean-mist .eyebrow.inactive:hover {
    background: #fff1f1;
    border-color: #e9b7bb;
}

/* Line icons mirror the approved theme previews. */
html.client-theme .action-link-icon {
    width: 30px;
    height: 30px;
    flex-basis: 30px;
    border: 0;
    border-radius: 0;
    background: transparent;
}

html.client-theme .action-link-icon svg {
    width: 27px;
    height: 27px;
    stroke-width: 1.8;
    filter: drop-shadow(0 2px 4px var(--theme-icon-glow));
}

html.client-theme .action-link--chat .action-link-icon {
    border: 0;
}

html.client-theme .client-price-icon--system,
html.client-theme .client-price-icon--chart {
    display: none;
}

html.client-theme-ocean-mist .client-price-icon--tag { display: none; }
html.client-theme-ocean-mist .client-price-icon--chart {
    display: block;
    stroke-width: 3.2;
}

html.client-theme .stat-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 110px;
}

html.client-theme .stat-card-copy { min-width: 0; }

html.client-theme-ocean-mist .stat-card {
    flex-direction: row-reverse;
    justify-content: flex-end;
}

html.client-theme .client-feature-icon {
    display: inline-flex;
    flex: 0 0 52px;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border: 1px solid var(--theme-icon-border);
    border-radius: 50%;
    background: var(--theme-icon-bg);
    color: var(--theme-icon-color);
    box-shadow:
        0 7px 17px var(--theme-shadow),
        0 0 18px var(--theme-icon-glow),
        inset 0 1px 0 rgba(255, 255, 255, .3);
}

html.client-theme .client-feature-icon svg {
    width: 27px;
    height: 27px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
    filter: drop-shadow(0 2px 3px var(--theme-shadow));
}

html.client-theme .next-booking-copy { flex: 1 1 auto; }

html.client-theme .info-panel-last-visit {
    display: flex;
    align-items: center;
    gap: 14px;
}

html.client-theme .last-visit-copy { min-width: 0; }
html.client-theme .info-panel-last-visit .last-visit-date { text-align: left; }

@media (max-width: 640px) {
    html.client-theme .stat-card { min-height: 88px; }

    html.client-theme .client-feature-icon {
        flex-basis: 44px;
        width: 44px;
        height: 44px;
    }

    html.client-theme .client-feature-icon svg {
        width: 23px;
        height: 23px;
    }
}

@media (max-width: 480px) {
    html.client-theme .next-booking-panel { flex-wrap: wrap; }
    html.client-theme .next-booking-actions {
        width: 100%;
        margin-left: 0;
        padding-left: 54px;
        justify-content: flex-start;
    }
}

@media (prefers-reduced-motion: reduce) {
    html.client-theme .progress-bar::after { animation: none; }
}
