/* Zande design tokens — BR2-P1 (BR1 direction: Ledger, warm).
   One source for every layout: product (style.src.css), onboarding, marketing, parent portal
   and operator pages all read these. A token names a design decision, never a colour. */
:root {
  /* brand */
  --color-brand-primary:        #18A87F;   /* fills, large text, icons (3.0:1 on white: large/UI only) */
  --color-brand-primary-strong: #047857;   /* normal-size brand text and links (5.5:1 on white) */
  --color-brand-tint:           rgba(24,168,127,.08);

  /* surfaces */
  --color-surface-default: #FFFFFF;
  --color-surface-muted:   #F8FAFC;
  --color-surface-raised:  #FFFFFF;        /* pair with --shadow-raised */
  --color-surface-sunken:  #F1F5F9;

  /* text */
  --color-text-primary:   #0F172A;         /* 17.9:1 */
  --color-text-secondary: #334155;         /* 10.4:1 */
  --color-text-muted:     #64748B;         /*  4.8:1 — the floor for normal text */
  --color-text-inverse:   #FFFFFF;

  /* borders */
  --color-border-default: #E2E8F0;
  --color-border-strong:  #CBD5E1;

  /* semantic states (text-safe on white) */
  --color-success: #047857;
  --color-warning: #B45309;                /* 5.0:1; the #D97706 fill stays a fill, never text */
  --color-danger:  #B91C1C;                /* 6.5:1 text; #DC2626 remains for fills/icons */
  --color-info:    #1D4ED8;
  --color-success-tint: #ECFDF5;
  --color-warning-tint: #FFFBEB;
  --color-danger-tint:  #FEF2F2;
  --color-info-tint:    #EFF6FF;

  /* money grammar — meaning is carried by words and weight; colour is restrained */
  --color-money-paid:        #047857;
  --color-money-outstanding: #0F172A;      /* ink, not red: important is not the same as wrong */
  --color-money-credit:      #1D4ED8;      /* always paired with the word "credit" */
  --color-money-neutral:     #64748B;

  /* interaction */
  --color-focus:    #047857;
  --color-link:     #047857;
  --color-disabled: #94A3B8;               /* fills and borders only; never running text */

  /* typography */
  --font-sans: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-serif-accent: 'Playfair Display', Georgia, 'Times New Roman', serif;   /* marketing headline accent only */
  --font-mono: ui-monospace, SFMono-Regular, Menlo, monospace;
  --weight-regular: 400; --weight-medium: 500; --weight-semibold: 600; --weight-bold: 700; --weight-extrabold: 800;
  --text-xs: .75rem;      /* 12px — the rendered floor */
  --text-sm: .8125rem;    /* 13px — financial table figures */
  --text-base: .9375rem;  /* 15px */
  --text-md: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.375rem;    /* 22px — money figure on a phone */
  --text-2xl: 1.75rem;    /* 28px — money figure on desktop */
  --text-3xl: 2.25rem;
  --leading-tight: 1.15; --leading-normal: 1.5;
  --tracking-caps: .06em;

  /* spacing (4px grid) */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px;
  --space-6: 24px; --space-8: 32px; --space-10: 40px; --space-12: 48px;

  /* radius */
  --radius-xs: 6px; --radius-sm: 8px; --radius-md: 12px; --radius-lg: 18px; --radius-xl: 24px; --radius-pill: 100px;

  /* shadow */
  --shadow-card:   0 1px 3px rgba(15,23,42,.06), 0 1px 2px rgba(15,23,42,.04);
  --shadow-raised: 0 4px 12px rgba(15,23,42,.08), 0 2px 4px rgba(15,23,42,.04);
  --shadow-overlay: 0 10px 30px rgba(15,23,42,.10), 0 4px 8px rgba(15,23,42,.06);

  /* borders */
  --border-hairline: 1px solid var(--color-border-default);
  --border-strong:   1px solid var(--color-border-strong);

  /* control sizes */
  --control-h: 46px;        /* text inputs, selects */
  --control-h-sm: 36px;     /* dense/operator controls */
  --touch-min: 44px;        /* customer-facing touch target */
  --icon-sm: 16px; --icon-md: 20px; --icon-lg: 24px;

  /* motion */
  --motion-fast: 120ms; --motion-base: 200ms; --motion-slow: 320ms;
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-standard: cubic-bezier(0.32, 0.72, 0, 1);

  /* z-index */
  --z-sticky: 50; --z-dropdown: 100; --z-overlay: 900; --z-modal: 1000; --z-toast: 1100;
}
@media (prefers-reduced-motion: reduce) {
  :root { --motion-fast: 0ms; --motion-base: 0ms; --motion-slow: 0ms; }
}
