/* ==========================================================================
   Dot Map — design tokens
   --------------------------------------------------------------------------
   Ported VERBATIM from "Dot Map Design System/tokens/*.css". Same variable
   names, same values, in the same order. The only deviation is documented
   immediately below.

   RULES FOR EVERY AGENT ON THIS BUILD
   - This file contains :root custom properties and nothing else. No selectors,
     no rules, no @media, no @font-face.
   - Never hardcode a hex, px radius, shadow or duration that exists here.
   - Never invent a token. If a value you need is missing, use the nearest
     existing token or raise it — do not add a --dm-* of your own.
   - Downstream files reference these as var(--token).

   DEVIATION FROM SOURCE (one, deliberate)
   tokens/fonts.css contained a single Google Fonts @import. It is NOT ported.
   The brief forbids shipping it: render-blocking third-party request and a
   privacy problem for the public-sector clients this site targets. IBM Plex
   Sans and IBM Plex Mono are self-hosted instead — the woff2 files live in
   assets/fonts/ and the @font-face rules are at the top of base.css.
   --font-sans / --font-mono below are unchanged and still resolve correctly,
   because the @font-face families are declared under those exact names.
   ========================================================================== */

/* --- colors.css — Navy, Ink, Geo Teal, Signal Amber, semantic aliases --- */
:root{
/* ---- Navy (primary / trust) ---- */
--navy-50:#eef2f6;
--navy-100:#d7e0e9;
--navy-200:#b0c1d3;
--navy-300:#82a0ba;
--navy-400:#517d9f;
--navy-500:#345f81;
--navy-600:#26496a;
--navy-700:#1e3a56;
--navy-800:#182f46;
--navy-900:#122333;
--navy-950:#0a141e;

/* ---- Ink (neutral, from wordmark charcoal) ---- */
--ink-0:#ffffff;
--ink-25:#f7f8f8;
--ink-50:#eef0f1;
--ink-100:#dfe2e4;
--ink-200:#c3c8cc;
--ink-300:#a2a9ae;
--ink-400:#7d858c;
--ink-500:#5f676e;
--ink-600:#474e54;
--ink-700:#363c41;
--ink-800:#2a2e32;
--ink-900:#242628;
--ink-950:#171819;

/* ---- Geo Teal (advanced / geospatial accent) ---- */
--teal-50:#eafaf7;
--teal-100:#c9f0e8;
--teal-200:#95dfd2;
--teal-300:#5fc7b7;
--teal-400:#35a89b;
--teal-500:#1e857c;
--teal-600:#1b6d66;
--teal-700:#195952;
--teal-800:#164541;
--teal-900:#0f302d;

/* ---- Signal Amber (CTA / marker-pin accent) ---- */
--amber-50:#fdf3ea;
--amber-100:#fbe1c6;
--amber-200:#f5c48c;
--amber-300:#eda254;
--amber-400:#e2822f;
--amber-500:#c6691f;
--amber-600:#a3541a;
--amber-700:#7e4116;

/* ---- Semantic status ---- */
--color-success:#1c7a4d;
--color-success-bg:#e9f6ee;
--color-warning:#a3541a;
--color-warning-bg:#fdf3ea;
--color-danger:#b3352b;
--color-danger-bg:#fbebe9;
--color-info:var(--navy-600);
--color-info-bg:var(--navy-50);

/* ---- Semantic aliases ---- */
--bg-page:var(--ink-25);
--bg-surface:var(--ink-0);
--bg-surface-raised:var(--ink-0);
--bg-sunken:var(--ink-50);
--bg-inverse:var(--navy-950);

--text-primary:var(--ink-900);
--text-secondary:var(--ink-600);
--text-muted:var(--ink-400);
--text-on-brand:var(--ink-0);
--text-on-dark:var(--ink-50);
--text-link:var(--navy-600);
--text-link-hover:var(--navy-700);

--border-default:var(--ink-200);
--border-strong:var(--ink-300);
--border-focus:var(--navy-500);

--brand-primary:var(--navy-700);
--brand-primary-hover:var(--navy-800);
--brand-primary-active:var(--navy-950);
--brand-accent:var(--teal-500);
--brand-accent-hover:var(--teal-600);
--brand-signal:var(--amber-400);
--brand-signal-hover:var(--amber-500);
}

/* --- typography.css — families, type scale, leading, tracking, weights --- */
:root{
--font-sans:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
--font-mono:"IBM Plex Mono","JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;

--text-display:3.25rem;
--text-h1:2.25rem;
--text-h2:1.875rem;
--text-h3:1.5rem;
--text-h4:1.25rem;
--text-body-lg:1.125rem;
--text-body:1rem;
--text-body-sm:0.875rem;
--text-caption:0.75rem;
--text-mono-label:0.8125rem;

--leading-tight:1.15;
--leading-snug:1.3;
--leading-normal:1.5;
--leading-relaxed:1.65;

--tracking-tight:-0.01em;
--tracking-normal:0;
--tracking-wide:0.04em;
--tracking-widest:0.12em;

--weight-regular:400;
--weight-medium:500;
--weight-semibold:600;
--weight-bold:700;
}

/* --- spacing.css — 4px-base scale, container widths, gutter --- */
:root{
--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;
--space-16:64px;
--space-20:80px;
--space-24:96px;
--space-32:128px;

--container-max:1200px;
--container-narrow:760px;
--gutter:24px;
}

/* --- effects.css — radii, shadows, border widths, easing, durations --- */
:root{
--radius-sm:4px;
--radius-md:6px;
--radius-lg:10px;
--radius-xl:16px;
--radius-pill:999px;
--radius-focus-ring:6px;

--shadow-xs:0 1px 2px 0 rgb(18 35 51 / 0.06);
--shadow-sm:0 1px 3px 0 rgb(18 35 51 / 0.08),0 1px 2px -1px rgb(18 35 51 / 0.06);
--shadow-md:0 4px 10px -2px rgb(18 35 51 / 0.10),0 2px 4px -2px rgb(18 35 51 / 0.06);
--shadow-lg:0 12px 24px -6px rgb(18 35 51 / 0.14),0 4px 8px -4px rgb(18 35 51 / 0.08);
--shadow-focus:0 0 0 3px rgb(52 95 129 / 0.35);

--border-width-hairline:1px;
--border-width-default:1px;
--border-width-strong:2px;

--ease-standard:cubic-bezier(.2,.8,.2,1); /* @kind other */
--ease-out:cubic-bezier(0,0,.2,1); /* @kind other */
--duration-fast:120ms; /* @kind other */
--duration-base:180ms; /* @kind other */
--duration-slow:280ms; /* @kind other */
}

