/**
 * LEDGER Design Tokens (single source of truth)
 * Canonical definitions for the --ldg-* custom property vocabulary
 * specified in DESIGN.md. Layer order:
 *   primitives -> semantic -> density/sizing -> accounting states -> motion.
 * Loaded before tis.css in every layout so module/page CSS can consume
 * var(--ldg-*) without local fallbacks.
 */

:root,
[data-bs-theme="light"] {
  /* Primitive palette */
  --ldg-white: #ffffff;
  --ldg-black: #15171C;

  --ldg-slate-25: #fcfcfd;
  --ldg-slate-50: #f8fafc;
  --ldg-slate-100: #f1f5f9;
  --ldg-slate-200: #e2e8f0;
  --ldg-slate-300: #cbd5e1;
  --ldg-slate-400: #94a3b8;
  --ldg-slate-500: #64748b;
  --ldg-slate-600: #475569;
  --ldg-slate-700: #334155;
  --ldg-slate-800: #1e293b;
  --ldg-slate-900: #15171C;

  --ldg-primary-50: #f0fdf4;
  --ldg-primary-100: #ccffcc;
  --ldg-primary-200: #99eebb;
  --ldg-primary-300: #5dcf8a;
  --ldg-primary-400: #2aaa66;
  --ldg-primary-500: #1a8a52;
  --ldg-primary-600: #0d6640;
  --ldg-primary-700: #0a5033;
  --ldg-primary-800: #063d27;
  --ldg-primary-900: #003333;

  --ldg-success-50: #ecfdf3;
  --ldg-success-500: #16a34a;
  --ldg-success-700: #15803d;

  --ldg-warning-50: #fffbeb;
  --ldg-warning-500: #d97706;
  --ldg-warning-700: #b45309;

  --ldg-danger-50: #fef2f2;
  --ldg-danger-500: #dc2626;
  --ldg-danger-700: #b91c1c;

  --ldg-info-50: #eff6ff;
  --ldg-info-500: #2563eb;
  --ldg-info-700: #1d4ed8;

  --ldg-purple-500: #7c3aed;
  --ldg-amber-500: #f59e0b;
  --ldg-cyan-500: #0891b2;

  /* Typography */
  --ldg-font-sans: "Inter", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --ldg-font-heading: "Inter", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --ldg-font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;

  --ldg-text-xs: 0.75rem;
  --ldg-text-sm: 0.875rem;
  --ldg-text-md: 1rem;
  --ldg-text-lg: 1.125rem;
  --ldg-text-xl: 1.25rem;
  --ldg-text-2xl: 1.5rem;
  --ldg-text-3xl: 1.875rem;

  --ldg-leading-tight: 1.2;
  --ldg-leading-snug: 1.35;
  --ldg-leading-normal: 1.5;
  --ldg-leading-relaxed: 1.65;

  --ldg-weight-regular: 400;
  --ldg-weight-medium: 500;
  --ldg-weight-semibold: 600;
  --ldg-weight-bold: 700;

  /* Spacing */
  --ldg-space-0: 0;
  --ldg-space-1: 0.25rem;
  --ldg-space-2: 0.5rem;
  --ldg-space-3: 0.75rem;
  --ldg-space-4: 1rem;
  --ldg-space-5: 1.25rem;
  --ldg-space-6: 1.5rem;
  --ldg-space-8: 2rem;
  --ldg-space-10: 2.5rem;
  --ldg-space-12: 3rem;

  /* Radius + shadow */
  --ldg-radius-xs: 0.25rem;
  --ldg-radius-sm: 0.375rem;
  --ldg-radius-md: 0.5rem;
  --ldg-radius-lg: 0.75rem;
  --ldg-radius-xl: 1rem;
  --ldg-radius-pill: 999px;

  --ldg-shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.04);
  --ldg-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.08);
  --ldg-shadow-md: 0 4px 12px rgba(15, 23, 42, 0.10);
  --ldg-shadow-lg: 0 12px 24px rgba(15, 23, 42, 0.12);

  /* Shell sizing */
  --ldg-sidebar-width: 280px;
  --ldg-header-height: 64px;
  --ldg-toolbar-height: 56px;
  --ldg-panel-width: 420px;

  /* Motion */
  --ldg-duration-fast: 120ms;
  --ldg-duration-base: 180ms;
  --ldg-duration-slow: 260ms;
  --ldg-ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --ldg-ease-emphasized: cubic-bezier(0.2, 0, 0, 1.05);

  /* Semantic tokens */
  --ldg-bg-app: var(--ldg-slate-50);
  --ldg-bg-canvas: var(--ldg-white);
  --ldg-bg-surface: var(--ldg-white);
  --ldg-bg-surface-muted: #f8fafc;
  --ldg-bg-surface-strong: #eef2f7;
  --ldg-bg-sidebar: #15171C;
  --ldg-bg-sidebar-hover: #162033;
  --ldg-bg-sidebar-active: #1e293b;

  --ldg-text-primary: #15171C;
  --ldg-text-secondary: #475569;
  --ldg-text-tertiary: #64748b;
  --ldg-text-disabled: #94a3b8;
  --ldg-text-inverse: #f8fafc;

  --ldg-border-subtle: #e2e8f0;
  --ldg-border-default: #cbd5e1;
  --ldg-border-strong: #94a3b8;

  --ldg-action-primary: var(--ldg-primary-600);
  --ldg-action-primary-hover: var(--ldg-primary-700);
  --ldg-action-primary-active: var(--ldg-primary-800);
  --ldg-action-primary-subtle: var(--ldg-primary-50);

  --ldg-state-success-bg: var(--ldg-success-50);
  --ldg-state-success-fg: var(--ldg-success-700);
  --ldg-state-warning-bg: var(--ldg-warning-50);
  --ldg-state-warning-fg: var(--ldg-warning-700);
  --ldg-state-danger-bg: var(--ldg-danger-50);
  --ldg-state-danger-fg: var(--ldg-danger-700);
  --ldg-state-info-bg: var(--ldg-info-50);
  --ldg-state-info-fg: var(--ldg-info-700);

  --ldg-focus-ring: rgba(26, 138, 82, 0.24);

  /* Density */
  --ldg-density-comfortable-row: 48px;
  --ldg-density-compact-row: 40px;
  --ldg-density-cozy-row: 56px;

  --ldg-input-height-sm: 32px;
  --ldg-input-height-md: 40px;
  --ldg-input-height-lg: 48px;

  /* Accounting-specific state tokens */
  --ldg-invoice-draft-bg: #f8fafc;
  --ldg-invoice-draft-fg: #475569;
  --ldg-invoice-sent-bg: #eff6ff;
  --ldg-invoice-sent-fg: #1d4ed8;
  --ldg-invoice-viewed-bg: #eef9fb;
  --ldg-invoice-viewed-fg: #11778d;
  --ldg-invoice-partial-bg: #fffbeb;
  --ldg-invoice-partial-fg: #b45309;
  --ldg-invoice-paid-bg: #ecfdf3;
  --ldg-invoice-paid-fg: #15803d;
  --ldg-invoice-overdue-bg: #fef2f2;
  --ldg-invoice-overdue-fg: #b91c1c;
  --ldg-invoice-cancelled-bg: #f1f5f9;
  --ldg-invoice-cancelled-fg: #64748b;

  --ldg-approval-pending-bg: #fff7ed;
  --ldg-approval-pending-fg: #c2410c;
  --ldg-approval-approved-bg: #ecfdf3;
  --ldg-approval-approved-fg: #15803d;
  --ldg-approval-rejected-bg: #fef2f2;
  --ldg-approval-rejected-fg: #b91c1c;

  --ldg-recon-matched-bg: #ecfdf3;
  --ldg-recon-matched-fg: #15803d;
  --ldg-recon-unmatched-bg: #fef2f2;
  --ldg-recon-unmatched-fg: #b91c1c;
  --ldg-recon-partial-bg: #fffbeb;
  --ldg-recon-partial-fg: #b45309;

  --ldg-period-open-bg: #eef9fb;
  --ldg-period-open-fg: #11778d;
  --ldg-period-locked-bg: #f1f5f9;
  --ldg-period-locked-fg: #334155;
  --ldg-period-closed-bg: #e2e8f0;
  --ldg-period-closed-fg: #15171C;
}

