/* ===========================================================================
   Chapter field · 01 Frames, 02 Measurement, 03 Claims-makers, 04 Money
   and 05 Summary, which is every numbered chapter and nothing else
   ---------------------------------------------------------------------------
   The chapter's color becomes a continuous gradient field behind the page,
   with a focal point that trails the cursor. Developed and measured in
   previews/chapter-field/, which remains the place to iterate on it.

   HOW THIS FILE IS ORGANISED. A shared core, then one block per chapter. The
   script puts two hooks on <html>: `.mhc-field-on` says a field is running, and
   `[data-field-chapter]` says whose. Shared rules key off the class; anything
   that belongs to one chapter keys off the attribute. Nothing here is global by
   accident.

   ONE FIELD MEANS ONE KIND OF PAGE. Every room that runs a field is a numbered
   station in the reading sequence, and since 19 September that is the whole of
   the list: the lettered companions A About, B Methodology and C Sources open on
   the plain ground instead, and the closing block of this file is the argument
   for why. Nothing about the engine changed to make that true, which is the
   point of recording it here rather than in one of those pages.

   ALMOST ALL OF IT IS SUBTRACTION. The engine is chapter-agnostic - it reads
   --mhc-chapter-<token>-field and -ink and derives a whole color family from
   the pair - so extending it to a chapter is not a rebuild, it is finding every
   surface that paints the page's ground and asking it to stop. That audit is
   the per-chapter work, and each block below records the answer for its own
   chapter. Every opaque surface in 02 - 05 turned out to be the plain ground in
   both themes; the sole authored color band in the four, Claims-makers'
   #institutions in steel, is left painting on purpose and is noted there.

   PROGRESSIVE ENHANCEMENT. Every rule that changes a chapter's appearance is
   gated on html.mhc-field-on, which only the script adds. Script off, fetch
   refused, file://, shell errored - the chapter renders exactly as it ships.
   Nothing here is load-bearing for reading any chapter.
   =========================================================================== */

/* ===========================================================================
   CORE · every chapter with a field
   =========================================================================== */

/* -- the field ------------------------------------------------------------ */
html.mhc-field-on{background:var(--mhc-ground)}
/* Measurement and Claims-makers paint --mhc-surface-inverted on the root
   rather than --mhc-ground. The two are the same color in bright and in dark,
   so this changes nothing today; it is written out because they diverge under
   `legacy`, and a root that paints the wrong ground is the one mistake this
   file cannot recover from - the field composites onto it. */
html[data-field-chapter='measurement'].mhc-field-on,
html[data-field-chapter='claims-makers'].mhc-field-on{background:var(--mhc-surface-inverted)}
/* The body must not paint, or there is nothing for the field to be behind. */
html.mhc-field-on body{background:transparent}
/* The shared woven cover paints --mhc-ground and fills the viewport, so it is
   the one surface every chapter that uses it has to give up. Frames does not
   use it and gives up its own below. */
html.mhc-field-on .woven-chapter-hero{background:transparent}
/* The closing region is shared markup rather than one chapter's, so it is
   settled here with the woven cover rather than in a chapter block, and the two
   halves of it are settled in OPPOSITE directions.

   The footer is subtracted. It was --paper-deep, a plate laid over the page at
   the one point where the chapter has finished speaking, and the field should
   be the last thing under the reader rather than the first thing covered up.

   The crisis notice keeps a surface, because a reader who needs the number has
   to find it without reading for it, and an object held clear of the ground is
   how a page says that one passage is not part of the argument around it. That
   surface is declared with the pager, and it is the single standing exception
   to the rule that every plate in this file is either translucent or gone: it
   is the archive's accent at full opacity, so it does cut a hole in the
   chapter exactly where the chapter ends, which for this one object is the
   effect that was wanted. Nothing about it is restated here. */
html.mhc-field-on :is(footer,.site-footer,.page-footer,.about-credit){background:transparent}
html.mhc-field-on .support{background:transparent}

/* -- the floating material ------------------------------------------------- */
/* ONE MATERIAL, NAMED ONCE, for every control that floats over a chapter's own
   scrolling content: 01's list dock already ran at these numbers and four more
   surfaces across three chapters want the same thing, so the number lives here
   and the chapters point at it.

   The distinction it stands for is the one this whole file turns on. A plate
   sits in the page and holds reading, and a plate on a field is a hole cut in
   the room; those are subtracted. A floating control has the chapter's OWN
   content passing behind it, not the diffused field, so it has something real
   to transmit and it keeps a surface. What it does not keep is a saturate: on a
   backdrop that is already a smooth colored gradient, pushing the saturation
   of what shows through does not read as glass, it reads as a stain. */
html.mhc-field-on{
  --mhc-field-float:rgba(var(--mhc-float-rgb), .76);
  --mhc-field-float-blur:blur(26px);
}

/* -- notation ------------------------------------------------------------- */
/* A chapter's own accent ink is a MID-TONE, and a mid-tone is the one color a
   field made from that same chapter's family cannot carry. It is not a matter
   of how strong the field is: #4b5680 and the deep end of Frames' field are
   very nearly the same color, and so are #725312 and Money's, #576451 and
   Measurement's. Measured against the darkest pixel each family can produce,
   every chapter's cover notation lands between 2.3:1 and 2.8:1 at the strength
   the chapters want, and halving the strength only reaches 4.0:1 - by which
   point there is no gradient left to look at.

   So the notation is deepened, keeping the chapter's hue, which clears 4.5:1
   with headroom while still reading as the chapter's color rather than as body
   text.

   TEXT ONLY. These tokens are also used for borders, rules and glyph fills all
   over their chapters, and those are left exactly as they are. Body ink was
   never at risk anywhere - it measures 7:1 to 8.8:1 across all five chapters -
   and is untouched.

   DEEPENING TOWARD INK IS A BLEACH, and that is the whole of the 2026-09-15
   revision. A mix in OKLab travels in a straight line from the chapter's ink to
   a near-neutral --mhc-ink, so it takes lightness and CHROMA down together at
   the same rate: at 42% the notation arrives carrying between a quarter and a
   half of its token's chroma. Measured, the chapters that lose most are exactly
   the chapters whose tokens had least to give. Steel deepens from C .027 to
   C .007 in dark, which is a gray; sage from C .034 to C .017 in bright;
   Frames' periwinkle from C .070 to C .027. So the two quietest chapters in the
   archive were being asked to hold their identity in small type with almost no
   color left in the type, and they were reaching the 4.5 floor and no further
   while they did it - which is what a reader sees and calls muddy.

   THE TRADE ONLY EXISTED BECAUSE THE OPERATION WAS A MIX. Contrast is a
   question about lightness and identity is a question about hue and chroma, and
   a deepening that moves the lightness ALONE, at the token's own hue with its
   own chroma held, answers them separately instead of spending one on the
   other. Every chapter gains on both counts at once: against the darkest pixel
   its own family can draw, the notation goes from 4.13 - 5.71:1 to 4.96 - 5.79:1
   while carrying between 1.5 and 4 times the chroma it carried before.

   THE MIX STAYS AS THE FALLBACK, which is why it is still written above and why
   the replacement is inside @supports. Relative color syntax is what makes a
   constant-hue deepening expressible in CSS at all, and a browser without it
   keeps the chapter exactly as it shipped before this revision rather than
   losing the notation to an unparsed value.

   To revert a chapter: delete its --mhc-field-notation. Its small labels then
   measure around 2.5:1, which is the trade being made here. */
html.mhc-field-on{
  --mhc-field-deepen:42%;
  /* Two tokens and a chooser, for the reason the strength block below gives at
     length: a chapter that wants its own value and a theme that wants its own
     value otherwise fight on specificity, and the theme wins in both
     directions. A chapter states a number; it never touches the selector that
     picks between them. */
  --mhc-field-notation-bright:.26;
  --mhc-field-notation-dark:.93;
  --mhc-field-notation-l:var(--mhc-field-notation-bright);
  /* The floor under the chroma, not a lift over it. Sage and steel sit at
     C .027, near enough to neutral that holding them exactly would leave a pale
     dark-theme tint no reader would call a color, so both are nudged to .032
     and the four saturated tokens keep their own. */
  --mhc-field-notation-c:.032;
}
@media (prefers-color-scheme: dark) {
  html.mhc-field-on:not([data-theme="light"]):not([data-theme="legacy"]):not([data-theme="dark"]){
    --mhc-field-deepen:34%;
    --mhc-field-notation-l:var(--mhc-field-notation-dark);
  }
}
html.mhc-field-on[data-theme="dark"]{
  --mhc-field-deepen:34%;
  --mhc-field-notation-l:var(--mhc-field-notation-dark);
}

