/* =====================================================================
   North Hill Design System — tokens (v1, 2026-10-16)
   One file, copied byte-for-byte into each app. Spec: design-system.md
   Rules: no backdrop-filter · 44px touch targets · 16px input text on touch
   · no horizontal overflow at 390px · 8px spacing grid.
   ===================================================================== */
:root{
  /* Brand: North Hill navy */
  --nh-navy-950:#0B1730; --nh-navy-900:#0F2042; --nh-navy-800:#152B55; --nh-navy-700:#1C3A6E;
  --nh-navy-600:#2A4D87; --nh-navy-500:#3D63A3; --nh-navy-200:#C9D5EA; --nh-navy-100:#E3EAF5; --nh-navy-50:#F2F5FB;
  /* Neutrals (cool grey) */
  --nh-grey-0:#FFFFFF; --nh-grey-25:#FCFCFD; --nh-grey-50:#F8F9FB; --nh-grey-100:#F1F3F6; --nh-grey-200:#E4E7EC;
  --nh-grey-300:#D0D5DD; --nh-grey-400:#98A2B3; --nh-grey-500:#667085; --nh-grey-600:#475467; --nh-grey-700:#344054;
  --nh-grey-800:#1D2939; --nh-grey-900:#101828;
  /* One accent (links, focus, selection, "today") */
  --nh-accent-700:#1D4ED8; --nh-accent-600:#2563EB; --nh-accent-500:#3B82F6; --nh-accent-100:#DBEAFE; --nh-accent-50:#EFF6FF;
  /* Status */
  --nh-success-700:#05603A; --nh-success-600:#067647; --nh-success-100:#D1FADF; --nh-success-50:#ECFDF3;
  --nh-warn-700:#93370D;    --nh-warn-600:#B54708;    --nh-warn-100:#FEF0C7;    --nh-warn-50:#FFFAEB;
  --nh-error-700:#912018;   --nh-error-600:#B42318;   --nh-error-100:#FEE4E2;   --nh-error-50:#FEF3F2;

  /* Semantic roles (use these in components) */
  --nh-bg:var(--nh-grey-50);           /* page */
  --nh-surface:var(--nh-grey-0);       /* cards, sheets, inputs */
  --nh-surface-sunken:var(--nh-grey-100);
  --nh-border:var(--nh-grey-200);
  --nh-border-strong:var(--nh-grey-300);
  --nh-text:var(--nh-grey-900);
  --nh-text-2:var(--nh-grey-600);
  --nh-text-3:var(--nh-grey-500);      /* min contrast 4.5:1 on white */
  --nh-primary:var(--nh-navy-800);
  --nh-primary-hover:var(--nh-navy-900);
  --nh-primary-soft:var(--nh-navy-50);
  --nh-on-primary:#FFFFFF;
  --nh-focus:0 0 0 3px rgba(37,99,235,.28);
  --nh-scrim:rgba(16,24,40,.48);       /* solid scrim; never backdrop-filter */

  /* Type */
  --nh-font:"Inter", -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --nh-font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;
  --nh-text-xs:12px;  --nh-lh-xs:16px;
  --nh-text-sm:14px;  --nh-lh-sm:20px;
  --nh-text-md:16px;  --nh-lh-md:24px;
  --nh-text-lg:18px;  --nh-lh-lg:28px;
  --nh-text-xl:20px;  --nh-lh-xl:28px;
  --nh-text-2xl:24px; --nh-lh-2xl:32px;
  --nh-text-3xl:30px; --nh-lh-3xl:38px;
  --nh-weight-regular:400; --nh-weight-medium:500; --nh-weight-semibold:600; --nh-weight-bold:700;

  /* Spacing: 8px grid (4 for hairline nudges only) */
  --nh-space-0-5:4px; --nh-space-1:8px; --nh-space-1-5:12px; --nh-space-2:16px; --nh-space-3:24px;
  --nh-space-4:32px; --nh-space-5:40px; --nh-space-6:48px; --nh-space-8:64px;

  /* Radii */
  --nh-radius-sm:6px; --nh-radius-md:8px; --nh-radius-lg:12px; --nh-radius-xl:16px; --nh-radius-pill:999px;

  /* Shadows */
  --nh-shadow-xs:0 1px 2px rgba(16,24,40,.05);
  --nh-shadow-sm:0 1px 3px rgba(16,24,40,.08), 0 1px 2px rgba(16,24,40,.04);
  --nh-shadow-md:0 4px 8px -2px rgba(16,24,40,.08), 0 2px 4px -2px rgba(16,24,40,.04);
  --nh-shadow-lg:0 12px 16px -4px rgba(16,24,40,.08), 0 4px 6px -2px rgba(16,24,40,.03);
  --nh-shadow-xl:0 20px 24px -4px rgba(16,24,40,.10), 0 8px 8px -4px rgba(16,24,40,.04);

  /* Sizes */
  --nh-control-h:36px;     /* buttons, desktop pointer */
  --nh-input-h:40px;       /* inputs, desktop pointer */
  --nh-touch:44px;         /* any touch screen; never smaller */
  --nh-sidebar-w:248px;
  --nh-topbar-h:56px;
  --nh-bottombar-h:64px;
  --nh-content-max:1200px;
  --nh-ease:cubic-bezier(.2,0,0,1); --nh-dur:.16s;
}
@media (pointer:coarse),(max-width:820px){ :root{ --nh-control-h:44px; --nh-input-h:44px; } }
