/* -----------------------------------------------------------------------------
 * Boson Group — design tokens
 *
 * Source: Boson Group Complete Design System v1.0, 15 July 2026, read from
 * 03_Brand-Design/Brand-Guidelines/ rather than from the summary skill.
 *
 * STATUS: APPROVED FOR NOW by Arslan, 18 August 2026. These tokens are the
 * operative standard and are safe to build against.
 *
 * ONE CAVEAT REMAINS, and the source document states it itself: the palette was
 * sampled from a raster PNG, and "final logo color values must be confirmed from
 * the vector source rather than sampled from the raster image". No vector master
 * exists yet (risk 6). Every colour below is correct against an approved document
 * that is itself derived from a PNG. Revisit the palette when the vector arrives;
 * nothing else here is affected.
 *
 * This file is the only place raw brand values are allowed to appear. Extend
 * tokens here; never write a literal hex, size or shadow into a stylesheet,
 * template or block.
 * -------------------------------------------------------------------------- */

:root {

	/* --- Brand palette ---------------------------------------------------- */
	--bsn-color-purple: #662d91;
	--bsn-color-indigo: #5051a3;
	--bsn-color-blue: #007bc1;
	--bsn-color-cyan: #009adb;
	--bsn-color-midnight: #092f4f;
	--bsn-color-slate: #334b5e;
	--bsn-color-mist: #eef7fc;
	--bsn-color-lavender: #f3eff8;
	--bsn-color-white: #ffffff;

	/* --- Semantic roles --------------------------------------------------- */
	--bsn-color-text: var( --bsn-color-midnight );
	--bsn-color-text-secondary: var( --bsn-color-slate );
	--bsn-color-surface: var( --bsn-color-white );
	--bsn-color-surface-light: var( --bsn-color-mist );
	--bsn-color-surface-accent: var( --bsn-color-lavender );
	--bsn-color-link: var( --bsn-color-blue );
	--bsn-color-border: rgba( 9, 47, 79, 0.12 );

	/* --- Status. Never communicate status by color alone. ----------------- */
	--bsn-color-success: #248052;
	--bsn-color-warning: #a56500;
	--bsn-color-error: #b42318;
	--bsn-color-info: #007bc1;
	--bsn-color-focus-ring: #6e56cf;

	--bsn-focus-ring-width: 2px;
	--bsn-focus-ring-offset: 2px;

	/* Minimum interactive target. Not from the design system — the design system
	 * commits to WCAG 2.2 AA without stating a size, so this comes from the
	 * standard itself, success criterion 2.5.8 Target Size (Minimum). */
	--bsn-target-min: 24px;

	/* --- Signature gradient — Boson Spectrum -----------------------------
	 * Large brand fields, section accents and approved wordmark artwork only.
	 * Never on body text, small icons or dense UI. One beam per composition.
	 * ------------------------------------------------------------------- */
	--bsn-gradient-spectrum: linear-gradient(
		180deg,
		#662d91 0%,
		#5051a3 46%,
		#007bc1 78%,
		#009adb 100%
	);

	/* --- Typography ------------------------------------------------------- */
	--bsn-font-family-base: 'Roboto', Arial, sans-serif;

	--bsn-font-size-display: clamp( 3rem, 2.2rem + 3vw, 4.5rem );   /* 48–72px */
	--bsn-font-size-h1: clamp( 2.5rem, 2rem + 2vw, 3.5rem );        /* 40–56px */
	--bsn-font-size-h2: clamp( 1.875rem, 1.6rem + 1.2vw, 2.5rem );  /* 30–40px */
	--bsn-font-size-h3: clamp( 1.375rem, 1.25rem + 0.5vw, 1.75rem );/* 22–28px */
	--bsn-font-size-body-large: clamp( 1.125rem, 1.1rem + 0.2vw, 1.25rem ); /* 18–20px */
	--bsn-font-size-body: 1rem;                                     /* 16px */
	--bsn-font-size-small: 0.875rem;                                /* 14px */
	--bsn-font-size-label: 0.875rem;                                /* 14–16px */

	--bsn-line-height-display: 1.04;
	--bsn-line-height-h1: 1.08;
	--bsn-line-height-h2: 1.15;
	--bsn-line-height-h3: 1.25;
	--bsn-line-height-body: 1.55;
	--bsn-line-height-small: 1.45;
	--bsn-line-height-label: 1.2;

	/* Body lines run 55–75 characters. */
	--bsn-measure-body: 68ch;

	/* --- Spacing scale ---------------------------------------------------- */
	--bsn-space-1: 4px;
	--bsn-space-2: 8px;
	--bsn-space-3: 12px;
	--bsn-space-4: 16px;
	--bsn-space-5: 24px;
	--bsn-space-6: 32px;
	--bsn-space-7: 48px;
	--bsn-space-8: 64px;
	--bsn-space-9: 96px;

	/* --- Layout ----------------------------------------------------------- */
	--bsn-content-max-width: 1280px;
	--bsn-gutter-desktop: 24px;
	--bsn-margin-mobile: 20px;

	/* --- Radii ------------------------------------------------------------ */
	--bsn-radius-control: 8px;
	--bsn-radius-card: 12px;
	--bsn-radius-panel: 24px;

	/* --- Borders and shadow. Structure before shadow. --------------------- */
	--bsn-border-width: 1px;
	--bsn-shadow-1: 0 2px 8px rgba( 9, 47, 79, 0.08 );
	--bsn-shadow-2: 0 12px 32px rgba( 9, 47, 79, 0.14 ); /* Overlays only. */

	/* --- §15-governed additions requested by 08-selected-creative-direction.md §9 -
	 * Requested by the direction, not invented here. Each closes a named finding
	 * from 08-design-verification.md and needs digital design owner +
	 * accessibility QA sign-off before this file counts as re-approved.
	 * ------------------------------------------------------------------- */

	/* 3.44:1 on white, 3.36:1 on Mist. --bsn-color-border is 1.25:1 and cannot
	 * legally bound a form control or an essential graphic (WCAG 1.4.11). Also
	 * carries the ownership-chain rail (§5.5). */
	--bsn-color-border-control: rgba( 9, 47, 79, 0.55 );

	/* 3.43:1 on Midnight. The hero evidence panel's edge, and every divider on a
	 * dark ground. */
	--bsn-color-border-on-dark: rgba( 255, 255, 255, 0.40 );

	/* §11's minimum control height, named directly rather than left as a literal
	 * repeated in two files (F13). */
	--bsn-control-min-height: 44px;

	/* Uppercase eyebrow tracking. §5 sanctions the eyebrow treatment but gives no
	 * value; one token stops six components inventing six values. */
	--bsn-tracking-label: 0.08em;

	/* §11's own token list names motion.* and this file had none. */
	--bsn-motion-micro: 150ms;
	--bsn-motion-reveal: 220ms;
	--bsn-easing-out: cubic-bezier( 0.2, 0, 0, 1 );

	/* --- Source-named spacing aliases (F14) --------------------------------
	 * The source docx names this scale space-1/2/3/4/6/8/12/16/24 (the numeral is
	 * the value ÷ 4). This file's own --bsn-space-* names run 1..9 sequentially
	 * instead, so --bsn-space-6 here is 32px where the source's space-6 is 24px.
	 * Every value above is correct; only the two names disagree. These aliases
	 * exist so a build note written against the docx and a stylesheet written
	 * against this file describe the same pixel value. Prefer --bsn-space-* in
	 * new CSS; these are for cross-referencing the source, not a second scale.
	 * ------------------------------------------------------------------- */
	--bsn-space-source-1: var( --bsn-space-1 );  /* source space-1  ·  4px */
	--bsn-space-source-2: var( --bsn-space-2 );  /* source space-2  ·  8px */
	--bsn-space-source-3: var( --bsn-space-3 );  /* source space-3  · 12px */
	--bsn-space-source-4: var( --bsn-space-4 );  /* source space-4  · 16px */
	--bsn-space-source-6: var( --bsn-space-5 );  /* source space-6  · 24px */
	--bsn-space-source-8: var( --bsn-space-6 );  /* source space-8  · 32px */
	--bsn-space-source-12: var( --bsn-space-7 ); /* source space-12 · 48px */
	--bsn-space-source-16: var( --bsn-space-8 ); /* source space-16 · 64px */
	--bsn-space-source-24: var( --bsn-space-9 ); /* source space-24 · 96px */
}
