/*
 * Design tokens: the brand palette (deep forest green, cream, gold), a
 * compact type scale, spacing scale, radii, shadows, and motion easing.
 * Every other stylesheet reads from these custom properties only — no
 * hard-coded colours or sizes elsewhere, so the whole site restyles from
 * this one file. (This palette replaced an earlier near-black/gold theme —
 * grep for "ink" in class names elsewhere in the codebase and it's this
 * green, not literal black.)
 *
 * Fonts: a serif display face (Georgia — a safe, pre-installed system
 * font, no external request) for headings, paired with the existing sans
 * stack for body copy/UI — an editorial, premium feel for headings without
 * sacrificing UI legibility. See --font-display and base.css's h1–h3 rules.
 */

:root {
	/* Colour palette — deep forest green, cream, gold accent */
	--color-ink: #061d16;
	--color-ink-soft: #0a2b20;
	--color-white: #ffffff;
	--color-gray-50: #f5f1e8;
	--color-gray-100: #ece2c8;
	--color-gray-300: #d9d0ba;
	--color-gray-500: #647169;
	--color-gray-700: #3d4b44;
	--color-accent: #caa75b;
	--color-accent-dark: #a3813f;
	--color-accent-soft: #f3e9d2;
	--color-on-accent: var(--color-ink);

	--color-surface: var(--color-white);
	--color-surface-alt: var(--color-gray-50);
	--color-surface-dark: var(--color-ink);
	--color-text: var(--color-ink);
	--color-text-inverse: var(--color-white);
	--color-text-muted: var(--color-gray-500);
	--color-text-muted-inverse: #a9c2b5;
	--color-border: var(--color-gray-300);
	--color-border-dark: rgba(255, 255, 255, 0.12);
	--color-link: var(--color-accent-dark);
	--color-focus: var(--color-accent-dark);

	--color-success-bg: #e9f7ef;
	--color-success-text: #16663f;
	--color-error-bg: #fdecec;
	--color-error-text: #92251f;

	/* Typography — serif display headings, sans body/UI */
	--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--font-display: Georgia, "Times New Roman", serif;

	--text-xs: 0.75rem;
	--text-sm: 0.875rem;
	--text-base: 1rem;
	--text-md: 1.125rem;
	--text-lg: clamp(1.25rem, 1.15rem + 0.4vw, 1.4rem);
	--text-xl: clamp(1.5rem, 1.3rem + 0.8vw, 1.85rem);
	--text-2xl: clamp(1.85rem, 1.5rem + 1.4vw, 2.35rem);
	--text-3xl: clamp(2.15rem, 1.65rem + 2vw, 2.85rem);

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

	--tracking-tight: -0.01em;
	--tracking-normal: 0;
	--tracking-wide: 0.03em;
	--tracking-wider: 0.1em;

	--measure: 58ch;

	/* Spacing scale — kept tighter than a typical editorial layout */
	--space-3xs: 0.25rem;
	--space-2xs: 0.5rem;
	--space-xs: 0.75rem;
	--space-sm: 1rem;
	--space-md: 1.5rem;
	--space-lg: 2rem;
	--space-xl: 3rem;
	--space-2xl: 4rem;
	--space-3xl: 6rem;

	--container-max: 1240px;
	--container-narrow: 720px;

	--radius-sm: 10px;
	--radius-md: 16px;
	--radius-lg: 26px;
	--radius-pill: 999px;

	--shadow-xs: 0 1px 2px rgba(5, 29, 22, 0.05);
	--shadow-sm: 0 4px 12px rgba(5, 29, 22, 0.06);
	--shadow-md: 0 12px 32px rgba(5, 29, 22, 0.12);
	--shadow-lg: 0 24px 56px rgba(5, 29, 22, 0.18);

	--ease-premium: cubic-bezier(0.16, 1, 0.3, 1);
	--motion-fast: 160ms var(--ease-premium);
	--motion-normal: 280ms var(--ease-premium);
	--motion-slow: 440ms var(--ease-premium);
}

@media (prefers-reduced-motion: reduce) {
	:root {
		--motion-fast: 0ms;
		--motion-normal: 0ms;
		--motion-slow: 0ms;
	}
}
