/* AUTO-GENERATED by optibooks_design/build.py. DO NOT EDIT. */
/* Source of truth: optibooks_design/tokens.json */
:root {
  /* primitives */
  --ob-color-blue-50: #e7f1ff;
  --ob-color-blue-100: #cfe2ff;
  --ob-color-blue-300: #6ea8fe;
  --ob-color-blue-500: #0d6efd;
  --ob-color-blue-600: #0b5ed7;
  --ob-color-blue-700: #0a4fb3;
  --ob-color-blue-800: #083d8a;
  --ob-color-slate-50: #f8fafc;
  --ob-color-slate-100: #f1f5f9;
  --ob-color-slate-200: #e2e8f0;
  --ob-color-slate-300: #cbd5e1;
  --ob-color-slate-400: #94a3b8;
  --ob-color-slate-500: #64748b;
  --ob-color-slate-600: #475569;
  --ob-color-slate-700: #334155;
  --ob-color-slate-800: #1e293b;
  --ob-color-slate-900: #0f172a;
  --ob-color-green-50: #e8f6ec;
  --ob-color-green-500: #1a8a3c;
  --ob-color-green-600: #157a34;
  --ob-color-amber-50: #fff8e1;
  --ob-color-amber-300: #ffcc00;
  --ob-color-amber-600: #9a6b00;
  --ob-color-amber-700: #7a5400;
  --ob-color-red-50: #fdeaea;
  --ob-color-red-500: #d33;
  --ob-color-red-600: #b02525;
  --ob-color-red-700: #8f1d1d;
  --ob-color-violet-50: #f1ecfd;
  --ob-color-violet-500: #7c3aed;
  --ob-color-violet-600: #6d28d9;
  --ob-color-teal-50: #e3eeee;
  --ob-color-teal-100: #c3dcdd;
  --ob-color-teal-300: #6fb0b2;
  --ob-color-teal-600: #0e5a5c;
  --ob-color-teal-700: #0a4344;
  --ob-color-white: #ffffff;
  --ob-color-black: #0b0f14;
  --ob-space-0: 0;
  --ob-space-1: 4px;
  --ob-space-2: 8px;
  --ob-space-3: 12px;
  --ob-space-4: 16px;
  --ob-space-5: 24px;
  --ob-space-6: 32px;
  --ob-space-8: 48px;
  --ob-space-10: 64px;
  --ob-radius-sm: 4px;
  --ob-radius-md: 8px;
  --ob-radius-lg: 12px;
  --ob-radius-pill: 999px;
  --ob-shadow-1: 0 1px 3px rgba(15,23,42,0.08);
  --ob-shadow-2: 0 4px 12px rgba(15,23,42,0.10);
  --ob-shadow-focus: 0 0 0 3px rgba(13,110,253,0.40);
  --ob-font-sans: 'Inter', 'Helvetica Neue', Arial, sans-serif;
  --ob-font-mono: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;
  --ob-type-scale-xs: 12px;
  --ob-type-scale-sm: 13px;
  --ob-type-scale-base: 14px;
  --ob-type-scale-md: 16px;
  --ob-type-scale-lg: 20px;
  --ob-type-scale-xl: 26px;
  --ob-type-scale-2xl: 34px;
  --ob-weight-regular: 400;
  --ob-weight-medium: 500;
  --ob-weight-semibold: 600;
  --ob-weight-bold: 700;
  --ob-z-base: 0;
  --ob-z-sticky: 100;
  --ob-z-overlay: 1000;
  --ob-z-modal: 1100;
  --ob-z-toast: 1200;
  /* semantic (light, default) */
  --ob-bg: #f8fafc;
  --ob-surface: #ffffff;
  --ob-surface-sunken: #f1f5f9;
  --ob-border: #e2e8f0;
  --ob-text: #0f172a;
  --ob-text-muted: #475569;
  --ob-text-on-accent: #ffffff;
  --ob-primary: #0b5ed7;
  --ob-primary-hover: #0a4fb3;
  --ob-link: #0b5ed7;
  --ob-accent: #0e5a5c;
  --ob-accent-hover: #0a4344;
  --ob-accent-soft: #e3eeee;
  --ob-focus-ring: 0 0 0 3px rgba(13,110,253,0.40);
  --ob-success: #157a34;
  --ob-success-bg: #e8f6ec;
  --ob-warning: #7a5400;
  --ob-warning-bg: #fff8e1;
  --ob-error: #b02525;
  --ob-error-bg: #fdeaea;
  /* domain-semantic (light) */
  --ob-state-engine: #334155;
  --ob-state-ai-suggested: #6d28d9;
  --ob-state-unverified: #7a5400;
  --ob-state-verified: #157a34;
  --ob-state-rejected: #b02525;
  --ob-sandbox-live: #475569;
  --ob-sandbox-proposed: #0b5ed7;
  --ob-sandbox-filed: #0f172a;
  --ob-severity-1: #94a3b8;
  --ob-severity-2: #7a5400;
  --ob-severity-3: #d33;
  --ob-severity-4: #8f1d1d;
  /* component */
  --ob-button-bg: semantic.primary;
  --ob-button-bg-hover: semantic.primary-hover;
  --ob-button-fg: semantic.text-on-accent;
  --ob-button-radius: 8px;
  --ob-card-bg: semantic.surface;
  --ob-card-border: semantic.border;
  --ob-card-shadow: 0 1px 3px rgba(15,23,42,0.08);
  --ob-card-radius: 12px;
  --ob-badge-radius: 999px;
  --ob-table-header-bg: semantic.surface-sunken;
  --ob-table-row-border: semantic.border;
  --ob-table-numeric-font: 'IBM Plex Mono', 'SFMono-Regular', Consolas, monospace;

  /* legacy aliases — keep existing theme.css / dbc overrides working. */
  /* NOTE: --ob-primary is already emitted by the semantic block above; do */
  /* NOT re-alias it to itself (a self-reference makes it invalid, which */
  /* silently blanked every .btn-primary). Only alias names not already set. */
  --ob-background: var(--ob-bg);
  --bs-primary: var(--ob-primary);
  --bs-link-color: var(--ob-link);
  --bs-body-bg: var(--ob-bg);
}

