/* Nacient public site — site-owned token layer (Phase-3 group A).
 *
 * The marketing-site surface class's colour, status, and utility vocabulary,
 * materialising the values Decision: Marketing-Site Dark Scheme, Status and
 * Utility Token Tier, and the Mobile Text Floor (corpus 03cd1c3b) held
 * Decision-only for "the Phase-3 re-expressed site sheet, its named future
 * carrier" — plus the two corrective items its Consequences order for this
 * build: the critical swap (#b3261e/#f08b82 -> #963325/#e3978c) and the
 * private surface's flat --pv-crit re-pointed to the scheme-aware critical.
 *
 * Light values are the ratified light sheet's, ratified as seen. The dark set
 * is 03cd1c3b ruling 1's: values live once in the --_dk-* block and the two
 * dark selectors only remap, so the schemes cannot drift (the built
 * dual-selector mechanism — an explicit data-theme choice honoured first,
 * prefers-color-scheme as the fallback — carried as ratified).
 *
 * Reconciled against the brand-tokens artifact (tooling/brand-tokens/dist):
 * no name declared here is a name that artifact emits. Two built names were
 * renamed at this reconciliation: --link-ink -> --link and --elevation-1 ->
 * --shadow-1. The artifact owns both original names with diverging dark
 * resolutions (its --link-ink darkens to --primary-200; its --elevation-1
 * resolves to none under the surface-shift rule, which 03cd1c3b ruling 1
 * narrowly supersedes for this surface class only), so a shared name would
 * make theming load-order-dependent wherever both sheets load. Values and
 * rendered pixels are unchanged by the renames.
 *
 * The type/spacing token tier (hierarchy Decision 605a547a ruling 4) lands
 * at group E (the sixteen-role stratum at the end of this file): values are
 * the ratified-as-seen transcription (adoption snapshot DESIGN-SYSTEM.md
 * "The de-facto type scale (as built)") with exactly one movement — body
 * 17.5px -> 18px, the Founder's 2026-08-04 election (e6bf20fd annotation,
 * inside its locked 18-19px ruling-2 disclosure; measure stays ~64ch per
 * ruling 1). Every other role re-anchors value-preserving: where a role had
 * multiple built candidate values, the token carries the modal/primary value
 * and divergent seats keep their own clamp() beside it, so zero rendered
 * pixels move anywhere except the body step. The motion tier reconciled at
 * group D (GROUP-D-LOCATE_2026-08-04.md): the design source's
 * --motion-*, --ease-*, and --radius-* re-declarations are value-identical to the
 * artifact's owned names, so the re-expression consumes the artifact names by
 * reference and mints no site-class duplicate; the one site-class motion name
 * is --spring (end of file).
 *
 * Derivation minted here, flagged for the eye (the built sheet declares no
 * dark partner): --_dk-link-teal collapses onto the dark teal per ruling 1's
 * collapse clause ("the darker text-teal step deliberately collapsing onto
 * it in dark" — link teal is a darker teal text step).
 *
 * Gate: site/tests/run.mjs ("site token layer" tests — values byte-exact to
 * the Decision's text, corrective swap executed, dark-selector remap parity,
 * artifact name-collision sweep, ruled contrast floors computed). */

:root {
  /* core vocabulary — the ratified light sheet, as seen */
  --ink: #13322f;
  --slate: #52746f;
  --ground: #ffffff;
  --panel: #eef3f2;
  --sunken: #e4ecea;
  --hairline: #d4dedc;
  --teal: #14807a;
  --teal-700: #0c4d49;
  --link: #0c4d49; /* link ink (built name --link-ink; renamed — header note) */
  --on-teal: #ffffff;
  --cta-hover: #0c4d49;
  --img-ground: #e7ddd3;
  --plate-tag: #6d5f52;
  --plate-desc: #55483d;
  --plate-reg: rgba(109, 95, 82, 0.35);
  --plate-sheen: rgba(255, 255, 255, 0.55);
  --dia-grey: #97aca9;
  /* status tier — 03cd1c3b ruling 4 (the interim #b3261e retires here) */
  --critical: #963325;
  --success: #1f7a52;
  --warning: #8a5a00;
  --on-status: #ffffff;
  /* functional border — ruling 6 */
  --fn-border: #728782;
  /* focus ring — built light value; ruling 3 rules only the dark partner */
  --focus: #2563eb;
  /* utility trio — ruling 7 */
  --link-teal: #106662; /* teal TEXT on the tinted light grounds; its own
                           token, deliberately independent of the identical
                           --primary-600 hex (two-named-tokens discipline) */
  --scrim: color-mix(in srgb, var(--ground) 85%, transparent); /* per scheme via --ground (ruling 2) */
  --nav-current: var(--teal-700); /* current-page foreground: the text-teal step, per scheme, as built */
  /* private surface — corrective item: the flat critical becomes scheme-aware */
  --pv-crit: var(--critical);
  /* site-class shadows (built names --elevation-1 / --shadow-drawer;
     the first renamed — artifact owns --elevation-*) */
  --shadow-1: 0 2px 4px rgba(19, 50, 47, 0.08);
  --shadow-drawer: 0 14px 28px rgba(19, 50, 47, 0.12);
  /* ambient field (ruling 2; ambient spec §3) + built accents */
  --plexus-node: #9a928a;
  --plexus-link: #847c74;
  --plexus-teal: #14807a;
  --plexus-amber: #d8a13a;
  color-scheme: light;
}