html[data-field-chapter='frames']{--mhc-field-notation:color-mix(in oklab, var(--mhc-chapter-frames-ink) var(--mhc-field-deepen), var(--mhc-ink))}
html[data-field-chapter='measurement']{--mhc-field-notation:color-mix(in oklab, var(--mhc-chapter-measurement-ink) var(--mhc-field-deepen), var(--mhc-ink))}
html[data-field-chapter='claims-makers']{--mhc-field-notation:color-mix(in oklab, var(--mhc-chapter-claims-ink) var(--mhc-field-deepen), var(--mhc-ink))}
html[data-field-chapter='money']{--mhc-field-notation:color-mix(in oklab, var(--mhc-chapter-money-ink) var(--mhc-field-deepen), var(--mhc-ink))}
html[data-field-chapter='summary']{--mhc-field-notation:color-mix(in oklab, var(--mhc-chapter-summary-ink) var(--mhc-field-deepen), var(--mhc-ink))}

/* THE SAME DEEPENING, AT CONSTANT HUE.

   One shape, repeated once per source color, because a custom property cannot
   take an argument and the source differs at every site: the chapter ink here,
   an era's own tint in Measurement, a role's ink in the constellation, a
   frame's ink in the matrix. Wherever it appears it reads the same way. Hold
   the hue the token already has, hold the chroma it already has unless it is
   quieter than the floor, and move the lightness to the one number the theme
   sets.

   Everything inside this block has a mix above it or beside it. Nothing here is
   load-bearing for reading any chapter. */
@supports (color: oklch(from white l c h)) {
  html[data-field-chapter='frames']{--mhc-field-notation:oklch(from var(--mhc-chapter-frames-ink) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h)}
  html[data-field-chapter='measurement']{--mhc-field-notation:oklch(from var(--mhc-chapter-measurement-ink) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h)}
  html[data-field-chapter='claims-makers']{--mhc-field-notation:oklch(from var(--mhc-chapter-claims-ink) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h)}
  html[data-field-chapter='money']{--mhc-field-notation:oklch(from var(--mhc-chapter-money-ink) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h)}
  html[data-field-chapter='summary']{--mhc-field-notation:oklch(from var(--mhc-chapter-summary-ink) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h)}
}

/* The cover's number and deck, which every chapter marks the same way whichever
   cover it uses - so one rule reaches all five rather than four near-copies.
   The deck is the binding line everywhere: display type at 78 to 144px only
   needs 3:1, but a deck sets at 21px and needs the full ratio.

   Set through --chapter-hero-ink rather than by coloring the two elements,
   because chapter-hero-type.css colors them `!important` and no selector wins
   that argument. It reads this token, the token is already per-hero, and it
   reaches nothing else: the title takes --mhc-on-paper. Retargeting the token
   the important rule reads is the fix; out-specifying it is not available and
   answering !important with !important would only move the fight. */
html.mhc-field-on [data-chapter-hero]{--chapter-hero-ink:var(--mhc-field-notation)}
/* EVERY COVER IN THE ARCHIVE IS MARKED THE SAME WAY: an ink title, and a number
   and a deck in the chapter's own color. Eight chapters, one rule, and this
   block is the part of it the five chapters with a field have to pay for.

   Until 2026-09-15 the five went all the way to plain --mhc-ink here while the
   three without a field - Timeline in its orange, Sources in its plum, About in
   its olive - kept their color, so more than half the archive opened on a
   black-and-white lockup and the rest did not. That reads as two systems, and
   it was never a decision about the covers: it was a contrast repair from the
   pass where the notation was still a bleach, taken when the cover lockup was
   measuring 4.50 - 4.55:1 and binding every ceiling in its chapter.

   Two things have changed since, and between them they buy the color back. The
   notation moves lightness at constant hue rather than mixing toward neutral,
   and the cover's second copy of the field is clipped to its own box rather
   than veiling the lockup from above. What is left is the honest constraint:
   the lockup sits in the densest pool the chapter can draw, so it needs a
   deeper lightness than the reading room does, and it gets its own pair for
   that reason exactly as the Frames matrix heads get theirs.

   THE TWO THEMES ARE NOT SYMMETRIC HERE, and the asymmetry is the same one this
   file keeps meeting. On a dark ground the pool is dark, the lockup is light,
   and L .96 leaves a tint that plainly belongs to its chapter: a pale mint on
   Measurement, a pale blue on Claims-makers, a wheat on Money. On paper the
   pool is the chapter's color at full strength, so clearing 4.5:1 costs nearly
   all the lightness there is and what arrives is a near-black with a cast in
   it. That is as much color as a bright cover can hold over a diffusion field,
   and saying so is better than either pretending otherwise or going back to
   neutral. A chapter that wants its bright lockup to read as color has one
   lever left, and it is --mhc-field-hero rather than anything here.

   Measured against the darkest pixel each family can draw, at full hero
   strength: 4.59:1 on Frames' paper, which is the binding reading in the set,
   and 4.69 to 5.72 everywhere else. */
html.mhc-field-on{
  --mhc-field-cover-bright:.20;
  --mhc-field-cover-dark:.96;
  --mhc-field-cover-l:var(--mhc-field-cover-bright);
}
@media (prefers-color-scheme: dark) {
  html.mhc-field-on:not([data-theme="light"]):not([data-theme="legacy"]):not([data-theme="dark"]){--mhc-field-cover-l:var(--mhc-field-cover-dark)}
}
html.mhc-field-on[data-theme="dark"]{--mhc-field-cover-l:var(--mhc-field-cover-dark)}

/* The fallback is what shipped before this block, and it is not an
   approximation: a mix that reaches L .20 on paper is 93% --mhc-ink, and one
   that reaches L .96 in dark is --mhc-ink exactly. Without relative color the
   cover is neutral, which is the behavior these five chapters had and passed
   with. */
html[data-field-chapter='measurement'] [data-chapter-hero],
html[data-field-chapter='claims-makers'] [data-chapter-hero],
html[data-field-chapter='money'] [data-chapter-hero],
html[data-field-chapter='summary'] [data-chapter-hero]{--chapter-hero-ink:var(--mhc-ink)}
@supports (color: oklch(from white l c h)) {
  html[data-field-chapter='measurement'] [data-chapter-hero]{--chapter-hero-ink:oklch(from var(--mhc-chapter-measurement-ink) var(--mhc-field-cover-l) max(c, var(--mhc-field-notation-c)) h)}
  html[data-field-chapter='claims-makers'] [data-chapter-hero]{--chapter-hero-ink:oklch(from var(--mhc-chapter-claims-ink) var(--mhc-field-cover-l) max(c, var(--mhc-field-notation-c)) h)}
  html[data-field-chapter='money'] [data-chapter-hero]{--chapter-hero-ink:oklch(from var(--mhc-chapter-money-ink) var(--mhc-field-cover-l) max(c, var(--mhc-field-notation-c)) h)}
  html[data-field-chapter='summary'] [data-chapter-hero]{--chapter-hero-ink:oklch(from var(--mhc-chapter-summary-ink) var(--mhc-field-cover-l) max(c, var(--mhc-field-notation-c)) h)}
}
/* The emphasis inside each opening quotation: 53px at 650, which needs 3:1 and
   was the last thing under it in every chapter that has one - Frames included,
   at 2.95:1, which is where this file's own numbers found a miss in the chapter
   they were written for. */
html.mhc-field-on :is(.frame-opening-quote, .measurement-opening-quote, .claims-opening-quote) blockquote strong,
html.mhc-field-on :is(.frame-quote-glyph, .measurement-quote-glyph, .claims-quote-glyph).is-emphasis{color:var(--mhc-field-notation)}

/* An element that has to keep covering, because the chapter's opening
   quotation is still underneath it. It gets its own copy of the field to cover
   with - see the `cover` note in chapter-field.js - and the canvas inside it
   only lands in the right layer if the element keeps its stacking context.

   AND THE CLIP IS WHAT KEEPS THAT COPY INSIDE ITS OWN BOX. Without it this rule
   is a veil over the whole chapter, and it was: the copy is
   `position:fixed; inset:0`, so it fills the VIEWPORT, while `z-index:1` puts
   this element and everything in it - the negative-z canvas included - above
   every layer painted before it. The two together mean a second full-screen
   render of the field sitting on top of the cover lockup and the opening
   quotation, whatever part of the page the reader is actually on.

   Measured on paper, with the type computing to plain --mhc-ink the whole time:
   Claims-makers' cover title read 2.62:1, its deck 2.88:1 and its number
   2.21:1, and Measurement's read 3.51, 3.12 and 3.11. Clipped, the same three
   read 10.79, 11.18 and 10.06 in Claims-makers and 13.19, 11.41 and 13.16 in
   Measurement. Only these two chapters have a `cover`, which is exactly why
   only these two looked washed while Frames, Money and the Summary did not.

   THE INSTRUMENTS COULD NOT SEE IT and it is worth saying why, because the
   shape recurs. Both audits score a computed color against a modelled or
   photographed GROUND, and a veil is neither: the color stays --mhc-ink, and
   the ground under the glyph is measured before the veil goes on top. A layer
   that paints OVER type is invisible to any instrument that reasons about what
   is underneath it. Reading the painted glyph itself is what found it.

   `clip-path` clips the fixed descendant without becoming its containing block
   - verified: the canvas stays 1440x900 at the viewport origin, so the copy
   still lines up with the page's own field and the seam does not show. */
