/* ============================================================
   HENRIJS MIZGAJEVS — NORDIC MOTION
   Design tokens. Single source of truth for color, type, space,
   grid and motion constants. Nothing below is decorative — every
   value here is referenced by at least one other file.
   ============================================================ */

:root {
  /* ---------- Color ----------
     Neutral gray, not green — every value below is a true (or
     near-true) neutral, no channel biased toward hue. White is the
     dominant surface; --color-bg-alt exists only for the rare, small
     surface that benefits from the faintest lift off pure white (see
     its one use in layout.css). Mint is a restrained accent only —
     see components.css for exactly where it is allowed to appear. */
  --color-bg: #FFFFFF;
  --color-bg-alt: #F5F5F5;
  --color-ink: #222222;
  --color-secondary: #707070;
  --color-border: #E5E5E5;
  --color-white: #FFFFFF;
  --color-mint: #ADEBB3;
  --color-mint-text: #222222; /* dark text on mint surfaces */

  /* Contact section contrast — a dark neutral, not a new hue. */
  --color-contrast: var(--color-ink);
  --color-contrast-text: var(--color-bg);
  --color-contrast-border: color-mix(in srgb, var(--color-bg) 20%, transparent);
  --color-contrast-secondary: color-mix(in srgb, var(--color-bg) 55%, transparent);

  /* ---------- Type families ---------- */
  --font-sans: "Inter Tight", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
  --font-mono: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;

  /* ---------- Type scale (fluid, clamp-based) ----------
     Deliberately restrained: nothing here is sized to fill the
     viewport. Sophistication comes from spacing, weight contrast and
     alignment, not from scale. --fs-display carries the hero name
     and the contact closing line — the two moments that should read
     as the biggest statement on the page, still capped well short of
     a full-bleed headline. */
  --fs-display: clamp(2.75rem, 5vw, 4.75rem);   /* ~44–76px */
  --fs-hero-name: clamp(3.25rem, 6.5vw, 6rem);   /* ~52–96px — the one place identity should read with real confidence */
  --fs-h1: clamp(2rem, 3.5vw, 3.25rem);          /* ~32–52px, section headings */
  --fs-h2: clamp(2rem, 3.5vw, 3.25rem);          /* ~32–52px, section headings */
  --fs-project-title: clamp(1.75rem, 3vw, 3rem); /* ~28–48px */
  --fs-body-lg: clamp(1rem, 1vw, 1.125rem);      /* ~16–18px */
  --fs-body: 1rem;                                /* 16px */
  --fs-meta: clamp(0.75rem, 0.4vw, 0.8125rem);    /* ~12–13px */

  --lh-tight: 1.02;
  --lh-heading: 1.08;
  --lh-body: 1.6;

  --ls-tight: -0.02em;
  --ls-meta: 0.08em;

  --fw-regular: 400;
  --fw-medium: 500;

  /* ---------- Grid & space ---------- */
  --content-max: 1600px;
  --gutter: clamp(1.5rem, 5vw, 6rem);
  --section-space: clamp(4.5rem, 13vw, 13.75rem); /* ~120–220px */
  --section-space-sm: clamp(3rem, 7vw, 6rem);
  --grid-columns: 12;
  --grid-gap: clamp(1rem, 1.6vw, 1.5rem);

  --hairline: 1px solid var(--color-border);
  --hairline-contrast: 1px solid var(--color-contrast-border);

  /* ---------- Motion tokens ----------
     Centralized so every module (motion.js, interactions.js,
     horizontal-scroll.js, spatial-object.js, baltic-motif.js) reads
     the same duration/easing/stagger vocabulary instead of each
     picking its own numbers. */
  --dur-instant: 0.15s;
  --dur-fast: 0.3s;
  --dur-base: 0.5s;
  --dur-slow: 0.9s;
  --dur-timeline: 1.1s;

  --ease-precise: cubic-bezier(0.65, 0, 0.35, 1);   /* mechanical, symmetrical */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);         /* confident deceleration */
  --ease-in-out: cubic-bezier(0.83, 0, 0.17, 1);     /* scroll-linked transforms */

  --dist-sm: 8px;
  --dist-md: 24px;
  --dist-lg: 64px;

  --stagger-tight: 0.05s;
  --stagger-base: 0.08s;

  /* Scroll sensitivity: how much of the viewport an element must
     cross before a discrete reveal fires. Centralized so every
     ScrollTrigger start point stays in sync if this is retuned. */
  --scroll-enter: 85%;
}
