:root {
  --lp-brand-primary: #0c4a52;
  --lp-brand-primary-dark: #062a2e;
  --lp-brand-signal: #b6f034;
  --lp-brand-signal-ink: #062a2e;

  --lp-surface-app: #ecf1ef;
  --lp-surface-raised: #ffffff;
  --lp-surface-subtle: #f6f7f9;
  --lp-text-strong: #181b20;
  --lp-text-default: #39404b;
  --lp-text-muted: #5b626e;
  --lp-text-faint: #65706b;
  --lp-border-soft: #ececf0;
  --lp-border-default: #e1e1e7;

  --lp-success: #3f8f5c;
  --lp-warning: #b8841c;
  --lp-danger: #b33a2e;
  --lp-info: #0a5fc2;
  --lp-locked: #e0b25b;

  --lp-font-display: "Open Sans", system-ui, "Segoe UI", sans-serif;
  --lp-font-body: "Open Sans", system-ui, "Segoe UI", sans-serif;
  --lp-font-numeric: ui-monospace, "SFMono-Regular", "Cascadia Mono", "Roboto Mono", monospace;

  --lp-radius-control: 8px;
  --lp-radius-card: 12px;
  --lp-radius-dialog: 14px;
  --lp-target-min: 44px;
  --lp-icon-button-target: var(--lp-target-min);
  --lp-primary-button-height: var(--lp-target-min);
  --lp-primary-button-radius: var(--lp-radius-control);
  --lp-primary-button-bg: var(--lp-text-strong);
  --lp-primary-button-fg: var(--lp-surface-raised);
  --lp-primary-button-accent: var(--lp-brand-signal);
  --lp-ledger-card-bg: var(--lp-surface-raised);
  --lp-ledger-card-border: var(--lp-border-default);
  --lp-ledger-card-radius: var(--lp-radius-card);
  --lp-content-max: 1536px;
  --lp-focus-ring: 0 0 0 2px #0a3e45, 0 0 0 4px #ffffff;
  --lp-motion-fast: 120ms;
  --lp-motion-normal: 180ms;
}

[data-theme="dark"] {
  --lp-surface-app: #041e21;
  --lp-surface-raised: #062a2e;
  --lp-surface-subtle: #073036;
  --lp-text-strong: #ffffff;
  --lp-text-default: #ecf4f4;
  --lp-text-muted: #a6cdce;
  --lp-border-soft: #073036;
  --lp-border-default: #093a41;
  --lp-focus-ring: 0 0 0 2px #b6f034, 0 0 0 4px #062a2e;
}

.lp-numeric {
  font-family: var(--lp-font-numeric);
  font-variant-numeric: tabular-nums;
}

:where(a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 0;
  box-shadow: var(--lp-focus-ring);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

@media (forced-colors: active) {
  :where(a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus-visible {
    outline: 2px solid Highlight;
    outline-offset: 2px;
    box-shadow: none;
  }
}