html.mhc-field-on .mhc-field-cover{background:transparent;position:relative;z-index:1;clip-path:inset(0)}

html.mhc-field-on #sec-frames.plate,
html.mhc-field-on .chapter-reading #sec-frames.plate{background:transparent}
/* The hero paints --mhc-surface-plate, which in both themes is the ground. It
   is the one full-viewport opaque surface between the field and the reader. */
html.mhc-field-on body.chapter-reading[data-chapter='frames'] #sec-frames .sec-head[data-chapter-hero]{background:transparent}

.mhc-chapter-field,.mhc-chapter-field-grain{
  position:fixed;z-index:-1;inset:0;display:block;width:100%;height:100%;pointer-events:none;
}
/* Large smooth gradients on a near-white ground band across five or six 8-bit
   steps, and the archive has met this before on the cover's vignette. A fine
   grain costs one tiled 64px tile and puts the quantisation below the step. */
.mhc-chapter-field-grain{
  opacity:var(--mhc-field-grain-alpha, .62);mix-blend-mode:var(--mhc-field-grain-blend, multiply);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.11'/%3E%3C/svg%3E");
}
/* Grain multiplies under a bright ground and screens over a dark one, and like
   the strength it is chosen by what the reader is actually looking at rather
   than by whether they have made a choice at all. */
:root{--mhc-field-grain-blend:multiply;--mhc-field-grain-alpha:.62}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]):not([data-theme="legacy"]):not([data-theme="dark"]){--mhc-field-grain-blend:screen;--mhc-field-grain-alpha:.46}
}
:root[data-theme="dark"]{--mhc-field-grain-blend:screen;--mhc-field-grain-alpha:.46}

/* The field's alpha, and a provable ceiling rather than a sampled one.

   Every pixel is a normalized blend of the anchor colors, so the composite is
   a convex combination: nothing the field can show lies outside the hull of the
   family. The worst pixel it can put under text is therefore just the darkest
   color that family can generate, at full alpha, over the ground, times the
   grain's own blend. That is a closed form, and it is what every number in this
   file was computed from - tools/field-ceilings.mjs prints the table from the
   families the running engines report, so a change to the arrangement or to the
   chroma lift is re-answered rather than re-sampled.

   Note how much higher these can go than the stacked version this replaces
   could - .44 flat against an effective .30 at the cover - and that is the
   point: uniform coverage is both what makes it read as a field and what makes
   it safe. There is no configuration of the cursor or the clock that produces a
   darker pixel than the number a chapter names.

   A note on measuring any of this, because the obvious way is wrong. Sampling
   the live canvas does not work: rAF is suspended or throttled to 1fps whenever
   the page is not the visible pane, so a probe that reads the canvas on a timer
   re-reads ONE frozen frame and reports whatever single composition happened to
   be on screen. That is how a cover strength that actually failed at 4.67:1
   twice looked like it passed at 6.43:1. Prefer the closed form to sampling. */
/* WHAT IS ACTUALLY SET, and what the room was measured to be.

   `node tools/field-ceilings.mjs http://localhost:8247` prints this. The
   ceiling column is the largest alpha at which EVERY run of text in the chapter
   still clears its WCAG target against the worst pixel that chapter's family can
   produce - not against a sampled frame, against the hull.

   Five chapters now set five pairs, because all five diffuse and a diffusion
   field's number means something different from a wash's: it is the alpha at the
   DENSEST pool rather than a level held across the plane, and the ground is what
   shows everywhere else. A wash at .40 and a diffusion at .84 put a very similar
   amount of color in a room; what the second one also has is somewhere for the
   light to come from.

   Money is the tight one and it is worth knowing why: its display type - the
   78px pull quote, the 48px figure, the 144px story year - is set in the
   chapter's own gold rather than in ink, and large type at 3:1 on a gold field
   is a closer thing than small type at 4.5:1 on any of them. It runs the lowest
   pair in the set for that reason, and it is the chapter to re-measure first
   after any change to the family.

   A chapter overrides --mhc-field-bright and --mhc-field-dark on its own
   html[data-field-chapter='...'] and touches nothing else.

   Two structural notes, both learned from the version this replaces.

   Bright and dark are separate TOKENS rather than separate rules for the
   strength, because per-chapter overrides and theme overrides otherwise fight
   on specificity: `:root[data-theme="dark"]` (0,2,0) beat the reduced
   transparency block's `:root` (0,1,0), so a dark reader who had asked for less
   transparency got the full value. A chapter now sets two numbers and never
   touches the selector that chooses between them.

   And the choice is made the way theme.css makes it. `data-theme` is ABSENT
   whenever the reader is following the OS, which is the default, so keying
   dark on the attribute alone left every system-dark reader on the bright
   ceiling. The engine has the same fix on its side: it reads the root's
   computed background rather than the theme's name. */
:root{
  --mhc-field-bright:.40;
  --mhc-field-dark:.35;
  --mhc-field-strength:var(--mhc-field-bright);
  /* Reduced transparency scales whatever the chapter asked for, instead of
     replacing it with one number that a later rule can outrank. */
  --mhc-field-scale:1;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]):not([data-theme="legacy"]):not([data-theme="dark"]){--mhc-field-strength:var(--mhc-field-dark)}
}
:root[data-theme="dark"]{--mhc-field-strength:var(--mhc-field-dark)}

@media(prefers-reduced-transparency:reduce){
  :root{--mhc-field-scale:.6}
  .mhc-chapter-field-grain{display:none}
}
@media print{.mhc-chapter-field,.mhc-chapter-field-grain{display:none!important}}

/* ===========================================================================
   01 FRAMES
   ---------------------------------------------------------------------------
   Grounds that stop painting: the root, the body, #sec-frames.plate and the
   hero. Everything else here is the chapter's own integration - the lockup, the
   edge light, and the reading surfaces - and all of it is scoped to
   #sec-frames.
   =========================================================================== */

/* Frames runs a RAMP, and a ramp's numbers are not a wash's. Alpha here is the
   value at the FULL-COLOR END of the gradient, not a level held across the
   plane: the envelope carries it down to zero at the other end, so one side of
   the background is the ground itself and nothing is being read through .96 of
   anything for long. The reading room drops much further than the other
   chapters' .80, because below the cover the field's job is to be a room rather
   than a picture. */
html[data-field-chapter='frames']{
  --mhc-field-bright:.80;
  --mhc-field-dark:1;
  --mhc-field-hero:1;
  /* The reading room used to run at .42 and it was the first thing anyone said
     about this chapter: you could barely see the gradient below the cover. It
     was set by analogy with the wash chapters, where the cover is the room that
     can carry color and the page under it cannot, and on a ramp that analogy is
     simply wrong. What the cover carries is the LOCKUP - a 12px number and a
     21px deck sitting in the middle of the strongest part of the gradient - and
     what the reading room carries is body ink on its own surfaces, which
     measures 5.4:1 here against the cover's 4.5. The constrained room is the
     cover. So the two now run within a few points of each other, and the chapter
     reads as one continuous piece of light rather than a colored poster on top
     of a white page. */
  --mhc-field-reading:.88;
  /* The one chapter that states its own notation lightness, and it is the
     chapter's hue that asks for it rather than its taste. Blue is a DARK hue -
     pure sRGB blue has a relative luminance of .072 - so the darkest pixel this
     family can draw is deeper than any of the other four, and a notation set at
     the shared .26 measures 4.68:1 against it where sage measures 5.53 and gold
     6.08. At .24 it reaches 4.96, and it costs nothing in identity, because
     periwinkle at C .070 is no less blue for being deeper. Dark needs no
     exception: the same hue that has nowhere light to go has plenty of room in
     the other direction, and .93 measures 5.74 there. */
  --mhc-field-notation-bright:.24;
}
/* ON THE COVER, THE NOTATION GOES ALL THE WAY TO INK.

   Everywhere else the chapter's small type is its own ink deepened toward
   --mhc-ink, which keeps the hue and clears its target. On the cover of a
   chapter that ramps it does not clear anything: at full strength the field IS
   the chapter's color, and a deepened chapter ink on a saturated chapter field
   is one color on itself. Measured, the 12px number and the 21px deck came in
   at 3.35:1 on paper and 2.81:1 in dark against a 4.5 target - the two lowest
   readings anywhere in this chapter, and both of them invisible to the audit
   until its parser learned to resolve oklab().

   So the cover's notation stops trying to carry color, because the room behind
   it already is. This is the chapter's own argument, written in its own comment
   before the field ever ramped: the field is carrying the chapter's color now,
   so the notation does not have to. The reading room keeps the deepened mix -
   it runs at .42 and measures 6.6:1 there. */
