/* The palette lives in client-themes.css. This sheet extends it to the other public pages. */
html.client-theme {
    --text-main: var(--theme-text);
    --text-soft: var(--theme-muted);
    --text-muted: var(--theme-muted);
    --public-surface: var(--theme-surface);
    --public-raised: var(--theme-action-surface);
    --public-accent-ink: var(--theme-accent-display);
    --public-focus: var(--theme-accent-strong);
    --public-chat-outgoing-text: var(--theme-text);
    color-scheme: dark;
}

html.client-theme-graphite-mint {
    --public-accent-soft: rgba(85, 225, 169, .14);
    --public-accent-border: rgba(134, 242, 196, .42);
    --public-backdrop: rgba(2, 13, 15, .76);
    --public-danger-bg: linear-gradient(145deg, #4a282d, #231d22);
    --public-danger-border: #a45f67;
    --public-danger-text: #ffc0c4;
    --public-success-bg: linear-gradient(145deg, #205240, #17352e);
    --public-success-border: #509f7b;
    --public-success-text: #b2f4d2;
    --public-title-gradient: linear-gradient(125deg, #ffffff, #a4f6d2 55%, #f2fff8);
    --public-fade-near: rgba(18, 30, 33, .98);
    --public-fade-mid: rgba(18, 30, 33, .56);
    --chat-bg: #0c171a;
    --chat-surface: #18272b;
    --chat-surface-deep: #111f23;
    --chat-incoming: #2a3c40;
    --chat-outgoing: #28684f;
    --chat-text: #f2f7f5;
    --chat-muted: #b0c1c2;
    --chat-border: rgba(134, 242, 196, .22);
    --chat-accent: #80eebc;
    --public-chat-head: linear-gradient(145deg, #26393b, #192a2e);
    --public-chat-field: #25373b;
    --public-chat-send-text: #102b25;
    --public-chat-time: #ddf1e7;
}

html.client-theme-midnight-violet {
    --public-accent-soft: rgba(163, 112, 255, .18);
    --public-accent-border: rgba(180, 140, 255, .55);
    --public-backdrop: rgba(6, 5, 27, .8);
    --public-danger-bg: linear-gradient(145deg, #4a294b, #251b39);
    --public-danger-border: #ae687b;
    --public-danger-text: #ffc2cf;
    --public-success-bg: linear-gradient(145deg, #1d5554, #172e44);
    --public-success-border: #52b5a3;
    --public-success-text: #a7f4d9;
    --public-title-gradient: linear-gradient(125deg, #ffffff, #c8a5ff 55%, #f4edff);
    --public-fade-near: rgba(21, 19, 59, .98);
    --public-fade-mid: rgba(21, 19, 59, .56);
    --chat-bg: #0b0c2b;
    --chat-surface: #1c1b4b;
    --chat-surface-deep: #13143a;
    --chat-incoming: #39336b;
    --chat-outgoing: #583e9e;
    --chat-text: #f6f3ff;
    --chat-muted: #bdb4eb;
    --chat-border: rgba(183, 145, 255, .26);
    --chat-accent: #9d76f7;
    --public-chat-head: linear-gradient(145deg, #302766, #1c1b4b);
    --public-chat-field: #30295e;
    --public-chat-send-text: #ffffff;
    --public-chat-time: #e9ddff;
}

html.client-theme-ocean-mist {
    --public-accent-soft: rgba(39, 175, 187, .13);
    --public-accent-border: rgba(23, 143, 158, .43);
    --public-backdrop: rgba(9, 51, 67, .46);
    --public-danger-bg: linear-gradient(145deg, #fff8f8, #ffe9ec);
    --public-danger-border: #e6adb6;
    --public-danger-text: #a42e3b;
    --public-success-bg: linear-gradient(145deg, #effdfa, #d7f5ef);
    --public-success-border: #a5dcd1;
    --public-success-text: #136b5e;
    --public-title-gradient: linear-gradient(125deg, #0c3b55, #087e89 55%, #0c3b55);
    --public-fade-near: rgba(231, 248, 250, .98);
    --public-fade-mid: rgba(231, 248, 250, .58);
    --chat-bg: #e8f6fa;
    --chat-surface: #f8feff;
    --chat-surface-deep: #eaf7fa;
    --chat-incoming: #e0f0f5;
    --chat-outgoing: #d4f3ee;
    --chat-text: #0c3b55;
    --chat-muted: #426d83;
    --chat-border: rgba(75, 150, 166, .32);
    --chat-accent: #087e89;
    --public-chat-head: linear-gradient(145deg, #ffffff, #eaf8fb);
    --public-chat-field: #ffffff;
    --public-chat-send-text: #ffffff;
    --public-chat-time: #426d83;
    color-scheme: light;
}

/* Shared public page shell. The system option does not load this file. */
html.client-theme body:not(.client-chat-page) {
    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 :is(a, button, summary, textarea):focus-visible {
    outline: 2px solid var(--public-focus);
    outline-offset: 3px;
}

/* Expanded client profile. */
html.client-theme .client-profile-page .glass {
    color: var(--theme-text);
    background: var(--theme-card);
    border-color: var(--theme-border);
    box-shadow: 0 24px 60px var(--theme-shadow), 0 0 32px var(--theme-halo), inset 0 1px 0 rgba(255, 255, 255, .18);
}

html.client-theme .client-profile-page .hero::before {
    background: var(--theme-sheen);
}

html.client-theme .client-profile-page .pill,
html.client-theme .client-profile-page .notes-box {
    color: var(--public-accent-ink);
    background: var(--public-accent-soft);
    border-color: var(--public-accent-border);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12), 0 0 16px var(--theme-halo);
}

html.client-theme .client-profile-page .client-name,
html.client-theme .client-profile-page .section-title,
html.client-theme .client-profile-page .panel-value,
html.client-theme .client-profile-page .history-title {
    color: var(--theme-text);
}

html.client-theme .client-profile-page .goal-line { color: var(--public-accent-ink); }

html.client-theme .client-profile-page .panel,
html.client-theme .client-profile-page .history-item,
html.client-theme .client-profile-page .empty-state {
    color: var(--theme-text);
    background: var(--public-surface);
    border-color: var(--theme-border);
    box-shadow: 0 9px 22px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .16);
}

html.client-theme .client-profile-page :is(.panel-label, .panel-meta, .section-subtitle, .history-meta, .history-note) {
    color: var(--theme-muted);
}

/* Full screen client chat, including its mobile layout and input states. */
html.client-theme .client-chat-page {
    color: var(--chat-text);
    background: var(--theme-page);
}

html.client-theme .client-chat-page .chat-shell {
    background: var(--chat-surface);
    border-color: var(--chat-border);
    box-shadow: 0 28px 70px var(--theme-shadow), 0 0 32px var(--theme-halo), inset 0 1px 0 rgba(255, 255, 255, .14);
}

html.client-theme .client-chat-page :is(.chat-head, .chat-form) {
    background: var(--public-chat-head);
    border-color: var(--chat-border);
}

html.client-theme .client-chat-page .chat-avatar {
    color: var(--theme-text);
    background: var(--theme-icon-bg);
    border: 1px solid var(--theme-icon-border);
    box-shadow: 0 5px 15px var(--theme-shadow), 0 0 14px var(--theme-icon-glow);
}

html.client-theme .client-chat-page .chat-head h1,
html.client-theme .client-chat-page .chat-message,
html.client-theme .client-chat-page .chat-status { color: var(--chat-text); }

html.client-theme .client-chat-page .chat-back-link:hover,
html.client-theme .client-chat-page .chat-status {
    background: var(--public-raised);
    border-color: var(--chat-border);
}

html.client-theme .client-chat-page .chat-message {
    background: var(--chat-incoming);
    border: 1px solid var(--chat-border);
    box-shadow: 0 5px 16px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .12);
}

html.client-theme .client-chat-page .chat-message.is-client {
    color: var(--public-chat-outgoing-text);
    background: var(--chat-outgoing);
}

html.client-theme .client-chat-page .chat-message-time { color: var(--public-chat-time); }

html.client-theme .client-chat-page .chat-messages {
    scrollbar-color: var(--theme-border) transparent;
}

html.client-theme .client-chat-page .chat-input {
    color: var(--chat-text);
    background: var(--public-chat-field);
    border-color: var(--chat-border);
    box-shadow: inset 0 2px 5px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .12);
}

html.client-theme .client-chat-page .chat-input::placeholder { color: var(--chat-muted); }
html.client-theme .client-chat-page .chat-input:focus { border-color: var(--public-accent-border); }

html.client-theme .client-chat-page .chat-send {
    color: var(--public-chat-send-text);
    background: var(--theme-cta-bg);
    box-shadow: 0 7px 18px var(--theme-shadow), 0 0 18px var(--theme-strip-glow), inset 0 1px 0 rgba(255, 255, 255, .3);
}

html.client-theme .client-chat-page .chat-send:hover:not(:disabled) {
    background: var(--theme-cta-bg);
    box-shadow: 0 9px 23px var(--theme-shadow), 0 0 23px var(--theme-strip-glow);
}

@media (max-width: 640px) {
    html.client-theme .client-chat-page { background: var(--chat-surface); }
    html.client-theme .client-chat-page .chat-shell { border: 0; box-shadow: none; }
}

/* Prize carousel: the prizes keep their own imagery, while the interface follows the selected palette. */

html.client-theme .carousel-body .carousel-choice-btn--secondary {
    color: var(--theme-text);
    background: var(--public-raised);
    border-color: var(--theme-border);
    box-shadow: 0 8px 22px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .16);
}

html.client-theme .carousel-body .carousel-card {
    color: var(--theme-text);
    background: var(--theme-card);
    border-color: var(--theme-border);
    box-shadow: 0 30px 72px var(--theme-shadow), 0 0 38px var(--theme-halo), inset 0 1px 0 rgba(255, 255, 255, .2);
}

html.client-theme .carousel-body .carousel-card--muted {
    box-shadow: 0 24px 54px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .15);
}

html.client-theme .carousel-body .carousel-kicker,
html.client-theme .carousel-body .carousel-spins-count,
html.client-theme .carousel-body .carousel-claimed-kicker {
    color: var(--public-accent-ink);
}

html.client-theme .carousel-body .carousel-kicker--muted,
html.client-theme .carousel-body :is(.carousel-muted, .muted-last) {
    color: var(--theme-muted);
}

html.client-theme .carousel-body .carousel-title:not(.carousel-title--muted) {
    color: var(--theme-text);
    background-image: var(--public-title-gradient);
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
    html.client-theme .carousel-body .carousel-title:not(.carousel-title--muted) {
        color: transparent;
    }
}

html.client-theme .carousel-body .carousel-title--muted {
    color: var(--theme-text) !important;
}

html.client-theme .carousel-body .ribbon-viewport {
    background: transparent;
    border: 0;
    border-radius: 0;
    box-shadow: none;
}

html.client-theme .carousel-body .ribbon-fade--left {
    background: linear-gradient(90deg, var(--public-fade-near), var(--public-fade-mid) 45%, transparent);
}

html.client-theme .carousel-body .ribbon-fade--right {
    background: linear-gradient(270deg, var(--public-fade-near), var(--public-fade-mid) 45%, transparent);
}

html.client-theme .carousel-body .ribbon-pointer {
    border-top-color: var(--theme-accent-strong);
    filter: drop-shadow(0 2px 4px var(--theme-shadow)) drop-shadow(0 0 10px var(--theme-strip-glow));
}

html.client-theme .carousel-body .carousel-claimed-banner {
    color: var(--theme-text);
    background: radial-gradient(circle at 85% 0%, var(--public-accent-soft), transparent 60%), var(--public-surface);
    border-color: var(--public-accent-border);
    box-shadow: 0 12px 28px var(--theme-shadow), 0 0 20px var(--theme-halo), inset 0 1px 0 rgba(255, 255, 255, .16);
}

html.client-theme .carousel-body :is(.carousel-claimed-value, .carousel-pending-line) { color: var(--theme-text); }

html.client-theme .carousel-body :is(.carousel-choice-btn--primary, .carousel-spin-btn) {
    color: var(--theme-cta-text);
    background: var(--theme-cta-bg);
    box-shadow: 0 12px 28px var(--theme-shadow), 0 0 22px var(--theme-strip-glow), inset 0 1px 0 rgba(255, 255, 255, .3);
}

html.client-theme .carousel-body .carousel-error { color: var(--public-danger-text); }

/* Information and prices, including the help dialog and booking availability. */
html.client-theme .info-page :is(h1, .price, .section-title, .taken-day-label) {
    color: var(--theme-text);
}

html.client-theme .info-page :is(.badge, .info-how-order-number) {
    color: var(--public-accent-ink);
    background: var(--public-accent-soft);
    border-color: var(--public-accent-border);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .16), 0 0 12px var(--theme-halo);
}

html.client-theme .info-page .info-how-order-close::before {
    color: var(--public-accent-ink);
    background: var(--public-raised);
    border-color: var(--public-accent-border);
    box-shadow: 0 6px 16px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .17);
}

html.client-theme .info-page .info-contact-box {
    color: var(--theme-text);
    background: radial-gradient(circle at 85% 0%, var(--public-accent-soft), transparent 60%), var(--public-surface);
    border-color: var(--public-accent-border);
    box-shadow: 0 12px 28px var(--theme-shadow), 0 0 20px var(--theme-halo), inset 0 1px 0 rgba(255, 255, 255, .16);
}

html.client-theme .info-page :is(.info-contact-description, .taken-lead) {
    color: var(--theme-muted);
}

html.client-theme .info-page .info-how-order-dialog { color: var(--theme-text); }
html.client-theme .info-page .info-how-order-dialog::backdrop { background: var(--public-backdrop); }

html.client-theme .info-page .info-how-order-panel {
    color: var(--theme-text);
    background: var(--theme-card);
    border-color: var(--theme-border);
    box-shadow: 0 28px 64px var(--theme-shadow), 0 0 32px var(--theme-halo), inset 0 1px 0 rgba(255, 255, 255, .17);
}

html.client-theme .info-page .info-how-order-head { border-color: var(--theme-border); }
html.client-theme .info-page .info-how-order-title,
html.client-theme .info-page .info-how-order-subtitle,
html.client-theme .info-page .info-how-order-body strong { color: var(--theme-text); }
html.client-theme .info-page .info-how-order-body { color: var(--theme-muted); }

html.client-theme .info-page .info-how-order-close,
html.client-theme .info-page .info-how-order-close:hover { color: var(--theme-text); }

html.client-theme .info-page .info-how-order-step,
html.client-theme .info-page .info-how-order-group-case {
    color: var(--theme-text);
    background: var(--public-surface);
    border-color: var(--theme-border);
    box-shadow: 0 7px 18px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .14);
}

html.client-theme .info-page .info-how-order-step--group,
html.client-theme .info-page .rules-box,
html.client-theme .info-page .rule-important,
html.client-theme .info-page .taken-day-row--busy {
    color: var(--theme-text);
    background: var(--public-danger-bg);
    border-color: var(--public-danger-border);
    box-shadow: 0 10px 24px var(--theme-shadow), 0 0 15px rgba(215, 75, 94, .14), inset 0 1px 0 rgba(255, 255, 255, .13);
}

html.client-theme .info-page .info-how-order-step--group :is(.info-how-order-number, .info-how-order-subtitle, .info-how-order-group-exception, .info-how-order-group-note strong, .info-how-order-group-note span),
html.client-theme .info-page .rules-title,
html.client-theme .info-page .taken-day-row--busy .taken-status {
    color: var(--public-danger-text);
}

html.client-theme .info-page .info-how-order-step--group .info-how-order-number,
html.client-theme .info-page .info-how-order-group-note,
html.client-theme .info-page .taken-day-row--busy .taken-status,
html.client-theme .info-page .taken-time-tag {
    background: var(--public-danger-bg);
    border-color: var(--public-danger-border);
}

html.client-theme .info-page .info-how-order-group-case { background: var(--public-danger-bg); }

html.client-theme .info-page .info-how-order-limit,
html.client-theme .info-page .taken-day-row--clear {
    color: var(--public-success-text);
    background: var(--public-success-bg);
    border-color: var(--public-success-border);
    box-shadow: 0 9px 22px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .17);
}

html.client-theme .info-page .info-how-order-limit-label,
html.client-theme .info-page .taken-day-row--clear .taken-status { color: var(--public-success-text); }

html.client-theme .info-page .taken-day-row--clear .taken-status {
    background: var(--public-success-bg);
    border: 1px solid var(--public-success-border);
}

html.client-theme .info-page .item,
html.client-theme .info-page .schedule-item,
html.client-theme .info-page .rule:not(.rule-important),
html.client-theme .info-page .taken-day-row:not(.taken-day-row--busy):not(.taken-day-row--clear),
html.client-theme .info-page .info-contact-hours {
    color: var(--theme-text);
    background: var(--public-surface);
    border-color: var(--theme-border);
    box-shadow: 0 9px 22px var(--theme-shadow), inset 0 1px 0 rgba(255, 255, 255, .16);
}

html.client-theme .info-page .item.is-price-expanded {
    border-color: var(--public-accent-border);
    box-shadow: 0 12px 26px var(--theme-shadow), 0 0 17px var(--theme-halo);
}

html.client-theme .info-page .rule-important { animation: none; }

html.client-theme .info-page .price-note,
html.client-theme .info-page .taken-today-mark { color: var(--theme-muted); }

html.client-theme .info-page .schedule-box,
html.client-theme .info-page .info-contact-telegram {
    color: var(--theme-text);
    background: radial-gradient(circle at 85% 0%, var(--public-accent-soft), transparent 60%), var(--public-surface);
    border-color: var(--public-accent-border);
    box-shadow: 0 10px 24px var(--theme-shadow), 0 0 16px var(--theme-halo), inset 0 1px 0 rgba(255, 255, 255, .16);
}

html.client-theme .info-page .info-contact-telegram:hover {
    color: var(--theme-text);
    border-color: var(--theme-accent);
}

html.client-theme .info-page :is(.schedule-title, .info-contact-title, .info-contact-hours) { color: var(--public-accent-ink); }
html.client-theme .info-page .info-contact-hours strong { color: var(--theme-text); }
html.client-theme .info-page .info-contact-telegram-text small { color: var(--theme-muted); }
html.client-theme .info-page .info-contact-telegram-arrow { color: var(--public-accent-ink); }

html.client-theme .info-page .info-contact-telegram-icon {
    color: var(--theme-cta-text);
    background: var(--theme-cta-bg);
    box-shadow: 0 6px 15px var(--theme-shadow), 0 0 15px var(--theme-strip-glow);
    animation: none;
}

html.client-theme .info-page .info-contact-telegram-icon svg { color: var(--theme-cta-text); }

html.client-theme .info-page .taken-time-tag {
    color: var(--public-danger-text);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .13);
}

html.client-theme .info-page .taken-time-tags { border-top-color: var(--public-danger-border); }

/* Expired public client links share the same theme as the rest of the journey. */
html.client-theme .public-not-found-page h1 { color: var(--theme-text); }

html.client-theme .public-not-found-page .badge {
    color: var(--public-accent-ink);
    background: var(--public-accent-soft);
    border-color: var(--public-accent-border);
}

html.client-theme .public-not-found-page .not-found-text { color: var(--theme-muted); }

html.client-theme .public-not-found-page .card::before {
    background: linear-gradient(90deg, #d74b5e, #f38a98);
    box-shadow: 0 0 18px rgba(215, 75, 94, .3);
}

html.client-theme :is(.info-page, .public-not-found-page) .action-link-compact .action-link-icon {
    width: 22px;
    height: 22px;
    flex-basis: 22px;
}

html.client-theme :is(.info-page, .public-not-found-page) .action-link-compact .action-link-icon svg {
    width: 19px;
    height: 19px;
}

@media (max-width: 640px) {
    html.client-theme :is(.info-page, .public-not-found-page) .action-link-compact .action-link-icon {
        width: 18px;
        height: 18px;
        flex-basis: 18px;
    }

    html.client-theme :is(.info-page, .public-not-found-page) .action-link-compact .action-link-icon svg {
        width: 16px;
        height: 16px;
    }
}
