/* KNETIX design tokens.
   Single source of design truth for the site. Every colour, type step,
   radius, shadow and motion value lives here and is referenced by var().
   Values may not be edited ad hoc; change them here or not at all.
   Legacy palette mapping, for the phased migration:
     #0E0C0B and #16110D  ->  --bg-0
     #8B2E2E and #8A2F2F  ->  --maroon-700
     #B03030 and #A83B3B  ->  --maroon-500
     #C9B89A and #C9B592  ->  --tan
     #EDE5D8 and #F0EADD  ->  --cream
     #7A6E62 and #9A8D78  ->  --text-secondary or --tan, per context
   Phase 1 ships this file as an additive layer only: no rule here
   selects a page element, so no existing page style changes. */

:root{
  /* Surfaces, elevation ramp on near-black */
  --bg-0:#0E0E10; --bg-1:#16161A; --bg-2:#1E1E24; --bg-3:#26262E;
  /* Oxblood and maroon ramp */
  --maroon-900:#4A1015;
  --maroon-700:#7B1E26;  /* fills and borders only, 1.89:1 on bg-0, never text */
  --maroon-500:#B23A48;  /* large text and headings only, 3.30:1 */
  --maroon-400:#CC5563;  /* hover for large maroon elements */
  --maroon-300:#E08693;  /* the only maroon safe for body text, 4.5:1 plus */
  /* Cream and bone */
  --cream:#F5F0E6;       /* primary light text, 16.9:1 */
  --cream-dim:#D8D2C4;
  /* Tan and khaki secondary */
  --tan:#C9B79C;         /* secondary text and accents, 9.86:1 */
  --tan-dim:#9C8E76;
  /* Neutral text */
  --text-primary:#F5F0E6;
  --text-secondary:#A1A1AA; /* 7.52:1 */
  --text-muted:#71717A;     /* large or non-essential text only */
  /* Lines and states */
  --border-subtle:#26262E; --border-strong:#3A3A44;
  --focus-ring:#E08693; --success:#4E9A6B; --danger:#C0392B;
  /* Type scale, 1.25 major third on a 16px base */
  --fs-xs:.8rem; --fs-sm:.9rem; --fs-base:1rem; --fs-lg:1.25rem;
  --fs-xl:1.563rem; --fs-2xl:1.953rem; --fs-3xl:2.441rem;
  --fs-4xl:3.052rem; --fs-5xl:3.815rem; --fs-6xl:4.768rem;
  --lh-tight:1.05; --lh-snug:1.2; --lh-normal:1.55;
  --tracking-tight:-.02em; --tracking-label:.12em;
  /* Font stacks */
  --font-display:'Bricolage Grotesque',system-ui,sans-serif;
  --font-body:'Geist',system-ui,sans-serif;
  --font-mono:'Geist Mono',ui-monospace,monospace;
  /* Radius */
  --radius-sm:6px; --radius-md:12px; --radius-lg:20px; --radius-pill:999px;
  /* Shadows */
  --shadow-sm:0 1px 2px rgba(0,0,0,.4);
  --shadow-md:0 8px 24px rgba(0,0,0,.45);
  --shadow-glow:0 0 60px rgba(123,30,38,.35);
  /* Motion */
  --dur-fast:150ms; --dur-base:240ms; --dur-slow:420ms;
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-in-out:cubic-bezier(.65,0,.35,1);
}

/* Self-hosted OFL faces. Declared here so later phases can switch to
   var(--font-display) and var(--font-body) without touching this file. */
@font-face{
  font-family:'Bricolage Grotesque';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/bricolage-500.woff2') format('woff2');
}
@font-face{
  font-family:'Bricolage Grotesque';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/fonts/bricolage-600.woff2') format('woff2');
}
@font-face{
  font-family:'Bricolage Grotesque';
  font-style:normal;
  font-weight:700;
  font-display:swap;
  src:url('/fonts/bricolage-700.woff2') format('woff2');
}
@font-face{
  font-family:'Geist';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/geist-400.woff2') format('woff2');
}
@font-face{
  font-family:'Geist';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/geist-500.woff2') format('woff2');
}
@font-face{
  font-family:'Geist';
  font-style:normal;
  font-weight:600;
  font-display:swap;
  src:url('/fonts/geist-600.woff2') format('woff2');
}
@font-face{
  font-family:'Geist Mono';
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url('/fonts/geist-mono-400.woff2') format('woff2');
}
@font-face{
  font-family:'Geist Mono';
  font-style:normal;
  font-weight:500;
  font-display:swap;
  src:url('/fonts/geist-mono-500.woff2') format('woff2');
}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important; animation-iteration-count:1!important;
    transition-duration:.001ms!important; scroll-behavior:auto!important;
  }
}