html[data-field-chapter='frames'] [data-chapter-hero='frames']{--field-notation:var(--mhc-ink)}
@supports (color: oklch(from white l c h)) {
  html[data-field-chapter='frames'] [data-chapter-hero='frames']{--field-notation:oklch(from var(--mhc-chapter-frames-ink) var(--mhc-field-cover-l) max(c, var(--mhc-field-notation-c)) h)}
}

/* -- the hero lockup ------------------------------------------------------ */
/* The cover had a pane, and the pane is gone. A chapter whose whole subject is
   what a frame does to what is inside it should not open by putting its own
   title in a box, and inside an aperture already drawn as a ring the box was
   the second frame in a composition that only wanted one.

   Under the old stacked renderer that cost a great deal. One ink has to clear
   4.5:1 against every pixel the cover can put under it, the binding line being
   the deck rather than the title - 136px display type only needs 3:1, but the
   deck sets at 18-22px regular and needs the full ratio - and where soft forms
   piled up the field went deep enough that the cover had to be cut from 1.5 to
   .66, and dark to .48, to clear it. That was a real loss of drama at the
   opening and it was worth saying so.

   The blended field gives it back. Coverage is uniform, so there are no deep
   pockets to find: the worst pixel is a property of the family rather than of
   the composition, it is a closed form (see the strength block above), and the
   whole cover/reading split stops being a contrast dial. The cover now takes
   the field at full strength and the chapter under it at .80, which is the
   difference between two rooms rather than the difference between a number that
   passes and one that does not.

   A note on measuring any of this, because the obvious way is wrong. Sampling
   the live canvas does not work: rAF is suspended or throttled to 1fps whenever
   the preview is not the visible pane, so a probe that reads the canvas on a
   timer re-reads ONE frozen frame and reports whatever single composition
   happened to be on screen. That is how a cover strength that actually failed
   at 4.67:1 twice looked like it passed at 6.43:1. Check `running` and the
   frame counter in stats() before trusting any live read, and prefer the closed
   form to sampling at all. */
[data-chapter-hero="frames"]{
  --field-glass-ground:rgba(var(--mhc-float-rgb), .56);
  --field-glass-tint:12%;
  --field-glass-edge:34%;
  --field-glass-blur:20px;
  /* Chapter ink is a mid-tone and collides with the field; deepened toward ink
     it keeps the hue and clears its target. The field is carrying the
     chapter's color now, so the notation does not have to. This was two
     hand-written mixes, 42% and 34%, keyed on [data-theme="dark"] - which is
     absent for the reader who never chose a theme. It is the shared token now,
     at the same two values, chosen the way theme.css chooses. */
  --field-notation:var(--mhc-field-notation);
}
:root[data-theme="dark"] [data-chapter-hero="frames"]{
  --field-glass-ground:rgba(var(--mhc-float-rgb), .50);
  --field-glass-tint:16%;
  --field-glass-edge:30%;
}

/* Nothing here paints. The width is kept because it is the measure the title
   and the deck were set to, not because it is a box. */
html.mhc-field-on #sec-frames .frame-hero-copy{
  box-sizing:border-box;
  width:min(100%, 640px);
  padding:0;border:0;border-radius:0;background:none;box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
html.mhc-field-on #sec-frames .frame-hero-description{
  width:min(100%, 32ch);margin:clamp(18px, 1.8vw, 26px) auto 0;
  padding:0;border:0;border-radius:0;background:none;
  backdrop-filter:none;-webkit-backdrop-filter:none;
}
html.mhc-field-on #sec-frames .frame-hero-number,
html.mhc-field-on #sec-frames .frame-hero-description{color:var(--field-notation)!important}

/* The continuation goes back to what the chapter ships: a bare 22px stroke
   with the ground-colored halo the chapter gave it, which is what separates
   it from whatever it is standing on. Wrapping it in a pill was only ever the
   pane's logic applied a second time. Its own color is the notation's. */
html.mhc-field-on body.chapter-reading[data-chapter='frames'] #sec-frames .sec-head[data-chapter-hero]>.frame-hero-continue{
  border:0;background:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
  color:var(--field-notation);
}

/* -- edge light ------------------------------------------------------------ */
/* The engine writes --mhc-field-tint and --mhc-field-lit on these two from the
   field's own equation evaluated at their center, so a body passing behind a
   plate lights that plate's edge in the color that is actually there. The
   fallbacks are the resting appearance: with the script absent nothing here
   changes, which is the whole contract. The hero pane was the third of these
   and is gone; the engine's GLASS list is the other half of this pair and must
   not register anything this block does not read. */
/* No `transition` here, deliberately. The shorthand is not additive: setting it
   on these elements replaced the transitions the chapter had already given
   them, and .frame-local-nav's was its own show/hide animation
   (opacity .2s, transform .34s, visibility 0s). The edge light is re-evaluated
   at 8Hz against color deltas far too small to step visibly, so it needs no
   easing of its own, and not asking for any is what leaves the chapter's
   motion exactly as it ships. */
html.mhc-field-on #sec-frames .frame-quote-viewport,
html.mhc-field-on #sec-frames .frame-local-nav{
  --field-edge:color-mix(in srgb,
    var(--mhc-field-tint, var(--mhc-chapter-frames-ink))
    calc(34% + var(--mhc-field-lit, 0) * 30%),
    transparent);
  border-color:var(--field-edge);
}

/* -- the reading surfaces ------------------------------------------------- */
/* The chapter shipped these at .82 - .84, which is a white plate wearing an
   alpha value. Relationships and the full argument list carry no plate at all
   and sit straight on the field, and that is the reading the chapter wants:
   the field is the ground of the room, not something glimpsed under plates.
   Framework and the configuration table now join them. What is left holding
   them apart is what already held them apart before the field existed - the
   rules, the column heads, the spacing - and the section headings return to
   sitting on the room rather than on a pane of their own.

   No plate is kept anywhere in the register now, the framework stage included.
   The only surface left in the chapter is the sticky dock further down, and it
   stays because it is a floating control that has the chapter's own scrolling
   content passing behind it, not the diffused field. */
html.mhc-field-on #sec-frames{
  --field-glass-read:transparent;
  --field-glass-stage:transparent;
}
html.mhc-field-on #sec-frames .frame-register-block,
html.mhc-field-on #sec-frames .frame-table-primer,
html.mhc-field-on #sec-frames .frame-framework-lens,
html.mhc-field-on #sec-frames .frame-instrument{background:var(--field-glass-read)}
/* A lift and a blur with nothing to lift or blur is a smear on the field, and
   a border around nothing is a ghost card, so the plate's whole apparatus
   leaves with its background rather than just the fill. */
html.mhc-field-on #sec-frames .frame-table-primer,
html.mhc-field-on #sec-frames .frame-instrument,
html.mhc-field-on #sec-frames .frame-framework-lens{
  border-color:transparent;box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
/* The stage kept a 9% wash of chapter color while everything around it went
   bare, which is the one thing a faint tint cannot survive: against the field
   it read as a large pale rectangle with a rule around it, still the shape of
   the plate that was supposed to be gone. The cards inside it are the most
   saturated objects in the chapter and separate themselves from anything, so
   the stage keeps its geometry - the sticky height and the clipping the card
   motion needs - and stops painting. */
html.mhc-field-on #sec-frames .frame-framework-stage{
  background:var(--field-glass-stage);border-color:transparent;box-shadow:none;
}

/* Taking the plates away moved the whole chapter onto the field. Note for
   whoever tunes this next: the configuration primer's eyebrow (10px at 600 in
   --mhc-chapter-frames-ink) measures about 2.6:1 against the field at reading
   strength, because #4b5680 and the field are very nearly the same color. It
   is left at the chapter's own value here rather than deepened, because
   recoloring the chapter's type was never part of the brief. Deepening it
   toward ink - the move the cover makes - clears it at 4.8:1 if that is
   wanted. */

/* READABILITY. The chapter sets its small notation in --mhc-chapter-frames-ink
   (#4b5680), and that color cannot survive this field at any strength worth
   having: against the darkest pixel the family can produce it measures 2.38:1
   at the alpha below, and it is still only 3.96:1 at half that - by which point
   there is no gradient left to look at. The constraint is not the field's
   strength, it is that #4b5680 and the deep end of the field are very nearly
   the same color.

   So the notation takes the move the cover already makes: deepened toward ink,
   keeping the chapter's hue, which clears 4.5:1 with headroom. TEXT ONLY -
   --mhc-chapter-frames-ink is also used for borders and glyph fills, and those
   are left alone. Body ink was never at risk (6.31:1) and is untouched.

   To revert: delete this block. The field then reads the same and the small
   labels measure 2.4:1, which is the trade being made here. */
/* One rule, not two. The dark variant here used to be written
   `:root[data-theme="dark"] html.mhc-field-on #sec-frames ...` - :root IS the
   html element, so that asked for an <html> inside an <html> and never matched
   anything in any theme. The shared token carries both values and is chosen by
   what the reader is looking at, so the deepening now actually happens in dark
   as well as bright. */
