/*
 * theme.css —— 基于 new-api (QuantumNous/new-api) 官方主题令牌
 * 适配 51Token 线上实际主题：forest-whisper（森林低语）预设
 *   - 主色族（primary / ring / sidebar-primary）取自 51Token 部署 CSS
 *   - 亮色 primary #007d70，暗色 primary #009683，前景白
 *   - 暗色底 #1e1e1e（暖近黑），亮色前景 #0a0a0a（取自 51Token 实测）
 * 其余 base 令牌与 new-api 默认一致。
 */

:root {
  --radius: 1rem;
  --radius-lg: 1rem;
  --radius-md: 0.75rem;
  --radius-sm: 0.5rem;
  --app-header-height: 3rem;
  --font-sans: 'Public Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-serif: 'Lora', 'Noto Serif SC', 'Source Han Serif SC', 'Songti SC', 'SimSun', Georgia, serif;

  --background: #fff;
  --foreground: #0a0a0a;
  --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: #007d70;
  --primary-foreground: #fff;
  --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: #007d70;
  --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);
  --sidebar: color-mix(in oklch, var(--foreground) 0.5%, var(--background));
  --sidebar-foreground: oklch(0.145 0 0);
  --sidebar-primary: #007d70;
  --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);
}

.dark {
  --background: #1e1e1e;
  --foreground: #f5f5f5;
  --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: #009683;
  --primary-foreground: #fff;
  --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: #009683;
  --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: #009683;
  --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);
}

/* ── 基础重置 ── */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--app-header-height) + 1rem); }
body {
  margin: 0;
  font-family: var(--font-sans);
  background: var(--background);
  color: var(--foreground);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
a { color: var(--primary); text-decoration: none; }
a:hover { text-decoration: underline; }
img, svg { max-width: 100%; }
:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; border-radius: 4px; }
