/* Generated by scripts/build-design-tokens.mjs. Edit shared/design-tokens.json.
 * Product chrome only: board paper, charts and authored media keep their palettes.
 * --accent-usage: #10B981 仅用于 logo、每屏 1 个关键主按钮和键盘焦点环。 */
:root {
  --n-0:#FFFFFF;
  --n-25:#FAFAFA;
  --n-50:#F5F5F4;
  --n-100:#EDEDEC;
  --n-200:#E2E2E0;
  --n-400:#A3A3A1;
  --n-600:#57575A;
  --n-900:#18181B;
  --accent-mint:#10B981;
  --accent-mint-deep:#065F46;
  --accent-violet:#7C5CFF;
  --accent-amber:#F59E0B;
  --danger:#E5484D;
  --surface:var(--n-0);
  --surface-soft:var(--n-25);
  --surface-hover:var(--n-50);
  --surface-raised:var(--n-0);
  --ink:var(--n-900);
  --muted:var(--n-600);
  --line:var(--n-200);
  --line-strong:var(--n-400);
  --btn-primary-bg:var(--n-900);
  --btn-primary-fg:var(--n-0);
  --btn-primary-border:var(--n-900);
  --btn-secondary-bg:var(--n-0);
  --btn-secondary-fg:var(--n-900);
  --btn-secondary-border:var(--n-200);
  --btn-text-fg:var(--n-900);
  --state-active-bg:var(--n-100);
  --state-active-fg:var(--n-900);
  --state-active-border:var(--line-strong);
  --selection-border:var(--n-900);
  --selection-handle-bg:var(--n-0);
  --selection-handle-border:var(--n-900);
  --snap-guide:#64748B;
  --focus-ring:var(--accent-mint);
  --handle-white:var(--n-0);
  --hero-bg:#101916;
  --hero-ink:var(--n-0);
  --font-ui:Inter,"PingFang SC","HarmonyOS Sans SC","Noto Sans SC","Microsoft YaHei",system-ui,sans-serif;
  --text-xs:12px;
  --text-sm:13px;
  --text-base:14px;
  --text-md:16px;
  --text-lg:20px;
  --text-xl:28px;
  --radius-sm:8px;
  --radius-md:8px;
  --radius-card:12px;
  --radius-panel:16px;
  --radius-tag:999px;
  --space-0:0px;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:20px;
  --space-6:24px;
  --space-7:28px;
  --space-8:32px;
  --space-10:40px;
  --space-11:44px;
  --space-12:48px;
  --space-16:64px;
  --control-height:40px;
  --control-touch:44px;
  --motion-fast:100ms;
  --motion-panel:250ms;
  --motion-ease:cubic-bezier(.24,.05,.2,1);
  --glass-surface:rgb(255 255 255 / .92);
  --glass-highlight:rgb(255 255 255 / .8);
  --glass-blur:16px;
  --overlay-scrim:rgb(9 9 11 / .44);
  --shadow-ink:rgb(24 24 27 / .12);
  --shadow-panel:0 0 0 1px var(--glass-highlight), 0 2px 4px var(--shadow-ink), 0 8px 16px var(--shadow-ink), 0 20px 40px var(--shadow-ink);
  --shadow-modal:0 0 0 1px var(--glass-highlight), 0 4px 8px var(--shadow-ink), 0 16px 32px var(--shadow-ink), 0 32px 72px var(--shadow-ink);
  --preview-stage:#111214;
  --media-ink:#FFFFFF;
  --media-muted:#D4D4D8;
  --media-label-bg:rgb(9 9 11 / .8);
  --media-zone-fill:rgb(255 255 255 / .05);
  --media-line:rgb(255 255 255 / .5);
  --media-overlay:rgb(9 9 11 / .48);
  --media-button-bg:rgb(255 255 255 / .14);
  --warning-ink:#92400E;
  --warning-soft:#FFFBEB;
  --info-ink:#0369A1;
  --danger-soft:#FEF3F2;
  --space-9:36px;
  --space-13:52px;
  --space-14:56px;
  --space-15:60px;
  --space-17:68px;
  --space-18:72px;
  --space-19:76px;
  --space-20:80px;
  --space-21:84px;
  --space-22:88px;
  --space-23:92px;
  --space-24:96px;
  --space-25:100px;
  --space-26:104px;
  --space-27:108px;
  --space-28:112px;
  --space-29:116px;
  --space-30:120px;
  --space-31:124px;
  --space-32:128px;
  --brightness-hover:1.3;
  --brightness-pressed:1.6;
  --color-border-subtle:var(--n-200);
  --color-border-strong:var(--muted);
  --layer-stack-0:0;
  --layer-stack-1:1;
  --layer-stack-2:2;
  --layer-stack-3:3;
  --layer-stack-4:4;
  --layer-stack-5:5;
  --layer-stack-6:6;
  --layer-stack-10:10;
  --layer-stack-12:12;
  --layer-stack-16:16;
  --layer-stack-20:20;
  --layer-stack-25:25;
  --layer-stack-29:29;
  --layer-stack-30:30;
  --layer-stack-31:31;
  --layer-stack-32:32;
  --layer-stack-34:34;
  --layer-stack-35:35;
  --layer-stack-36:36;
  --layer-stack-37:37;
  --layer-stack-38:38;
  --layer-stack-40:40;
  --layer-stack-41:41;
  --layer-stack-43:43;
  --layer-stack-44:44;
  --layer-stack-45:45;
  --layer-stack-46:46;
  --layer-stack-50:50;
  --layer-stack-60:60;
  --layer-stack-65:65;
  --layer-stack-66:66;
  --layer-stack-69:69;
  --layer-stack-70:70;
  --layer-stack-71:71;
  --layer-stack-75:75;
  --layer-stack-80:80;
  --layer-stack-83:83;
  --layer-stack-84:84;
  --layer-stack-85:85;
  --layer-stack-90:90;
  --layer-stack-94:94;
  --layer-stack-95:95;
  --layer-stack-96:96;
  --layer-stack-120:120;
  --layer-stack-920:920;
  --layer-stack-950:950;
  --layer-stack-960:960;
  --layer-stack-970:970;
  --layer-stack-1000:1000;
  --layer-stack-1001:1001;
  --layer-stack-1002:1002;
  --layer-stack-1100:1100;
  --layer-stack-1200:1200;
  --layer-stack-1300:1300;
  --layer-publication:10001;
  --layer-toast:10002;
  --layer-stack-10010:10010;
  --layer-stack-100100:100100;
  --layer-stack-100150:100150;
  --layer-stack-100160:100160;
  --layer-stack-100170:100170;
  --layer-stack-100200:100200;
  --layer-stack-150000:150000;
  --layer-stack-200000:200000;
  --layer-stack-200001:200001;
  --layer-dialog:2147482000;
  --layer-stack-2147483000:2147483000;
  --layer-stack-900:900;
  --layer-stack-1201:1201;
  --layer-stack-58:58;
  --layer-stack-15:15;
  --layer-stack-92:92;
  --layer-stack-86:86;
  --layer-stack-88:88;
  --layer-stack-89:89;
  --layer-stack-33:33;
  --layer-stack-64:64;
  --layer-stack-54:54;
  --layer-stack-55:55;
  --layer-stack-10000:10000;
  --layer-stack-62:62;
  --layer-stack-63:63;
  --layer-stack-24:24;
  --layer-stack-39:39;
  --layer-stack-9999:9999;
  --layer-stack-902:902;
  --layer-stack-61:61;
  --layer-stack-10001:10001;
  --layer-stack-9990:9990;
  --layer-stack-9991:9991;
  --motion-pop:200ms;
  --ease-pop:cubic-bezier(.15,.8,.3,1.6);
  --motion-general:225ms;
  --motion-chart:600ms;
  --ease-chart:cubic-bezier(.1,.09,.17,1.01);
  --motion-progress:1600ms;
  --ease-progress:cubic-bezier(.85,0,.15,1);
  --ease-standard:cubic-bezier(.4,0,.2,1);
  --motion-press:90ms;
  --ease-out:var(--motion-ease);
  --ease-in-out:var(--ease-standard);
}
body:not(.theme-light) {
  --surface:#202023;
  --surface-soft:#18181B;
  --surface-hover:#2A2A2E;
  --surface-raised:#28282C;
  --ink:#F5F5F4;
  --muted:#B1B1B5;
  --line:#3A3A3E;
  --line-strong:#707076;
  --btn-primary-bg:var(--n-0);
  --btn-primary-fg:var(--n-900);
  --btn-primary-border:var(--n-0);
  --state-active-bg:#333337;
  --state-active-fg:var(--n-0);
  --selection-border:var(--n-0);
  --selection-handle-border:var(--n-0);
  --snap-guide:#94A3B8;
  --glass-surface:rgb(32 32 35 / .94);
  --glass-highlight:rgb(255 255 255 / .07);
  --overlay-scrim:rgb(0 0 0 / .64);
  --shadow-ink:rgb(0 0 0 / .32);
  --warning-ink:#FCD34D;
  --warning-soft:#352C1B;
  --info-ink:#7DD3FC;
  --danger-soft:#391D23;
  --btn-secondary-bg:var(--surface);
  --btn-secondary-fg:var(--ink);
  --btn-secondary-border:var(--line);
  --btn-text-fg:var(--ink);
}
body {
  --ws-bg:var(--surface);
  --ws-ink:var(--ink);
  --ws-muted:var(--muted);
  --ws-line:var(--line);
  --ws-soft:var(--surface-hover);
  --ws-accent:var(--state-active-fg);
  --formula-panel-bg:var(--surface);
  --formula-panel-ink:var(--ink);
  --formula-panel-line:var(--line);
  --formula-button-bg:var(--btn-secondary-bg);
  --formula-button-line:var(--btn-secondary-border);
  --formula-status-ink:var(--muted);
  --formula-note-ink:var(--muted);
  --as-bg:var(--surface);
  --as-ink:var(--ink);
  --as-muted:var(--muted);
  --as-line:var(--line);
  --as-hover:var(--surface-hover);
  --as-active:var(--state-active-bg);
  --as-accent:var(--ink);
  --as-shadow:var(--shadow-panel);
  --ws-surface:var(--surface);
  --ws-border:var(--line);
}
body { font-family: var(--font-ui); font-size: var(--text-base); line-height: 1.5; letter-spacing: 0; }