html.mhc-field-on #sec-frames .frame-table-primer-guide dt,
html.mhc-field-on #sec-frames .frame-era-spine-head b,
html.mhc-field-on #sec-frames .frame-relationship-label,
html.mhc-field-on #sec-frames .frame-framework-question{
  color:var(--mhc-field-notation);
}

/* The matrix column heads, which are the one run of type in this chapter set in
   a FRAME'S own ink rather than in the chapter's. Ten frames, ten hues, at 14px
   and weight 560, and measured against the worst ground they can sit on they
   run 3.32:1 to 4.86:1 on paper and 3.89:1 to 11.38:1 in dark, against a 4.5
   target. Six of the ten fail on paper and four fail in dark.

   THE SPREAD IS THE FINDING, more than any one reading. These are ten columns
   of one instrument, and a reader compares them; a set where the ochre of a
   preventable trajectory reads at a third of the strength of the olive beside
   it has an encoding that is doing two jobs, only one of which was authored.
   The frame inks are mid-tones chosen individually, so they carry ten different
   lightnesses, and lightness against a near-white bar is contrast.

   ONE LIGHTNESS FOR ALL TEN, therefore, with hue and chroma untouched: hue is
   the encoding here and it is the one channel that must not move, while
   lightness carries nothing a reader is asked to read. All ten then land within
   a third of a point of each other - 5.11:1 to 5.46:1 on paper, near 5.1:1 in
   dark - and the column that is hardest to read is no longer the column with
   the palest frame.

   THE NUMBERS ARE NOT THE NOTATION'S, and that is the point of stating them
   here. A notation lightness is calibrated against the deepest pool the field
   can put under type, because that is where a chapter's small type sits. These
   heads sit on .frame-matrix-head, which is rgba(float, .78) over a blur, so
   the worst ground they ever see is 78% of the float color and only a fifth of
   the field: #dbdaf4 on paper and #151618 in dark. Reading them at the pool's
   lightness would take all ten most of the way to black on a white bar, which
   costs the encoding the hue separation this rule exists to protect. The tint
   drawn around a pressed head is a surface rather than type and is left
   alone. */
html[data-field-chapter='frames']{
  --mhc-frame-column-bright:.46;
  --mhc-frame-column-dark:.64;
  --mhc-frame-column-l:var(--mhc-frame-column-bright);
}
@media (prefers-color-scheme: dark) {
  html[data-field-chapter='frames']:not([data-theme="light"]):not([data-theme="legacy"]):not([data-theme="dark"]){--mhc-frame-column-l:var(--mhc-frame-column-dark)}
}
html[data-field-chapter='frames'][data-theme="dark"]{--mhc-frame-column-l:var(--mhc-frame-column-dark)}

/* The fallback moves toward --mhc-ink, which is near-black on paper and
   near-white in dark, so one percentage deepens the bright set and lifts the
   dark one. It lands within a few hundredths of the lightness above without
   being able to name it. */
html.mhc-field-on #sec-frames .frame-column-head b,
html.mhc-field-on #sec-frames .frame-column-head[aria-pressed='true']{
  color:color-mix(in oklab, var(--fci, var(--mhc-chapter-frames-ink)) 78%, var(--mhc-ink));
}
@supports (color: oklch(from white l c h)) {
  html.mhc-field-on #sec-frames .frame-column-head b,
  html.mhc-field-on #sec-frames .frame-column-head[aria-pressed='true']{
    color:oklch(from var(--fci, var(--mhc-chapter-frames-ink)) var(--mhc-frame-column-l) max(c, var(--mhc-field-notation-c)) h);
  }
}

/* There is no floor share any more. The floor existed because soft forms
   stacked on a backdrop leave paper between them and something had to supply
   the coverage; a normalized blend covers the plane by construction, so the
   whole notion is gone and with it the hue bias that used to put violet in the
   corners.

   How much of the field the cover gets, and how much the chapter under it
   keeps. The chapter is a reading environment, not a second cover: the field
   stays the ground everywhere, and the difference between the two rooms is a
   multiplier rather than a switch. */
:root{--mhc-field-hero:1;--mhc-field-reading:.80}

/* The sticky list dock ships at rgba(float,.96) - denser than the chapter's own
   --frame-glass - which made it the last white slab in the document. It is a
   floating control, so it takes the archive's floating-control material: it
   transmits the room, and the blur is doing real work here because what passes
   behind it is the register's own content, not the diffused field.

   The dock's surface is THREE pieces, not two: a ::before top cap, the
   stretching fill, and a bottom cap. Restyling two of them left the cap at
   .96 opaque above a .76 saturated middle, and the step between them read as a
   wide blue band across the bar - blue because saturate(138%) was pushing the
   field's own color up in one of the two halves only. All three take the same
   material now, and the saturation goes: on a backdrop that is already a
   smooth colored gradient it does not read as glass, it reads as a stain. */
html.mhc-field-on #sec-frames .frame-list-dock-surface::before,
html.mhc-field-on #sec-frames .frame-list-dock-fill,
html.mhc-field-on #sec-frames .frame-list-dock-bottom{
  background:var(--mhc-field-float);
  -webkit-backdrop-filter:var(--mhc-field-float-blur);
  backdrop-filter:var(--mhc-field-float-blur);
}

/* The framework stage paints an opaque ground again once its guide reports
   is-stack-ready, at a specificity the general rule above cannot reach. It is
   the last opaque surface in the chapter and it only appears after the guide
   has wired itself, which is why a first-paint audit does not find it. */
html.mhc-field-on #sec-frames .frame-framework-guide.is-stack-ready .frame-framework-stage,
html.mhc-field-on #sec-frames .frame-framework-guide.is-stack-ready.is-motion-ready .frame-framework-stage{
  background:var(--field-glass-stage);border-color:transparent;box-shadow:none;
}


/* ===========================================================================
   02 MEASUREMENT · sage
   ---------------------------------------------------------------------------
   Grounds that stop painting: the root, the body, the woven cover, <main>, all
   four chapter sections, the evidence workbench and its list, and the end
   marker. Every one of them resolved to the plain page ground in both themes -
   the chapter's paper / sage / dark section names describe its ink and its
   rules, not three different grounds - so this block takes nothing away that
   was carrying the chapter's identity.

   <main> is the one that cannot simply stop. It carries
   `position:relative;z-index:1` and an opaque ground for a reason: the opening
   quotation is a sticky block inside a tall section with a -70svh bottom
   margin, and main rising over it is how the quotation leaves. Measured against
   the curl's own timing, the covered stretch begins at progress .73, where the
   first letters are still at full opacity - so dropping the cover would play
   the last quarter of the curl straight through the first section of the
   chapter. Instead main keeps covering and gets its own copy of the field to
   cover with, which is what `cover` means in the chapter table.
   =========================================================================== */
/* Measurement diffuses. The numbers are the chapter's own and the reasoning for
   them is in chapter-field.js's table; what belongs here is the pair and the
   reading level. Sage is a light, quiet green, so bright can spend almost the
   whole upper half of the lightness axis and dark can go most of the way to the
   ground - which is where this chapter's new range comes from, rather than from
   the strength. */
html[data-field-chapter='measurement']{
  --mhc-field-bright:.80;
  --mhc-field-dark:1;
  --mhc-field-hero:1;
  /* Frames' argument, applied to a chapter with far more small type in it: on a
     diffusion field the constrained room is the COVER, where a 12px number and a
     21px deck sit in the densest part of the field, not the reading page, where
     body ink sits on the chapter's own surfaces. The two run within a few points
     of each other so the chapter reads as one piece of light. This chapter keeps
     a little more back than Frames does because its era rows and workbench
     labels sit directly on the field. */
  --mhc-field-reading:.84;
}
html[data-field-chapter='measurement'] :is(
  .chapter-section,
  .evidence-workbench,
  .measure-list,
  .end-marker
){background:transparent}
/* The sticky viewport under the curling letters. With the ground gone the
   glyphs curl over the field itself, which is the whole reason the chapter has
   a field. */
html[data-field-chapter='measurement'] .is-quote-scroll .measurement-quote-viewport{background:transparent}
/* The era numerals set at 96px in the era's own tint, which needs 3:1 and does
   not reach it on the field - they land between 2.3:1 and 2.9:1. They are
   deepened rather than recolored, because the tint is how a reader tells one
   era from another and the chapter's own legacy theme already establishes this
   exact move on this exact selector. */
html[data-field-chapter='measurement'] .era-number{
  color:color-mix(in oklab, var(--era-tone) var(--mhc-field-deepen), var(--mhc-ink));
}
/* The era tile's year range and its open mark are the same tint at 11px and
   12px, where the full 4.5:1 is owed rather than the numeral's 3. Measured on
   the field the retired row preview came in at 3.60:1, and it went unnoticed
   through the first pass because the audit's parser could not resolve a
   color(srgb ...) value and skipped every element wearing one. Deepened on the
   same terms as the numeral, from the same tint, so a tile's three marks stay
   the same color as each other.

   `.era-row-preview` was the reel's; the reel was replaced by the tile field on
   17 September 2026 and the selector is kept because the frozen predecessor in
   legacy/ still carries it. */
