/*
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: '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: 1rem;
  --app-header-height: 3rem;
  /* Static build-channel fallback consumed when JS hasn't booted yet. */
  --app-rev: '2k6e8r7p';
  /* Currently active body font. The font axis swaps this between
   * `--font-sans` and `--font-serif` via `[data-theme-font='...']` blocks
   * in theme-presets.css. Default mirrors `--font-sans` so behavior is
   * identical when no font preference is set. */
  --font-body: var(--font-sans);
  --background: oklch(1 0 0);
  --foreground: oklch(0.145 0 0);
  --card: oklch(1 0 0);
  --card-foreground: oklch(0.145 0 0);
  --popover: oklch(1 0 0);
  --popover-foreground: oklch(0.145 0 0);
  --primary: oklch(0.692 0.141 243.716);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.95 0 0);
  --secondary-foreground: oklch(0.42 0.16 250);
  --muted: oklch(0.97 0 0);
  --muted-foreground: oklch(0.49 0 0);
  --accent: color-mix(in oklch, var(--primary) 12%, 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.93 0 0);
  --input: oklch(0.93 0 0);
  --ring: oklch(0.708 0.16 249.003);
  --chart-1: oklch(0.72 0.18 250);
  --chart-2: oklch(0.65 0.15 200);
  --chart-3: oklch(0.7 0.12 280);
  --chart-4: oklch(0.68 0.19 325);
  --chart-5: oklch(0.68 0.16 155);
  --overview-accent-1: oklch(0.72 0.18 250);
  --overview-accent-2: oklch(0.65 0.15 200);
  --overview-accent-3: oklch(0.7 0.12 280);
  --sidebar: color-mix(in oklch, var(--foreground) 0.5%, var(--background));
  --sidebar-foreground: oklch(0.145 0 0);
  --sidebar-primary: oklch(0.64 0.197 253.892);
  --sidebar-primary-foreground: oklch(1 0 0);
  --sidebar-accent: color-mix(in oklch, var(--primary) 12%, var(--background));
  --sidebar-accent-foreground: oklch(0.579 0.196 255.909);
  --sidebar-border: oklch(0.93 0 0);
  --sidebar-ring: oklch(0.58 0.2 250);
  --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 {
  /* OpenAI-like dark mode with a crisp charcoal canvas. */
  --background: oklch(0.235 0 0);
  --foreground: oklch(0.965 0 0);
  --card: oklch(0.285 0 0);
  --card-foreground: oklch(0.965 0 0);
  --popover: oklch(0.305 0 0);
  --popover-foreground: oklch(0.965 0 0);
  --primary: oklch(0.54 0.142 248.516);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.335 0 0);
  --secondary-foreground: oklch(0.9 0.05 250);
  --muted: oklch(0.305 0 0);
  --muted-foreground: oklch(0.78 0 0);
  --accent: color-mix(in oklch, var(--primary) 20%, var(--background));
  --accent-foreground: oklch(0.985 0 0);
  --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.554 0.148 250.726);
  --chart-1: oklch(0.76 0.14 250);
  --chart-2: oklch(0.76 0.13 200);
  --chart-3: oklch(0.76 0.13 285);
  --chart-4: oklch(0.75 0.16 325);
  --chart-5: oklch(0.76 0.14 155);
  --sidebar: oklch(0.225 0 0);
  --sidebar-foreground: oklch(0.95 0 0);
  --sidebar-primary: oklch(0.588 0.123 246.488);
  --sidebar-primary-foreground: oklch(1 0 0);
  --sidebar-accent: color-mix(in oklch, var(--primary) 20%, var(--background));
  --sidebar-accent-foreground: oklch(0.9 0.05 250);
  --sidebar-border: oklch(1 0 0 / 11%);
  --sidebar-ring: oklch(0.7 0.17 250);
  --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)
  );
}
