/* Role aliases. Components reference these, never raw ramp steps. */
:root{
  --bg-app:var(--n-50);
  --bg-surface:var(--n-0);
  --bg-surface-sunken:var(--n-100);
  --bg-surface-raised:var(--n-0);
  --bg-inverse:var(--n-900);
  --bg-inverse-surface:var(--n-800);
  --bg-subtle:var(--n-150);
  --bg-hover:var(--n-100);
  --bg-active:var(--n-150);
  --bg-selected:var(--n-150);
  --bg-zebra:var(--n-25);
  --bg-disabled:var(--n-100);

  --text-primary:var(--n-900);
  --text-secondary:var(--n-600);
  --text-tertiary:var(--n-500);
  --text-disabled:var(--n-400);
  --text-inverse:var(--fos-white);
  --text-inverse-secondary:var(--n-300);
  --text-link:var(--n-900);
  --text-link-hover:var(--n-600);

  --border-subtle:var(--n-200);
  --border-default:var(--n-300);
  --border-strongest:var(--n-900);
  --border-field:var(--n-300);
  --border-field-hover:var(--n-400);
  --border-field-focus:var(--n-900);

  --action-primary-bg:var(--n-900);
  --action-primary-bg-hover:var(--n-800);
  --action-primary-bg-active:var(--n-950);
  --action-primary-fg:var(--fos-white);
  --action-secondary-bg:var(--n-0);
  --action-secondary-bg-hover:var(--n-100);
  --action-secondary-fg:var(--n-900);
  --action-ghost-bg-hover:var(--n-150);
  --action-danger-bg:var(--danger-fg);
  --action-danger-bg-hover:var(--danger-strong);

  --status-neutral-fg:var(--n-600);
  --status-neutral-bg:var(--n-150);
  --status-neutral-border:var(--n-300);
  --status-info-fg:var(--n-900);       /* no blue: institutional graphite */
  --status-info-bg:var(--n-200);
  --status-info-border:var(--n-400);

  --table-header-bg:var(--n-100);
  --table-header-fg:var(--n-600);
  --table-row-border:var(--n-150);
  --table-row-hover:var(--n-50);

  --chart-ink-1:var(--n-900);
  --chart-ink-2:var(--n-600);
  --chart-ink-3:var(--n-400);
  --chart-ink-4:var(--n-300);
  --chart-grid:var(--n-200);
}

/* Dark workspace / dark decks. Brand rule: dark surfaces build authority. */
[data-theme="dark"]{
  --bg-app:var(--n-900);
  --bg-surface:var(--n-800);
  --bg-surface-sunken:var(--n-950);
  --bg-surface-raised:#2C2C2C;
  --bg-inverse:var(--fos-white);
  --bg-inverse-surface:var(--n-50);
  --bg-subtle:#2C2C2C;
  --bg-hover:#2F2F2F;
  --bg-active:#383838;
  --bg-selected:#333333;
  --bg-zebra:#1D1D1E;
  --bg-disabled:#2A2A2A;

  --text-primary:var(--fos-white);
  --text-secondary:var(--n-400);
  --text-tertiary:var(--n-500);
  --text-disabled:#5A5A5A;
  --text-inverse:var(--n-900);
  --text-inverse-secondary:var(--n-700);
  --text-link:var(--fos-white);
  --text-link-hover:var(--n-300);

  --border-subtle:#333334;
  --border-default:#454546;
  --border-strongest:var(--fos-white);
  --border-field:#454546;
  --border-field-hover:#5A5A5B;
  --border-field-focus:var(--fos-white);

  --action-primary-bg:var(--fos-white);
  --action-primary-bg-hover:var(--n-200);
  --action-primary-bg-active:var(--n-300);
  --action-primary-fg:var(--n-900);
  --action-secondary-bg:transparent;
  --action-secondary-bg-hover:#2F2F2F;
  --action-secondary-fg:var(--fos-white);
  --action-ghost-bg-hover:#2F2F2F;

  --success-fg:var(--success-on-dark); --success-bg:#17281F; --success-border:#2E4A3A;
  --warning-fg:var(--warning-on-dark); --warning-bg:#2A2114; --warning-border:#4A3A1E;
  --danger-fg:var(--danger-on-dark);   --danger-bg:#2B1817;  --danger-border:#4C2A28;

  --status-neutral-fg:var(--n-400);
  --status-neutral-bg:#2C2C2C;
  --status-neutral-border:#454546;
  --status-info-fg:var(--fos-white);
  --status-info-bg:#333334;
  --status-info-border:#5A5A5B;

  --table-header-bg:#1E1E1F;
  --table-header-fg:var(--n-400);
  --table-row-border:#2A2A2B;
  --table-row-hover:#232324;

  --chart-ink-1:var(--fos-white);
  --chart-ink-2:var(--n-400);
  --chart-ink-3:var(--n-600);
  --chart-ink-4:var(--n-700);
  --chart-grid:#333334;

  --focus-ring-color:var(--fos-white);
  --shadow-sm:0 1px 2px rgba(0,0,0,.5);
  --shadow-md:0 2px 6px -2px rgba(0,0,0,.5),0 10px 24px -12px rgba(0,0,0,.7);
  --shadow-lg:0 4px 10px -4px rgba(0,0,0,.5),0 28px 60px -24px rgba(0,0,0,.8);
}
