/*
Copyright (C) 2023-2026 QuantumNous

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

For commercial licensing, please contact support@quantumnous.com
*/
@custom-variant dark (&:is(.dark *));

@theme inline {
  --font-sans: var(--font-ui-sans);
  --font-public-sans: 'Public Sans Variable', 'Public Sans', sans-serif;
  /* Editorial serif token — the body face used by the `serif` font axis
   * and by presets that opt in (currently Anthropic). Lora carries only
   * Latin glyphs, so the stack walks through CJK serifs (Noto / Source Han
   * / Songti / SimSun) before the generic `serif` fallback. Without these
   * explicit CJK fonts the browser's generic-serif pick on Windows is
   * non-deterministic at small sizes and often appears sans-like. */
  --font-serif:
    'Lora Variable', 'Lora', 'Source Serif Pro', 'Source Serif 4',
    'Noto Serif SC', 'Noto Serif TC', 'Noto Serif JP', 'Noto Serif KR',
    'Source Han Serif SC', 'Source Han Serif TC', 'Source Han Serif',
    'Songti SC', 'STSong', 'STSongti-SC-Regular', 'PingFang SC', 'SimSun',
    'NSimSun', '宋体', 'FangSong', '仿宋', 'KaiTi', '楷体', Georgia,
    'Times New Roman', Cambria, 'Liberation Serif', serif;
  --font-inter:
    -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
    'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
  --font-manrope:
    -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu',
    'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;

  --color-background: var(--background);
  --color-foreground: var(--foreground);
  --color-card: var(--card);
  --color-card-foreground: var(--card-foreground);
  --color-popover: var(--popover);
  --color-popover-foreground: var(--popover-foreground);
  --color-primary: var(--primary);
  --color-primary-foreground: var(--primary-foreground);
  --color-secondary: var(--secondary);
  --color-secondary-foreground: var(--secondary-foreground);
  --color-muted: var(--muted);
  --color-muted-foreground: var(--muted-foreground);
  --color-accent: var(--accent);
  --color-accent-foreground: var(--accent-foreground);
  --color-destructive: var(--destructive);
  --color-destructive-foreground: var(--destructive-foreground);
  --color-success: var(--success);
  --color-success-foreground: var(--success-foreground);
  --color-warning: var(--warning);
  --color-warning-foreground: var(--warning-foreground);
  --color-info: var(--info);
  --color-info-foreground: var(--info-foreground);
  --color-neutral: var(--neutral);
  --color-neutral-foreground: var(--neutral-foreground);
  --color-border: var(--border);
  --color-input: var(--input);
  --color-ring: var(--ring);
  --color-chart-1: var(--chart-1);
  --color-chart-2: var(--chart-2);
  --color-chart-3: var(--chart-3);
  --color-chart-4: var(--chart-4);
  --color-chart-5: var(--chart-5);
  --color-overview-accent-1: var(--overview-accent-1);
  --color-overview-accent-2: var(--overview-accent-2);
  --color-overview-accent-3: var(--overview-accent-3);
  --color-sidebar: var(--sidebar);
  --color-sidebar-foreground: var(--sidebar-foreground);
  --color-sidebar-primary: var(--sidebar-primary);
  --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
  --color-sidebar-accent: var(--sidebar-accent);
  --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
  --color-sidebar-border: var(--sidebar-border);
  --color-sidebar-ring: var(--sidebar-ring);

  --radius-sm: calc(var(--radius) * 0.6);
  --radius-md: calc(var(--radius) * 0.8);
  --radius-lg: var(--radius);
  --radius-xl: calc(var(--radius) * 1.4);
  --radius-2xl: calc(var(--radius) * 1.8);
  --radius-3xl: calc(var(--radius) * 2.2);
  --radius-4xl: calc(var(--radius) * 2.6);
}