[data-theme="dark"] {
  /* semantic (dark) */
  --ob-bg: #0f172a;
  --ob-surface: #1e293b;
  --ob-surface-sunken: #0b0f14;
  --ob-border: #334155;
  --ob-text: #f8fafc;
  --ob-text-muted: #cbd5e1;
  --ob-text-on-accent: #ffffff;
  --ob-primary: #6ea8fe;
  --ob-primary-hover: #cfe2ff;
  --ob-link: #6ea8fe;
  --ob-accent: #6fb0b2;
  --ob-accent-hover: #c3dcdd;
  --ob-accent-soft: #1e293b;
  --ob-focus-ring: 0 0 0 3px rgba(13,110,253,0.40);
  --ob-success: #1a8a3c;
  --ob-success-bg: #1e293b;
  --ob-warning: #ffcc00;
  --ob-warning-bg: #1e293b;
  --ob-error: #d33;
  --ob-error-bg: #1e293b;
  /* domain-semantic (dark) */
  --ob-state-engine: #cbd5e1;
  --ob-state-ai-suggested: #7c3aed;
  --ob-state-unverified: #ffcc00;
  --ob-state-verified: #1a8a3c;
  --ob-state-rejected: #d33;
  --ob-sandbox-live: #cbd5e1;
  --ob-sandbox-proposed: #6ea8fe;
  --ob-sandbox-filed: #f8fafc;
  --ob-severity-1: #94a3b8;
  --ob-severity-2: #ffcc00;
  --ob-severity-3: #d33;
  --ob-severity-4: #d33;
}

/* role density: data-role switches CPA(dense) vs business(comfortable) */
[data-role="business"], [data-role="owner"] {
  --ob-font-size-base: 16px;
  --ob-row-padding-y: 12px;
}
[data-role="cpa"], [data-role="reviewer"], [data-role="manager"] {
  --ob-font-size-base: 14px;
  --ob-row-padding-y: 4px;
}
