/* tokens.css — design tokens. Change a value here and it changes sitewide.
   Loaded first; every other stylesheet reads from these variables. */

/* Cascade layer order. Later layers always win over earlier ones,
   regardless of selector specificity. Declared once, here, first. */
@layer base, layout, components, utilities;

:root {
  /* Colour */
  --color-primary: #1b3a5c;        /* deep navy: headings, nav, buttons */
  --color-primary-dark: #122840;   /* hover state for primary */
  --color-accent: #0e7c86;         /* teal: links, highlights */
  --color-accent-dark: #0a5c64;
  --color-text: #1f2933;
  --color-text-muted: #5c6b7a;
  --color-bg: #ffffff;
  --color-bg-alt: #f3f6f9;         /* subtle section backgrounds, cards */
  --color-border: #d9e0e7;
  --color-success: #1e7f4f;
  --color-success-bg: #e6f4ec;
  --color-error: #b42318;
  --color-error-bg: #fdecea;
  --color-focus: #f5a623;          /* high-contrast focus ring */

  /* Event status colours (timeline) */
  --status-open: #1e7f4f;          /* green: ongoing / registration open */
  --status-open-bg: #e6f4ec;
  --status-upcoming: #0e7c86;      /* teal: announced, not yet open */
  --status-upcoming-bg: #e3f1f2;
  --status-past: #b42318;          /* red: finished */
  --status-past-bg: #fdecea;

  /* Hero band */
  --hero-gradient: linear-gradient(135deg, #122840 0%, #1b3a5c 55%, #0e7c86 140%);
  --hero-text: #ffffff;
  --hero-text-muted: #c5d3e0;

  /* Typography — system stack, no font files needed */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
               "Helvetica Neue", Arial, "Noto Sans", sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* Fluid type scale: grows gently with viewport width */
  --text-sm: clamp(0.85rem, 0.8rem + 0.2vw, 0.95rem);
  --text-base: clamp(1rem, 0.95rem + 0.25vw, 1.125rem);
  --text-lg: clamp(1.125rem, 1.05rem + 0.4vw, 1.35rem);
  --text-xl: clamp(1.4rem, 1.2rem + 0.9vw, 1.9rem);
  --text-2xl: clamp(1.8rem, 1.4rem + 1.8vw, 2.75rem);

  --leading-tight: 1.2;
  --leading-normal: 1.6;

  /* Spacing scale */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4.5rem;

  /* Layout */
  --container-max: 72rem;
  --container-narrow: 48rem;
  --aside-max: 28rem;               /* side column of .split on one-column screens */
  --gutter: 1rem;                   /* side padding on phones */
  --header-height: 4.25rem;

  /* Images */
  --avatar-size: 7.5rem;            /* round board-member photos */
  --logo-height: 4.5rem;            /* sponsor / patron logos */
  --logo-height-lg: 7rem;           /* conference logos */

  /* Shape and depth */
  --radius-sm: 0.25rem;
  --radius: 0.5rem;
  --radius-lg: 0.75rem;
  --shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.06);
  --shadow: 0 4px 16px rgba(16, 24, 40, 0.08);

  /* Motion */
  --transition: 150ms ease;
}

@media (min-width: 48em) {
  :root {
    --gutter: 2rem;
  }
}