[data-bs-theme="dark"] {
  --ldg-bg-app: #0a150a;
  --ldg-bg-canvas: #071207;
  --ldg-bg-surface: #0a150a;
  --ldg-bg-surface-muted: #0f1e10;
  --ldg-bg-surface-strong: #152815;
  --ldg-bg-sidebar: #061006;
  --ldg-bg-sidebar-hover: #0a150a;
  --ldg-bg-sidebar-active: #152815;

  --ldg-text-primary: #e0f2e0;
  --ldg-text-secondary: #a8cca8;
  --ldg-text-tertiary: #6fa06f;
  --ldg-text-disabled: #3d6b3d;
  --ldg-text-inverse: #0a150a;

  --ldg-border-subtle: #152815;
  --ldg-border-default: #1f3d1f;
  --ldg-border-strong: #2e5c2e;

  --ldg-action-primary: #2aaa66;
  --ldg-action-primary-hover: #5dcf8a;
  --ldg-action-primary-active: #99eebb;
  --ldg-action-primary-subtle: rgba(42, 170, 102, 0.12);

  --ldg-state-success-bg: rgba(22, 163, 74, 0.14);
  --ldg-state-success-fg: #86efac;
  --ldg-state-warning-bg: rgba(217, 119, 6, 0.16);
  --ldg-state-warning-fg: #fdba74;
  --ldg-state-danger-bg: rgba(220, 38, 38, 0.16);
  --ldg-state-danger-fg: #fca5a5;
  --ldg-state-info-bg: rgba(37, 99, 235, 0.16);
  --ldg-state-info-fg: #93c5fd;

  --ldg-focus-ring: rgba(42, 170, 102, 0.28);

  /* Dark-mode accounting states: translucent status surfaces on dark. */
  --ldg-invoice-draft-bg: rgba(148, 163, 184, 0.12);
  --ldg-invoice-draft-fg: #cbd5e1;
  --ldg-invoice-sent-bg: rgba(37, 99, 235, 0.16);
  --ldg-invoice-sent-fg: #93c5fd;
  --ldg-invoice-viewed-bg: rgba(8, 145, 178, 0.16);
  --ldg-invoice-viewed-fg: #67e8f9;
  --ldg-invoice-partial-bg: rgba(217, 119, 6, 0.16);
  --ldg-invoice-partial-fg: #fdba74;
  --ldg-invoice-paid-bg: rgba(22, 163, 74, 0.14);
  --ldg-invoice-paid-fg: #86efac;
  --ldg-invoice-overdue-bg: rgba(220, 38, 38, 0.16);
  --ldg-invoice-overdue-fg: #fca5a5;
  --ldg-invoice-cancelled-bg: rgba(100, 116, 139, 0.16);
  --ldg-invoice-cancelled-fg: #94a3b8;

  --ldg-approval-pending-bg: rgba(217, 119, 6, 0.16);
  --ldg-approval-pending-fg: #fdba74;
  --ldg-approval-approved-bg: rgba(22, 163, 74, 0.14);
  --ldg-approval-approved-fg: #86efac;
  --ldg-approval-rejected-bg: rgba(220, 38, 38, 0.16);
  --ldg-approval-rejected-fg: #fca5a5;

  --ldg-recon-matched-bg: rgba(22, 163, 74, 0.14);
  --ldg-recon-matched-fg: #86efac;
  --ldg-recon-unmatched-bg: rgba(220, 38, 38, 0.16);
  --ldg-recon-unmatched-fg: #fca5a5;
  --ldg-recon-partial-bg: rgba(217, 119, 6, 0.16);
  --ldg-recon-partial-fg: #fdba74;

  --ldg-period-open-bg: rgba(8, 145, 178, 0.16);
  --ldg-period-open-fg: #67e8f9;
  --ldg-period-locked-bg: rgba(148, 163, 184, 0.12);
  --ldg-period-locked-fg: #cbd5e1;
  --ldg-period-closed-bg: rgba(100, 116, 139, 0.16);
  --ldg-period-closed-fg: #e0f2e0;
}
