/* Ulo Pro — identity tokens. Source of truth: LifeOS/Business/brand/ulo-pro/tokens.css.
   Site copy at Projects/ulo-pro/site/public/assets/tokens.css — copy, don't edit, in the site. */
:root {
  --up-ink:   #0B0F14;
  --up-paper: #FFFFFF;
  --up-mute:  #566270;
  --up-rule:  #E4E7EB;
  --up-blue:  #0171FE;
  --up-cyan:  #18DAFE;
  --up-blue-text: #0058C7; /* links and any blue at body size (6.5:1 on paper); --up-blue is 4.38:1, accent/large-type/UI only */
  --up-grad:  linear-gradient(102deg, var(--up-blue), var(--up-cyan)); /* axis measured from the source PNG 2026-09-05: ~12° below horizontal, not the 135° first documented — generator/mark-geometry.json */
  --up-sans:  "Quicksand", system-ui, -apple-system, "Segoe UI", sans-serif;
  --up-mono:  "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
  --up-h1: clamp(2rem, 1.736rem + 1.11vw, 2.625rem);    /* 32px -> 42px, weight 700 */
  --up-h2: clamp(1.5rem, 1.342rem + 0.667vw, 1.875rem); /* 24px -> 30px, weight 700 */
  --up-h3: 1.25rem;                                     /* 20px, weight 600, card titles */
  --up-page-pad: 20px;
  --up-gap: 32px;
  --up-control-h: 48px;
  --up-radius: 8px;
  --up-radius-pill: 999px; /* primary CTA only */
  --up-mark-min: 16px;     /* smallest the U may be rendered */
  --up-on-blue: #FFFFFF;   /* text and icons on --up-blue or the gradient; theme-invariant, --up-paper flips in dark mode */
  /* The CTA fill is a restricted segment of the same blue-to-cyan ramp. --up-grad runs out to
     --up-cyan, where white text is 1.68:1 and unreadable; across this segment white stays
     4.51:1 to 6.52:1, so a 16px/600 button label passes AA. Same axis, same family, legible. */
  --up-grad-cta: linear-gradient(102deg, #0058C7, #016FFA);
}
@media (prefers-color-scheme: dark) {
  :root { --up-ink: #F5F7FA; --up-paper: #0B0F14; --up-mute: #9AA3AD; --up-rule: #232830; --up-blue-text: #1D79FF; }
}