html[data-field-chapter='measurement'] :is(.era-row-preview, .era-span, .era-open-mark){
  color:color-mix(in oklab, var(--era-tone) var(--mhc-field-deepen), var(--mhc-ink));
}
/* Both of them at constant hue, on the same argument the notation block makes,
   and with one gain that belongs to a tinted field rather than to a single
   color: a mix leaves each era at whatever chroma its own tint happened to
   survive with, so ten eras deepened by one percentage arrive at ten different
   contrasts. Measured as rendered, the previews ran 4.63:1 to 6.56:1 in bright
   across the ten. Setting the lightness instead of mixing toward it puts every
   era on one reading and lets the tint carry the difference, which is what the
   tint is for. */
@supports (color: oklch(from white l c h)) {
  html[data-field-chapter='measurement'] .era-number,
  html[data-field-chapter='measurement'] :is(.era-row-preview, .era-span, .era-open-mark){
    color:oklch(from var(--era-tone) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h);
  }
}
/* The dashboard opens as a full-screen dialog over the chapter. A modal is not
   a room - it is a thing placed in front of one - so it keeps its opaque
   ground, and this is written down so the audit above is not read as having
   missed it. */

/* -- the evidence desk and the two tinted panels --------------------------- */
/* The workbench's ground came off with .evidence-workbench above, but its
   furniture did not, and the furniture is what a reader actually sees: the
   evidence-family cards, the survey pills, the mode rail and the dashboard
   heading are all --desk-paper, which is --mhc-surface-room, which is the plain
   ground wearing a third name. On sage they read as white chips scattered over
   the field.

   THEY DO NOT SIMPLY GO, and that is the difference between this chapter and
   01. These are controls with a selected state, and the selected state is a
   solid sage fill: take the resting face to nothing and the only thing telling
   a reader which pills are pressed is the one that is, with no unpressed face
   to compare it against. So the resting face becomes a wash of the plate ink -
   the same .05 the chapter's own dashboard already uses for exactly these
   controls - which transmits the field, keeps the chip legible as a chip, and
   leaves the sage state the strongest thing in the group.

   The heading and the mode rail carry no state, so those two do simply go.

   NOT THE DIALOG. Every selector here is scoped to .evidence-workbench, because
   the same classes appear inside the full-screen dashboard and the note above
   is the reason that one keeps its ground. */
html[data-field-chapter='measurement'] .evidence-workbench :is(
  .dashboard-heading,
  .mode-tabs
){background:transparent}
html[data-field-chapter='measurement'] .evidence-workbench :is(
  .family-filter,
  .survey-filter
):not([aria-pressed="true"]){background:rgba(var(--mhc-on-plate-rgb), .05)}
/* The ledger's head is sticky over its own scrolling rows, which is the
   floating-control case rather than the plate case: what passes behind it is
   the table, not the field, so it keeps a surface and takes the archive's
   material for one. */
html[data-field-chapter='measurement'] .evidence-workbench .data-table th{
  background:var(--mhc-field-float);
  -webkit-backdrop-filter:var(--mhc-field-float-blur);
  backdrop-filter:var(--mhc-field-float-blur);
}

/* THE TWO MEASUREMENT PANELS NO LONGER CARRY A TINT · 22 September 2026

   This block used to fix a real fault: the domain diagram at 13% and an opened
   DSM edition at 12% were written as a percentage of the chapter's field
   color mixed INTO --mhc-surface-room, which yields an opaque color that
   merely looks faint, so each panel read on the field as a pale rounded
   rectangle with the field cut out of it. Mixing with `transparent` instead
   kept the authored percentage and stopped the panels being holes.

   Both panels have since stopped wanting a surface at all. The two domain
   schematics were asked to drop their faded backdrop so the marks stand on the
   chapter's own field, and the DSM editions became a comparison table, so
   `.dsm-edition` is no longer a <details> and `[open]` matches nothing. The
   fix above therefore outlived the panels it was written for, and because it
   selected on the root it also outranked the chapter's own rule: removing the
   plate in measurement.html alone changed nothing on screen. Restating the
   reasoning rather than the rule, so that a future tinted panel on this field
   is mixed with `transparent` and not with the room. */

/* ===========================================================================
   03 CLAIMS-MAKERS · steel
   ---------------------------------------------------------------------------
   Grounds that stop painting: the root, the body, the woven cover, the opening
   quotation and its viewport, the constellation's section and stage, the
   evidence block and the closing section. `.claims-reading-content` is this
   chapter's cover, for exactly the reason main is Measurement's.

   #INSTITUTIONS HAS NOW BEEN TAKEN, and the paragraph this replaces argued for
   keeping it, so the change of mind is worth recording rather than quietly
   overwriting. The band was a full-bleed slab of --mhc-steel and the only
   authored color among chapters 02 - 05; the argument for it was that taking
   it would delete a decision rather than reveal a field. What that argument did
   not weigh is that the band is 2765px tall. At that height it is not an accent
   inside a room, it is a second room, and a reader scrolling the chapter passes
   out of the field into a flat plate and back again. The chapter is meant to
   read as one continuous piece of light, which is the same reading Frames
   arrived at for its own plates, so the band goes and its type moves onto the
   page's own ink. The contrast pass the old paragraph asked for is below.
   =========================================================================== */
/* Claims-makers diffuses. Steel is the most desaturated token in the archive, so
   this chapter's field gets its presence from lightness and almost none of it
   from chroma - a steel family pushed for saturation arrives as cyan, which is
   a different color rather than a stronger one. */
html[data-field-chapter='claims-makers']{
  --mhc-field-bright:.84;
  --mhc-field-dark:1;
  --mhc-field-hero:1;
  --mhc-field-reading:.84;
}
html[data-field-chapter='claims-makers'] :is(
  .claims-opening-quote,
  .claims-quote-viewport,
  .story,
  .stage,
  .chapter-evidence,
  .after
){background:transparent}

/* -- the reading surfaces ------------------------------------------------- */
/* Frames' finding, applied to the four plates this chapter kept. They shipped
   at .44 to .90 of the ground, which is a white plate wearing an alpha value:
   at .90 the field behind it is not visible at all, and at .44 it is visible
   enough to say that something is there and not enough to say what. Every one
   of them holds body ink on a reading layout that already separates itself
   through rules, column heads and spacing, so the fill is carrying nothing the
   page would miss.

   The border, the shadow and the blur leave with the fill rather than after it.
   A lift with nothing to lift is a smear, a blur with nothing to blur is a
   smear the exact shape of the plate, and a border around nothing is a ghost
   card - which between them would leave the plate's outline on the field after
   the plate was gone. That was the lesson of the framework stage in 01.

   THE CARD KEEPS ITS RULE, and it is the one exception in the list. The
   institution cards are rows in a list and their border is what separates one
   row from the next, so it is structure rather than plate apparatus; only the
   open state's fill, shadow and blur go. */
html[data-field-chapter='claims-makers'] #institutions,
html[data-field-chapter='claims-makers'] #reading-key,
html[data-field-chapter='claims-makers'] .constellation-primer,
html[data-field-chapter='claims-makers'] .institution-study,
html[data-field-chapter='claims-makers'] .institution-card[open],
html[data-field-chapter='claims-makers'] .institution-card-body,
html[data-field-chapter='claims-makers'] .institution-toolbar{background:transparent}
html[data-field-chapter='claims-makers'] #reading-key,
html[data-field-chapter='claims-makers'] .constellation-primer,
html[data-field-chapter='claims-makers'] .institution-study{
  border-color:transparent;box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
}
html[data-field-chapter='claims-makers'] .institution-card[open]{
  box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
}

/* THE BAND'S TYPE COMES OFF THE PLATE WITH THE PLATE.

   Four rules set this section's type against a steel slab, three of them in
   --mhc-on-chroma, which is a FIXED dark ink: it is chosen to sit on a chroma
   field in either theme and it does not follow the ground. On the band that was
   right. With the band gone the same ink lands on the chapter's own field,
   where in dark theme it would be a near-black heading on a near-black room, so
   the section's heading, support line and aside move onto the page ink family
   every other section in the chapter already uses. Nothing else inside the
   section needs the pass: the study below sets --ink and its relatives locally,
   so its whole interior was already reading against the page rather than
   against the slab. */
html[data-field-chapter='claims-makers'] #institutions{color:var(--mhc-ink)}
html[data-field-chapter='claims-makers'] #institutions .mhc-section-statement{color:var(--mhc-ink)}
html[data-field-chapter='claims-makers'] #institutions .mhc-section-support{color:var(--mhc-ink-3)}
html[data-field-chapter='claims-makers'] #institutions .mhc-section-aside{
  border-color:var(--mhc-hairline-soft);color:var(--mhc-ink-3);
}
/* The study's own hairline was mixed against the slab too, by way of
   --mhc-on-chroma-rgb, and the interior rules it draws sit on the field now. */
