:root {
    /* ===== Catppuccin LATTE — сырой слой ===== */
    --ctp-rosewater:#dc8a78; --ctp-flamingo:#dd7878; --ctp-pink:#ea76cb; --ctp-mauve:#8839ef;
    --ctp-red:#d20f39; --ctp-maroon:#e64553; --ctp-peach:#fe640b;
    --ctp-yellow:#df8e1d; --ctp-green:#40a02b; --ctp-teal:#179299; --ctp-sky:#04a5e5;
    --ctp-sapphire:#209fb5; --ctp-blue:#1e66f5; --ctp-lavender:#7287fd;
    --ctp-text:#4c4f69; --ctp-subtext1:#5c5f77; --ctp-subtext0:#6c6f85;
    --ctp-overlay2:#7c7f93; --ctp-overlay1:#8c8fa1; --ctp-overlay0:#9ca0b0;
    --ctp-surface2:#acb0be; --ctp-surface1:#bcc0cc; --ctp-surface0:#ccd0da;
    --ctp-base:#eff1f5; --ctp-mantle:#e6e9ef; --ctp-crust:#dce0e8;

    /* ===== Семантический слой (ссылается на сырой; определяется ОДИН раз) ===== */
    --crm-bg: var(--ctp-mantle);
    --crm-surface: var(--ctp-base);
    --crm-surface-muted: var(--ctp-surface0);
    --crm-text: var(--ctp-text);
    --crm-text-muted: var(--ctp-subtext0);
    --crm-border: var(--ctp-surface1);
    --crm-shadow: 0 14px 34px rgba(76, 79, 105, 0.10);
    --crm-brand: var(--ctp-peach);
    --crm-brand-strong: color-mix(in srgb, var(--ctp-peach) 78%, var(--ctp-text));
    --crm-brand-soft: color-mix(in srgb, var(--ctp-peach) 14%, var(--ctp-base));
    --crm-accent: var(--ctp-teal);
    --crm-accent-soft: color-mix(in srgb, var(--ctp-teal) 14%, var(--ctp-base));
    --crm-success: var(--ctp-green);
    --crm-success-soft: color-mix(in srgb, var(--ctp-green) 16%, var(--ctp-base));
    --crm-warning: var(--ctp-yellow);
    --crm-warning-soft: color-mix(in srgb, var(--ctp-yellow) 18%, var(--ctp-base));
    --crm-danger: var(--ctp-red);
    --crm-danger-soft: color-mix(in srgb, var(--ctp-red) 14%, var(--ctp-base));
    --crm-maroon: var(--ctp-maroon);
    --crm-maroon-soft: color-mix(in srgb, var(--ctp-maroon) 14%, var(--ctp-base));
    --crm-info: var(--ctp-sapphire);
    --crm-info-soft: color-mix(in srgb, var(--ctp-sapphire) 16%, var(--ctp-base));
    --crm-success-ink: color-mix(in srgb, var(--ctp-green) 62%, var(--ctp-text));
    --crm-warning-ink: color-mix(in srgb, var(--ctp-yellow) 55%, var(--ctp-text));
    --crm-danger-ink: color-mix(in srgb, var(--ctp-red) 68%, var(--ctp-text));
    --crm-maroon-ink: color-mix(in srgb, var(--ctp-maroon) 68%, var(--ctp-text));
    --crm-info-ink: color-mix(in srgb, var(--ctp-sapphire) 65%, var(--ctp-text));
    --crm-radius-sm: 12px;
    --crm-radius-md: 18px;
    --crm-radius-lg: 24px;

    /* ===== Станочка --sq-* (на токенах; чинит контраст чипов) ===== */
    --sq-head-bg: var(--ctp-mantle); --sq-head-text: var(--ctp-subtext0); --sq-head-border: var(--ctp-surface1);
    --sq-sub: var(--ctp-subtext0);
    --sq-make: color-mix(in srgb, var(--ctp-maroon) 68%, var(--ctp-text)); --sq-model: color-mix(in srgb, var(--ctp-yellow) 55%, var(--ctp-text)); --sq-engine: color-mix(in srgb, var(--ctp-teal) 70%, var(--ctp-text));
    --sq-plate: color-mix(in srgb, var(--ctp-lavender) 65%, var(--ctp-text)); --sq-phone: color-mix(in srgb, var(--ctp-sapphire) 65%, var(--ctp-text));
    --sq-chip-bg: var(--ctp-surface0); --sq-chip-border: var(--ctp-surface1); --sq-chip-text: var(--ctp-subtext1);
    --sq-chip-blue-bg: color-mix(in srgb, var(--ctp-blue) 16%, var(--ctp-base)); --sq-chip-blue-border: color-mix(in srgb, var(--ctp-blue) 32%, transparent); --sq-chip-blue-text: color-mix(in srgb, var(--ctp-blue) 65%, var(--ctp-text));
    --sq-chip-amber-bg: color-mix(in srgb, var(--ctp-yellow) 18%, var(--ctp-base)); --sq-chip-amber-border: color-mix(in srgb, var(--ctp-yellow) 34%, transparent); --sq-chip-amber-text: color-mix(in srgb, var(--ctp-yellow) 55%, var(--ctp-text));
    --sq-chip-green-bg: color-mix(in srgb, var(--ctp-green) 18%, var(--ctp-base)); --sq-chip-green-border: color-mix(in srgb, var(--ctp-green) 34%, transparent); --sq-chip-green-text: color-mix(in srgb, var(--ctp-green) 62%, var(--ctp-text));
    --sq-auto-bg: color-mix(in srgb, var(--ctp-blue) 10%, var(--ctp-base)); --sq-auto-border: color-mix(in srgb, var(--ctp-blue) 45%, transparent); --sq-auto-text: color-mix(in srgb, var(--ctp-blue) 65%, var(--ctp-text));
    --sq-cash-bg: color-mix(in srgb, var(--ctp-yellow) 12%, var(--ctp-base)); --sq-cash-border: color-mix(in srgb, var(--ctp-yellow) 38%, transparent); --sq-cash-text: color-mix(in srgb, var(--ctp-yellow) 55%, var(--ctp-text));
}

[data-bs-theme="dark"] {
    /* ===== Catppuccin MOCHA — переопределяем ТОЛЬКО сырой слой; семантика авто-следует ===== */
    --ctp-rosewater:#f5e0dc; --ctp-flamingo:#f2cdcd; --ctp-pink:#f5c2e7; --ctp-mauve:#cba6f7;
    --ctp-red:#f38ba8; --ctp-maroon:#eba0ac; --ctp-peach:#fab387;
    --ctp-yellow:#f9e2af; --ctp-green:#a6e3a1; --ctp-teal:#94e2d5; --ctp-sky:#89dceb;
    --ctp-sapphire:#74c7ec; --ctp-blue:#89b4fa; --ctp-lavender:#b4befe;
    --ctp-text:#cdd6f4; --ctp-subtext1:#bac2de; --ctp-subtext0:#a6adc8;
    --ctp-overlay2:#9399b2; --ctp-overlay1:#7f849c; --ctp-overlay0:#6c7086;
    --ctp-surface2:#585b70; --ctp-surface1:#45475a; --ctp-surface0:#313244;
    --ctp-base:#1e1e2e; --ctp-mantle:#181825; --ctp-crust:#11111b;
    --crm-shadow: 0 18px 40px rgba(0, 0, 0, 0.30);
}
