/* NACOS Week 2027 design tokens.
 * Colours and type come from the NACOS Week 2027 brand guidelines.
 * Reference tokens only; never hard-code values in styles.css.
 */
:root {
  /* Core palette */
  --brand-green: #089002;      /* active signal colour */
  --brand-deep: #005012;       /* depth and authority */
  --brand-off: #F5F7F2;        /* breathing room */
  /* Supporting palette */
  --brand-pale: #E6F2E3;
  --brand-soft: #78B978;
  --brand-black: #0B0F0C;

  /* Semantic colours */
  --color-paper: var(--brand-off);
  --color-paper-2: var(--brand-pale);
  --color-ink: var(--brand-black);
  --color-ink-muted: color-mix(in oklab, var(--brand-black) 68%, var(--brand-off));
  --color-ink-faint: color-mix(in oklab, var(--brand-black) 45%, var(--brand-off));
  --color-rule: color-mix(in oklab, var(--brand-deep) 22%, var(--brand-off));
  --color-night: var(--brand-black);
  --color-night-2: color-mix(in oklab, var(--brand-black) 88%, var(--brand-deep));
  --color-night-rule: color-mix(in oklab, var(--brand-off) 14%, var(--brand-black));
  --color-on-night: var(--brand-off);
  --color-on-night-muted: color-mix(in oklab, var(--brand-off) 68%, var(--brand-black));
  --color-forest: var(--brand-deep);
  --color-forest-rule: color-mix(in oklab, var(--brand-off) 22%, var(--brand-deep));
  --color-on-forest-muted: color-mix(in oklab, var(--brand-off) 75%, var(--brand-deep));
  --color-signal: var(--brand-green);
  --color-signal-soft: var(--brand-soft);
  --color-signal-on-dark: color-mix(in oklab, var(--brand-green) 72%, var(--brand-off)); /* brand green, lifted for legibility on photos */
  --color-focus: var(--brand-soft);
  --color-placeholder: color-mix(in oklab, var(--brand-pale) 70%, var(--brand-off));
  --color-placeholder-night: color-mix(in oklab, var(--brand-black) 80%, var(--brand-deep));
  --color-error: #A3241B;      /* form errors only */
  --color-mystery-figure: color-mix(in oklab, var(--brand-soft) 85%, var(--brand-off));
  --color-mystery-glow: color-mix(in oklab, var(--brand-green) 35%, transparent);
  --color-mystery-tag: color-mix(in oklab, var(--brand-black) 55%, transparent);
  --hero-scrim-strong: color-mix(in oklab, var(--brand-black) 94%, transparent);
  --hero-scrim-mid: color-mix(in oklab, var(--brand-black) 74%, transparent);
  --hero-scrim-light: color-mix(in oklab, var(--brand-black) 22%, transparent);
  --hero-scrim-clear: color-mix(in oklab, var(--brand-black) 0%, transparent);

  /* Type */
  --font-display: "Montserrat", system-ui, sans-serif;
  --font-body: "Poppins", system-ui, sans-serif;

  --text-xs: 0.8125rem;
  --text-sm: 0.9375rem;
  --text-base: 1.0625rem;
  --text-lg: 1.25rem;
  --text-xl: clamp(1.375rem, 1.1rem + 0.9vw, 1.75rem);
  --text-2xl: clamp(1.75rem, 1.3rem + 1.6vw, 2.5rem);
  --text-3xl: clamp(2.25rem, 1.5rem + 3vw, 3.75rem);
  --text-display: clamp(3.5rem, 1rem + 11vw, 11rem);
  --text-stat: clamp(3rem, 2rem + 4vw, 5.5rem);

  /* Space (4pt) */
  --space-2xs: 0.25rem;
  --space-xs: 0.5rem;
  --space-sm: 0.75rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;
  --space-2xl: 3rem;
  --space-3xl: 4.5rem;
  --space-4xl: 7rem;
  --gutter: clamp(1rem, 4vw, 3rem);
  --measure: 62ch;
  --max: 80rem;

  /* Shape */
  --radius-sm: 8px;
  --radius-md: 16px;
  --radius-lg: 24px;
  --radius-pill: 999px;
  --rule: 1px solid var(--color-rule);
  --rule-night: 1px solid var(--color-night-rule);

  /* Motion */
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in: cubic-bezier(0.7, 0, 0.84, 0);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --dur-short: 160ms;
  --dur-med: 320ms;
  --dur-long: 1600ms;
}