html[data-field-chapter='claims-makers'] .institution-study{--hairline:var(--mhc-hairline-soft)}

/* THREE SURFACES THE FIRST PASS DID NOT REACH, and all three are the same
   mistake in three places: a reading painted on a ground of its own inside a
   chapter whose ground is the field.

   THE INSTITUTIONS FINDING was an ink slab with the ground color used as its
   type, which is the band treatment again at the scale of one paragraph. Its
   only structural job is to separate the finding from the study above it, and
   a rule does that; the type returns to the page's own ink family, and the
   label keeps the chapter's color because it is the one mark in the block
   that is naming rather than reading.

   THE OPEN PROFILE held .68 of the ground behind its whole dossier, with the
   lift and the blur that go with a plate. It is a row in a list that has just
   been expanded rather than a card that has been lifted out of one, so it
   keeps the hairline that separates it from its neighbours and gives up
   everything else. The summary's own wash stays, which is what actually marks
   the open row, and it is the role's color.

   THE OWNERSHIP MAP is a full-stage overlay, so it cannot simply stop painting
   while the constellation is still drawn underneath it; the map would be read
   against a network. The network stands down for as long as the map is open,
   which is what the stage was already asserting in the opposite direction with
   three !important declarations written for a panel that covered it anyway. */
html[data-field-chapter='claims-makers'] .institution-finding{
  background:transparent;
  color:var(--mhc-ink);
  border-top:1px solid var(--mhc-hairline-soft);
}
html[data-field-chapter='claims-makers'] .institution-finding p{color:var(--mhc-ink-3)}
html[data-field-chapter='claims-makers'] .institution-finding strong{color:var(--mhc-ink)}
html[data-field-chapter='claims-makers'] .institution-finding b{color:var(--mhc-chapter-claims-ink)}

html[data-field-chapter='claims-makers'] .profiles-section .profile-dossier[open]{
  background:transparent;
  box-shadow:none;
  -webkit-backdrop-filter:none;backdrop-filter:none;
  border-color:var(--mhc-hairline-soft);
}
html[data-field-chapter='claims-makers'] .profiles-section .profile-dossier[open] .profile-body{
  background:transparent;
}

html[data-field-chapter='claims-makers'] .ownership-movement,
html[data-field-chapter='claims-makers'] .movement-scroll,
html[data-field-chapter='claims-makers'] .movement-frame,
html[data-field-chapter='claims-makers'] .movement-field{background:transparent}
/* Only the pinned lane headings need a surface as records pass underneath. */
html[data-field-chapter='claims-makers'] .movement-heads{
  background:var(--mhc-field-float);
  -webkit-backdrop-filter:var(--mhc-field-float-blur);
  backdrop-filter:var(--mhc-field-float-blur);
}
html[data-field-chapter='claims-makers'] .ownership-movement{color:var(--mhc-ink)}
html[data-field-chapter='claims-makers'].mhc-field-on .stage.is-movement .network-world{opacity:0!important}

/* THE SENSE KEY DREW ITS RULE WITH A GAP, which is a plate technique and only
   works while there are plates. The pair is a one-pixel grid gap over a
   hairline-colored container, so the rule a reader sees is the container
   showing through between two cells painted at .86 of the ground. Take the
   cells down and the container paints the whole block in hairline gray; leave
   them up and they are the last two white cards in the chapter. So the rule
   becomes a rule: the container stops painting, the gap closes, and the second
   cell carries the divider on its own edge - which also survives the single
   column this collapses to at 760, where a gap between stacked cells would have
   drawn a horizontal line the chapter never asked for. */
html[data-field-chapter='claims-makers'] .institution-sense-key{background:transparent;gap:0}
html[data-field-chapter='claims-makers'] .institution-sense-key>div{background:transparent}
html[data-field-chapter='claims-makers'] .institution-sense-key>div+div{
  border-left:1px solid var(--mhc-hairline-soft);
  padding-left:calc(clamp(18px,2.4vw,30px) + 1px);
}
@media (max-width:760px){
  html[data-field-chapter='claims-makers'] .institution-sense-key>div+div{
    border-left:0;border-top:1px solid var(--mhc-hairline-soft);
    padding-left:clamp(18px,2.4vw,30px);
  }
}

/* THE SENSE TAGS ARE THE ONE RUN OF TYPE THE BAND WAS PAYING FOR.

   Every institution row carries an 8px pill naming how that institution uses
   the phrase, and the pill has no fill: a 1px currentColor border and the
   role's own ink, steel by default and the crisis salmon for a societal sense.
   On the study's .76 plate those inks were reading against something close to
   paper. On the field they measure 1.94:1 and 1.95:1 against a 4.5 target,
   which is the lowest reading anywhere in this chapter and the price of taking
   the plate.

   So they take the move the constellation labels and the era year already take
   in this same chapter: hold the hue, hold the chroma, move only the lightness
   to the one value the theme sets. Sense is the encoding - steel and salmon are
   how a reader tells an individual reading from a societal one - so nothing
   about the color may move except how dark it is. The border follows, because
   the border IS currentColor.

   One variable rather than two rules, so the deepening is written once and the
   two senses differ only in what they hand it. */
html[data-field-chapter='claims-makers'] .institution-sense{--sense-ink:var(--mhc-steel-ink)}
html[data-field-chapter='claims-makers'] .institution-card[data-sense="societal"] .institution-sense{--sense-ink:var(--crisis-ink)}
/* Both selectors again on the color, not just on the variable, for the reason
   the constellation labels list three: the societal sense states its ink at a
   higher specificity than a chapter-scoped class selector can reach, so a
   single rule deepens steel and leaves salmon exactly where it was - which is
   the half-finished repair that looks finished in a screenshot of a row that
   happens to be steel. */
html[data-field-chapter='claims-makers'] .institution-sense,
html[data-field-chapter='claims-makers'] .institution-card[data-sense="societal"] .institution-sense{
  color:color-mix(in oklab, var(--sense-ink) var(--mhc-field-deepen), var(--mhc-ink));
}
@supports (color: oklch(from white l c h)) {
  html[data-field-chapter='claims-makers'] .institution-sense,
  html[data-field-chapter='claims-makers'] .institution-card[data-sense="societal"] .institution-sense{
    color:oklch(from var(--sense-ink) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h);
  }
}

/* The evidence panels float above the constellation and retain its glass.
   Playback and view switching read directly on the chapter field. */
html[data-field-chapter='claims-makers'] :is(.inspector,.edge-review){
  background:var(--mhc-field-float);
  -webkit-backdrop-filter:var(--mhc-field-float-blur);
  backdrop-filter:var(--mhc-field-float-blur);
}

/* THE CONSTELLATION'S LABELS ARE THE WORST TYPE IN THE ARCHIVE ON PAPER, and
   until this pass they were the only chapter-colored run in these five that
   had been given no treatment at all.

   Every node names itself in its ROLE'S ink at 9px - steel for an owner, salmon
   for a causal claim, sage for a political one, and so on - and those inks are
   mid-tones chosen against a flat plate. On a steel field in bright theme they
   measure 2.14:1 to 3.32:1 against a 4.5 target, which is three chapters' worth
   of small type sitting at half the floor. Dark is untouched by this and always
   was: there the same tokens resolve to their light values and the same labels
   measure 6.07:1 to 6.28:1.

   THE HALO IS NOT AN ANSWER, although it is why nobody saw this. Each label
   carries a four-way 1px shadow in --black, which resolves to white on paper,
   so the glyph is read against its own outline at 6.1:1 and looks legible in a
   screenshot while the label's color clears nothing. A halo is a repair that
   disappears under forced colors and does not survive being zoomed, so the
   color is fixed instead and the halo goes back to being what it was for.

   Role is the encoding, so the hue stays exactly where it is and only the
   lightness moves. Three selectors rather than one, because the chapter states
   this color three times: the resting label, the label under a pointer, and
   the position lens, which swaps in its own per-role token. */
html[data-field-chapter='claims-makers'] .node-label,
html[data-field-chapter='claims-makers'] .node:is(:hover,:focus-visible,.is-selected) .node-label{
  color:color-mix(in oklab, var(--node-ink, var(--mhc-steel-ink)) var(--mhc-field-deepen), var(--mhc-ink));
}
html[data-field-chapter='claims-makers'] .stage[data-lens="position"] .node .node-label,
html[data-field-chapter='claims-makers'] .stage[data-lens="position"] .node:is(:hover,:focus-visible,.is-selected) .node-label{
  color:color-mix(in oklab, var(--position-label-ink, var(--mhc-steel-ink)) var(--mhc-field-deepen), var(--mhc-ink));
}
/* The era year set at 58 to 88px in the chapter's own ink, which needs 3:1 and
   reaches 2.81:1 on the field. It is the same one-color-on-itself the cover
   met, at the other end of the type scale. */
