/* Hallmark · macrostructure: Workbench · genre: modern-minimal · theme: Cobalt · tone: technical · anchor hue: 256 · enrichment: none · nav: existing product rail · footer: none (application shell)
 * pre-emit critique: P4 H4 E4 S5 R4 V4
 */
:root {
  --color-paper: oklch(98.5% 0.004 250);
  --color-paper-2: oklch(96.5% 0.008 250);
  --color-paper-3: oklch(93.5% 0.012 250);
  --color-ink: oklch(24% 0.02 258);
  --color-ink-2: oklch(34% 0.018 257);
  --color-muted: oklch(50% 0.016 257);
  --color-rule: oklch(89% 0.012 252);
  --color-rule-2: oklch(78% 0.025 252);
  --color-accent: oklch(58% 0.20 256);
  --color-accent-ink: oklch(98.5% 0.004 250);
  --color-focus: oklch(48% 0.18 256);
  --color-success: oklch(53% 0.14 158);
  --color-success-paper: oklch(95% 0.035 158);
  --color-warning: oklch(58% 0.14 75);
  --color-warning-paper: oklch(95% 0.035 75);
  --color-error: oklch(54% 0.19 25);
  --color-error-paper: oklch(96% 0.025 25);
  --color-graphite: oklch(22% 0.016 260);

  --font-display: "Space Grotesk", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-body: "IBM Plex Sans", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-mono: "JetBrains Mono", "SFMono-Regular", monospace;

  --space-3xs: 0.125rem;
  --space-2xs: 0.25rem;
  --space-xs: 0.5rem;
  --space-sm: 0.75rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2.5rem;
  --space-2xl: 4rem;
  --space-3xl: 6rem;

  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-md: 1.25rem;
  --text-lg: 1.5625rem;
  --text-xl: 1.953rem;

  --radius-sm: 0.375rem;
  --radius-md: 0.625rem;
  --radius-lg: 0.875rem;
  --rule-default: 1px;

  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-micro: 120ms;
  --dur-short: 180ms;
  --dur-panel: 280ms;

  --z-base: 1;
  --z-raised: 10;
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-modal: 400;
  --z-toast: 500;
  --z-tooltip: 600;

  /* 组件语义别名：让新交互不依赖散落的具体色值。 */
  --hm-text-primary: var(--color-ink);
  --hm-text-secondary: var(--color-ink-2);
  --hm-text-tertiary: var(--color-muted);
  --hm-surface-raised: var(--color-paper);
  --hm-surface-hover: var(--color-paper-2);
  --hm-border-subtle: var(--color-rule);
  --hm-border-focus: var(--color-focus);
  --hm-accent: var(--color-accent);
  --hm-accent-strong: var(--color-focus);
  --hm-accent-subtle: oklch(96% 0.025 256);
  --hm-accent-border: oklch(78% 0.08 256);
  --hm-danger: var(--color-error);
  --hm-danger-subtle: var(--color-error-paper);
  --hm-danger-border: oklch(76% 0.08 25);
  --hm-success: var(--color-success);
  --hm-success-subtle: var(--color-success-paper);
  --hm-warning: var(--color-warning);
  --hm-warning-subtle: var(--color-warning-paper);
  --hm-focus-ring: oklch(65% 0.15 256 / 0.22);
  --hm-shadow-sm: 0 2px 8px oklch(24% 0.02 258 / 0.08);
  --hm-shadow-md: 0 12px 30px oklch(24% 0.02 258 / 0.12);
  --hm-shadow-composer: 0 18px 55px oklch(34% 0.04 256 / 0.12);
  --hm-font-mono: var(--font-mono);
  --hm-space-1: var(--space-2xs);
  --hm-space-2: var(--space-xs);
  --hm-space-3: var(--space-sm);
  --hm-text-xs: var(--text-xs);
  --hm-text-sm: var(--text-sm);
  --hm-radius-sm: var(--radius-sm);
  --hm-radius-md: var(--radius-md);
  --hm-radius-pill: 999px;
  --hm-ease-out: var(--ease-out);
  --hm-ease-standard: var(--ease-in-out);
  --hm-duration-fast: var(--dur-short);
}

/* VSAI architecture trace workbench · Cobalt theme · 2026-08-26
 * Append-only override so older architecture artifacts keep their original palette.
 */