:root {
  --radius: 0.5rem;
  --app-header-height: 3.5rem;
  /* Static build-channel fallback consumed when JS hasn't booted yet. */
  --app-rev: '2k6e8r7p';
  /* Auto starts with the browser font, including before JS applies the
   * saved preference. Explicit Sans selects Public Sans in theme-presets.css. */
  --font-ui-sans: sans-serif;
  --font-body: var(--font-ui-sans);
  --background: oklch(0.99 0.004 250);
  --foreground: oklch(0.19 0.012 250);
  --card: oklch(0.998 0.002 250);
  --card-foreground: oklch(0.19 0.012 250);
  --popover: oklch(0.998 0.002 250);
  --popover-foreground: oklch(0.19 0.012 250);
  --primary: oklch(0.51 0.13 166);
  --primary-foreground: oklch(0.99 0.004 166);
  --secondary: oklch(0.94 0.04 75);
  --secondary-foreground: oklch(0.37 0.075 50);
  --muted: oklch(0.96 0.006 250);
  --muted-foreground: oklch(0.48 0.012 250);
  --accent: color-mix(in oklch, var(--primary) 8%, var(--background));
  --accent-foreground: oklch(0.145 0 0);
  --destructive: oklch(0.577 0.245 27.325);
  --destructive-foreground: oklch(0.985 0 0);
  --success: oklch(0.596 0.145 163.225);
  --success-foreground: oklch(0.985 0 0);
  --warning: oklch(0.681 0.162 75.834);
  --warning-foreground: oklch(0.145 0 0);
  --info: oklch(0.588 0.158 241.966);
  --info-foreground: oklch(0.985 0 0);
  --neutral: oklch(0.708 0 0);
  --neutral-foreground: oklch(0.145 0 0);
  --border: oklch(0.91 0.008 250);
  --input: oklch(0.91 0.008 250);
  --ring: oklch(0.58 0.12 166);
  --chart-1: oklch(0.62 0.15 166);
  --chart-2: oklch(0.66 0.16 42);
  --chart-3: oklch(0.58 0.15 250);
  --chart-4: oklch(0.72 0.14 92);
  --chart-5: oklch(0.62 0.16 320);
  --overview-accent-1: oklch(0.62 0.15 166);
  --overview-accent-2: oklch(0.62 0.15 250);
  --overview-accent-3: oklch(0.68 0.16 42);
  --sidebar: oklch(0.245 0.044 166);
  --sidebar-foreground: oklch(0.955 0.008 160);
  --sidebar-primary: oklch(0.82 0.15 153);
  --sidebar-primary-foreground: oklch(0.19 0.035 166);
  --sidebar-accent: oklch(0.33 0.048 166);
  --sidebar-accent-foreground: oklch(0.97 0.015 155);
  --sidebar-border: oklch(1 0 0 / 10%);
  --sidebar-ring: oklch(0.58 0.12 166);
  --skeleton-base: oklch(0.97 0 0);
  --skeleton-highlight: oklch(0.985 0 0);
  --table-row: var(--background);
  --table-header: color-mix(
    in oklch,
    var(--foreground) 1.5%,
    var(--background)
  );
  --table-header-hover: color-mix(
    in oklch,
    var(--foreground) 3%,
    var(--background)
  );
  /* Disabled rows: kept subtle so they read as "quiet", not as a colored
     alert state. */
  --table-disabled: color-mix(
    in oklch,
    var(--foreground) 3%,
    var(--background)
  );
  --table-disabled-hover: color-mix(
    in oklch,
    var(--foreground) 4.5%,
    var(--background)
  );
  --table-disabled-border: color-mix(
    in oklch,
    var(--foreground) 16%,
    var(--background)
  );
}

.dark {
  /* Native controls follow the theme; Dark Reader also reads this to detect
     the built-in dark theme. */
  color-scheme: dark;
  /* OpenAI-like dark mode with a crisp charcoal canvas. */
  --background: oklch(0.19 0.008 250);
  --foreground: oklch(0.94 0.005 250);
  --card: oklch(0.23 0.01 250);
  --card-foreground: oklch(0.94 0.005 250);
  --popover: oklch(0.25 0.01 250);
  --popover-foreground: oklch(0.94 0.005 250);
  --primary: oklch(0.72 0.13 166);
  --primary-foreground: oklch(0.16 0.035 166);
  --secondary: oklch(0.34 0.04 75);
  --secondary-foreground: oklch(0.94 0.035 75);
  --muted: oklch(0.27 0.01 250);
  --muted-foreground: oklch(0.72 0.012 250);
  --accent: color-mix(in oklch, var(--primary) 16%, var(--background));
  --accent-foreground: oklch(0.94 0.005 250);
  --destructive: oklch(0.704 0.191 22.216);
  --destructive-foreground: oklch(0.985 0 0);
  --success: oklch(0.696 0.17 162.48);
  --success-foreground: oklch(0.145 0 0);
  --warning: oklch(0.769 0.188 70.08);
  --warning-foreground: oklch(0.145 0 0);
  --info: oklch(0.613 0.14 239.919);
  --info-foreground: oklch(0.145 0 0);
  --neutral: oklch(0.76 0 0);
  --neutral-foreground: oklch(0.155 0 0);
  --border: oklch(1 0 0 / 10%);
  --input: oklch(1 0 0 / 17%);
  --ring: oklch(0.72 0.12 166);
  --chart-1: oklch(0.75 0.13 166);
  --chart-2: oklch(0.78 0.14 42);
  --chart-3: oklch(0.75 0.14 250);
  --chart-4: oklch(0.82 0.13 92);
  --chart-5: oklch(0.75 0.14 320);
  --overview-accent-1: oklch(0.75 0.13 166);
  --overview-accent-2: oklch(0.75 0.14 250);
  --overview-accent-3: oklch(0.78 0.14 42);
  --sidebar: oklch(0.195 0.03 166);
  --sidebar-foreground: oklch(0.93 0.008 160);
  --sidebar-primary: oklch(0.78 0.14 153);
  --sidebar-primary-foreground: oklch(0.16 0.03 166);
  --sidebar-accent: oklch(0.29 0.04 166);
  --sidebar-accent-foreground: oklch(0.96 0.015 155);
  --sidebar-border: oklch(1 0 0 / 10%);
  --sidebar-ring: oklch(0.72 0.12 166);
  --skeleton-base: oklch(0.335 0 0);
  --skeleton-highlight: oklch(0.44 0 0);
  --table-row: var(--background);
  --table-header: color-mix(in oklch, var(--foreground) 6%, var(--background));
  --table-header-hover: color-mix(
    in oklch,
    var(--foreground) 9%,
    var(--background)
  );
  --table-disabled: color-mix(
    in oklch,
    var(--foreground) 7%,
    var(--background)
  );
  --table-disabled-hover: color-mix(
    in oklch,
    var(--foreground) 9.5%,
    var(--background)
  );
  --table-disabled-border: color-mix(
    in oklch,
    var(--foreground) 24%,
    var(--background)
  );
}
