/* vendored from embedl/deploy-bench webapp/web — keep in sync */
/*
 * @embedl/brand-tokens — tokens.css
 * Generated. Do not edit by hand. Source: src/tokens.data.mjs
 *
 * Semantic tokens. Pair with scale.css. Light is the default; dark overrides
 * accent under [data-theme="dark"]. The semantic --bg-* / --text-* / state
 * vars resolve through scale.css and switch automatically with the theme.
 */

:root {
  /* surfaces */
  --bg-page: var(--neutral-2);
  --bg-surface: var(--neutral-1);
  --bg-secondary: var(--neutral-3);
  --bg-card: var(--neutral-4);
  --bg-card-hover: var(--neutral-5);

  /* borders */
  --border-subtle: var(--neutral-6);
  --border-default: var(--neutral-7);
  --border-strong: var(--neutral-8);
  --border: var(--border-default); /* backward-compatible alias */

  /* text */
  --text-disabled: var(--neutral-9);
  --text-tertiary: var(--neutral-10);
  --text-secondary: var(--neutral-11);
  --text-primary: var(--neutral-12);

  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 24px;
  --space-xl: 32px;
  --space-2xl: 48px;

  --radius-sm: 0.25rem;
  --radius-md: 0.375rem;
  --radius-lg: 0.5rem;
  --radius-xl: 0.75rem;
  --radius-full: 9999px;

  --control-xs: 24px;
  --control-sm: 28px;
  --control: 36px;
  --control-lg: 40px;
  --control-x-xs: 8px;
  --control-x-sm: 10px;
  --control-x: 12px;
  --control-x-lg: 14px;

  --font-sans: 'Geist', system-ui, sans-serif;
  --font-mono: 'Geist Mono', ui-monospace, monospace;
  --font-display: 'Montserrat Variable', 'Montserrat', sans-serif;

  --accent-primary: var(--teal-9);
  --cyan-bright: #06B6D4;
  --mint-teal: #0EA5A0;
  --accent-primary-muted: rgba(14, 154, 173, 0.08);
  --accent-secondary: var(--violet-9);
  --indigo: #6366F1;
  --accent-secondary-muted: rgba(124, 92, 252, 0.08);

  --gradient-primary: linear-gradient(135deg, #06B6D4, #0EA5A0);
  --gradient-violet: linear-gradient(135deg, #7C5CFC, #6366F1);
  --gradient-mixed: linear-gradient(135deg, #06B6D4, #0E9AAD, #7C5CFC);
  --gradient-hero: linear-gradient(135deg, #06B6D4 0%, #0EA5A0 40%, #7C5CFC 100%);
  --gradient-subtle: linear-gradient(135deg, rgba(6,182,212,0.04), rgba(124,92,252,0.04));

  --error: var(--red-9);
  --warning: var(--amber-9);
  --success: var(--green-9);
  --info: var(--blue-9);

  /* code blocks — "Embedl Nightfall" (theme-agnostic) */
  --nightfall-bg: #0C1222;
  --nightfall-dot-pink: #F472B6;
  --nightfall-dot-gold: #F0C55B;
  --nightfall-dot-mint: #2DD4A8;
  --nightfall-keyword: #C9A0FF;
  --nightfall-function: #5EC4D4;
  --nightfall-class: #2DD4A8;
  --nightfall-string: #F0C55B;
  --nightfall-number: #F5A97F;
  --nightfall-builtin: #70CFFF;
  --nightfall-decorator: #F472B6;
  --nightfall-comment: #5A6A7D;
  --nightfall-operator: #89929B;
  --nightfall-text: #D4DCE8;

  /* code blocks — legacy "Hub Neutral" Prism compatibility aliases */
  --prism-neutral-bg: #161616;
  --prism-neutral-inline-bg: #1d1d1d;
  --prism-neutral-border: #262626;
  --prism-neutral-selection: #333333;
  --prism-neutral-keyword: var(--nightfall-keyword, #C9A0FF);
  --prism-neutral-function: var(--nightfall-function, #5EC4D4);
  --prism-neutral-class: var(--nightfall-class, #2DD4A8);
  --prism-neutral-string: var(--nightfall-string, #F0C55B);
  --prism-neutral-number: var(--nightfall-number, #F5A97F);
  --prism-neutral-builtin: var(--nightfall-builtin, #70CFFF);
  --prism-neutral-decorator: var(--nightfall-decorator, #F472B6);
  --prism-neutral-comment: var(--nightfall-comment, #5A6A7D);
  --prism-neutral-operator: var(--nightfall-operator, #89929B);
  --prism-neutral-text: var(--nightfall-text, #D4DCE8);

  /* code blocks — "Hub Code" Shiki-backed product/app variables */
  --hub-code-copy-gutter: 3.5rem;
  --hub-code-bg: oklch(95.5% 0 0);
  --hub-code-inline-bg: color-mix(in srgb, var(--accent-primary) 8%, transparent);
  --hub-code-border: var(--border);
  --hub-code-text: var(--text-primary);
  --hub-code-comment: var(--text-tertiary);
  --hub-code-operator: var(--text-secondary);
  --hub-code-prompt: var(--text-tertiary);
  --hub-code-keyword: var(--accent-secondary);
  --hub-code-function: var(--accent-primary);
  --hub-code-class: var(--success);
  --hub-code-string: var(--warning);
  --hub-code-number: var(--error);
  --hub-code-builtin: var(--info);
  --hub-code-decorator: var(--accent-secondary);
  --hub-code-highlight-bg: color-mix(in srgb, var(--hub-code-function) 10%, var(--hub-code-bg));
}

[data-theme="dark"] {
  --accent-primary: var(--teal-9);
  --cyan-bright: #04C9E5;
  --mint-cyan: #04D3D1;
  --accent-primary-muted: rgba(88, 177, 195, 0.12);
  --accent-secondary: var(--violet-9);
  --indigo: #818CF8;
  --lavender: var(--violet-11);
  --accent-secondary-muted: rgba(167, 139, 250, 0.12);

  --gradient-primary: linear-gradient(135deg, #04C9E5, #04D3D1);
  --gradient-violet: linear-gradient(135deg, #A78BFA, #818CF8);
  --gradient-mixed: linear-gradient(135deg, #04C9E5, #58B1C3, #A78BFA);
  --gradient-hero: linear-gradient(135deg, #04C9E5 0%, #04D3D1 40%, #A78BFA 100%);
  --gradient-subtle: linear-gradient(135deg, rgba(4,201,229,0.06), rgba(167,139,250,0.06));

  --error: var(--red-9);
  --warning: var(--amber-9);
  --success: var(--green-9);
  --info: var(--blue-9);

  /* code blocks — "Hub Code" dark mode */
  --hub-code-copy-gutter: 3.5rem;
  --hub-code-bg: var(--prism-neutral-bg);
  --hub-code-inline-bg: var(--prism-neutral-inline-bg);
  --hub-code-border: var(--border);
  --hub-code-text: var(--prism-neutral-text);
  --hub-code-comment: var(--prism-neutral-comment);
  --hub-code-operator: var(--prism-neutral-operator);
  --hub-code-prompt: var(--prism-neutral-comment);
  --hub-code-keyword: var(--prism-neutral-keyword);
  --hub-code-function: var(--prism-neutral-function);
  --hub-code-class: var(--prism-neutral-class);
  --hub-code-string: var(--prism-neutral-string);
  --hub-code-number: var(--prism-neutral-number);
  --hub-code-builtin: var(--prism-neutral-builtin);
  --hub-code-decorator: var(--prism-neutral-decorator);
  --hub-code-highlight-bg: color-mix(in srgb, var(--hub-code-function) 10%, var(--hub-code-bg));
}