[data-arch-theme="cobalt"] {
  --arch-paper: oklch(98.4% 0.008 255);
  --arch-paper-2: oklch(96.2% 0.016 255);
  --arch-paper-3: oklch(92.5% 0.028 255);
  --arch-ink: oklch(22% 0.035 258);
  --arch-ink-2: oklch(34% 0.04 258);
  --arch-muted: oklch(49% 0.035 258);
  --arch-rule: oklch(86% 0.035 255);
  --arch-rule-strong: oklch(69% 0.08 255);
  --arch-accent: oklch(50% 0.2 258);
  --arch-focus: oklch(55% 0.21 258);
  --arch-focus-ring: oklch(66% 0.15 258 / 0.26);
  --arch-runtime: oklch(48% 0.14 258);
  --arch-runtime-paper: oklch(95% 0.035 258);
  --arch-mark: oklch(91% 0.07 245);
  --arch-overlay: oklch(17% 0.04 258 / 0.5);
  --arch-shadow: 0 1.25rem 3.75rem oklch(24% 0.06 258 / 0.13);
  --arch-shadow-small: 0 0.5rem 1.5rem oklch(24% 0.06 258 / 0.08);
}

/*
 * VSAI 架构说明页专用令牌。
 *
 * 为什么单独加 `--arch-*`：根目录的 tokens.css 同时被现有 PC 页面复用。
 * 架构说明页需要 Coral 主题，但不应该悄悄改掉现有产品 Workbench 的 Cobalt 主题。
 * 两套令牌并存，可让本次静态文档获得独立视觉语言，也避免影响线上页面。
 */
:root {
  --arch-paper: oklch(98.5% 0.008 52);
  --arch-paper-2: oklch(96.3% 0.014 52);
  --arch-paper-3: oklch(92.8% 0.022 52);
  --arch-ink: oklch(23% 0.025 32);
  --arch-ink-2: oklch(34% 0.024 35);
  --arch-muted: oklch(49% 0.022 37);
  --arch-rule: oklch(87% 0.028 48);
  --arch-rule-strong: oklch(72% 0.055 43);
  --arch-accent: oklch(49% 0.18 34);
  --arch-accent-ink: oklch(99% 0.004 52);
  --arch-focus: oklch(52% 0.2 34);
  --arch-focus-ring: oklch(64% 0.15 34 / 0.24);
  --arch-success: oklch(48% 0.11 157);
  --arch-success-paper: oklch(95% 0.035 157);
  --arch-warning: oklch(43% 0.11 73);
  --arch-warning-paper: oklch(95% 0.04 73);
  --arch-runtime: oklch(48% 0.11 245);
  --arch-runtime-paper: oklch(95% 0.03 245);
  --arch-planned: oklch(49% 0.1 303);
  --arch-planned-paper: oklch(95% 0.03 303);
  --arch-error: oklch(53% 0.18 25);
  --arch-error-paper: oklch(95% 0.03 25);
  --arch-overlay: oklch(18% 0.02 32 / 0.48);
  --arch-shadow: 0 1.25rem 3.75rem oklch(25% 0.03 32 / 0.13);
  --arch-shadow-small: 0 0.5rem 1.5rem oklch(25% 0.03 32 / 0.08);
  --arch-mark: oklch(91% 0.08 72);

  --arch-font-display: "Geist", "PingFang SC", "Microsoft YaHei", sans-serif;
  --arch-font-body: "IBM Plex Sans", "PingFang SC", "Microsoft YaHei", sans-serif;
  --arch-font-mono: "JetBrains Mono", "SFMono-Regular", monospace;

  --arch-space-3xs: 0.125rem;
  --arch-space-2xs: 0.25rem;
  --arch-space-xs: 0.5rem;
  --arch-space-sm: 0.75rem;
  --arch-space-md: 1rem;
  --arch-space-lg: 1.5rem;
  --arch-space-xl: 2.5rem;
  --arch-space-2xl: 4rem;
  --arch-space-3xl: 6rem;

  --arch-text-xs: 0.75rem;
  --arch-text-sm: 0.875rem;
  --arch-text-base: 1rem;
  --arch-text-md: clamp(1.125rem, 1rem + 0.5vw, 1.375rem);
  --arch-text-lg: clamp(1.5rem, 1.1rem + 1.4vw, 2.25rem);
  --arch-text-xl: clamp(2.25rem, 1.55rem + 3vw, 4.5rem);

  --arch-radius-sm: 0.375rem;
  --arch-radius-md: 0.75rem;
  --arch-radius-lg: 1.25rem;
  --arch-radius-pill: 999px;
  --arch-rule-default: 1px;

  --arch-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --arch-ease-standard: cubic-bezier(0.65, 0, 0.35, 1);
  --arch-duration-fast: 120ms;
  --arch-duration-panel: 220ms;

  --arch-z-base: 1;
  --arch-z-sticky: 200;
  --arch-z-modal: 400;
}
