/* =====================================================================
   PulseRx design tokens  ·  v0 (Triton-themed)
   Drop into a Frappe app at public/css/tokens.css
   Layer 1 = primitives · Layer 2 = semantic · Layer 3 = density/mode
   ===================================================================== */

/* Load brand fonts. Frappe Desk does not bundle Lato / IBM Plex /
 * JetBrains Mono - without this the type hierarchy falls back to
 * system-ui and the design loses its character. */
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&family=IBM+Plex+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

:root {
  /* ---------- LAYER 1 · PRIMITIVES ---------- */
  --prx-blue-700:#1D3878;  --prx-blue-600:#244494;  --prx-blue-100:#E4EAF6;
  --prx-gold-700:#735500;  --prx-gold-600:#916B00;  --prx-gold-500:#C68A00;  --prx-gold-100:#FBF1DA;
  --prx-green-700:#157347; --prx-green-600:#1B8755;  --prx-green-100:#E7F4EE;
  --prx-red-700:#B42318;   --prx-red-100:#FBEAE8;
  --prx-red-logo:#D32F2F;  /* logo cross ONLY — confirm vs asset */

  --prx-gray-0:#FFFFFF;  --prx-gray-25:#FAFAFA; --prx-gray-50:#F5F7F9;
  --prx-gray-200:#E4E7EB; --prx-gray-300:#C9CFD6;
  --prx-gray-600:#666666; --prx-gray-700:#494C4F; --prx-gray-800:#333333; --prx-gray-900:#0A0A0A;

  /* ---------- LAYER 2 · SEMANTIC ---------- */
  --prx-primary:var(--prx-blue-600);
  --prx-primary-hover:var(--prx-blue-700);
  --prx-primary-fg:#FFFFFF;
  --prx-accent:var(--prx-gold-600);
  --prx-accent-hover:var(--prx-gold-700);

  --prx-bg-page:var(--prx-gray-50);
  --prx-bg-card:var(--prx-gray-0);
  --prx-bg-panel:var(--prx-gray-25);
  --prx-bg-inverse:var(--prx-blue-600);
  --prx-bg-hover:#EEF1F5;
  --prx-bg-selected:var(--prx-blue-100);

  --prx-text-strong:var(--prx-gray-900);
  --prx-text-body:var(--prx-gray-800);
  --prx-text-muted:var(--prx-gray-600);
  --prx-text-subtle:var(--prx-gray-700);
  --prx-text-on-brand:#FFFFFF;
  --prx-link:var(--prx-blue-600);

  --prx-border:var(--prx-gray-200);
  --prx-border-strong:var(--prx-gray-300);
  --prx-divider:var(--prx-gray-200);

  /* Functional — 4-part sets (fill / text-on-white / tint-bg / border) */
  --prx-success-fill:var(--prx-green-600);  --prx-success-text:var(--prx-green-700);
  --prx-success-bg:var(--prx-green-100);    --prx-success-border:#B5E0CB;
  --prx-warning-fill:var(--prx-gold-500);   --prx-warning-text:#8A6100;
  --prx-warning-bg:var(--prx-gold-100);     --prx-warning-border:#EBD9A6;
  --prx-danger-fill:var(--prx-red-700);     --prx-danger-text:var(--prx-red-700);
  --prx-danger-bg:var(--prx-red-100);       --prx-danger-border:#F1C7C2;
  --prx-info-fill:var(--prx-blue-600);      --prx-info-text:var(--prx-blue-600);
  --prx-info-bg:var(--prx-blue-100);        --prx-info-border:#BFCDEC;

  --prx-focus-ring:0 0 0 2px #FFFFFF, 0 0 0 4px var(--prx-blue-600);
  --prx-focus-glow:0 0 0 3px rgba(36,68,148,.15);
  --prx-focus-color:var(--prx-blue-600);

  /* ---------- TYPE ---------- */
  --prx-font-sans:'Lato', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --prx-font-data:'IBM Plex Sans', system-ui, sans-serif;
  --prx-font-mono:'JetBrains Mono','Consolas', monospace;
  --prx-tnum:"tnum" 1, "lnum" 1;

  --prx-text-h1:1.75rem;     /* 28 */
  --prx-text-h2:1.375rem;    /* 22 */
  --prx-text-h3:1.125rem;    /* 18 */
  --prx-text-h4:1rem;        /* 16 */
  --prx-text-h5:0.875rem;    /* 14 */
  --prx-text-h6:0.75rem;     /* 12 */
  --prx-text-body-sz:0.875rem;  /* 14 desk */
  --prx-text-data-sz:0.8125rem; /* 13 table */
  --prx-text-small:0.75rem;  /* 12 */
  --prx-text-caption:0.6875rem; /* 11 */
  --prx-lh-tight:1.25; --prx-lh-normal:1.5; --prx-lh-data:1.35;
  --prx-fw-bold:700; --prx-fw-semi:600; --prx-fw-reg:400;

  /* ---------- SPACING (4px base, 8px rhythm) ---------- */
  --prx-space-0_5:2px; --prx-space-1:4px;  --prx-space-2:8px;  --prx-space-3:12px;
  --prx-space-4:16px;  --prx-space-5:20px; --prx-space-6:24px; --prx-space-8:32px; --prx-space-12:48px;

  /* ---------- SIZING / DENSITY (desk) ---------- */
  --prx-row-h:32px;
  --prx-control-h:32px;
  --prx-tap-min:36px;
  --prx-page-pad:24px;

  /* ---------- RADIUS ---------- */
  --prx-radius-sm:4px; --prx-radius-md:6px; --prx-radius-lg:8px; --prx-radius-full:999px;

  /* ---------- SHADOW (blue-tinted) ---------- */
  --prx-shadow-sm:0 1px 2px rgba(36,68,148,.06);
  --prx-shadow-md:0 2px 6px rgba(36,68,148,.08);
  --prx-shadow-lg:0 6px 16px rgba(36,68,148,.12);

  /* ---------- MAP onto Frappe Desk variables ---------- */
  --primary:var(--prx-primary);
  --text-color:var(--prx-text-body);
  --text-muted:var(--prx-text-muted);
  --bg-color:var(--prx-bg-page);
  --card-bg:var(--prx-bg-card);
  --border-color:var(--prx-border);
}

/* ---------- MOBILE / SHOP-FLOOR MODE ---------- */
@media (max-width: 768px) {
  :root {
    --prx-text-body-sz:1rem;      /* 16 */
    --prx-text-data-sz:0.9375rem; /* 15 */
    --prx-text-small:0.8125rem;   /* 13 */
    --prx-row-h:48px; --prx-control-h:48px; --prx-tap-min:48px; --prx-page-pad:16px;
  }
}
[data-prx-mode="mobile"] {
  --prx-text-body-sz:1rem;
  --prx-text-data-sz:0.9375rem;
  --prx-text-small:0.8125rem;
  --prx-row-h:48px; --prx-control-h:48px; --prx-tap-min:48px; --prx-page-pad:16px;
  --prx-text-h1:2rem;
}

.prx-num { font-family:var(--prx-font-data); font-feature-settings:var(--prx-tnum); }
