/* 策略實驗室 — generated from tokens.json */

:root, [data-theme="dark"] {
  --bg: #0b0e13;
  --surface: #12161d;
  --surface-raised: #1a1f28;
  --line: #252b36;
  --line-strong: #6b768a;
  --ink: #e7ebf1;
  --ink-muted: #9aa4b3;
  --ink-faint: #7f8a9b;
  --accent: #5b9cff;
  --accent-soft: #172742;
  --on-accent: #0b0e13;
  --focus: var(--accent);
  --up: #5ce5b4;
  --up-soft: #0f2b23;
  --down: #f25c54;
  --down-soft: #331a1a;
  --flat: var(--ink-muted);
  --heat-up-1: #10281f;
  --heat-up-2: #13442f;
  --heat-up-3: #176341;
  --heat-down-1: #2b1618;
  --heat-down-2: #4f1d20;
  --heat-down-3: #7a252b;
  --heat-zero: #1e232c;
  --heat-empty: #151a21;
  --warn: #f0b44c;
  --warn-soft: #33270f;
  --danger: #f25c54;
  --danger-soft: #331a1a;
  --live: var(--accent);
  --shadow-pop: 0 8px 24px rgba(0, 0, 0, 0.5);
  color-scheme: dark;
}
[data-theme="light"] {
  --bg: #f4f6f9;
  --surface: #ffffff;
  --surface-raised: #f0f2f6;
  --line: #e2e6ec;
  --line-strong: #7c8696;
  --ink: #0f141b;
  --ink-muted: #556070;
  --ink-faint: #5f6a7a;
  --accent: #1f5fd6;
  --accent-soft: #e6eefc;
  --on-accent: #ffffff;
  --focus: var(--accent);
  --up: #00795a;
  --up-soft: #e6f5ee;
  --down: #cc2b3c;
  --down-soft: #fcecee;
  --flat: var(--ink-muted);
  --heat-up-1: #e2f4ea;
  --heat-up-2: #bfe6d0;
  --heat-up-3: #8fd2ae;
  --heat-down-1: #fbe5e8;
  --heat-down-2: #f6c2ca;
  --heat-down-3: #ee99a6;
  --heat-zero: #e9ecf0;
  --heat-empty: #f7f8fa;
  --warn: #8f5b00;
  --warn-soft: #fbf1de;
  --danger: #cc2b3c;
  --danger-soft: #fcecee;
  --live: var(--accent);
  --shadow-pop: 0 8px 24px rgba(15, 20, 27, 0.14);
  color-scheme: light;
}
[data-theme="dark-tw"] {
  --focus: var(--accent);
  --up: #f25c54;
  --up-soft: #331a1a;
  --down: #5ce5b4;
  --down-soft: #0f2b23;
  --flat: var(--ink-muted);
  --heat-up-1: #2b1618;
  --heat-up-2: #4f1d20;
  --heat-up-3: #7a252b;
  --heat-down-1: #10281f;
  --heat-down-2: #13442f;
  --heat-down-3: #176341;
  --live: var(--accent);
  color-scheme: dark;
}
[data-theme="dark-cvd"] {
  --accent: #c3a6ff;
  --accent-soft: #2a2142;
  --focus: var(--accent);
  --up: #56b4e9;
  --up-soft: #0e2533;
  --down: #e69f00;
  --down-soft: #30230a;
  --flat: var(--ink-muted);
  --heat-up-1: #0e2230;
  --heat-up-2: #123a52;
  --heat-up-3: #185478;
  --heat-down-1: #2a1f0b;
  --heat-down-2: #4a340a;
  --heat-down-3: #6b4a08;
  --warn: #f0e442;
  --danger: #ff7a5c;
  --live: var(--accent);
  color-scheme: dark;
}
:root {
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 10px;
  --radius-pill: 999px;
  --control-sm: 28px;
  --control-md: 36px;
  --row: 48px;
  --row-dense: 36px;
  --page-max: 1440px;
  --font-sans: "IBM Plex Sans", "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", system-ui, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, "PingFang TC", "Noto Sans TC", monospace;
}
.text-display { font-family: var(--font-sans); font-size: 28px; line-height: 36px; font-weight: 600; letter-spacing: -0.01em; }
.text-title { font-family: var(--font-sans); font-size: 18px; line-height: 26px; font-weight: 600; }
.text-heading { font-family: var(--font-sans); font-size: 15px; line-height: 22px; font-weight: 600; }
.text-body { font-family: var(--font-sans); font-size: 14px; line-height: 22px; font-weight: 400; }
.text-label { font-family: var(--font-sans); font-size: 12px; line-height: 16px; font-weight: 500; }
.text-caption { font-family: var(--font-sans); font-size: 12px; line-height: 18px; font-weight: 400; }
.num-xl { font-family: var(--font-mono); font-size: 28px; line-height: 34px; font-weight: 500; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.num-lg { font-family: var(--font-mono); font-size: 18px; line-height: 24px; font-weight: 500; font-variant-numeric: tabular-nums; }
.num-md { font-family: var(--font-mono); font-size: 13px; line-height: 20px; font-weight: 400; font-variant-numeric: tabular-nums; }
.num-sm { font-family: var(--font-mono); font-size: 11px; line-height: 14px; font-weight: 400; font-variant-numeric: tabular-nums; }
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/IBMPlexSans-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/IBMPlexSans-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../fonts/IBMPlexSans-600.woff2") format("woff2"); font-weight: 600; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../fonts/IBMPlexMono-400.woff2") format("woff2"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../fonts/IBMPlexMono-500.woff2") format("woff2"); font-weight: 500; font-style: normal; font-display: swap; }