html[data-field-chapter='claims-makers'] .era-year{
  color:color-mix(in oklab, var(--mhc-chapter-claims-ink) var(--mhc-field-deepen), var(--mhc-ink));
}
@supports (color: oklch(from white l c h)) {
  html[data-field-chapter='claims-makers'] .node-label,
  html[data-field-chapter='claims-makers'] .node:is(:hover,:focus-visible,.is-selected) .node-label{
    color:oklch(from var(--node-ink, var(--mhc-steel-ink)) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h);
  }
  html[data-field-chapter='claims-makers'] .stage[data-lens="position"] .node .node-label,
  html[data-field-chapter='claims-makers'] .stage[data-lens="position"] .node:is(:hover,:focus-visible,.is-selected) .node-label{
    color:oklch(from var(--position-label-ink, var(--mhc-steel-ink)) var(--mhc-field-notation-l) max(c, var(--mhc-field-notation-c)) h);
  }
  html[data-field-chapter='claims-makers'] .era-year{color:var(--mhc-field-notation)}
}

/* ===========================================================================
   04 MONEY · gold
   ---------------------------------------------------------------------------
   Almost nothing, and the paragraph this replaces said nothing at all, which
   was a miss worth naming. Money paints no ground: every scene in the chapter
   really is bare type and rules on the page. What the first audit walked past
   is that two of its surfaces are written as a low percentage of the chapter's
   own gold mixed INTO the paper, which is not a wash but an opaque color that
   looks like one - so they do not transmit anything, and the larger of the two
   is a pinned card the size of the viewport. Both are re-mixed below.
   =========================================================================== */

/* Money diffuses, at the lowest pair in the set. Gold is the one token here that
   is already saturated, so its family takes the smallest chroma lift and its
   bright band stays high: a gold allowed to go deep is a brown, and a brown is
   not this chapter's color. The pair is lower than the other three because the
   chapter's display type is set in gold on a gold field - see the strength block
   above - and this is the chapter to re-measure first after any change here. */
html[data-field-chapter='money']{
  --mhc-field-bright:.72;
  --mhc-field-dark:1;
  --mhc-field-hero:1;
  --mhc-field-reading:.80;
}

/* Money's accent notation, which is every small run of type the chapter sets in
   --money-ink: the stage numbers and the four places a date is set as data
   rather than as prose. The token itself is untouched, so the focus ring and
   every rule drawn in it stay exactly as they are. */
html[data-field-chapter='money'] :is(
  .process-number,
  .spending-policy time,
  .story-beat time,
  .atlas-row-label time,
  .support-record>time
){color:var(--mhc-field-notation)}

/* THE STORY CARD IS THE WHOLE VIEWPORT, which is what makes its six percent
   matter. `color-mix(in srgb, var(--money) 6%, var(--paper))` is an opaque
   color: the paper is a term in the mix rather than something seen through it,
   so the card covers the field completely and the chapter's own light survives
   only in the margin around a pinned rectangle 1146 by 852. Re-mixed against
   `transparent` the authored six percent is unchanged and now means what it
   reads as - six percent of gold with the room behind it - and the card keeps
   its border and its shadow, which is right, because it is pinned while the
   page travels behind it and a floating surface may show an edge.

   The process nodes are the same mix at seven percent, and they take the same
   correction so the two do not drift apart. Their hover at eighteen percent is
   left as authored: a control under a pointer may cover. */
html[data-field-chapter='money'] .story-card{
  background:color-mix(in srgb, var(--money) 6%, transparent);
}
html[data-field-chapter='money'] .question-node{
  background:color-mix(in srgb, var(--money) 7%, transparent);
}

/* ===========================================================================
   05 SUMMARY · verdigris
   ---------------------------------------------------------------------------
   Grounds that stop painting: the root, the body and #sec-summary itself. The
   cover is NOT among them and never was, which is
   worth recording because the comment here said for a day that it was: the
   cover paints from the 2019 `header` type selector in the page rather than
   from anything scoped to this chapter, and it is reset in summary-chapter.css
   where the chapter's own surfaces live.
   =========================================================================== */
/* The Summary diffuses too, as of 2026-09-15. It was the one chapter held back,
   on the argument that its sticky assembly sheets are hiding each other rather
   than reading the ground, so what they want behind them is an even surface.
   That argument is about the SHEETS and it survives untouched - they keep the
   blur-glass below and are not asked to transmit. It never said anything about
   the room they stack in, which was a flat citron tint at .35 in both themes.

   The pair is unchanged across the 2026-09-17 move to verdigris, and that is
   worth one line rather than none. A strength is a statement about the alpha at
   the densest pool, and what it has to clear is the type the chapter sets on
   that pool; neither the type nor the arrangement changed. What changed is the
   band the family draws from, which is where the whole of the new color lives.
   See the chapter table in chapter-field.js for why it could open in the dark
   direction that citron had closed. */
html[data-field-chapter='summary']{
  --mhc-field-bright:.78;
  --mhc-field-dark:.96;
  --mhc-field-hero:1;
  --mhc-field-reading:.82;
}
/* The Summary's notation is ONE token, which is the whole of this chapter's
   integration. --sum is --mhc-chapter-summary-ink and it appears eight times in
   summary-chapter.css, every one of them a `color`: the sheet index, the two
   reading labels, the chapter references, the parity years, the scope
   disclosure and the cover's continue arrow. Nothing draws a rule or a border
   in it, so deepening the token deepens exactly the type and nothing else, and
   the chapter needs no list of selectors the way Money does.

   Most of that type sits on the assembly sheets, whose blur-glass holds it
   between 5.4:1 and 6.2:1 and never needed help. The two runs that sit on the
   bare field are the ones that fail: the scope disclosure's own summary line at
   15px measures 3.87:1 and the plus sign beside it at 22px measures 4.43:1. A
   chapter whose notation is a single token should not carry two readings of it,
   so the token moves rather than those two lines. */
html[data-field-chapter='summary'] #sec-summary{
  --sum:color-mix(in oklab, var(--mhc-chapter-summary-ink) var(--mhc-field-deepen), var(--mhc-ink));
}
@supports (color: oklch(from white l c h)) {
  html[data-field-chapter='summary'] #sec-summary{--sum:var(--mhc-field-notation)}
}
html[data-field-chapter='summary'] #sec-summary,
html[data-field-chapter='summary'] .chapter-reading #sec-summary,
html[data-field-chapter='summary'] .chapter-reading #sec-summary.plate{background:transparent}
/* Since 19 September the chapter is a shelf of five volumes and a stack of
   four sheets, and every one of them is the archive's floating-control
   material declared in summary-chapter.css: the shelf stands on the field and
   its volumes transmit it, while the sheets stack and hide each other, which
   is the situation the blur was drawn for. Nothing here has to be subtracted,
   because the chapter paints no opaque ground of its own. */

/* ===========================================================================
   THE COMPANIONS HAVE NO BLOCK HERE, AND THAT IS THE RULE · 2026-09-19
   ---------------------------------------------------------------------------
   Three chapters used to end this file: C Sources in plum, B Methodology in
   citron, and Measurement's own method companion in sage. All three are gone,
   and nothing replaced them, because the field is now what separates a chapter
   a reader is reading from a page a reader is consulting.

   THE ARCHIVE HAS TWO KINDS OF ROOM. The numbered sequence, 00 Timeline through
   05 Summary, is an argument a reader enters and stays inside, and the field is
   how each of those rooms says whose argument it is: the color fills the space
   behind the page, leans toward the cursor, and never leaves the chapter's own
   family. The lettered companions are appendages to that sequence rather than
   stations in it. A About says who made the work, B Methodology says how it was
   made, and C Sources names what it cites, and a reader reaches every one of
   them from inside a chapter, looks something up, and goes back. A About has
   always opened on the plain ground; the other two now do the same, so the
   distinction the reader sees is a property of the archive rather than an
   accident of which pages happened to be converted.

   MEASUREMENT'S METHOD COMPANION GOES WITH B for the reason the old block gave
   for holding the two together: they are one document shell wearing two
   colors, and a rule that separated them would have to be about the color,
   which is the one thing that never justified a field.

   WHAT THIS COSTS IS EXACTLY NOTHING, which is the property the engine was
   built to have. A chapter with no row in `CHAPTERS` never mounts, the root
   never takes `.mhc-field-on` or `[data-field-chapter]`, and every rule in this
   file is gated on one of those two hooks; so the three pages render from their
   own stylesheets with no rule here reaching them, and the grounds they had to
   stop painting for the field's sake are painting again. They keep their
   chapter tokens, their rails and their notation, all of which were theirs
   before the field arrived and none of which this file ever owned.

   RESTORING ONE IS THE SAME WORK IT WAS. The bands, arcs and chroma lifts these
   three were tuned to are in this file's history rather than deleted knowledge,
   and `previews/chapter-field/` still holds the instrument that measured them.
   What would have to be argued first is not the number, it is the claim that
   the page in question is a room rather than a reference.
   =========================================================================== */
