/* ══════════════════════════════════════════════════════════════════════════
   final/css/hero-background.css — LANE 16. THE CLIENT'S OWN HERO BACKGROUND.

   Linked LAST in <head> on every page (final/lib.mjs linkCss), which is how an
   ID rule here beats the identically-specific ID rule the engine prints inline
   in index.html's own <head>. Nothing in this sheet applies anywhere but the
   home hero, because #hero-bg-overlay exists on index.html and nowhere else —
   verified, not assumed.

   The clip's own CSS does NOT live here. It is emitted alongside the <video> by
   hero-video/build-part.mjs and travels inside the mounted part, so the SOLVED
   wash alpha and the element it washes can never be separated by an edit to one
   file. Do not copy rules out of the part into this sheet.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── THE ENGINE'S DECORATIVE RAMP COMES OFF ────────────────────────────────
   #hero-bg-overlay ships three stacked gradients: a left-to-right ramp of
   --sf-bg from 96% down to 25%, a bottom fade, and an accent ellipse at 75%.
   Over the flat navy ground it replaced, that is a tasteful vignette. Over a
   photograph it is a bucket of near-black poured down the left third of the
   picture, and this client's artwork has two of its brightest nodes at x 0.04
   and x 0.14 — i.e. precisely under the opaque end of the ramp.

   It is turned off rather than deleted: the element is the anchor lane 12 hangs
   the hero mark on, and it is also the engine's own markup, so removing it is a
   change to a shared contract for a reason that is purely this client's. */
#hero-bg-overlay { background: none; }

/* ── THE PICTURE MUST NOT OUTRANK THE COPY ────────────────────────────────
   The mounted <video>, its reduced-motion still and its wash all set z-index: 1
   and all sit under #hero-content (z-index 10). This rule exists to make that
   stack explicit at the one place a future session will look, and to stop the
   clip from being pulled into the compositing layer of the hero's own ::before
   scrim. The .cc-spark selector that used to be here belonged to the coded
   twinkle lane, which the owner replaced with a bought clip on 2026-08-23. */
#hero .cc-herovid,
#hero .cc-herovid-still,
#hero .cc-herovid-wash { z-index: 1; }
#hero-content { position: relative; z-index: 10; }

/* The mark that used to sit between the picture and the copy is GONE — owner,
   2026-08-23, "i want the big core chains lab logo removed". This file used to
   quieten it to --cc-mark-o 0.10 so the picture, the mark and a glint could all
   fit inside one contrast budget; with the mark off the hero there is nothing to
   quieten and the rule came out with it.

   The budget itself did not change and is still this lane's to keep: the binding
   pair on the hero is .sf-hero-sub / .cc-usa-badge span at #CBD8E2 (luminance
   0.6730), which needs its background at or under 0.1107 for 4.5:1. ONE thing
   stacks into that box now instead of three — the washed clip, measured at
   0.0867 at the worst pixel of the worst instant of the loop, 5.29:1. There are
   no glints left to budget for; the twinkling is inside the video.
   Anything new that lands in the hero is measured against 0.1107, not added on
   top of it. hero-video.json carries the arithmetic. */
