/**
 * Earnest Built — Design Tokens
 *
 * Real brand values, per the approved M1 proposal
 * (wordpress/M1_M2_PRE_IMPLEMENTATION_PLAN.md, Part C). Generated from the
 * DeadStop Framework's child-theme structural shell — token names/roles are
 * the framework's, values are this project's own. Loads first in the CSS
 * cascade (see inc/enqueue.php) — every other stylesheet in this theme
 * depends on these custom properties existing first.
 */

:root {
	/* ============================================================
	   Typography — real values, per the approved M1 proposal (Part C),
	   sourced directly from DESIGN_SYSTEM.md and cross-checked against
	   the live app/tokens.css reference. Self-hosted WOFF2 only — no
	   Google Fonts CDN request. Font files themselves are not part of
	   this pass; fallback stacks carry the page until they're approved
	   and added.
	   ============================================================ */
	--font-display: "Bebas Neue", "Oswald", "Arial Narrow", sans-serif;
	--font-body: "Source Sans 3", "Source Sans Pro", system-ui, -apple-system, "Segoe UI", sans-serif;

	/* Type scale shape — clamp(min, preferred, max) keeps every size
	   responsive by construction. */
	--type-display-xl: clamp(64px, 9vw, 140px);
	--type-display-lg: clamp(48px, 6vw, 88px);
	--type-display-md: clamp(34px, 4vw, 56px);
	--type-display-sm: 28px;
	--type-lead: 21px;
	--type-body: 17px;
	--type-body-sm: 15px;
	--type-caption: 13px;
	--type-eyebrow: 13px;
	/* Needed for M2's one real component (the global button) — button
	   type is its own scale step, not --type-body-sm reused. */
	--type-button: 15px;

	--display-line: 0.92;
	--display-tracking: 0.015em;
	--body-line: 1.65;
	--eyebrow-tracking: 0.22em;
	--button-tracking: 0.08em;

	/* Bebas Neue is all-caps, condensed, no lowercase glyphs, no true
	   bold/light weights — reserved for --type-display-* roles only.
	   Never set below --type-display-sm (28px); never body copy, form
	   labels, or long-form text (readability/overuse audit, M1). */

	/* ============================================================
	   Spacing scale — reusable as-is; structural rhythm, not a brand
	   decision.
	   ============================================================ */
	--space-1: 4px;
	--space-2: 8px;
	--space-3: 12px;
	--space-4: 16px;
	--space-5: 24px;
	--space-6: 32px;
	--space-7: 48px;
	--space-8: 64px;
	--space-9: 96px;
	--space-10: 128px;

	/* Content widths — container/wide already matched the framework
	   default exactly (1280/1440); only gutter gets a real responsive
	   value here, per Part C. */
	--container: 1280px;
	--container-wide: 1440px;
	--container-narrow: 720px;
	--gutter: clamp(20px, 4vw, 48px);

	/* Radii — sharp corners (0) everywhere except one deliberate
	   exception (capability cards). Per Part C: keep radius-sm/md/lg at
	   0 rather than adopting the reference site's generic 2px value —
	   add the one real exception as its own named token instead of
	   overriding the shared scale. */
	--radius-sm: 0px;
	--radius-md: 0px;
	--radius-lg: 0px;
	--eb-radius-card: 18px;

	/* Borders */
	--border-width: 1px;
	--rule: var(--border-width) solid var(--border-subtle);

	/* ============================================================
	   Color — real values, per the approved M1 proposal (Part C).
	   Brand core + supporting palette first (named per DESIGN_SYSTEM.md),
	   then the framework's existing semantic role slots pointed at them.
	   Orange is accent/punctuation only — never body text (readability
	   + contrast audit, M1): passes AA on black/forest-shadow, fails AA
	   on white/paper at any size. Confirmed safe everywhere M2 actually
	   applies it (black nav, forest-shadow footer); not yet safe for a
	   future light-background, page-body context — see
	   IMPLEMENTATION_NOTES.md.
	   ============================================================ */
	--eb-orange: #F7921E;
	--eb-black: #000000;
	--eb-white: #FFFFFF;
	--eb-ink: #171514;
	--eb-charcoal: #26221F;
	--eb-pine: #22372B;
	--eb-forest-shadow: #131E17;
	--eb-cedar: #9A5B3C;
	--eb-sandstone: #E5D6BD;
	--eb-stone: #C8BEAE;
	--eb-steel: #75797C;
	--eb-warm-gray: #8A8279;
	--eb-paper: #FAF7F1;
	--eb-paper-2: #F2EDE3;

	--surface-page: var(--eb-paper);
	--surface-tint: var(--eb-paper-2);
	--surface-pine: var(--eb-forest-shadow);
	--text-primary: var(--eb-ink);
	--text-secondary: #5C554D;
	--text-tertiary: var(--eb-warm-gray);
	--text-inverse: var(--eb-paper);
	--text-inverse-secondary: #B7AFA4;
	--text-accent: var(--eb-orange);
	--border-subtle: rgba(23, 21, 20, .14);
	--border-strong: rgba(23, 21, 20, .4);
	--border-inverse: rgba(250, 247, 241, .18);

	--accent: var(--eb-orange);
	--accent-hover: #E08312;
	--accent-ink: #1A1004;

	/* Shadows — structural depth steps, not a brand-specific color tint */
	--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.06);
	--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
	--shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.1);

	/* Motion — full motion system is a later framework phase; only the
	   easing curve gets a real value here (single curve, per Part C —
	   matches the reference site's own dominant expo-out curve, called
	   --ease-craft there; kept as --ease-standard here since that's the
	   framework's own token slot name and global.css already references
	   it by that name). Durations were already correct — matched the
	   reference site's real values as-is, no change needed. */
	--dur-fast: 180ms;
	--dur-med: 420ms;
	--dur-slow: 800ms;
	--ease-standard: cubic-bezier(0.16, 1, 0.3, 1);

	/* Z-index layers — named by role, not an arbitrary number, so a new
	   layer can be inserted without renumbering everything above it. */
	--z-base: 0;
	--z-sticky-header: 50;
	--z-overlay: 100;
	--z-modal: 200;
	--z-toast: 300;
}
