/* GOLD INTELLIGENCE — VISUAL PHYSICS  (AEX-2.4)
 *
 * Seven laws as reusable primitives, transcribed from
 * MEDIA_HOLDING_VISUAL_PHYSICS.md §2 (light), §3 (motion), §5 (materials).
 *
 * Governing law, verbatim: Material First → Light Second → Motion Last.
 * Maximum Material, Minimum Effect. Freeze every animation and the surface
 * must still look expensive and whole (§10).
 *
 * Only `background-position` and `opacity` ever animate — nothing here can
 * trigger layout or paint of the document flow.
 *
 * ONE LIGHT EVENT RULE (§2): the mark sheen and the background sweep share the
 * single `envlight` keyframe below. One light crosses the whole system.
 */

/* ── 1 · SUBSTRATE — four fixed layers ──────────────────────────────────── */
.substrate {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background: var(--bg);
  contain: strict;
}

.substrate > i {
  position: absolute;
  inset: 0;
  display: block;
  will-change: background-position, opacity;
}

/* 1.1 depth — two radial navy glows over the foundation. Never a fill. */
.bg-depth {
  background:
    radial-gradient(1100px 620px at 18% 8%, var(--depth-a), transparent 62%),
    radial-gradient(900px 560px at 86% 78%, var(--depth-b), transparent 66%);
  opacity: .85;
}

