/* ─────────────────────────────────────────────────────────────────────────
 * ThirdC Studio · tokens.css
 * 契约来源：OpenFlow 前台设计系统（oklch / 零 hex / 弹簧缓动 / 圆角三档 / 玻璃）
 *
 * 本版重点：**深色不再纯黑**——暗色底从 19% L 提到 26% L，层级用亮度差表达，
 * 而不是靠把背景压黑。亮色为暖纸感。默认跟随系统（data-theme=auto 由 JS 落定）。
 * ─────────────────────────────────────────────────────────────────────── */
@font-face{font-family:"Space Grotesk";src:url("fonts/space-grotesk-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url("fonts/space-grotesk-500.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url("fonts/space-grotesk-600.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url("fonts/space-grotesk-700.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains-mono-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains-mono-500.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("fonts/jetbrains-mono-600.woff2") format("woff2");font-weight:600;font-display:swap}

/* ── 亮色 · 暖纸 ── */
:root,[data-theme="light"]{
  --bg: oklch(97.4% .012 85);
  --bg-soft: oklch(95.2% .015 84);
  --bg-deep: oklch(92.6% .018 83);
  --surface: oklch(100% 0 0/.74);
  --surface-strong: oklch(100% 0 0/.93);
  --fg: oklch(24% .022 70);
  --muted: oklch(47% .018 72);
  --faint: oklch(53% .016 76);
  --border: oklch(88% .012 82);
  --border-strong: oklch(79% .018 80);
  --border-soft: oklch(88% .012 82/.6);
  --hover: oklch(24% .02 70/.055);
  --hover-strong: oklch(24% .02 70/.11);
  --accent: oklch(54% .17 258);
  --accent-strong: oklch(48% .17 258);
  --accent-soft: oklch(54% .17 258/.13);
  --on-accent: oklch(100% 0 0);
  --ok: oklch(56% .16 152);        --ok-soft: oklch(56% .16 152/.13);
  --warn: oklch(64% .15 72);       --warn-soft: oklch(64% .15 72/.15);
  --danger: oklch(55% .2 25);      --danger-soft: oklch(55% .2 25/.12);
  --glass: oklch(100% 0 0/.55);
  --glass-bright: oklch(100% 0 0/.72);
  --glass-border: oklch(100% 0 0/.7);
  --blob-a: oklch(76% .12 262/.34);
  --blob-b: oklch(74% .13 305/.26);
  --blob-c: oklch(78% .11 200/.24);
  --shadow: 0 22px 56px -26px oklch(38% .05 80/.30);
  --shadow-sm: 0 10px 26px -14px oklch(38% .05 80/.22);
  --r-lg: 26px; --r-md: 18px; --r-sm: 12px;
  --chrome-h: 56px; --sb-w: 248px; --container: 1120px;
  --font-display: "Space Grotesk","PingFang SC","HarmonyOS Sans SC","MiSans","Segoe UI",system-ui,sans-serif;
  --font-body: "Space Grotesk",-apple-system,BlinkMacSystemFont,"PingFang SC","HarmonyOS Sans SC","MiSans","Segoe UI",system-ui,sans-serif;
  --font-mono: "JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --ease-spring: cubic-bezier(.32,.72,0,1);
  --ease-out: cubic-bezier(.22,1,.36,1);

  /* ThirdC 画布 / 对话 / 数据类型 */
  --node-bg: oklch(100% 0 0/.86);
  --node-bg-active: oklch(100% 0 0/.98);
  --node-w: 300px;
  --node-shadow: 0 16px 40px -22px oklch(38% .05 80/.32);
  --chat-bg: color-mix(in oklab, var(--bg) 86%, transparent);
  --grid-dot: oklch(24% .02 70/.12);
  --edge: oklch(54% .17 258/.34);
  --edge-soft: oklch(24% .02 70/.14);
  --col-bg: oklch(100% 0 0/.42);
  --col-head: oklch(100% 0 0/.6);
  --type-doc: oklch(54% .17 258);
  --type-capture: oklch(56% .16 152);
  --type-asset: oklch(64% .15 72);
  --type-query: oklch(58% .16 305);
  --axis: oklch(24% .02 70/.28);
  color-scheme: light;
}

/* ── 暗色 · 石墨（不是纯黑）── */
[data-theme="dark"]{
  --bg: oklch(26% .012 75);
  --bg-soft: oklch(29.5% .013 75);
  --bg-deep: oklch(23% .012 75);
  --surface: oklch(35% .014 75/.62);
  --surface-strong: oklch(40% .016 75/.86);
  --fg: oklch(95% .006 85);
  --muted: oklch(77% .012 80);
  --faint: oklch(70% .012 80);
  --border: oklch(100% 0 0/.14);
  --border-strong: oklch(100% 0 0/.26);
  --border-soft: oklch(100% 0 0/.09);
  --hover: oklch(95% .006 85/.08);
  --hover-strong: oklch(95% .006 85/.15);
  --accent: oklch(78% .12 258);
  --accent-strong: oklch(84% .11 258);
  --accent-soft: oklch(78% .12 258/.18);
  --on-accent: oklch(22% .03 260);
  --ok: oklch(78% .14 152); --ok-soft: oklch(78% .14 152/.18);
  --warn: oklch(80% .12 75); --warn-soft: oklch(80% .12 75/.19);
  --danger: oklch(76% .15 25); --danger-soft: oklch(76% .15 25/.18);
  --glass: oklch(38% .014 75/.5);
  --glass-bright: oklch(44% .014 75/.64);
  --glass-border: oklch(100% 0 0/.18);
  --blob-a: oklch(66% .13 262/.24);
  --blob-b: oklch(62% .14 305/.20);
  --blob-c: oklch(64% .12 200/.18);
  --shadow: 0 24px 58px -26px oklch(0% 0 0/.5);
  --shadow-sm: 0 10px 26px -14px oklch(0% 0 0/.42);
  --node-bg: oklch(33% .014 75/.86);
  --node-bg-active: oklch(39% .016 75/.94);
  --node-shadow: 0 16px 40px -22px oklch(0% 0 0/.55);
  --chat-bg: color-mix(in oklab, var(--bg) 84%, transparent);
  --grid-dot: oklch(95% .006 85/.12);
  --edge: oklch(78% .12 258/.40);
  --edge-soft: oklch(95% .006 85/.16);
  --col-bg: oklch(31% .013 75/.5);
  --col-head: oklch(36% .014 75/.7);
  --type-doc: oklch(78% .12 258);
  --type-capture: oklch(78% .14 152);
  --type-asset: oklch(80% .12 75);
  --type-query: oklch(76% .14 305);
  --axis: oklch(95% .006 85/.30);
  color-scheme: dark;
}