/* ---- the dark set, single source (03cd1c3b rulings 1-4, 6-7) ----
   Values live once here; the two dark selectors below only remap. */
:root {
  --_dk-ink: #e6efec;
  --_dk-slate: #a4b8b2;
  --_dk-ground: #0e1c1a;
  --_dk-panel: #17302c;
  --_dk-sunken: #0a1614;
  --_dk-hairline: #294641;
  --_dk-teal: #3db3a6;
  --_dk-teal-700: #3db3a6; /* the darker text-teal step deliberately collapses onto the dark teal (ruling 1) */
  --_dk-link: #3db3a6;
  --_dk-link-teal: #3db3a6; /* minted derivation — header note */
  --_dk-on-teal: #08201d;
  --_dk-cta-hover: #4cc4b7;
  --_dk-img-ground: #2a231c;
  --_dk-plate-tag: #b3a58f;
  --_dk-plate-desc: #cfc2b0;
  --_dk-plate-reg: rgba(205, 190, 165, 0.3);
  --_dk-plate-sheen: rgba(255, 255, 255, 0.05);
  --_dk-dia-grey: #5f7d77;
  --_dk-critical: #e3978c; /* the ruled dark partner (the interim #f08b82 retires here) */
  --_dk-success: #57c491;
  --_dk-warning: #e0a94e;
  --_dk-on-status: #0c1a17;
  --_dk-fn-border: #5e807a;
  --_dk-focus: #6f9bff; /* ruling 3 — supersedes focus-ring-dark for this surface class */
  --_dk-shadow-1: 0 2px 4px rgba(0, 0, 0, 0.45); /* the dark cast shadow (ruling 1's narrow supersession) */
  --_dk-shadow-drawer: 0 14px 28px rgba(0, 0, 0, 0.55);
  --_dk-plexus-node: #8a8377;
  --_dk-plexus-link: #655e54;
}
[data-theme="dark"] {
  --ink: var(--_dk-ink);
  --slate: var(--_dk-slate);
  --ground: var(--_dk-ground);
  --panel: var(--_dk-panel);
  --sunken: var(--_dk-sunken);
  --hairline: var(--_dk-hairline);
  --teal: var(--_dk-teal);
  --teal-700: var(--_dk-teal-700);
  --link: var(--_dk-link);
  --link-teal: var(--_dk-link-teal);
  --on-teal: var(--_dk-on-teal);
  --cta-hover: var(--_dk-cta-hover);
  --img-ground: var(--_dk-img-ground);
  --plate-tag: var(--_dk-plate-tag);
  --plate-desc: var(--_dk-plate-desc);
  --plate-reg: var(--_dk-plate-reg);
  --plate-sheen: var(--_dk-plate-sheen);
  --dia-grey: var(--_dk-dia-grey);
  --critical: var(--_dk-critical);
  --success: var(--_dk-success);
  --warning: var(--_dk-warning);
  --on-status: var(--_dk-on-status);
  --fn-border: var(--_dk-fn-border);
  --focus: var(--_dk-focus);
  --shadow-1: var(--_dk-shadow-1);
  --shadow-drawer: var(--_dk-shadow-drawer);
  --plexus-node: var(--_dk-plexus-node);
  --plexus-link: var(--_dk-plexus-link);
  --plexus-teal: var(--_dk-teal);
  --plexus-amber: var(--_dk-warning);
  color-scheme: dark;
}
/* no-JS / pre-stamp fallback: follow the system unless light is chosen */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --ink: var(--_dk-ink);
    --slate: var(--_dk-slate);
    --ground: var(--_dk-ground);
    --panel: var(--_dk-panel);
    --sunken: var(--_dk-sunken);
    --hairline: var(--_dk-hairline);
    --teal: var(--_dk-teal);
    --teal-700: var(--_dk-teal-700);
    --link: var(--_dk-link);
    --link-teal: var(--_dk-link-teal);
    --on-teal: var(--_dk-on-teal);
    --cta-hover: var(--_dk-cta-hover);
    --img-ground: var(--_dk-img-ground);
    --plate-tag: var(--_dk-plate-tag);
    --plate-desc: var(--_dk-plate-desc);
    --plate-reg: var(--_dk-plate-reg);
    --plate-sheen: var(--_dk-plate-sheen);
    --dia-grey: var(--_dk-dia-grey);
    --critical: var(--_dk-critical);
    --success: var(--_dk-success);
    --warning: var(--_dk-warning);
    --on-status: var(--_dk-on-status);
    --fn-border: var(--_dk-fn-border);
    --focus: var(--_dk-focus);
    --shadow-1: var(--_dk-shadow-1);
    --shadow-drawer: var(--_dk-shadow-drawer);
    --plexus-node: var(--_dk-plexus-node);
    --plexus-link: var(--_dk-plexus-link);
    --plexus-teal: var(--_dk-teal);
    --plexus-amber: var(--_dk-warning);
    color-scheme: dark;
  }
}