/* 1.2 grid — engineering drawing fading into dark. Cell 56×56, radially masked. */
.bg-grid {
  background-image:
    linear-gradient(to right, rgba(210, 224, 242, .05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(210, 224, 242, .05) 1px, transparent 1px);
  background-size: var(--cell) var(--cell);
  -webkit-mask-image: radial-gradient(75% 62% at 50% 34%, #000 40%, transparent 100%);
          mask-image: radial-gradient(75% 62% at 50% 34%, #000 40%, transparent 100%);
  animation: gridbreath 44s ease-in-out infinite;
}

/* 1.3 glow — sky above the material. */
.bg-glow {
  background: radial-gradient(1200px 560px at 50% -14%, rgba(206, 222, 242, .075), transparent 70%);
  animation: skybreath 28s ease-in-out infinite;
}

/* 1.4 sweep — THE cold light front, angle 100deg. Round seven (2026-08-16):
   the centre is another ~22% quieter through a still broader matte transfer
   (.235·E^.66 — the edge glow keeps its EXACT previous strength while the
   centre steps back; a brand is recognised, not performed). The second
   background is a static ±3-luma dither grain: what the eye still read as
   "layers" was 8-bit quantization — a smooth gradient over dark navy lands
   on ~one luma step per band of tens of pixels, and those contour rings ARE
   visible zones no stop arithmetic can remove. Grain breaks the contours the
   physical way (film grain), at an amplitude below texture perception. It
   does not move with the band: the envlight keyframes pin layer two. */
.bg-sweep {
  background:
    linear-gradient(100deg,
    transparent 0%, rgba(234, 244, 255, 0.003) 32.46%, rgba(234, 244, 255, 0.009) 34.77%,
    rgba(234, 244, 255, 0.027) 37.08%, rgba(234, 244, 255, 0.053) 38.92%, rgba(234, 244, 255, 0.095) 40.77%,
    rgba(234, 244, 255, 0.137) 42.15%, rgba(234, 244, 255, 0.184) 43.54%, rgba(234, 244, 255, 0.228) 44.69%,
    rgba(234, 244, 255, 0.27) 45.85%, rgba(234, 244, 255, 0.3) 46.77%, rgba(234, 244, 255, 0.324) 47.69%,
    rgba(234, 244, 255, 0.342) 48.62%, rgba(234, 244, 255, 0.35) 49.31%, var(--light-core) 50.00%,
    rgba(234, 244, 255, 0.35) 50.69%, rgba(234, 244, 255, 0.342) 51.38%, rgba(234, 244, 255, 0.324) 52.31%,
    rgba(234, 244, 255, 0.3) 53.23%, rgba(234, 244, 255, 0.27) 54.15%, rgba(234, 244, 255, 0.228) 55.31%,
    rgba(234, 244, 255, 0.184) 56.46%, rgba(234, 244, 255, 0.137) 57.85%, rgba(234, 244, 255, 0.095) 59.23%,
    rgba(234, 244, 255, 0.053) 61.08%, rgba(234, 244, 255, 0.027) 62.92%, rgba(234, 244, 255, 0.009) 65.23%,
    rgba(234, 244, 255, 0.003) 67.54%, transparent 100%),
    url(data:image/png;base64,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);
  background-size: 130vw 100%, 128px 128px;
  background-repeat: repeat-x, repeat;
  background-position: -84.8vw 0, 50% 50%;
  /* SOURCE ENERGY IS CONSTANT — Founder perceptual closure, 2026-08-18.
   * The field is one source of constant power moving through the scene:
   * position changes; local illumination changes ONLY because the field
   * moves relative to material. The former presence breath (.37↔.68 over
   * 17s) read as the source itself brightening and dimming mid-cycle —
   * wrong physics. One constant opacity now carries the field, set at the
   * Founder-referenced power: present and readable, never a flash. */
  opacity: .46;
  animation: envlight 72s linear infinite;
}

/* Periods are deliberately non-multiples (47 / 44 / 28 / 17) so the picture
   never literally repeats. Nothing in the environment is faster than 17s. */
/* Left to right, always. The band starts just off the left edge and ends just
   off the right one, so the wrap is invisible, only one band is ever on screen,
   and there is no long dark hang between cycles. Measured travel: 1.8 frame
   widths per cycle — at 72s that is 4.25x calmer than the 34s it replaces. */
/* THE FIELD IS PERIODIC — temporal continuity, round twelve (2026-08-18,
   superseding the round-seven/round-nine SEAM law). The seam construction
   (travel envelope-out-right → envelope-in-left, then a jump) was exact at
   the renderable level but perceptually the PERCEIVABLE periphery is inner
   of the renderable one, so at the field's dimmest breath the scene stood
   ~4s with no perceivable light before the next entry — a felt restart.
   The field is now one infinite periodic phenomenon and the viewport is only
   a window on it: the layer repeats-x with period P = 130vw and the keyframes
   translate it by EXACTLY one period per 72s cycle, so the wrap is the
   identity — there is no cycle boundary to feel, mathematically none.
   P is derived, not chosen: P = 100vw + 2·(perceivable periphery at the
   breath minimum, ≈16.2vw at the +10% presence) − ~2vw of margin, so the
   next pass's first perceivable periphery enters the left edge ~1.3s before
   the previous pass's last perceivable periphery has left the right edge,
   even at the field's dimmest. Only weak tails ever coexist (≤ ~5/255):
   band centres sit 130vw apart — farther than the viewport is wide — so two
   significant regions can never compete. Speed is P/72s = 1.81vw/s (−7% of
   the seam law's 1.94): the calmest change that keeps the canonical 72s line
   and the 72/17 breath ratio untouched. */
@keyframes envlight   { from { background-position: -214.8vw 0, 50% 50%; } to { background-position: -84.8vw 0, 50% 50%; } }

/* THE SAME EVENT IN ELEMENT COORDINATES — local causality, round ten
 * (2026-08-18). Measured on the live artifact with the animation genuinely
 * running (paused mid-flight, not frozen): Chrome renders an ANIMATED
 * `background-attachment: fixed` layer unreliably per element. The seal
 * facets, the rule bars, the dot and the signature painted their moving layer
 * ELEMENT-relative — a compressed private copy of the band crawling across
 * each element's own box, i.e. visible response at an element's left end
 * seconds BEFORE the perceived field arrives and at its right end seconds
 * AFTER the field has left — and the wordmark's moving layer did not render
 * at all. Forcing `background-attachment: scroll` reproduced every curve
 * bit-for-bit (rms 0.00): the fixed construction was already dead. THEREFORE
 * NO CARRIER OF THE FIELD MAY DEPEND ON `background-attachment: fixed`.
 * The masked and plain carriers now hold the moving layer on a real viewport
 * box (`::before { position: fixed; inset: 0 }`) and keep riding `envlight`
 * unchanged. Text-clipped carriers cannot do that (background-clip: text
 * clips only the element's own background), so they ride the SAME travel
 * expressed in element coordinates: for a HORIZONTALLY CENTRED element,
 * `background-position: calc(50% + Xvw)` over the P-wide tile puts the
 * band centre at viewport x = X + 50vw for ANY element and ANY image width
 * — 50% contributes .5·(elemW − imgW), the centred element's left edge is
 * 50vw − .5·elemW, so elemW cancels and centre = X + 50vw. The identity
 * with `envlight` (whose length position gives centre = pos + P/2):
 * X = envlight_pos + P/2 − 50vw, i.e. −84.8 + 65 − 50 = −69.8 at the start
 * and −214.8 + 65 − 50 = −199.8 at the start — the same field, the same
 * 72s line, the same one-period translation (wrap = identity, round
 * twelve). LENGTH offsets INCREASE left→right (the old percent form flipped
 * the sign through its negative (area − image) factor), so both keyframes
 * run from the smaller offset to the larger one — measured, round twelve's
 * own first cut had it backwards and the band travelled right to left.
 * `--dxc` is the one escape valve for a text carrier whose OWN box is not
 * viewport-centred (today only the signature's brighter half): it carries the
 * signed distance of the element's centre from the viewport centre, so the
 * subtraction returns the image to true viewport coordinates. Default 0. */
@keyframes envfield   { from { background-position: calc(50% - 199.8vw - var(--dxc, 0px)) 0, 50% 50%; } to { background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%; } }
/* The element-local sheen and the engraved display glint are the accepted
   App-era ELEMENT constructions (a 300%-of-the-element band) — they are not
   carriers of the environmental field and keep the old percent travel. */
@keyframes glintsweep { from { background-position: 84.90% 0, 50% 50%; } to { background-position: 15.10% 0, 50% 50%; } }
/* The 17s presence breath of the field was removed 2026-08-18 (constant-
 * source law): the perceivable periphery in the P-derivation is now taken
 * at the constant carrier opacity .46, which sits ABOVE the former breath
 * minimum .37 — the periphery only widens, so P < 100 + 2·w_p holds with
 * margin. */
@keyframes skybreath  { 0%, 100% { opacity: .70; } 50% { opacity: 1; } }
@keyframes gridbreath { 0%, 100% { opacity: .80; } 50% { opacity: 1; } }

/* ── 2 · ENGRAVED DISPLAY TYPE — two-layer clipped-text material ─────────
 * §4, verbatim: "rendered as two-layer clipped-text material: static vertical
 * metal profile (silver or gold) + one moving cold glint. Letters never move;
 * only light passes."
 *
 * The construction is the MHD App's own (`mhd-live-wallpaper/index.html`,
 * .brandline .wordmark / .motto): background-clip:text over two stacked
 * gradients — layer 1 the moving 300%-wide cold glint, layer 2 the static
 * vertical metal profile — plus the letter-writing law that goes with it:
 * `letter-spacing` is compensated by an equal `text-indent`, so the trailing
 * space after the last glyph does not push the line off its optical centre.
 *
 * Adapt the laws, do not copy the screens: the profile is re-registered to
 * gold for the wordmark and to the signature greys for the signature line;
 * the glint stays cold in both, because light is always cold (§2).
 */

/* THE ONE LIGHT IS ONE FIELD — Founder review, round five (2026-08-16).
 *
 * What the Founder saw, named at its cause. The beam was assembled from
 * readable zones: the substrate band's shoulders were a DIFFERENT COLOUR from
 * its core (a hue boundary the eye reads as an edge), the metal answered
 * through its own ~1.5vw spike, the kants held a literal flat plateau — three
 * constructions, each with derivative breaks at its stops. Layered graphics,
 * not light. And because the metal's response window (±5.4vw) was far narrower
 * than the visible field (±36vw), the mark ignored the approaching light and
 * flared only when the centre arrived — the wrong physics. The trailing half
 * of that ±36vw band also kept a point lit for ~14s after the pass, which is
 * the "large glowing area that goes on existing" the review named.
 *
 * The law now: ONE incident field E(d) = exp(−d²/2σ²), σ = 4.5vw, one centre,
 * one hue per register, one timeline. Every layer renders the SAME field and
 * only the material's transfer differs:
 *
 *     substrate (matte)      α = .235·E^.66            — quiet ambient, wide edges
 *     plane gold (polished)  α = .61·E^1.55 + .11·E^.66 — specular + diffuse
 *     struck kants (chamfer) α = .85·E^1.3  + .12·E^.66 — catch earliest, flare hardest
 *     signature (soft)       α = .27·E^1.7  + .06·E^.66 — the quiet register
 *   (Round eight, at the Founder's direction: σ grew 4.5 → 6vw with every
 *    PEAK UNCHANGED — the dispersal is factually wider, the centre no louder;
 *    and every material register carries a DIFFUSE term of the same broad
 *    field, because a real surface reflects the ambient field as well as the
 *    lamp — without it the opaque gold blocked the corona and the wide field
 *    visually pinched to the narrow specular stripe while crossing the mark.
 *    The sum of two same-centre Gaussians is single-lobed and boundary-free.)
 *   (Round seven separated the perceptual roles at the Founder's direction:
 *    the ambient field is calmer, the first touch and the glint moment are
 *    a little more expressive — the material answers, the lamp does not.)
 *
 * A power of a Gaussian is a Gaussian: no stop is louder than its neighbours,
 * there is no boundary to find, no plateau, no separate core — and the tails
 * are real, so the metal begins to answer faintly while the centre is still
 * ~2σ (9vw) away, grows continuously and proportionally to its maximum, and
 * lets go the same way after the pass. Perceptible field ≈ ±11vw instead of
 * ±36vw: the light is present, and it ends when it has passed.
 *
 * The stops are that arithmetic sampled at Δ ≤ .35σ — under 1/400 of peak of
 * linear-interpolation error, beneath perception. Generated, not tuned: the
 * constants are the four transfer rows above. Peak amplitudes are unchanged
 * from round four (.38 ≤ §2's .44 ambient ceiling; the metal registers keep
 * .68/.94/.33 — redistribution, not dimming). This supersedes, by Founder
 * directive of 2026-08-16, the round-three spike/plateau construction and the
 * core+shoulder band of Visual Physics §2. */
:root {
  /* The ambient-ceiling register (§2 cap .44) and the soft signature register. */
  --glint: linear-gradient(100deg,
    transparent 0%, rgba(242, 249, 255, .001) 32.46%, rgba(242, 249, 255, .002) 34.77%,
    rgba(242, 249, 255, .006) 37.08%, rgba(242, 249, 255, .015) 38.92%, rgba(242, 249, 255, .033) 40.77%,
    rgba(242, 249, 255, .062) 42.15%, rgba(242, 249, 255, .110) 43.54%, rgba(242, 249, 255, .169) 44.69%,
    rgba(242, 249, 255, .242) 45.85%, rgba(242, 249, 255, .305) 46.77%, rgba(242, 249, 255, .365) 47.69%,
    rgba(242, 249, 255, .411) 48.62%, rgba(242, 249, 255, .433) 49.31%, rgba(242, 249, 255, .440) 50.00%,
    rgba(242, 249, 255, .433) 50.69%, rgba(242, 249, 255, .411) 51.38%, rgba(242, 249, 255, .365) 52.31%,
    rgba(242, 249, 255, .305) 53.23%, rgba(242, 249, 255, .242) 54.15%, rgba(242, 249, 255, .169) 55.31%,
    rgba(242, 249, 255, .110) 56.46%, rgba(242, 249, 255, .062) 57.85%, rgba(242, 249, 255, .033) 59.23%,
    rgba(242, 249, 255, .015) 61.08%, rgba(242, 249, 255, .006) 62.92%, rgba(242, 249, 255, .002) 65.23%,
    rgba(242, 249, 255, .001) 67.54%, transparent 100%);
  --glint-soft: linear-gradient(100deg,
    transparent 0.00%, rgba(242, 249, 255, 0.003) 25.79%, rgba(242, 249, 255, 0.005) 28.98%,
    rgba(242, 249, 255, 0.013) 32.17%, rgba(242, 249, 255, 0.03) 34.71%, rgba(242, 249, 255, 0.067) 37.26%,
    rgba(242, 249, 255, 0.124) 39.17%, rgba(242, 249, 255, 0.22) 41.09%, rgba(242, 249, 255, 0.341) 42.67%,
    rgba(242, 249, 255, 0.489) 44.27%, rgba(242, 249, 255, 0.615) 45.54%, rgba(242, 249, 255, 0.736) 46.81%,
    rgba(242, 249, 255, 0.828) 48.10%, rgba(242, 249, 255, 0.87) 49.05%, rgba(242, 249, 255, 0.887) 50.00%,
    rgba(242, 249, 255, 0.87) 50.95%, rgba(242, 249, 255, 0.828) 51.90%, rgba(242, 249, 255, 0.736) 53.19%,
    rgba(242, 249, 255, 0.615) 54.46%, rgba(242, 249, 255, 0.489) 55.73%, rgba(242, 249, 255, 0.341) 57.33%,
    rgba(242, 249, 255, 0.22) 58.91%, rgba(242, 249, 255, 0.124) 60.83%, rgba(242, 249, 255, 0.067) 62.74%,
    rgba(242, 249, 255, 0.03) 65.29%, rgba(242, 249, 255, 0.013) 67.83%, rgba(242, 249, 255, 0.005) 71.02%,
    rgba(242, 249, 255, 0.003) 74.21%, transparent 100.00%);

  /* The plane-gold register — the same field through the polished transfer
   * .68·E^1.7: sharper than the substrate, never detached from the field. */
  --glint-metal: linear-gradient(100deg,
    transparent 0%, rgba(242, 249, 255, .001) 32.46%, rgba(242, 249, 255, .003) 34.77%,
    rgba(242, 249, 255, .010) 37.08%, rgba(242, 249, 255, .023) 38.92%, rgba(242, 249, 255, .057) 40.77%,
    rgba(242, 249, 255, .107) 42.15%, rgba(242, 249, 255, .191) 43.54%, rgba(242, 249, 255, .290) 44.69%,
    rgba(242, 249, 255, .410) 45.85%, rgba(242, 249, 255, .511) 46.77%, rgba(242, 249, 255, .604) 47.69%,
    rgba(242, 249, 255, .676) 48.62%, rgba(242, 249, 255, .709) 49.31%, rgba(242, 249, 255, .720) 50.00%,
    rgba(242, 249, 255, .709) 50.69%, rgba(242, 249, 255, .676) 51.38%, rgba(242, 249, 255, .604) 52.31%,
    rgba(242, 249, 255, .511) 53.23%, rgba(242, 249, 255, .410) 54.15%, rgba(242, 249, 255, .290) 55.31%,
    rgba(242, 249, 255, .191) 56.46%, rgba(242, 249, 255, .107) 57.85%, rgba(242, 249, 255, .057) 59.23%,
    rgba(242, 249, 255, .023) 61.08%, rgba(242, 249, 255, .010) 62.92%, rgba(242, 249, 255, .003) 65.23%,
    rgba(242, 249, 255, .001) 67.54%, transparent 100%);

  /* The chamfer register — the same field through the widest transfer
   * .94·E^1.4: a chamfer holds the lamp across a wider angle, so it is
   * the first metal to answer and the strongest at the peak, in a colder
   * mix (a specular lobe reflects the lamp's colour, not the metal's).
   * Blends `screen`; over a transparent source that is a no-op, so the
   * resting metal is untouched. */
  --glint-kant: linear-gradient(100deg,
    transparent 0%, rgba(224, 240, 255, .001) 32.46%, rgba(224, 240, 255, .004) 34.77%,
    rgba(224, 240, 255, .014) 37.08%, rgba(224, 240, 255, .038) 38.92%, rgba(224, 240, 255, .095) 40.77%,
    rgba(224, 240, 255, .176) 42.15%, rgba(224, 240, 255, .301) 43.54%, rgba(224, 240, 255, .437) 44.69%,
    rgba(224, 240, 255, .594) 45.85%, rgba(224, 240, 255, .720) 46.77%, rgba(224, 240, 255, .833) 47.69%,
    rgba(224, 240, 255, .918) 48.62%, rgba(224, 240, 255, .957) 49.31%, rgba(224, 240, 255, .970) 50.00%,
    rgba(224, 240, 255, .957) 50.69%, rgba(224, 240, 255, .918) 51.38%, rgba(224, 240, 255, .833) 52.31%,
    rgba(224, 240, 255, .720) 53.23%, rgba(224, 240, 255, .594) 54.15%, rgba(224, 240, 255, .437) 55.31%,
    rgba(224, 240, 255, .301) 56.46%, rgba(224, 240, 255, .176) 57.85%, rgba(224, 240, 255, .095) 59.23%,
    rgba(224, 240, 255, .038) 61.08%, rgba(224, 240, 255, .014) 62.92%, rgba(224, 240, 255, .004) 65.23%,
    rgba(224, 240, 255, .001) 67.54%, transparent 100%);

  /* The reading-matter register — the same field through the transfer of
   * lettered CONTENT (round content-material, dm-20260818-207): letters are
   * material in the same scene, so as the field reaches a letter's own x it
   * answers faintly, grows proportionally, gleams cold at the pass and lets
   * go symmetrically — per letter, because the layer is fixed against the
   * page like every other register. Colder mix than the soft register so a
   * gleam reads on bright letters without darkening their rest state:
   * READABILITY NEVER DEPENDS ON THE LIGHT — the floor colour stands alone. */
  --glint-text: linear-gradient(100deg,
    transparent 0.00%, rgba(205, 228, 255, 0.003) 21.94%, rgba(205, 228, 255, 0.005) 25.63%,
    rgba(205, 228, 255, 0.013) 29.33%, rgba(205, 228, 255, 0.03) 32.27%, rgba(205, 228, 255, 0.071) 35.23%,
    rgba(205, 228, 255, 0.131) 37.44%, rgba(205, 228, 255, 0.237) 39.66%, rgba(205, 228, 255, 0.366) 41.50%,
    rgba(205, 228, 255, 0.529) 43.36%, rgba(205, 228, 255, 0.669) 44.83%, rgba(205, 228, 255, 0.801) 46.30%,
    rgba(205, 228, 255, 0.904) 47.79%, rgba(205, 228, 255, 0.951) 48.90%, rgba(205, 228, 255, 0.968) 50.00%,
    rgba(205, 228, 255, 0.951) 51.10%, rgba(205, 228, 255, 0.904) 52.21%, rgba(205, 228, 255, 0.801) 53.70%,
    rgba(205, 228, 255, 0.669) 55.17%, rgba(205, 228, 255, 0.529) 56.64%, rgba(205, 228, 255, 0.366) 58.50%,
    rgba(205, 228, 255, 0.237) 60.34%, rgba(205, 228, 255, 0.131) 62.56%, rgba(205, 228, 255, 0.071) 64.77%,
    rgba(205, 228, 255, 0.03) 67.73%, rgba(205, 228, 255, 0.013) 70.67%, rgba(205, 228, 255, 0.005) 74.37%,
    rgba(205, 228, 255, 0.003) 78.06%, transparent 100.00%);
  /* Static vertical metal profiles — six stops, mid re-lift, as in the App.
   * One metal, three registers: the frontal planes, the side/shadow faces and
   * the struck kants are the SAME gold seen at three angles, so the mark reads
   * as one physical object rather than three coloured shapes. The shade and
   * kant registers are the frontal one at the measured facet ratios of the
   * Founder reference (side ≈0.62 of the plane, kant ≈1.2 and clipped to the
   * reference's own brightest gold #FBEEA4 rather than to white). */
  /* THE MATERIAL IS QUIETER AT REST — the second correction. The first attempt
   * left the metal at full brightness, so a highlight of at most .44 alpha had
   * almost nothing to add and the pass read as "the light went past the mark".
   * Every register below is the SAME gold at a named factor, so the answer to
   * the light is a property of the material rather than a brighter lamp:
   *   wordmark .90 · seal face .80 · side/shadow .50 · struck kant .95
   * The lit delta that buys is +38 luma on the wordmark and +46 on the seal
   * face, against +30 before. */
  --profile-gold: linear-gradient(180deg,
    #D8C37C 0%, #CFB252 10%, #D4BE6E 33%, #BF9E32 46%, #AC8A2B 78%, #977726 100%);
  --profile-gold-seal: linear-gradient(180deg,
    #C0AE6E 0%, #B89E49 10%, #BCA962 33%, #AA8C2C 46%, #997A26 78%, #866A22 100%);
  --profile-gold-shade: linear-gradient(180deg,
    #786C45 0%, #73632E 10%, #766A3D 33%, #6A581C 46%, #604C18 78%, #544215 100%);
  --profile-gold-kant: linear-gradient(180deg,
    #E4CE83 0%, #DABC56 10%, #DFC874 33%, #C9A634 46%, #B5912E 78%, #A07D28 100%);
  /* The full-strength gold is still the register for buttons and struck plates
   * (`--gold-material` in tokens.css); the mark is what got quieter. */

  /* The signature's register — the MHD App's own quiet grey-silver metal, and
   * the canonical §9 voice: `#5F6B7C` with «Media Holding» one half-tone
   * brighter. Founder review of 2026-08-16 revoked the gold variant, so there
   * is one signature register in the ecosystem again and it is this one. */
  /* Round six (2026-08-16): the signature is the App's HIDDEN cold iron.
   * At rest it is present but nearly withdrawn — the metal sits one full
   * register darker, and only the passing light makes the letters read,
   * exactly as the MHD App renders its own line. The §9 anchors survive as
   * the TOPS of each register: the base's brightest stop is the canonical
   * #5F6B7C and the highlight register is precisely the old base, topping
   * at #8B97A8 — one family, shifted down, nothing invented. */
  --profile-signature: linear-gradient(180deg,
    #5F6B7C 0%, #4B5560 10%, #56616E 33%, #46505A 46%, #414A55 78%, #3A424C 100%);
  --profile-signature-hi: linear-gradient(180deg,
    #8B97A8 0%, #6E7A8B 10%, #7E8B9C 33%, #66717F 46%, #5F6B7C 78%, #55606F 100%);
}

.engraved,
.h-section {
  position: relative;
  display: inline-block;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: var(--display-tracking);
  background: linear-gradient(180deg, #FFFFFF 0%, var(--silver) 38%, #8E97A3 72%, #6C7684 100%);
  -webkit-background-clip: text;
          background-clip: text;
  color: transparent;
}

.engraved.gold {
  background: var(--gold-material);
  -webkit-background-clip: text;
          background-clip: text;
}

/* ── THE MARK — one adaptive composition, no plane of its own ────────────
 * The mark is not an image and not a block laid on the interface. It is a
 * composition of transparent material that the environment's light passes
 * through: the seal (ring + monogram) seen through traced vector masks, the
 * wordmark and signature seen through `background-clip: text`, and the rule
 * with its dot in the same metal. Every one of them is a window onto the same
 * light, and nothing among them owns a plane.
 *
 * GEOMETRY (Founder GO №1, 2026-08-16). The monogram is the exact architectural
 * M+H gate-on-a-plinth of the Founder reference `GoldIntelligence.png`, traced
 * by `scripts/trace_mark.py` (monogram IoU 0.998) and carried as three vector
 * masks — frontal planes, side/shadow faces, struck kants. The ring is the
 * ellipse fitted to the same reference (mean radial residual 0.17% of its
 * width), kept elliptical at 1.064 by Founder decision D-2. Text capitals `MH`
 * were an erroneous simplification and are gone.
 *
 * WHY A VECTOR MASK AND NOT AN `<svg>` WITH FILLS. A viewBox is a coordinate
 * area, not a visible rectangle — the earlier defects came from a viewport too
 * small for its text and from gradients resolved in the SVG's own coordinate
 * system, not from SVG as such. Used as a MASK, the vector contributes shape
 * only: the paint stays in CSS, so the light keeps the page's coordinate
 * system, there is no box to show, and nothing can be clipped.
 *
 * LIGHT. The moving layer is `background-attachment: fixed`, so it is
 * positioned against the PAGE: one band, one phase, one timeline with the
 * substrate. What changed is its width — see the note on `--glint` above — and
 * that the glint now blends into the profile with `overlay` instead of being
 * washed over it. Overlay is what makes the material answer: a kant lifts hard,
 * a frontal plane lifts moderately, a shadow face barely moves. Before the
 * front arrives and after it leaves, the metal is simply there.
 *
 * Nothing here may carry background, border, shadow or a raster: the container
 * exists for layout and is visually absent.
 */
.gi-lockup {
  /* THE MARK CARRIES ITS OWN STACKING CONTEXT — measured, not decorative.
   *
   * Founder review, twice: the live surface showed the ring and the monogram
   * and nothing under them. Rendering the same lockup in Chrome with and
   * without a stacking context around it reproduces the defect exactly: the
   * text-clipped lines, whose glint layer is `background-attachment: fixed`,
   * are not painted unless the lockup sits inside one. The product pages happen
   * to provide it (`.wrap` is `position: relative; z-index: 1`); a page that
   * does not — a review surface, an email shell, any future host — loses the
   * wordmark, the rule and the signature while the masked ring survives, which
   * is why the failure looked like a design decision rather than a defect.
   *
   * The mark must not depend on its host for that. It declares it here. */
  position: relative;
  z-index: 1;
  isolation: isolate;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  /* One composition. Size comes from the context that places it. */
  font-size: var(--mark, clamp(12px, 3vw, 20px));
  /* The seal's width in ems of that size. Derived, not chosen: the reference
     has wordmark = 1.536 ring widths, and the canonical stack at the canonical
     minimum tracking renders `GOLD INTELLIGENCE` at 14.27em. */
  --seal: 9.3em;
  max-width: 100%;
  background: none;
  border: 0;
  box-shadow: none;
  text-align: center;
}

/* The seal — ring and monogram as one piece of metal, in three facet layers. */
.gi-seal {
  position: relative;
  display: block;
  width: var(--seal);
  max-width: 100%;
  aspect-ratio: 1000 / 1064;   /* the measured ellipse of the reference (D-2) */
}

/* SPECIFICITY IS PART OF THE PHYSICS — found by rendered measurement, not by
 * reading. The base rule below is `.gi-seal > i` (0-1-1), and the facet rules
 * were `.gi-side` / `.gi-kant` (0-1-0): the base always won, so the browser
 * painted all three facet layers with the SAME frontal register and `overlay`.
 * The side faces were never darker, the kants never blended `screen`, the mark
 * rendered as one flat gold — which is exactly why the pass read as "gold gets
 * brighter" no matter what the source said. Every facet's own paint therefore
 * lives at `.gi-seal > i.gi-*` (0-2-1), where the base cannot override it, and
 * the base rule carries only what the facets genuinely share. */
.gi-seal > i {
  position: absolute;
  inset: 0;
  display: block;
  isolation: isolate;            /* the pseudo's blend meets THIS metal only */
  background-repeat: no-repeat;
  background-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
          mask-size: 100% 100%;
  -webkit-mask-position: 50% 50%;
          mask-position: 50% 50%;
}

/* THE MOVING LAYER IS A REAL VIEWPORT BOX (round ten — see the note above
 * `envfield`). Each masked or plain carrier holds its glint on a fixed
 * full-viewport pseudo-element: the box IS the viewport, so the percentage
 * arithmetic of `envlight` is exact by construction on every engine, and the
 * parent's mask clips the band to the facet, the bar or the dot. The blend
 * moves with it: `mix-blend-mode` against the parent's own profile inside
 * the parent's `isolation: isolate` is the same two-layer composition the
 * `background-blend-mode` pair used to express. */
/* FAIL-SAFE (perceptual closure, 2026-08-18): these pseudo-boxes cover the
 * WHOLE viewport and rely on the parent's mask to clip them to a facet.
 * On an engine without mask support the clip silently disappears and the
 * carriers flood the page — measured: +36% integral luma, a gold wash over
 * all content. The carriers therefore exist only where masks exist, and
 * the unmasked facet paints are killed the same way: light degrades, the
 * interface never does (the light grants no permission to read). */
@supports ((-webkit-mask-image: none) or (mask-image: none)) {
  .gi-seal > i::before,
  .gi-rule i::before,
  .gi-rule b::before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    background-repeat: repeat-x;
    background-size: 130vw 100%;
    background-position: -84.8vw 0;
    animation: envlight 72s linear infinite;
  }
}

@supports not ((-webkit-mask-image: none) or (mask-image: none)) {
  .gi-rule b, .gi-rule i, .gi-seal > i { background: none !important; }
}

/* Frontal planes — the whole silhouette, so no part of the mark is ever unlit. */
.gi-seal > i.gi-face {
  background-image: var(--profile-gold-seal);
  -webkit-mask-image: url(../img/mark-silhouette.svg);
          mask-image: url(../img/mark-silhouette.svg);
}

.gi-seal > i.gi-face::before {
  background-image: var(--glint-metal);
  mix-blend-mode: overlay;
}

/* Side and shadow faces — the depth of the pillars, the feet and the plinth. */
.gi-seal > i.gi-side {
  background-image: var(--profile-gold-shade);
  -webkit-mask-image: url(../img/mark-side.svg);
          mask-image: url(../img/mark-side.svg);
}

.gi-seal > i.gi-side::before {
  background-image: var(--glint-metal);
  mix-blend-mode: overlay;
}

/* The struck kants — the edges that catch the front first and let it go last.
 *
 * These are the only part of the mark that blends `screen` rather than
 * `overlay`, and the reason is physical rather than decorative: a kant is a
 * chamfer, the one facet turned toward the light, and a chamfer flares. Screen
 * over a transparent source is a no-op, so the resting metal is untouched —
 * what changes is that when the band arrives it runs along the edges as a cold
 * streak instead of lifting the whole shape. That is the difference between
 * gold going brighter and light sliding across gold. */
.gi-seal > i.gi-kant {
  background-image: var(--profile-gold-kant);
  -webkit-mask-image: url(../img/mark-kant.svg);
          mask-image: url(../img/mark-kant.svg);
}

.gi-seal > i.gi-kant::before {
  background-image: var(--glint-kant);
  mix-blend-mode: screen;
}

/* The rule: line — dot — line, from the reference. Same metal, same light.
   Proportions in ems of the seal width: rule 0.613 each, dot 0.036, gaps
   0.038; symmetric about the dot, which corrects the reference raster's own
   11px offset (Founder decision D-3). */
.gi-rule {
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(var(--seal) * 1.341);
  max-width: 100%;
  margin-top: .42em;          /* 52px / 659 of ink gap, less the descender box */
  gap: calc(var(--seal) * .038);
}

.gi-rule i, .gi-rule b {
  display: block;
  position: relative;
  isolation: isolate;
  background-image: var(--profile-gold);
  background-repeat: no-repeat;
  background-size: 100% 100%;
  /* an opaque full-box mask exists to CLIP: a fixed-position pseudo escapes
     ancestor overflow, but a mask on the parent bounds the whole subtree */
  -webkit-mask-image: linear-gradient(#000 0 0);
          mask-image: linear-gradient(#000 0 0);
}

.gi-rule i::before, .gi-rule b::before {
  background-image: var(--glint-metal);
  mix-blend-mode: overlay;
}

.gi-rule i {
  flex: 1 1 auto;
  height: calc(var(--seal) * .0038);
  min-height: 1px;
}

.gi-rule b {
  flex: 0 0 auto;
  width: calc(var(--seal) * .036);
  height: calc(var(--seal) * .036);
  min-width: 2px;
  min-height: 2px;
  border-radius: 50%;
  /* the dot's mask is its own circle, so the band stays round on the dot */
  -webkit-mask-image: radial-gradient(circle farthest-side at 50% 50%, #000 98%, transparent 100%);
          mask-image: radial-gradient(circle farthest-side at 50% 50%, #000 98%, transparent 100%);
}

/* The identity lines. One law, two registers.
 *
 * THE LINES MAY NEVER DISAPPEAR AGAIN. Founder review found the wordmark, the
 * rule and the signature missing from the live surface while the ring and the
 * monogram — which are painted through masks, not through text — were fine.
 * The cause was `background-blend-mode` on a `background-clip: text` element:
 * the blend puts the background into an isolated group, the text clip is lost,
 * and with `-webkit-text-fill-color: transparent` the result is nothing at all.
 *
 * Two consequences, both structural:
 *   1. no blend mode on any text-clipped element — the material response of the
 *      lines comes from the quieter profile plus the glint, exactly as in the
 *      MHD App, which is the construction that is known to render;
 *   2. the transparent fill is applied ONLY inside `@supports`, over a real
 *      gold `color`. If clipping is unavailable or fails, the letters are
 *      still there in gold. An identity that can vanish is not an identity.
 */
.gi-line {
  display: block;
  width: max-content;
  max-width: 100%;
  margin-inline: auto;
  font-weight: 600;
  text-transform: uppercase;
  color: var(--gold);                    /* the floor: never invisible */
  background-repeat: no-repeat, no-repeat;
  /* Text-clipped material cannot host a viewport pseudo (the clip takes only
     the element's own background), so it rides the SAME travel expressed in
     element coordinates: the P-wide tile and the centred-element calc position
     — see the derivation above `envfield`. No `background-attachment: fixed`
     anywhere: measured, the engine rendered that layer element-relative on
     the signature and not at all on the wordmark. */
  background-size: 130vw 100%, 100% 100%;
  background-repeat: repeat-x, no-repeat;
  background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
  /* One em of box for one line of capitals. The margins below are then the
     reference's ink gaps less the box's own share above the cap (~.15em), so
     the composition keeps its measured rhythm without the parts touching. */
  line-height: 1;
  animation: envfield 72s linear infinite;   /* the one event, the one timeline */
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .gi-line, .gi-signature .gi-hi {
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
  }
}

.gi-wordmark {
  font-size: 1em;
  letter-spacing: .30em;                     /* §4 range .30–.42em, at its most
                                                compact — nearest the reference */
  text-indent: .30em;                        /* the letter-writing law */
  white-space: nowrap;
  margin-top: calc(var(--seal) * .058);      /* 49px / 659 of ink gap, less the
                                                box's own .15em above the cap */
  background-image: var(--glint-metal), var(--profile-gold);
}

/* THE SIGNATURE IS NOT GOLD. Founder review, third round: decision D-1 variant
 * B is revoked, and the signature returns to the MHD App's own quiet
 * grey-silver metal — which is also what ADR-014 and Visual Physics §9 said all
 * along («always muted, never gold»). The narrow gold exception no longer
 * exists anywhere, so §9 stands unqualified again.
 *
 * The law it now carries is the App's, verbatim: two-layer clipped-text
 * material — static vertical metal profile + one moving cold glint; letters
 * never move, only light passes. It is present at all times, distinctly quieter
 * than the gold identity above it, and when the same front crosses it, it
 * simply becomes a little clearer and then settles back. No glow, no
 * advertising brightness, no animation of its own. */
.gi-signature {
  font-size: .406em;                         /* 26px / 64px in the reference */
  font-weight: 500;
  letter-spacing: .30em;
  text-indent: .30em;
  color: var(--faint);                       /* the floor, and it is not gold */
  /* 53px / 659 of the reference. `--seal` is in `em`, and inside this element
     one em is .406 of the lockup's, so the factor is divided by .406 — the gap
     is a property of the composition, not of the type size that carries it. */
  margin-top: calc(var(--seal) * .114);
  background-image: var(--glint-soft), var(--profile-signature);
}

.gi-signature .gi-hi {
  font-weight: 500;
  color: var(--muted);                   /* the same floor, one tone brighter */
  background-image: var(--glint-soft), var(--profile-signature-hi);
  background-repeat: repeat-x, no-repeat;
  background-size: 130vw 100%, 100% 100%;
  /* The one off-centre text carrier: «MEDIA HOLDING» sits right of the line's
     centre by half the advance of «POWERED BY » — 3.83 of its own ems at the
     canonical .30em tracking (measured 31.1px at em = 8.12px). --dxc returns
     its band to true viewport coordinates; see the `envfield` note. */
  --dxc: 3.83em;
  background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
  animation: envfield 72s linear infinite;
}

/* SEMANTIC MATERIAL EMPHASIS — refinement GO, 2026-08-18. A RARE word that
 * IS the subject of its message may be Gold material inside the same
 * typographic surface: at rest a restrained gold (the identity's own
 * wordmark profile), revealed by the SAME passing field through the
 * reading-matter register — no own animation, no glow, no accent colour,
 * no highlighting system. The floor stands outside @supports: readability
 * never depends on the light. An inline word's box is not viewport-centred,
 * so the page's measure script writes its true centre distance into --dxc
 * (the same valve the signature's brighter half declares statically);
 * without the script the word still reads, with a bounded phase offset. */
.gi-sem {
  color: var(--gold);
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .gi-sem {
    background-image: var(--glint-text), var(--profile-gold);
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    animation: envfield 72s linear infinite;
  }
}

/* Narrow viewports: the same composition, tracking eased, and the wordmark
   allowed to break only when the width genuinely cannot hold it (§4). */
@media (max-width: 720px) {
  .gi-wordmark { letter-spacing: .2em; text-indent: .2em; }
  .gi-signature { letter-spacing: .22em; text-indent: .22em; }
  /* the prefix «POWERED BY » narrows by 11 × .08em, so its half does too */
  .gi-signature .gi-hi { --dxc: 3.39em; }
}

@media (max-width: 380px) {
  .gi-wordmark { white-space: normal; line-height: 1.45; }
}

/* The perpetual glint on plain display type — EXACTLY ONE per page (§2). */
.engraved.glint::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  background: linear-gradient(100deg,
    transparent 0%, transparent 43.40%, rgba(255, 255, 255, .007) 44.40%,
    rgba(255, 255, 255, .018) 45.20%, rgba(255, 255, 255, .049) 46.00%, rgba(255, 255, 255, .103) 46.60%,
    rgba(255, 255, 255, .201) 47.20%, rgba(255, 255, 255, .325) 47.70%, rgba(255, 255, 255, .483) 48.20%,
    rgba(255, 255, 255, .622) 48.60%, rgba(255, 255, 255, .753) 49.00%, rgba(255, 255, 255, .856) 49.40%,
    rgba(255, 255, 255, .903) 49.70%, rgba(255, 255, 255, .920) 50.00%, rgba(255, 255, 255, .903) 50.30%,
    rgba(255, 255, 255, .856) 50.60%, rgba(255, 255, 255, .753) 51.00%, rgba(255, 255, 255, .622) 51.40%,
    rgba(255, 255, 255, .483) 51.80%, rgba(255, 255, 255, .325) 52.30%, rgba(255, 255, 255, .201) 52.80%,
    rgba(255, 255, 255, .103) 53.40%, rgba(255, 255, 255, .049) 54.00%, rgba(255, 255, 255, .018) 54.80%,
    rgba(255, 255, 255, .007) 55.60%, transparent 56.60%, transparent 100%);
  background-size: 300% 100%;
  background-repeat: no-repeat;
  -webkit-background-clip: text;
          background-clip: text;
  color: transparent;
  animation: glintsweep 72s linear infinite;  /* the element-local sheen law */
  pointer-events: none;
}

@media (max-width: 720px) {
  .engraved { letter-spacing: var(--display-tracking-mobile); }
}

/* ── 3 · GOLD MATERIAL — struck metal, cold light on warm gold ──────────── */
.metal {
  background: var(--gold-material);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .22);
}

/* ── 4 · REVEAL — one-shot pass of the same front over one element ───────
 * A mask opens with the band (120% → 0%), a screen band accompanies it and
 * fades at the end. After the pass the mask is removed: meaning stays, light
 * leaves. Permitted moments only — never on body text, never in loops.
 */
/* CONTENT NEVER WAITS FOR THE LIGHT — perceptual closure, 2026-08-18.
 * Founder law: the light reveals material; it does not grant permission to
 * read the interface. The hidden pre-entrance state therefore exists ONLY
 * when the entrance script has declared itself alive (`html.gi-js`, its
 * first statement): a dead, blocked or stripped script leaves every element
 * fully readable, with no timer and no observer in the path. And even with
 * the script alive, a pure-CSS failsafe raises any element whose `.lit`
 * never arrives (throttled timers, WebView lifecycle stalls). */
.reveal {
  -webkit-mask-size: 300% 100%;
          mask-size: 300% 100%;
}

.gi-js .reveal {
  -webkit-mask-image: linear-gradient(100deg, #000 0 40%, rgba(0, 0, 0, .35) 50%, #000 60% 100%);
          mask-image: linear-gradient(100deg, #000 0 40%, rgba(0, 0, 0, .35) 50%, #000 60% 100%);
  -webkit-mask-position: 120% 0;
          mask-position: 120% 0;
  opacity: 0;
  animation: gi-failsafe .5s var(--ease) 3.4s forwards;
}

.reveal.lit {
  animation: revealmask var(--reveal) var(--ease) forwards;
}

@keyframes gi-failsafe {
  to { opacity: 1; -webkit-mask-position: 0% 0; mask-position: 0% 0; transform: none; }
}

.reveal.lit.slow { animation-duration: var(--reveal-slow); }
.reveal.lit.fast { animation-duration: var(--reveal-fast); }

@keyframes revealmask {
  from { -webkit-mask-position: 120% 0; mask-position: 120% 0; opacity: 0; }
  18%  { opacity: 1; }
  to   { -webkit-mask-position: 0% 0;   mask-position: 0% 0;   opacity: 1; }
}

/* After the pass the mask must be gone, not merely finished. */
.reveal.done {
  -webkit-mask-image: none;
          mask-image: none;
  opacity: 1;
  animation: none;
}

/* The accompanying screen band, used on identity elements only. */
.sheen { position: relative; overflow: hidden; }

.sheen::after {
  content: "";
  position: absolute;
  inset: -30% -10%;
  background: linear-gradient(100deg,
    transparent 0%, transparent 42.40%, rgba(212, 228, 250, .006) 43.40%,
    rgba(212, 228, 250, .017) 44.40%, rgba(212, 228, 250, .033) 45.20%, rgba(212, 228, 250, .059) 46.00%,
    rgba(212, 228, 250, .085) 46.60%, rgba(212, 228, 250, .115) 47.20%, rgba(212, 228, 250, .142) 47.70%,
    rgba(212, 228, 250, .168) 48.20%, rgba(212, 228, 250, .187) 48.60%, rgba(212, 228, 250, .203) 49.00%,
    rgba(212, 228, 250, .214) 49.40%, rgba(212, 228, 250, .218) 49.70%, var(--light-band) 50.00%,
    rgba(212, 228, 250, .218) 50.30%, rgba(212, 228, 250, .214) 50.60%, rgba(212, 228, 250, .203) 51.00%,
    rgba(212, 228, 250, .187) 51.40%, rgba(212, 228, 250, .168) 51.80%, rgba(212, 228, 250, .142) 52.30%,
    rgba(212, 228, 250, .115) 52.80%, rgba(212, 228, 250, .085) 53.40%, rgba(212, 228, 250, .059) 54.00%,
    rgba(212, 228, 250, .033) 54.80%, rgba(212, 228, 250, .017) 55.60%, rgba(212, 228, 250, .006) 56.60%,
    transparent 57.60%, transparent 100%);
  background-size: 300% 100%;
  background-repeat: no-repeat;
  background-position: 120% 0;
  mix-blend-mode: screen;
  pointer-events: none;
  opacity: 0;
}

.sheen.lit::after {
  animation: glintsweep var(--reveal) var(--ease) forwards,
             sheenfade var(--reveal) var(--ease) forwards;
}

/* The mark carries the ambient front continuously — one light, whole system. */
.sheen.ambient::after {
  opacity: 1;
  animation: glintsweep 72s linear infinite;
}

@keyframes sheenfade { 0% { opacity: 0; } 22% { opacity: 1; } 100% { opacity: 0; } }

/* ── 5 · CALM ENTRANCE for non-identity content (§3) ────────────────────── */
.gi-js .rise {
  opacity: 0;
  transform: translateY(9px);
  animation: gi-failsafe .5s var(--ease) 3.4s forwards;
}

.rise.lit {
  animation: rise .6s var(--ease) forwards;
}

/* Mirror of `.reveal.done`: after the entrance the element must be stable
 * with no animation left to stall (WebView lifecycle belt). */
.rise.done { opacity: 1; transform: none; animation: none; }

@keyframes rise { from { opacity: 0; transform: translateY(9px); } to { opacity: 1; transform: none; } }

/* ── 6 · PRESENCE — the one permitted 3s loop ───────────────────────────── */
.presence {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--approve);
  box-shadow: 0 0 0 0 rgba(63, 176, 127, .5);
  animation: presence 3s ease-out infinite;
}

@keyframes presence {
  0%   { box-shadow: 0 0 0 0 rgba(63, 176, 127, .45); }
  70%  { box-shadow: 0 0 0 7px rgba(63, 176, 127, 0); }
  100% { box-shadow: 0 0 0 0 rgba(63, 176, 127, 0); }
}

/* ── 6.5 · RECOMMENDED-PATH MATERIAL BREATHING — a state of the material,
 * never a light (refinement GO, 2026-08-18). The recommended path's OWN
 * material very slowly becomes a little more present and lets go again:
 * the gold top edge and the CTA rim deepen slightly over 47s (non-multiple
 * of 72/44/28/17 — the picture never literally repeats; nothing in the
 * environment is faster than 17s). No glow, no scale, no motion, no opacity
 * pulse, no second travelling light: envfield remains the ONLY spatial
 * light event, and the local response still follows the field's actual
 * position — breathing only shifts the rest state the field acts upon.
 * The amplitudes are deliberately at the edge of perception: the law is
 * semantic priority, never attention capture. */
@keyframes matbreath { 0%, 100% { border-top-color: rgba(212, 175, 55, .42); }
                       50%      { border-top-color: rgba(212, 175, 55, .98); } }
@keyframes matrim    { 0%, 100% { border-color: rgba(240, 217, 138, .45); }
                       50%      { border-color: rgba(240, 217, 138, .80); } }

.mat-tier.mat-rec { animation: matbreath 47s ease-in-out infinite; }

/* `animation` is ONE property: on the entrance-revealed tier the breathing
 * must COMPOSE with the rise, or the later rule would silently replace the
 * entrance and leave the column at the `.rise` rest opacity of 0 — caught
 * by rendered measurement before it could ship. */
.mat-tier.mat-rec.rise.lit {
  animation: rise .6s var(--ease) forwards,
             matbreath 47s ease-in-out infinite;
}

/* The perceptual load-bearer of the breathing (verification round: two
 * hairlines alone sit under the Founder detection threshold): the LARGEST
 * material of the path — the gold CTA itself — breathes its material
 * brightness by 3.5% over the same 47s. Still a state of the material:
 * ~0.4/255 per second, untrackable as motion, discoverable as presence. */
/* THE PATH READS ITSELF (Founder GO, 2026-08-28; mechanism corrected the same
   day after the Founder looked at the live screen). Nine states, one at a time,
   five seconds each — a slot measured for reading the line under the name, not
   for a blink.

   The first attempt lifted BRIGHTNESS, and on the live page only state 1 ever
   looked active: a pending title rests at `--faint`, and 1.18x of a dim ink is
   still a dim ink. The accent now walks the ink ladder itself — each title
   travels from its own resting token to `--text`, the exact value the current
   state wears — so "as bright as the first one" is the same value and not an
   approximation. `--gi-rest` carries each item's resting step, which is why one
   keyframe can serve items that rest at three different inks.

   Still nothing but ink: no geometry moves,
   no halo is drawn, no colour is introduced — the same `filter: brightness()`
   ladder the page already owns. Every item carries the same 45s clock
   and its own offset, so the one that dims is dimming exactly as the next one
   lights: the hand-off IS the return to rest. The state dot is deliberately
   outside the accent — it reports server truth, and a marker that brightened
   in turn would read as the state itself moving. */
/* The marker of the same state, on the same clock (Founder decision,
   2026-08-28). It was held out of the accent on the reasoning that it reports
   server truth; the Founder read the live screen and ruled that the dot
   travels with its line. Same percentages as the ink, so the two turn as one
   thing and not as two that happen to agree. */
@keyframes gi-path-dot {
  0%      { background-color: var(--gi-dot-rest); }
  3.7%    { background-color: var(--gold); }
  7.4%    { background-color: var(--gold); }
  11.111% { background-color: var(--gi-dot-rest); }
  100%    { background-color: var(--gi-dot-rest); }
}

@keyframes gi-path-read {
  0%      { color: var(--gi-rest); }
  3.7%    { color: var(--text); }
  7.4%    { color: var(--text); }
  11.111% { color: var(--gi-rest); }
  100%    { color: var(--gi-rest); }
}

/* ── THE READING LIGHT ─────────────────────────────────────────────────────
   EXPERIMENTAL, /assistant ONLY (Founder GO, 2026-08-28). A layer of Visual
   Physics that follows a person's PRESUMED ATTENTION, not the scroll position.

   It is deliberately the SAME light the surface already owns — the ink ladder
   from a carrier's own resting token to `--text`, crossed at the path's own
   speed (a third of its five-second slot). No new colour, no halo, no plate,
   no second law: what is new is WHEN a carrier is lit, never HOW.

   `transition`, not `animation`, because the moment is decided by a reader and
   not by a clock — and because a transition composes with the `envfield` this
   carrier already runs on `background-position`. The two never touch: one owns
   `color`, the other owns where the band stands.

   The rest ink travels in `--gi-rest` so one rule serves carriers that rest at
   different steps, exactly as the path's accent does. The `color` is set HERE
   rather than inline, because an inline colour would win over the lit state —
   the reason the markup passes its resting step as a variable instead.

   Nothing about this layer may accelerate, blink or chase: the script that
   drives it releases on motion and only ever adds one class at a time. Under
   reduced motion the whole layer is a still page at its resting inks — the
   design, not a degraded one. */
.gi-attn {
  color: var(--gi-rest, var(--muted));
  transition: color 1.667s ease-in-out;
}

.gi-attn.gi-attn-on { color: var(--text); }

/* ── THE READING FRONT (Founder GO, 2026-08-28) ───────────────────────────
   The light does not arrive on a whole paragraph at once. It spreads through
   the carrier the way a person reads it — and the direction is taken from the
   text's OWN direction, never from a list of languages.

   `--gi-front` is the position of a FRONT, not of a highlight: everything
   behind it is already at reading ink, everything ahead of it is still at rest,
   and the boundary between them is eighty per cent of the carrier wide. That
   width is the whole difference between this and a sweep — at no moment is
   there a band to look at, and the beginning of the line is readable long
   before the end has changed at all. Nobody waits for it.

   It reuses the layer the carrier already paints with: the glint stays layer
   one, on the same 72s field and the same `--dxc`; only the FLOOR beneath it
   becomes two inks instead of one. No new colour, no glow, no second
   animation — `envfield` moves `background-position`, this moves a custom
   property, and the two never touch.

   Without `@property` the property cannot interpolate, so the carrier simply
   lights whole, exactly as it did before this rule existed: the layer degrades
   to its own previous version rather than to nothing. */
@property --gi-front {
  syntax: "<percentage>";
  inherits: false;
  initial-value: -40%;
}


@keyframes matcta { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.15); } }

/* `animation` is ONE property — the dm-211 lesson, applied to the control
 * itself (Founder review, 2026-08-19): with only the two 47s breathings named
 * here, the later rule silently REPLACED the field, so the recommended plan's
 * plate held a frozen band while the pass moved on — it read as a button lit
 * independently of the scene. The breathing and the field are composed, and
 * the plate is back on the one 72s timeline. */
.mat-tier.mat-rec .btn-gold {
  animation: matrim 47s ease-in-out infinite,
             matcta 47s ease-in-out infinite,
             envfield 72s linear infinite;
}

/* ── 6.6 · ENGRAVED MICRO-DEPTH — typography as struck material (refinement
 * GO, 2026-08-18). Applicable glyphs carry a permanent, glyph-following
 * engraving cut: a sub-pixel darker parting line at the stroke's edge — the
 * die cut of struck metal (§4 already names this type ENGRAVED). The depth
 * EXISTS at all times; it is not painted by the light. What the passing
 * field does is reveal it: the glyph's face rides the one field locally
 * (position-space registers), the cut does not answer at all, so as the
 * band crosses a letter the local face-vs-cut contrast rises and the
 * material structure becomes momentarily readable — left part of a G
 * before its right part, no residual after departure (dm-208 law, for
 * free, because nothing here is animated). NOT an effect: no shadow, no
 * emboss, no bevel, no glow, no second light. Applied by FUNCTION, never
 * universally: brand wordmark and display/decision scale glyphs only;
 * supporting copy, long-form reading and metadata stay pure reading
 * surfaces, and glyphs under ~16px are excluded — at small sizes the cut
 * muddies the letterform (measured in the round's experiment). */
/* MEASURED (perceptual verification round, 2026-08-18): a direct
 * `-webkit-text-stroke` on a background-clip:text element renders NOTHING —
 * the clip region absorbs the stroke band and the background paints over it
 * (0 changed pixels at DPR1). The cut therefore lives on a DUPLICATE
 * CONTOUR: an ::after with the same text (content: attr(data-text)), the
 * same inherited metrics, a transparent fill and ONLY the stroke painted.
 * The base glyph face keeps riding the one field; the contour is static
 * material — the passing band locally raises the face against the
 * unanswering cut, which is exactly the reveal. */
.gi-wordmark { position: relative; }

.gi-wordmark[data-text]::after,
.engraved[data-text]::after,
.gi-val[data-text]::after,
.gi-quote[data-text]::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  pointer-events: none;
  -webkit-text-fill-color: transparent;
          color: transparent;
  /* Perceptual closure 2026-08-18: the .6px/.34 cut existed but sat below
   * the perceptual threshold at normal viewing — implemented ≠ perceptible.
   * The cut is dark-on-dark, so AT REST the typography stays strict and
   * clean; the depth appears only when the passing field lifts the glyph
   * face against this unanswering contour. Strengthened, not decorated;
   * the <16px exclusion (small glyphs muddy) stands unchanged. */
  -webkit-text-stroke: .8px rgba(8, 11, 17, .52);
}

.gi-wordmark[data-text]::after {
  -webkit-text-stroke: .8px rgba(26, 20, 7, .55);
}

/* KEY VALUES AS FIELD MATERIAL — the tier prices. A plain coloured glyph
 * has no face for the field to reveal: the value rides the reading-matter
 * register like every other material text (floor colour outside @supports —
 * readability never depends on the light), with the measured --dxc of its
 * off-centre column. Its depth contour is the generic ::after above. */
.gi-val {
  position: relative;
  color: var(--silver);
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .gi-val {
    background-image: var(--glint-text), linear-gradient(var(--silver), var(--silver));
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: envfield 72s linear infinite;
  }
}

/* THE DEALER QUOTE — a functional value accent, not a second brand (Founder
 * GO, 2026-08-20). The six prices on the board were read in the structural
 * silver, the register this system uses for STRUCTURE, so the number a
 * visitor actually came for arrived as metadata. It now reads in the
 * palette's own lit gold, flat: one semantic role, identical in all six rows.
 *
 * "Neon" here means a clear, living information signal — NOT a light. There
 * is no glow, no halo, no shadow, no second source and no per-row motion.
 * the tone is even and the only thing that ever moves across it is the one
 * envfield the whole scene already answers, at the reading register `.gi-val`
 * uses. Six rows therefore stay six readings of one value, never six lamps.
 *
 * THE HIERARCHY IS MATERIAL vs SIGNAL. The spot price is the band's single
 * anchor and keeps the full gold MATERIAL of `.gi-sem` (the gradient, the
 * identity's own profile); a dealer quote is one of six repeated data points
 * and takes the same gold as ONE EVEN TONE. A lit object and a printed
 * number are told apart at a glance — which is the difference in their roles,
 * stated in material rather than in size. The floor stands outside @supports:
 * a price is the last thing on this page whose legibility may depend on the
 * light. */
.gi-quote {
  position: relative;
  color: var(--value-gold);
}

@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .gi-quote {
    background-image: var(--glint-text),
      linear-gradient(var(--value-gold), var(--value-gold));
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: envfield 72s linear infinite;
  }
}

/* ── PRODUCT IMAGERY ANSWERS THE ONE FIELD ───────────────────────────────
 * (Founder GO, 2026-08-20.)
 *
 * Gold has to feel like gold, and on this surface that means one thing only:
 * the light already crossing the scene reaches the metal, and the metal
 * answers in proportion to what it is. A photograph cannot be clipped to its
 * glyphs the way letters are and MUST NOT be repainted, so the response is
 * carried by a layer standing exactly over the asset and blended `overlay` —
 * the same law the mark's own facets are built from.
 *
 * `overlay` is what makes the mask unnecessary, and that is the point: its
 * result is driven by the BASE. Over the studio's `rgb(14,14,14)` backdrop it
 * returns essentially the backdrop (2·base·blend), so nothing lights up
 * around the object; over lit gold it lifts strongly; over the dim reflection
 * it lifts a little. The asset's own luminance IS the mask, which is another
 * way of saying the material answers by what it is made of. No glow, no halo,
 * no spotlight, no independent animation, no new physics — one existing
 * field, one existing blend, positioned on the one existing timeline.
 *
 * The amplitude is the QUIET reading register (`--glint-text`), not the metal
 * register the product's own identity answers in: on Gold's surface the
 * photograph of a bar may never out-shine Gold Intelligence's own mark
 * (`CURRENT SURFACE OWNER = PRIMARY IDENTITY`). */
/* MEASURED, NOT ASSUMED: `overlay` alone was not enough. Its dark branch is
 * 2·base·blend, which very nearly DOUBLES the studio backdrop (14 → ~27) —
 * bright enough to show as a pale rectangle standing where the photograph's
 * frame is, i.e. exactly the pasted-on look this must not have. Every other
 * lightening blend is worse (soft-light lifts it to 41, colour-dodge to 140).
 *
 * So the band is admitted THROUGH THE ASSET'S OWN LUMINANCE: a luminance mask
 * of the same file. The backdrop is dark, so it lets almost nothing in (α =
 * .055 — a residual lift under one luma unit); the lit metal is bright, so it
 * lets the band in fully; the reflection, being dim gold, answers a little.
 * Nothing is drawn, nothing is cut out, nothing is repainted: the material
 * decides how much of the scene's light it returns, which is the whole law.
 *
 * Behind `@supports` on purpose. Without luminance masking the mask would
 * fall back to ALPHA — and these files have no alpha channel, so the mask
 * would be fully opaque and the pale rectangle would come back. Where the
 * feature is missing the response is simply absent and the photograph still
 * reads: material integrity never depends on the light (§6). */
@supports ((mask-mode: luminance) and (mask-composite: intersect)) {
  .gi-prod::after {
    content: '';
    position: absolute;
    width: calc(var(--pk, 1) * 100%);
    height: calc(var(--pk, 1) * 100%);
    left: calc(50% - var(--px, 50%));
    /* the response layer stands exactly over the asset, so it is placed by
       the same standing line — see `--stand` in tokens.css */
    top: calc(var(--stand, 50%) - var(--py, 50%));
    pointer-events: none;
    /* THE MATERIAL IS ITS OWN MASK, TWICE. A single luminance mask still let
       the band through the studio backdrop at α = .055 — and over an area the
       matte has already made TRANSPARENT there is no backdrop left to blend
       with, so `overlay` degenerated to source-over and that 5% painted a
       visible blue wash across the whole stage (measured: the stage corner
       lifted from the page's (12,15,20) to (41,46,59)). Admitting the band
       through the SAME material twice squares the ratio: the backdrop falls
       to .003 — under one luma unit, gone — while lit metal at .8 keeps .64
       and the dim reflection keeps a proportionally smaller share. Squaring
       is not a trick to hide a leak: the light passes through the material to
       reach it and back to be seen, and the material is what decides both. */
    -webkit-mask-image: var(--prod-src), var(--prod-src);
            mask-image: var(--prod-src), var(--prod-src);
    -webkit-mask-mode: luminance, luminance;
            mask-mode: luminance, luminance;
    mask-composite: intersect;
    -webkit-mask-size: 100% 100%, 100% 100%;
            mask-size: 100% 100%, 100% 100%;
    -webkit-mask-repeat: no-repeat, no-repeat;
            mask-repeat: no-repeat, no-repeat;
    /* THE METAL REGISTER, AT A FRACTION OF THE IDENTITY'S AMPLITUDE. The
       reading register (`--glint-text`, peak .968, rgba(205,228,255)) was
       measured first and was wrong twice over: too strong, and too BLUE —
       photographed gold answered with a cold plastic streak instead of
       catching the light. Real metal answers in the register the mark's own
       facets use (`--glint-metal`, peak .72, rgba(242,249,255)), and the
       subordination is carried by the amplitude alone (`--prod-answer`), not
       by pretending the material is something else. Same field, same
       timeline, same blend the facets use — a fraction of the strength. */
    background-image: var(--glint-metal);
    background-repeat: repeat-x;
    background-size: 130vw 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0;
    opacity: var(--prod-answer);
    mix-blend-mode: overlay;
    animation: envfield 72s linear infinite;
  }
}

/* ── 6.8 · UNIFIED MATERIAL RESPONSE — one field, every applicable surface
 * (Founder ADDENDUM 2026-08-18). The law already proven on the mark, its
 * facets and the wordmark extends to the product surfaces' own voice: one
 * envfield → the field actually reaching a surface → a local response of
 * THAT surface. Same field ≠ same amplitude — each material answers per its
 * semantic role, through the existing registers only:
 *
 *   brand / semantic gold      --glint-kant .97 / --glint-metal .72
 *   AMPLITUDES (Founder ladder choice B4, dm-20260818-219): the text
 *   register runs at its alpha ceiling with a x1.6 envelope (soft x1.38 -
 *   the V-13 lawful ceiling). Measured consequence, stated rather than
 *   hidden: at these values reading text answers the field MORE strongly
 *   than the marks metal (label mean +63 vs wordmark +33 luma) - the
 *   dm-209 brand-strongest ordering no longer holds by amplitude; the
 *   Founder judges the live result.
 *   decision values (.gi-val)  --glint-text .36 over silver          (as is)
 *   headings (.h-section)      --glint-soft .33 over the engraved profile
 *   supporting copy            --glint-text .36 over its OWN floor colour
 *     (.lede / .label / .mat-copy — the floor is currentColor, so
 *      readability never depends on the light)
 *   metadata / legal / §9      ~0 — the footer, the signature and controls
 *     stay quiet by DECISION (below), not by omission.
 *
 * Locality is the clip itself: only the glyphs the band actually covers
 * answer, per letter — no whole-line highlight, no opacity sync, no second
 * light, no self-timed text animation. The dm-208 law holds by construction:
 * the layer is positioned by the SAME envfield timeline, so the response can
 * neither precede the field nor outlive it. */
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  /* `FR-03` DECIDED IN THIS PART (Founder, 2026-08-19): the payment outcome
   * title joins the one law — there are to be no exceptions on any surface.
   * `.engraved` is the same display role as `.h-section`, so it answers in
   * the same soft register over its own profile; `.engraved.gold` keeps its
   * gold floor and takes the same glint. The last still region of Gold is
   * gone. */
  .h-section, .engraved {
    background-image: var(--glint-soft),
      linear-gradient(180deg, #FFFFFF 0%, var(--silver) 38%, #8E97A3 72%, #6C7684 100%);
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
    animation: envfield 72s linear infinite;
  }
  /* The gold outcome keeps its own metal as the floor — its REST is
     unchanged — and answers in the register gold MATERIAL already uses (the
     wordmark: --glint-metal over its own profile). Measured, and the reason
     the register matters: over a floor this bright the soft register lifts
     the title 4.2 luma against the silver title's 18.9, which would have
     left the success screen the one still surface again. No amplitude is
     invented here; this is the register the mark's own metal answers in.

     The band's geometry is repeated on purpose: the base `.engraved.gold`
     rule uses the `background` SHORTHAND, which resets size, repeat and
     position to their initial values at a HIGHER specificity than the rule
     above — measured, the glint sat at `auto / 0% 0%` and never swept
     (3.7 luma, indistinguishable from the substrate behind it). */
  .engraved.gold {
    background-image: var(--glint-metal), var(--gold-material);
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
  }
  /* UNIFIED LIGHT RESPONSE (Founder GO, 2026-08-19): the whole visible
   * surface obeys one law — where the pass reaches visible material, the
   * material answers ACCORDING TO ITS ROLE. `.powered` (§9) joins the
   * reading register over its own floor colour, so it stays muted and never
   * gold; §9's "never animated by itself" is untouched, because riding the
   * shared field is not a light of one's own. The language switch and the
   * legacy chrome's own names are the same reading role under older
   * spellings. */
  /* A CARRIER ANSWERS FROM THE FORM IT ACTUALLY HAS, NOT FROM AN ASSUMED
   * ONE (Founder GO, 2026-08-19 — the `.tl-num` remainder of FR-137).
   * `.tl-num` was given the plate treatment on the premise of "the numbered
   * disc of a step": a 44px gold-rimmed disc. That disc is defined only in
   * the LEGACY shell's stylesheet, and the legacy shell does not link this
   * file. On every surface this stylesheet can reach, `.tl-num` is a bare
   * numeral in a full-width block — measured 1012px wide on `/business`,
   * the one Gold surface that renders it — so the plate painted a
   * 1012px lit BAR across the section: 23.3 → 79.6 luma over the cycle,
   * the strongest response on that page, on material that carries a step
   * number. It is a step numeral, so it answers where supporting copy
   * answers: the reading register on its own colour, clipped to the glyph.
   *
   * THE LAW, so the class is not inherited: a plate treatment paints an
   * element's whole box, therefore it may be given ONLY to a selector whose
   * FORM is defined by the stylesheets the Gold surfaces actually serve
   * (`.btn-gold`, `.nav-cta` — both have their form on the page). Markup
   * reused from the legacy shell arrives without its form; a carrier with no
   * form has no box worth painting, and answers through its glyphs instead.
   * `tests/test_unified_material_response.py` carries this derived from the
   * real surfaces — REMEMBERED RULE ≠ ENFORCED RULE. */
  .lede, .label, .mat-copy, .powered, .tl-num,
  .langs a, .navlinks a, .foot-langs a, .login-langs a, nav a,
  .brand b, .brand small, .foot-bar .copy, .ins-more {
    background-image: var(--glint-text), linear-gradient(currentColor, currentColor);
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: envfield 72s linear infinite;
  }

  /* THE READING FRONT'S FLOOR, AND IT MUST BE READ AFTER THE RULE ABOVE.
     Both are one class deep, so the file's order is the only thing deciding
     which floor a carrier paints from — written earlier, this rule measured
     green in the source while the screen showed a paragraph lighting whole.

     TWO TIERS, AND THE REASON IS «CHANGE NOTHING THAT EXISTS» (Founder GO,
     2026-08-28, the rollout to every Gold surface). A carrier that already
     rides the field must keep it; a carrier that never did must NOT gain it,
     or the rollout would quietly add a moving highlight to text that had none.
     So the base rule is self-sufficient — it clips and paints its own two inks
     and runs no animation — and the compound rule restores the glint, the
     130vw band and the measured `--dxc` for the carriers that already had all
     three. At rest both tiers are one flat ink, exactly what stood there
     before. */
  .gi-attn {
    --gi-front: -40%;
    background-image:
      linear-gradient(to right,
        var(--text) calc(var(--gi-front) - 40%),
        var(--gi-rest, var(--muted)) calc(var(--gi-front) + 40%));
    background-repeat: no-repeat;
    background-size: 100% 100%;
    background-position: 50% 50%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
    transition: color 1.667s ease-in-out,
                --gi-front var(--gi-front-ms, 2200ms) cubic-bezier(.33, 0, .2, 1);
  }

  .mat-copy.gi-attn, .lede.gi-attn, .label.gi-attn, .powered.gi-attn,
  .ins-more.gi-attn {
    background-image: var(--glint-text),
      linear-gradient(to right,
        var(--text) calc(var(--gi-front) - 40%),
        var(--gi-rest, var(--muted)) calc(var(--gi-front) + 40%));
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
  }

  /* Right to left when the text itself runs that way — the document is asked,
     never a list of languages. The attribute form answers the same question
     where `:dir()` is not understood yet. */
  [dir="rtl"] .gi-attn,
  .gi-attn:dir(rtl) {
    background-image:
      linear-gradient(to left,
        var(--text) calc(var(--gi-front) - 40%),
        var(--gi-rest, var(--muted)) calc(var(--gi-front) + 40%));
  }

  [dir="rtl"] .mat-copy.gi-attn, [dir="rtl"] .lede.gi-attn,
  [dir="rtl"] .label.gi-attn, [dir="rtl"] .powered.gi-attn,
  [dir="rtl"] .ins-more.gi-attn,
  .mat-copy.gi-attn:dir(rtl), .lede.gi-attn:dir(rtl),
  .label.gi-attn:dir(rtl), .powered.gi-attn:dir(rtl),
  .ins-more.gi-attn:dir(rtl) {
    background-image: var(--glint-text),
      linear-gradient(to left,
        var(--text) calc(var(--gi-front) - 40%),
        var(--gi-rest, var(--muted)) calc(var(--gi-front) + 40%));
  }

  .gi-attn.gi-attn-on { --gi-front: 140%; }

  /* The provenance name is METAL ON THE LIT SURFACE, not metadata (Founder
   * review, 2026-08-19). Measured before the fix: its neighbours in the same
   * block swung 32.3 luma across the cycle while the name swung 5.8 — the
   * block read as sitting apart from the surface carrying it. It answers in
   * the SUPPORTING-COPY register, not the brand one: the response is the one
   * every quiet material already has, and provenance stays secondary to the
   * product's own identity (FR-133). Same field, same 72s timeline, same
   * centred-element formula — nothing new. */
  .gi-provenance {
    background-image: var(--glint-text), var(--profile-gold, var(--gold-material));
    background-repeat: repeat-x, no-repeat;
    background-size: 130vw 100%, 100% 100%;
    background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: envfield 72s linear infinite;
  }
  /* A control still answers AS A PLATE, never through its lettering — that
   * is a role, not an exception to the law: the plate itself takes the pass
   * (below), and clipping a button's own fill to its glyphs would leave a
   * transparent control with no paint. This rule is also the safety that
   * keeps every control legible.
   *
   * The FOOTER EXCEPTION IS GONE (Founder GO, 2026-08-19, superseding the
   * metadata silence of dm-20260818-215): the footer is visible material on
   * the same lit surface, and it now answers in the same reading register as
   * everything else. */
  button.label {
    background: none;
    -webkit-text-fill-color: currentColor;
    animation: none;
  }
  /* A CONTROL KEEPS ITS OWN LETTERING — the other half of the rule above,
   * and the reason a whole class of surfaces shipped an UNREADABLE button
   * (Founder finding, 2026-08-19). `.nav-cta` is an `<a>` inside `<nav>`, so
   * `nav a` in the reading group reached it and set the transparent fill a
   * clipped carrier needs. On the B2B/content shell the page's own
   * `background` SHORTHAND then reset `background-clip` to `border-box`
   * (the FR-136 lesson, in the other direction), so the gold plate painted
   * in full while its glyphs stayed transparent: a large gold control with
   * no readable name, live on every content surface that carries one.
   * A control answers AS A PLATE and never through its lettering, so it
   * keeps `currentColor` and a border-box clip whatever list it falls into.
   * This rule follows the reading group on purpose — it is the safety, not
   * an exception. */
  .nav-cta, .btn, .btn-gold {
    -webkit-background-clip: border-box;
            background-clip: border-box;
    -webkit-text-fill-color: currentColor;
  }
}

/* THE PLATE TAKES THE PASS ON ITS SURFACE, not on its lettering — the role
 * the rule above names. The glint rides over the control's own metal with
 * the same 72s timeline and the same centred formula; nothing is clipped, so
 * the plate keeps its fill, its rim and its legibility. The recommended
 * tier's 47s breathing (ladder A2·B4·C3+) is a different property and is not
 * touched here: brightness stays its own, this is the field crossing metal. */
.btn-gold, .nav-cta {
  background-image: var(--glint-metal), var(--profile-gold, var(--gold-material));
  background-repeat: repeat-x, no-repeat;
  background-size: 130vw 100%, 100% 100%;
  background-position: calc(50% - 69.8vw - var(--dxc, 0px)) 0, 50% 50%;
  animation: envfield 72s linear infinite;
}

/* The entrance and the field share the ONE `animation` property (the dm-211
 * lesson): each combination is composed, or the later rule silently kills the
 * field — the dm-212 class of defect (implemented ≠ rendered). `.done` must
 * cascade after `.lit` at equal specificity. */
.h-section.reveal.lit, .lede.reveal.lit, .label.reveal.lit, .mat-copy.reveal.lit {
  animation: revealmask var(--reveal) var(--ease) forwards,
             envfield 72s linear infinite;
}

.h-section.reveal.done, .lede.reveal.done, .label.reveal.done, .mat-copy.reveal.done {
  animation: envfield 72s linear infinite;
}

.h-section.rise.lit, .lede.rise.lit, .label.rise.lit, .mat-copy.rise.lit {
  animation: rise .6s var(--ease) forwards,
             envfield 72s linear infinite;
}

/* ── 7 · REDUCED MOTION — completeness, not degradation ──────────────────
 * All animation off; every element in its final revealed state. The static
 * material must read complete (Material-Integrity requirement, §2).
 */
@media (prefers-reduced-motion: reduce) {
  .substrate > i,
  .gi-line,
  .gi-signature .gi-hi,
  .gi-sem,
  .gi-seal > i,
  .gi-seal > i::before,
  .gi-rule i, .gi-rule b,
  .gi-rule i::before, .gi-rule b::before,
  .engraved.glint::after,
  .sheen::after,
  .reveal, .reveal.lit,
  .rise, .rise.lit,
  .gi-path-item,
  .gi-path-dot,
  .presence {
    animation: none !important;
  }

  /* The reading light is a transition, so silence is written in its own terms.
     The carriers keep the resting ink their markup already declares — nothing
     is hidden, nothing moves. */
  .gi-attn { transition: none !important; }

  /* With the reading accent stopped, every title stands at its own resting
     ink — the value its inline style already carries, which is the whole
     design, not a reduced one. */

  .reveal, .reveal.lit {
    -webkit-mask-image: none !important;
            mask-image: none !important;
    opacity: 1 !important;
  }

  .rise, .rise.lit { opacity: 1 !important; transform: none !important; }

  /* The front stops where it reads as a designed highlight, not mid-pass. */
  .bg-sweep { background-position: 1vw 0; opacity: .46; }
  .bg-glow  { opacity: .85; }
  .bg-grid  { opacity: .9; }
  .engraved.glint::after { opacity: 0; }
  .sheen.ambient::after  { opacity: .35; background-position: 42% 0; }
  /* Every part of the mark keeps both layers and rests mid-frame: full
     material, full legibility, no motion. The band sits on the composition
     rather than off it, so the still state is the lit state, not a dark one.
     42% of the percent form is calc(50% + 16vw) of the element form —
     the same identity X = 100 − 2P that defines `envfield`. */
  .mat-tier.mat-rec, .mat-tier.mat-rec .btn-gold { animation: none !important; }
  .gi-seal > i::before, .gi-rule i::before, .gi-rule b::before {
    animation: none !important; background-position: 1vw 0; }
  .gi-line, .gi-signature .gi-hi, .gi-sem, .gi-val, .gi-quote {
    animation: none !important;
    background-position: calc(50% + 16vw - var(--dxc, 0px)) 0, 50% 50%; }
  /* REDUCED MOTION IS COMPLETENESS, NOT OMISSION (§6). The board's metal
     rests in the LIT state like every other material of the scene: one
     background layer, so one position — a carrier left out here would freeze
     dark while the row beside it rests lit. */
  .gi-prod::after {
    animation: none !important;
    background-position: calc(50% + 16vw - var(--dxc, 0px)) 0; }
  .h-section, .engraved, .lede, .label, .mat-copy, .powered,
  .langs a, .navlinks a, .foot-langs a, .login-langs a, nav a,
  .brand b, .brand small, .foot-bar .copy, .ins-more,
  .btn-gold, .nav-cta, .tl-num {
    animation: none !important;
    background-position: calc(50% + 16vw - var(--dxc, 0px)) 0, 50% 50%; }
}

/* Mobile: same physics; band α drops slightly on OLED; the cell never scales. */
@media (max-width: 720px) {
  .bg-sweep { opacity: .46; }
}


/* ═══ THE LANGUAGE CONTROL — INHERITED, NOT REDESIGNED ═════════════════════
   Founder GO 2026-09-04: the control accepted on pavelfjodorov.com and carried
   to mediaholding.tech arrives here under the Founder's named functional
   reason — one accepted language control across Media Holding · Intelligence
   Ecosystem replaces this surface's three-link form.

   The component file is delivered byte-identically (app/static/js/); this is
   the HOST half it expects: the component ships a LIGHT palette and overrides
   nothing on its own. The lesson is carried forward rather than re-learned —
   a delivered component with no host block renders a pale box on a dark page.

       ASSET DELIVERED ≠ ASSET STYLED

   THE PAGE'S REGISTERS STOP AT THE COMPONENT'S EDGE: the panel keeps the
   engineering light it was accepted with, on a gold-register surface, because
   it is one control shared by the whole ecosystem — which is the Founder's
   stated reason for it being here at all. Gold is not absent: it marks the one
   thing it always marks, the language the reader is in. */

.gi-lang.mhls { position: relative; display: inline-flex; align-items: center; }

/* THE MENU THE READER JUST OPENED MUST BE THE THING THEY CAN USE.
   Found by pointing at it, not by reading the stylesheet: on a phone the
   sheet opens along the bottom edge — exactly where the consent banner
   stands at z-index 9999 — and elementFromPoint at the middle of the open
   menu returned the BANNER's button. The menu carried z-index 80 and was
   unreachable behind a surface the reader had not opened.

   This collision could not exist before: the control was three inline links,
   with no overlay to collide. It arrives with the sheet, so it is fixed with
   the sheet. The banner is not suppressed — it is unchanged the moment the
   menu closes, and closing is one tap. */
.mhls-menu { z-index: 10000 !important; }

/* the closed trigger, transcribed from the accepted implementation */
.mhls-trigger {
  display: inline-flex; align-items: center; gap: 7px;
  background: none; border: none; cursor: pointer; padding: 6px 4px; margin: 0;
  font-family: var(--font); font-size: 0.72rem; font-weight: 400;
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted);
  line-height: 1; transition: color .3s; min-height: 32px;
}
.mhls-trigger:hover { color: var(--text); }
.mhls-trigger:focus-visible { outline: 2px solid var(--blue); outline-offset: 3px; }
.mhls-globe { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 1.4; flex: none; }
.mhls-caret { width: 8px; height: 8px; stroke: currentColor; fill: none; stroke-width: 1.6; flex: none; opacity: .7; }

/* THE FLOOR RETIRES ONLY ONCE ITS REPLACEMENT IS ALIVE. The three baked links
   are this surface's no-script control and stay in the document. They are
   withdrawn by an attribute the mount script writes AFTER the component has
   mounted — never by the stylesheet alone, which cannot know whether the
   script arrived. */
.gi-lang[data-mhls-live] > a { display: none; }

/* the navy palette the component asks its host for */
.gi-lang.mhls, .mhls-menu.mhls-menu {
  --mhls-ground: #0A0D12;
  --mhls-panel: #121722;
  --mhls-panel-top: linear-gradient(180deg, rgba(216,230,248,.04), transparent 62%);
  --mhls-radius: 3px;
  --mhls-rim: inset 0 1px 0 rgba(216,230,248,.14);
  --mhls-cast: 0 14px 38px -26px rgba(0,0,0,.5);
  --mhls-ink: #E8ECF2;
  --mhls-ink-2: #C9CFD6;
  --mhls-muted: #8B97A8;
  --mhls-line: #222B39;
  --mhls-hair: rgba(232,236,242,0.08);
  --mhls-accent: #57A8FF;
}

/* the panel's text is flat ink on the panel: this surface's carrier lists and
   its travelling light stop at the component's edge. */
.mhls-menu p,
.mhls-menu .mhls-total,
.mhls-menu .mhls-native,
.mhls-menu .mhls-eng {
  background-image: none;
  -webkit-text-fill-color: currentColor;
  animation: none;
}

/* ── THE ACCEPTED OPEN STATE ───────────────────────────────────────────────
   The column is fully transparent — the page shows through it — and its rules
   are neon that one highlight travels along, in the direction the page is
   read, 18s, above the environment's 17s floor. Direction is carried by
   translateX, never by a percentage background-position: with a tile wider
   than its box a RISING percentage walks the light LEFT.
       A RISING NUMBER ≠ MOVEMENT TO THE RIGHT */
.mhls-menu {
  background-color: transparent !important; background-image: none !important;
  border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
  right: auto !important; inset-inline-end: 0 !important;
  --neon: 46,107,255; --neon-hi: 87,168,255; --rail: 18s;
}
.mhls-head { border-bottom: 0 !important; padding-left: 0 !important; padding-right: 0 !important; }
.mhls-list { padding-left: 0 !important; padding-right: 0 !important; }
.mhls-opt { padding-left: 0 !important; padding-right: 0 !important; border-radius: 0 !important; }
.mhls-opt:hover { background: transparent !important; }

.mhls-menu { border-top: 1px solid rgba(var(--neon),.5) !important; box-shadow: 0 -1px 7px rgba(var(--neon),.20) !important; }
.mhls-opt { position: relative; border-bottom: 1px solid rgba(var(--neon),.45) !important; }
.mhls-opt:last-child { border-bottom-color: rgba(var(--neon),.22) !important; }

/* ── THE RAILS ARRIVE; THE TRAVELLING GLINT DOES NOT, AND THE REASON IS
   RECORDED IN TWO PLACES AT ONCE ─────────────────────────────────────────
   Gold's own ratified canon (ADR-014 §2, and the gate that proves it in both
   directions) permits exactly ONE perpetual light per page and no new
   `animation … infinite`. The accepted control carries a highlight that
   travels its rules on a second, perpetual loop — lawful on the surface it was
   accepted on, and a second permanent light here.

   It is not needed here, and that is the accepted implementation's OWN
   reasoning, quoted from its own comment: "There is no second competing
   animation: the surface's own beam already crosses this area, because a
   transparent column does not stop it." Gold has that beam — `envlight`, the
   one permanent light this canon names — and this column is transparent, so
   Gold's light passes through it exactly as the accepted control expects.

   So the material, the composition, the rails, the colour ladder and every
   state arrive unchanged; only the second loop is left behind, because this
   surface already owns the light it was standing in for.

       INHERIT THE LIGHT, NOT A SECOND SOURCE OF IT. */


/* ── THE LADDER, MEASURED RATHER THAN CHOSEN ───────────────────────────────
   The eye reads ratios, not hex values: a step below the threshold of
   discrimination is no change at all. Each level states its measured contrast
   against the ground behind it, and adjacent levels part by a named factor.
       name 16.20:1 · label & close 6.02 · gloss and code 3.74
   AND NO GLOW ON ANY TYPE — light belongs to the room, not the letters. On
   14px type a halo thickens the strokes and floods the counters. */
.mhls-opt .mhls-native { color: #F2F7FF !important; }
.mhls-opt[aria-selected="true"] .mhls-native { color: #D4AF37 !important; }

.mhls-title {
  font-weight: 500 !important; font-size: 0.72rem !important;
  letter-spacing: 0.17em !important; color: #8C99AB !important;
  padding-inline-start: 24px !important;
}
.mhls-close { color: #8C99AB !important; }
.mhls-close:hover, .mhls-close:focus-visible { color: #C9CFD6 !important; }
.mhls-eng { font-weight: 400 !important; font-size: 0.80em !important; color: #68758B !important; }
.mhls-codebadge { font-weight: 500 !important; font-size: 0.70em !important; letter-spacing: 0.10em !important; color: #68758B !important; }
.mhls-opt { padding-inline-end: 22px !important; }

/* ── A CONTROL OFFERS THE AFFORDANCE ITS CORPUS CAN HONOUR ─────────────────
   NEW KNOWLEDGE, and it is general rather than Gold's. The accepted control
   was proven on a surface serving 184 languages, where search exists to reach
   what the list cannot show — the component says so in its own words. This
   surface serves three, and the component's short list holds five, so the
   whole corpus is ALWAYS visible in the list. There, search reaches nothing
   the reader cannot already see, and the count line names a world of three.
   Both become chrome that promises reach the surface does not have.

   So the affordance is withdrawn exactly when it has no function, and the
   condition is computed, not hardcoded: the host writes data-whole-corpus
   only while the served set fits the list. Add a fourth language beyond the
   shortlist and search returns on its own, with no rule to remember.

       AN AFFORDANCE WITH NOTHING TO REACH IS NOT A FEATURE, IT IS A CLAIM. */
.mhls-menu[data-whole-corpus] .mhls-search-wrap,
.mhls-menu[data-whole-corpus] .mhls-total { display: none !important; }


@media (max-width: 640px) {
  .mhls-menu {
    background-color: var(--mhls-panel) !important;
    box-shadow: 0 -18px 44px -26px rgba(0, 0, 0, .85) !important;
    border-top: 1px solid rgba(var(--neon), .5) !important;
  }
}