/* Motion: the admitted overshoot-settle curve (Decision: Marketing-Site
 * Motion Register Adoption and the Press-Feedback Settle, corpus 22514ac5).
 * Site-sheet vocabulary — that Decision rules the curve "enters no
 * component-token row and no motion-graph edge", and names the Phase-3
 * re-expressed site sheet as its future carrier; this layer is that sheet's
 * token stratum (group D landing). Admitted for exactly two seats: entrance
 * animations on the public surface as built, and hover/press feedback on the
 * action-button component class. A forty-one-stop linear() settle with a
 * single overshoot of about 0.7% amplitude (peak 1.0072), falling back to
 * the monotone enter easing where linear() is unsupported — both forms
 * byte-verbatim from the ratified-as-seen built sheet. */
:root { --spring: var(--ease-enter); }
@supports (transition-timing-function: linear(0, 1)) {
  :root { --spring: linear(0.0000, 0.0145, 0.0525, 0.1068, 0.1716, 0.2424, 0.3157, 0.3888, 0.4597, 0.5271, 0.5899, 0.6477, 0.7001, 0.7472, 0.7890, 0.8257, 0.8576, 0.8851, 0.9087, 0.9286, 0.9453, 0.9591, 0.9705, 0.9797, 0.9871, 0.9929, 0.9974, 1.0007, 1.0032, 1.0050, 1.0061, 1.0068, 1.0071, 1.0072, 1.0070, 1.0067, 1.0063, 1.0058, 1.0052, 1.0047, 1.0000); }
}

/* ---- the type/spacing stratum: the sixteen-role tier (605a547a ruling 4),
 * minted at group E. Source of record for every value: the adoption
 * snapshot's "de-facto type scale (as built)" table, value-preserving,
 * with the single ruled movement body 17.5 -> 18px (Founder election,
 * 2026-08-04, e6bf20fd annotation @8/F-0292 prong (a)). Roles with several
 * built candidates carry the modal/primary value here (lead 16.5, secondary
 * 14.5, small print 13.5, statement's clamp, base rhythm 14px, section
 * spacing clamp); seats whose built value genuinely differs (the responsive
 * clamp() forms of lead/hero-sub) keep their clamp consuming the token as
 * its floor, so no rendered pixel moves. SVG text roles are the diagram
 * ladder's floor values; the per-diagram compact step-ups in site.css
 * remain seat law, not tokens. ---- */
:root {
  /* body tier (7) */
  --type-body: 18px;                       /* THE ONE MOVEMENT: 17.5 -> 18 (elected) */
  --type-lead: 16.5px;                     /* lead / row-text / hero-sub floor */
  --type-statement: clamp(19px, 2.1vw, 24px); /* the serif pull statement */
  --type-secondary: 14.5px;                /* secondary body / routes / posture answers */
  --type-small: 13.5px;                    /* small print / notices / notes / captions */
  --type-record: 12.5px;                   /* record register (.mono) */
  --type-record-sm: 11px;                  /* .mono-sm / nav / eyebrow / controls */
  /* display clamps (3) */
  --type-sec-h: clamp(26px, 3.2vw, 38px);
  --type-page-title: clamp(30px, 4vw, 48px);
  --type-hero-greeting: clamp(30px, 4.6vw, 56px);
  /* SVG text (3) — diagram ladder floors */
  --type-svg-axis: 10.5px;
  --type-svg-node: 11px;
  --type-svg-sub: 9.5px;
  /* spacing (3) */
  --space-rhythm: 14px;                    /* base prose rhythm (paragraph step) */
  --space-section: clamp(56px, 9vh, 110px); /* section vertical spacing */
  --pv-gap: 34px; --pv-gap-sm: 14px;       /* the private-surface gap pair, carried as one role */
  /* the prose measure cap (e6bf20fd ruling 1's "~64ch"; 66ch is the built .prose value, carried value-preserving) */
  --measure: 66ch;
}
