/* =====================================================================
   OUR TEAM — page sheet for src/pages/our-team.html
   No colour value appears here. Everything refers to css/tokens.css.

   ---- PAGE-LOCAL DEVIATION REGISTER ----------------------------------
   Prefix TEAM-, opened 2026-08-15 at S3 and numbered from 1. THE PREFIX
   CHANGED WITH THE FILENAME AND THE OLD ENTRIES DID NOT MOVE. ABT-1..3
   were written while this sheet was about.css; they keep their numbers,
   their prefix and their dates forever and are NEVER renumbered — a
   register entry is a dated record, and rewriting one to match a later
   filename destroys the only evidence of when the decision was taken.
   Carrying ABT- forward into a file no longer named about.css would have
   recreated exactly the generic-name-on-a-renamed-file defect S3 exists
   to remove. New entries are TEAM-n. Earlier deviations still sit in
   prose beside the rules they concern and stay that way.

   ABT-1 · THE PAUL MANGO MEMORIAL LEFT THIS PAGE, 2026-08-14. By director
   ruling the section moved to src/pages/our-origins.html and its thirteen
   rules to css/pages/our-origins.css. BOTH MOVED BYTE-IDENTICAL and were
   verified by sha taken from their NEW homes after placement, not carried
   forward from the cut: markup 2,290 B sha 7debe0aa…, rules 1,537 B sha
   40dd2375…. Nothing was rewritten, merged or re-scoped to make the move
   possible — had anything needed to be, that was a stop condition.

   THE PORTRAIT WAS NEVER OPENED. assets/mango-paul-1024x544.jpeg is
   untouched at sha 1d47a059f0b8f0202d… and still ships, because build.mjs
   matches asset REFERENCES rather than pages: the reference changed owner
   and the file never stopped being referenced. REMOVED came back 0.

   WHAT CHANGED IN THIS FILE BESIDES THE DELETION. Two comments justified
   themselves by pointing at the memorial and would have become
   unverifiable once it left. §4's quote-block.css note no longer reasons
   from "the two inside the memorial" but from the fact that an UNSCOPED
   sheet would ornament every blockquote this document contains or later
   gains. §6's portrait-ready block no longer names the memorial as the
   one section withheld from the shape; it states instead that the shape
   is an affordance, is not universal, and must not be extended "for
   consistency" — which is how a prohibition gets designed away. Neither
   rewrite weakened a rule; both removed a referent that had left.

   THE T04 PROVENANCE RANGE IN src/pages/our-team.html NOW OVER-DESCRIBES
   THAT DOCUMENT, since the memorial's copy is no longer in it. The range
   was deliberately NOT recomputed and the markup says so in place.
   Recomputing it is its own unit and remains open.

   ABT-2 · BOTH DARK SECTIONS LEFT THIS PAGE, 2026-08-14. By director ruling
   the Vision/Mission band and The Longitude Way moved to
   src/pages/our-approach.html, and their thirty rules to
   css/pages/our-approach.css. BOTH SECTIONS MOVED BYTE-IDENTICAL — 895 B sha
   6f50dc73… and 2,663 B sha ff613b36… — verified from their new homes after
   placement. The thirty rule declarations were verified byte-identical
   comments-stripped (1,639 B sha f4708aab… and 1,650 B sha 12b9d392…) and
   confirmed ABSENT from this sheet. The dotted-divider block travelled with
   them: it sits under its own heading but styles the Vision/Mission band.

   THIS PAGE NOW HAS NO DARK GROUND AND NO TEXTURED SURFACE ANYWHERE — the
   first time in the engagement. MEASURED on the built page, not inferred:
   sections resolving to a dark ground **0**, sections with a texture
   ::before **0**. What remains is hero, two page-ground sections, and one
   cream band.

   TWO PAPER SEAMS EXIST AND THEY HAVE DIFFERENT ORIGINS. KEEP THEM
   DISTINGUISHED. Hero -> Governing Members is 220px of continuous page
   ground and is **NEW, caused by this unit** — it appeared when the dark
   band between them left. Governing Members -> Board of Directors is also
   220px of continuous page ground and is **PRE-EXISTING at checkpoint-9av**;
   those two sections were already adjacent and already both page-ground
   before this unit ran. Do not attribute the second to A4.

   THE DARK-GROUND CONTRAST TABLE THAT STOOD IN THIS HEADER WAS DELETED, NOT
   RETAINED FOR REFERENCE. It measured a surface this page no longer has. A
   contrast table kept beside a ground that does not exist gets applied by
   reflex to the nearest surface that does; its figures now live beside the
   ground they describe, in css/pages/our-approach.css. If a dark band ever
   returns here, measure it fresh.

   ABT-3 · §4 BOARD HEADSHOTS ALIGNED TO §6 LEADERSHIP AT 150px, 2026-08-15,
   director Ruling A. `.bod-shot` went `flex:0 0 96px` / `width:96px` to
   `0 0 150px` / `150px`. Nothing else in the rule moved: aspect-ratio:1,
   border-radius:50%, and the object-fit/object-position on `.bod-shot img`
   are untouched. NO IMAGE FILE WAS OPENED, MOVED, REPLACED OR RE-ENCODED —
   this is a CSS box change against files that already clear 2x at 150.

   THE WRAP THRESHOLD MOVED AND THAT WAS THE POINT OF PREDICTING IT.
   `.bod-item` is a wrapping flex row whose three children sum to
   150 + 32 + 300 + 32 + 320 = 834px, up from 780px. It therefore wraps
   below `.in` 834 rather than below 780 — viewport ~902 rather than ~848.
   THE TWO-LINE BOARD CARD IN THAT BAND IS ACCEPTED BY RULING, NOT A DEFECT.

   NO FLEX BASIS WAS REDUCED TO BUY THE THRESHOLD BACK. `.bod-id` stays
   `flex:0 0 300px` and `.bod-quote` stays `flex:1 1 320px`. Narrowing
   either would have held the old wrap point, and both were considered and
   DECLINED: the id column is sized to the longest role string and the quote
   basis is what keeps a full-width quote off a seven-word measure. Buying a
   breakpoint by shrinking a measure is a worse trade than an earlier wrap.

   TEAM-1 · THE PAGE AND THIS SHEET WERE RENAMED, 2026-08-15, unit S3. By
   director ruling src/pages/about.html -> src/pages/our-team.html and
   css/pages/about.css -> css/pages/our-team.css. This is the last
   structural step of the about-page split that ABT-1 and ABT-2 began.

   BOTH MOVED BYTE-IDENTICAL, and the proof was taken from the NEW homes
   after placement, never carried forward from the old path (§5): the page
   re-hashed at src/pages/our-team.html to 32e58af416c94f61… / 35,953 B and
   the sheet at src/css/pages/our-team.css to 714f5fd666eb5095… / 33,623 B,
   both identical to their pre-move figures. Editing did not begin until
   those two comparisons passed. A hash copied across a move proves nothing
   about the move.

   THE PAGE TITLE CHANGED AND THE NAV LABEL DID NOT, ON PURPOSE. <title> is
   now "Our Team | Longitude Health"; partials/header.html still renders the
   word "About" and only its href moved. Under Shape D, About is the PARENT
   with Our Team as its child, so the label and the filename are deliberately
   different things. DO NOT "fix" the header link text to match this file.

   S3 SHIPPED BEFORE N2, THE ABOUT SUB-NAV, AND THE ORDER WAS THE RULING.
   N2 points its About parent and its Our Team child at our-team.html; had
   N2 gone first, both would have pointed at a page that did not exist yet,
   or at about.html with a rename pending behind it. The 404 precedent from
   hub.html/member-portal.html was explicitly scoped by the director to
   those two links only and does not extend to a third.

   THE /about.html REDIRECT IS NOT IN THIS UNIT AND ITS ABSENCE IS BOUNDED.
   A redirect is a firebase.json edit; that file is ⌘4's and was hashed, not
   opened, here (d6882dc3ccdfc4a3… / 565 B). It lands at ⌘4's next open
   together with D11. THE EXPOSURE IS /about.html ALONE: after this unit no
   link anywhere on the site names the old path, so the only way to reach it
   is a stale bookmark or an open tab on the dev channel, where it was
   previously deployed. Nothing external links it — measured: this build tree
   contains NO robots.txt and NO sitemap.xml, so crawler suppression, if any,
   lives outside anything measurable from here and was NOT verified by S3.

   THREE STALE POINTERS INTO THIS SHEET AND THE OLD PAGE WERE REPOINTED IN
   THE SAME UNIT, AND THAT WAS THE WHOLE ARGUMENT FOR DOING IT HERE. All
   three were already wrong before S3, and a rename would have re-dressed
   each one in a current filename:
     css/pages/why-longitude.css :705   about.css:667  -> our-team.css:694
     css/pages/member-portal.css :19    about.css:667  -> our-team.css:694
     css/pages/utilities.css     :113   src/pages/about.html
                                        -> src/pages/our-approach.html
     css/pages/utilities.css     :121   css/pages/about.css:179
                                        -> css/pages/our-approach.css:202
   :667 DID NOT EXIST when it was written — the sheet was 658 lines — and it
   resolves today only because this register pushed the file to 741. The rule
   both pointers describe, `.a-hero .kick{font-size:14px}`, was at :611 before
   this entry and is at :694 after it, MEASURED not derived: the first
   arithmetic here said :614 and was wrong by 80 lines. The utilities.css pair
   at referents that left for our-approach in ABT-2 and were never swept:
   #4E65DC and 2.6959 appear ZERO times in this sheet, and about.html carried
   ZERO occurrences of "§2" or "client-header". ABT-2's own note records that
   it "repointed four pointers and all four resolve" — it repointed the four
   inside the slices it moved and never widened to utilities.css. The lesson
   is catalogued at §59.

   ANY EDIT ABOVE THIS LINE MOVES :694 AGAIN. Two sheets point at it by line
   number. If this register grows, re-derive the target and repoint both, or
   convert them to a selector reference that no edit can invalidate.

   **THIS FIRED ON THE VERY NEXT UNIT. G3 added TEAM-2 below and the rule
   moved off :694. BOTH POINTERS WERE CONVERTED TO SELECTOR REFERENCES
   RATHER THAN RE-NUMBERED**, taking the second of the two options above.
   Re-numbering would have bought one unit of correctness and left the next
   register entry to break them again — this pointer had already moved once
   in S3 and moved again nine days later, which is the whole argument. The
   other three pointers in those lists (base.css, home.css, utilities.css)
   were left as line numbers deliberately: they were not measured by this
   unit, and repointing something G3 did not verify is how §59 defects get
   introduced rather than removed.

   TEAM-2 · GOVERNING MEMBERS WENT TO SAND, 2026-08-16, unit G3. Director
   **SUPERSEDED BY TEAM-3 ON 2026-08-17 — ONE DAY LATER. EVERY FIGURE BELOW IS
   LEFT EXACTLY AS G3 MEASURED IT AND IS NOT RE-DERIVED.** §3 is WHITE now, not
   sand; `.tm-cream` moved to §4; the ring is `--white`. **Read TEAM-3 for
   current values and read this for what G3 changed and from what.** Correcting
   the numbers here would destroy the only account of the sand decision and
   leave a reader unable to tell a decision made twice from a value that
   drifted. Same handling as OA-4, OA-5 and the 9ag drift record.
   change. §3, the first section inside <main> after the hero, takes a new
   page-local class `.tm-cream` carrying --cream and --on-page. The page now
   reads paper / sand / paper / sand down its length, which is the intent.

   .tm-cream AND NOT .band-cream, AND THAT IS A §46 DECISION WITH MEASURED
   FIGURES BEHIND IT. `.band-cream` is a RULE IN EXACTLY ONE SHEET —
   components/bands.css:19, `{background:var(--ground-alt);color:var(--on-alt)}`
   — and the class renders on **11 dist pages, COUNTED BY DOM**. Reusing it
   would bind this section to every future change made to a declaration
   shared with ten other pages, none of which this sheet can see. A
   page-local class costs one rule and inherits nothing. **The name was
   swept before use: `tm-cream` returns ZERO occurrences across all of src/
   (css, html and js), control `gm-strip` 19 and `band-cream` 36 — the probe
   returns values.**

   THE 11 IS A DOM COUNT AND AN EARLIER 15 WAS A GREP COUNT, AND G3 SHIPPED
   THE WRONG ONE BEFORE CATCHING IT. A grep for band-cream across the built
   HTML returns 16 files; querySelectorAll('.band-cream') resolves 11 pages.
   The gap is comment prose — including the prose THIS UNIT wrote, which
   inflated the count between the prediction and the seal. §44 exactly:
   a pattern-count is not a class-count. Corrected in all three places it had
   been written before the checkpoint closed. **Count rendered classes by
   DOM; a grep over a tree this heavily commented will always read high.**

   THE CLASS CARRIES A FOREGROUND AS WELL AS A GROUND, deliberately, matching
   .band-cream's own pairing and the discipline this sheet already states for
   the join band: colour is authored explicitly so a future ground change
   cannot silently take the text with it.

   THE DOT'S RING HAD TO MOVE WITH THE GROUND AND THIS SHEET FORECAST IT.
   `.gm-mem i` carries a 3px ring painted in --ground-page. That ring is a
   MASK over the dotted rule running behind the logo row, and it only masks
   while it matches the ground it sits on. The §3 block below used to record
   that the ring reads as a true mask HERE and as a light halo on the
   homepage, where the same declaration sits on --ground-alt. Moving this
   section to sand would have imported the homepage symptom exactly:
   --ground-page on --cream is 1.0694, a visible halo. Repointed to --cream,
   which restores 1.0000. **The prose predicted the regression before the
   ground moved; that is the only reason it was caught in the same unit.**

   RE-DERIVED FOR THE NEW GROUND, all four widths 1440/1028/768/390:

     h2 "Governing Members"  --ink          13.9920 -> 13.0839  LARGE 3.0
     .gm-mem i fill          --ground-fill  13.9920 -> 13.0839  non-text
     .gm-mem i ring          --ground-page
                             -> --cream      1.0694 ->  1.0000  mask restored
     .gm-strip .gm-line      --stone         1.9837 ->  1.8550  decorative

   THE h2 IS LARGE BY SIZE ALONE at 46/34.952/28/28 @700 and does not rest
   on the 18.66/700 boundary. **A FIGURE OF 12.6169 WAS CARRIED INTO THIS
   UNIT FOR THIS h2 AND IS WRONG. Measured 13.0839**, cross-checked against
   the live control on this same page — Leadership's h2, same --ink on the
   same --cream via .band-cream, measures 13.0839 today. 12.6169 is not
   derivable from any token in this tree. Both figures pass, so nothing
   turned on it; it is recorded because a wrong figure that passes is the
   kind that survives into the next unit.

   THIS PAGE NOW CARRIES FOUR 1.0694 SEAMS AND SHIPPED TWO OF THEM ALREADY.
   hero -> §3 and §3 -> §4 are new; §5 -> .band-cream and .band-cream ->
   #join predate this unit and have been live since 9p. ACCEPTED, director-
   ruled 2026-08-16. 9an resolved a paper->cream soft step by routing it
   paper->plum->cream; that precedent governed two argued sections carrying
   continuous prose and does not bind an alternation this page was already
   shipping.

   THE T04 PROVENANCE RANGE IS STILL OPEN AND THE RENAME DID NOT CHANGE IT.
   The block at our-team.html:58-123 cites longitude-t04-about-2026-08-07.md,
   PART A, file lines 14–209. The range describes the SOURCE document, and
   the source is not renamed, so the rename neither improves nor worsens it.
   IT IS WORSE THAN THE BLOCK ADMITS, INDEPENDENTLY OF S3: the block confesses
   one departure (§7) and has three. Vision/Mission and The Longitude Way both
   left for our-approach.html in ABT-2 while the block still states that they
   render here, and the memorial left for our-origins.html in ABT-1. PART A
   14–209 is now split across THREE pages while the block describes one.
   CLOSING IT means re-reading PART A against the current <main> and either
   restating one surviving range or replacing it with three per-page ranges
   and a pointer map. That is a copy-provenance unit against the source
   document, not a rename, and it remains its own unit.
   ---------------------------------------------------------------------

   TEAM-3 · THE PAGE IS REORDERED AND THREE GROUNDS CHANGE, 2026-08-17, unit
   B2. CLIENT-REQUESTED (BugHerd #11), DIRECTOR-RULED. Section order in <main>
   goes hero / Governing Members / Board / Leadership -> **hero / Leadership /
   Governing Members / Board**, and the grounds are re-decided so the
   alternation survives the move:

     [0] hero               --ground-page  paper   UNCHANGED
     [1] Leadership         --ground-alt   CREAM   moves, KEEPS .band-cream
     [2] Governing Members  --white        WHITE   was cream — NEW .tm-white
     [3] Board              --cream        CREAM   was paper — .tm-cream MOVES HERE

   `.tm-cream` WAS MOVED, NOT DUPLICATED, AND THAT IS WHY NO RULE IS ORPHANED.
   Before this unit `.tm-cream` had exactly ONE consumer site-wide (DOM-counted
   across all 20 built pages; control `.band-cream` returned 11). Inventing a
   second cream class for Board would have left `.tm-cream` styling nothing.
   Moving it keeps one rule with one consumer and adds only the white ground.

   `.band-cream` AND `.tm-cream` ARE COMPUTATIONALLY IDENTICAL, WHICH IS WHAT
   MADE THE MOVE FREE. Resolved by paint: `--ground-alt` === `--cream`
   rgb(246,240,230), and `--on-alt` === `--on-page` rgb(41,38,49). They differ
   only in token names. **Neither carries a descendant rule**, so neither
   brings layout — `.band-cream` is the only band class in bands.css with no
   `.in` rule behind it. Both are written UNSCOPED on the bare class, which is
   normally a §46 exposure and here is the reason a class can be moved between
   sections with no rule change at all.

   THE DOT RING BROKE FOR THE THIRD TIME AND THE SHEET FORECAST IT. `.gm-mem i`
   carries `border:3px solid` painted in the SECTION'S OWN GROUND, because it
   is a MASK over the dotted rule running behind the logo row — not a circle.
   It only masks while it matches:

     ring --ground-page on paper   (pre-G3)   1.0000   true mask
     ring --cream       on cream   (G3)       1.0000   true mask
     ring --cream       on WHITE   (B2, if left alone)  1.1336  ** HALO **
     ring --white       on WHITE   (B2, shipped)        1.0000   true mask

   G3 repointed it once and left the instruction at the declaration: "this ring
   is a MASK and must match the section's own ground … If this section's ground
   ever moves again, this ring moves with it in the same edit." **That comment
   is the only reason this was caught in the same unit rather than found later
   as a visual defect.** Cost: 0 bytes — `--cream` and `--white` are both seven
   characters. **The rule generalises: the ring follows the ground, every time,
   and a ground change to this section is never a one-line edit.**

   CONTRAST RE-DERIVED AGAINST WHITE FROM SCRATCH, NOT CARRIED FROM THE CREAM
   TABLE (§57). The section holds exactly ONE text element — the five member
   marks are <img> with alt text and carry no colour, there are no links, and
   there is no `--accent` instance anywhere in it:

     h2.rv "Governing Members"  --on-page  46px/700  LARGE 3.0  13.0839 -> 14.8318  PASS
     .gm-mem i disc fill        --ground-fill        non-text   13.0839 -> 14.8318
     .gm-strip .gm-line         --stone              decorative  1.8550 ->  2.1028
     .gm-mem i ring             ground-matched       non-text    1.0000 ->  1.0000

   SEAMS: FOUR NOW, AND THE TWO NEW ONES ARE STRONGER THAN WHAT WAS ALREADY
   ACCEPTED. paper->cream 1.0694, **cream->white 1.1336**, **white->cream
   1.1336**, cream->paper 1.0694. None lands at or near 1.0000 and none is
   weaker than the 1.0694 soft seam the director has accepted five times.
   **`cream <-> white` at 1.1336 is not a new FIGURE** — it is the
   `.mango-card`-on-cream boundary G3 shipped on our-origins — **but it is new
   as a SECTION SEAM.** This site had carried that step across a card edge and
   never across the full page width.

   NOTHING REPAINTS ON THE REORDER, AND THAT WAS SWEPT NOT ASSUMED. Both ground
   classes are bound to their SECTION elements, so each section carries its
   ground with it. All eight sheets this page links were swept for
   `:nth-child`, `:nth-of-type`, `:first/:last-of-type`, `:first/:last-child`,
   `section +`, `section ~` and `> section`. The only hits are `.nav-bars i`
   in header.css (inside the header, not <main>) and `.a-prose p:first-child`
   here (scoped to paragraphs). **components/utility-row.css — the one sheet on
   this project whose entry delays ARE :nth-child-keyed — is not linked by this
   page**, and this component's five delays are keyed to `.g-bay`/`.g-mem`/
   `.g-nov`/`.g-pro`/`.g-mic` classes. ABT-3's 150px board headshots are
   `flex:0 0 150px;width:150px;aspect-ratio:1`, class-scoped, order-independent.

   ############################################################
   A NAMING EXPOSURE INSIDE TEAM-3, RECORDED RATHER THAN RESOLVED.
   `.tm-white` paints from **`--white`, not from a `--ground-*` token.**
   components/bands.css's own header states the reason its classes pair a
   `--ground-*` with its matching `--on-*`: "a band never takes a raw palette
   token directly, so a future split of --ink or --cream into separate ground
   and foreground values lands here without re-auditing every section."
   **A section ground painted from `--white` sits outside that discipline.**

   NO TOKEN WAS CREATED AND `tokens.css` WAS NOT OPENED. `--white` was read by
   computed value off a rendered `.mango-card` on our-origins — rgb(255,255,255),
   luminance 1.0000 — and it is the same value as `--ground-field`, which is a
   form-input fill rather than a band ground. **No class applying white as a
   section ground existed anywhere in the tree before this unit**: the only two
   `background:var(--white|--ground-field)` declarations are join-form.css's
   field fill and our-origins.css's `.mango-card`. There is no `.band-white`.

   THE PRECEDENT IS G3 SHIPPING `--white` ON `.mango-card` BY RULING, and this
   follows it. **If a `--ground-white` / `--on-white` pair is ever introduced,
   this rule and `.mango-card` move together** — they are the two consumers, and
   they are the whole audit. Recorded so that audit is a lookup, not a sweep.
   ############################################################

   MOTION. This file carried NO @keyframes until 2026-08-12. It has two
   now — gmRise and gmLineDraw — and they exist only for the §3 governing-
   members logo row. Everything else on the page is still base.css's .rv
   primitive, IntersectionObserver-gated by js/reveal.js, fire-once,
   unobserving, with its own prefers-reduced-motion branch in base.css.

   THE §3 BLOCK THEREFORE CARRIES ITS OWN REDUCED-MOTION BRANCH, AND
   EVERY SELECTOR IN IT IS RESTATED IN FULL. A media query adds no
   specificity: `@media(...){.a .b{}}` is still (0,2,0), so a branch that
   restates a LESS specific selector than the rule it means to override
   is INERT rather than wrong — §18's most recurrent failure. The
   step-down below matches `.gm-strip.rv.on .gm-mem` with
   `.gm-strip.rv.on .gm-mem`, not with `.gm-mem`.

   GROUNDS. This page uses .band-cream from components/bands.css and the
   default page ground. Nothing else comes from that sheet.

   THERE IS NO DARK BAND ON THIS PAGE — a state it has not been in since
   the engagement began, and it is a consequence of A4 rather than a
   reversion. Both dark sections moved out on 2026-08-14. The page is now
   three consecutive page-ground sections followed by one cream band.

   .band-plum and .band-slate remain refused on measurement rather than
   taste, and that refusal is INDEPENDENT of whether a dark band exists
   here: bands.css declares a flex layout on the .in of each, authored for
   the homepage's image-and-copy pairs, so using either on a long text page
   means overriding a two-class rule from a file this session does not own,
   for no gain. If a dark band is ever wanted on this page again, that is
   still the reason to author the ground locally rather than reach for
   .band-plum — the argument survives the sections that demonstrated it.

   CONTRAST, MEASURED 2026-08-08 against the two grounds this page
   actually uses, --ground-page and --ground-alt. Ratios, not hexes, so a
   colour-literal scan over this file stays clean:

     --on-page       page 13.9920   alt 13.0839
     --on-page-body  page  8.0825   alt  7.5580
     --on-page-soft  page  4.9579   alt  4.6361
     --slate         page  4.5994   alt  4.3009   <-- FAILS 4.5 ON ALT

   THE DARK-GROUND TABLE THAT STOOD HERE HAS GONE WITH ITS GROUND. It
   measured a textured plum surface that this page no longer has, and the
   figures it carried — including the --accent row that governed the only
   SC 1.4.3 decision on this sheet — now describe css/pages/our-approach.css.
   They were NOT copied here for reference: a contrast table kept beside a
   ground that does not exist is the exact shape that gets applied by
   reflex to the nearest surface that does. THE TWO GROUNDS BELOW ARE THE
   ONLY GROUNDS THIS PAGE HAS.

   IF A DARK BAND EVER RETURNS TO THIS PAGE, MEASURE IT FRESH RATHER THAN
   RECOVERING THE OLD FIGURES. The texture composites, so the ground is a
   range and not a colour, and the binding end depends on the overlay
   actually used.

   IN THE LIGHT-GROUND TABLE, THE --slate ROW IS THE ONE TO KEEP. It clears 4.5 on the page
   ground by 0.0994 and MISSES IT on the alt ground by 0.1991. It is
   therefore NOT used for small text anywhere on this page, and a future
   edit must not reach for it "because base.css uses it for .kick" —
   .kick sits on the page ground, this page's attributions do not.

   --on-page-muted IS NOT USED AND MUST NOT BE REINTRODUCED. It measures
   3.1144 on the alt ground. Its last two instances on the site were
   removed rather than recoloured, and it currently has zero rule
   references across the build; adding one here would re-open the last
   SC 1.4.3 failure that was closed by deletion.
   ===================================================================== 
   TEAM-4 · THE HERO h1 AND LEDE ARE REPLACED. CLIENT-REQUESTED
   (BugHerd #21, #22), N3, 2026-08-18.

   Two adjacent lines in the same `<div>`, so one unit carries both.
   `<p class="a-cta"><a class="btn" href="#join">Join Us -> </a></p>`
   directly below is **untouched and verified byte-identical.**

     h1    "Help shape what health systems build next."
        -> "The Leaders Building Healthcare's Next Chapter"        +4 B
     lede  "Longitude membership gives not-for-profit health systems an
            opportunity to help set priorities, shape shared infrastructure,
            and participate in the value it creates."
        -> "Meet the Longitude Health executives and Board of Managers
            working together to build the capabilities, businesses and
            utilities that help health systems deliver greater value and
            advance care for their patients and communities."      +62 B

   **BOTH ARE DEVIATIONS AGAINST HARVESTED T04 COPY**
   (`longitude-t04-about-2026-08-07.md`), client-directed, logged not
   resolved.

   ── A FIFTH DIRECTION FOR TERMINAL PERIODS. DO NOT CONFLATE THEM.

   The old h1 ended in U+002E; the new one does not. **The client is
   DROPPING a period the build had, which is its own direction and matches
   none of the four already on file:**

     index.html:167  client dropped it, the build leaves it dropped
     WL-24           client supplied none, the build adds none
     UTIL-3          client supplied one, the build removes it (deviation)
     #24 / C3        client asks that one be ADDED
     TEAM-4          client REPLACES a period-terminated string with an
                     unterminated one

   **Five directions, five records, and none of them generalises to the
   others.** The MD chip "Snehal Patel, MD., Executive in Residence" is
   untouched by all five.

   ── ⚠ THE APOSTROPHE: WHAT WAS WRITTEN, AND WHY IT MAY NEED CONFIRMING.

   **Written U+0027 APOSTROPHE, in "Healthcare's".** The instruction was to
   write exactly what the ticket gave and not normalise — **and I cannot
   byte-verify the client's original, because the string reached this build
   transcribed through a dispatch.** U+0027 and U+2019 are visually
   near-identical in most renderings of that transcript.

   **U+0027 is the defensible choice and here is the evidence for it, not
   an assumption:** this page carries **six apostrophes in code and every
   one is U+0027** — country's, Academy's, Deloitte's, Queen's, nation's
   and, already, **healthcare's**. Zero U+2019 anywhere in the page's code.
   The 9ah ruling that governs index.html's "Can't" chose U+0027 for the
   same reason.

   **IF THE CLIENT'S ORIGINAL WAS U+2019 THIS IS A ONE-CHARACTER
   CORRECTION**, and it would then be the page's only U+2019 — which is
   itself a reason to confirm before changing it. Flagged rather than
   settled.

   ── THE MISSING OXFORD COMMA IS AS SUPPLIED AND WAS NOT CORRECTED.

   The new lede reads "the capabilities, businesses and utilities" — **no
   comma before "and"**, where the sentence it replaces used one
   ("priorities, shape shared infrastructure, and participate"). **Written
   as supplied. Copy fidelity is absolute; a house style is not a licence
   to edit client copy.** Recorded so a later reader does not "fix" it.

   ── THE EYEBROW ABOVE IS UNCHANGED AND STILL READS.

   `<span class="kick">The People Behind the Network</span>` — authored in
   title case and uppercased by `text-transform`, as the note directly above
   it records. **N0's screenshot reading "THE PEOPLE BEHIND T..." was that
   transform, not a truncated source string.** It was not changed. It sits
   above a heading that is now itself title case rather than sentence case,
   which reads consistently; the eyebrow's own source-case divergence note
   is unaffected.

   */

/* ---------------------------------------------------------------------
   MEASURE. base.css gives .in a 1180px cap, which is a layout width, not
   a reading width. Prose columns are capped separately below; the cap
   lives on the text block rather than on .in so that the roster and the
   quote list can still use the full column.
   --------------------------------------------------------------------- */

.a-prose{max-width:64ch}
.a-prose p{margin-top:20px;font-size:16.5px;color:var(--on-page-body)}
.a-prose p:first-child{margin-top:24px}

.a-cta{margin-top:32px}

.a-hero .body{max-width:60ch}

/* ---- the join band's copy column -------------------------------------
   .jcol-lead IS AUTHORED HERE, NOT IN components/join-form.css, AND THAT
   IS A SCOPE DECISION. join-form.css is linked by all 17 pages; this
   paragraph exists only inside partials/components/join-about.html, which
   exactly ONE page includes. Putting the rule in the shared sheet would
   ship a selector 16 pages can never match. our-team.css is linked by
   our-team.html alone, so the rule lives exactly as wide as the element.

   The band sets `color:var(--on-page)` on itself and has no background of
   its own, so this paragraph sits on the page ground. Colour is authored
   explicitly rather than inherited — the same discipline the dark bands
   need, applied here so a future ground change cannot silently take the
   paragraph with it. */
.jcol-lead{
  margin-top:22px;
  font-size:17.5px;line-height:1.6;
  color:var(--on-page-body);
  max-width:46ch;
}

/* ---- §3 GOVERNING MEMBERS — logo row ---------------------------------
   Replaces the former "Governance" section entirely (h2 + two paragraphs),
   client-confirmed 2026-08-12. That copy is gone, not hidden.

   THE ROSTER THAT USED TO LIVE IN §4 IS GONE WITH IT. `.mem-list` styled
   the five member names as a bordered text list; the list was removed from
   §4 in the same change and had exactly ONE consumer, so the rules went
   with it rather than being left to style nothing. The old block recorded
   that T04 prints these five on one line separated by U+00B7 and that the
   four separators were dropped as a logged deviation — THAT DEVIATION IS
   NOW MOOT: the names are not set as text on this page at all. They are
   the alt text of five logos, which is where the U+00B7 question stops
   applying.

   THIS IS THE HOMEPAGE COMPONENT, REUSED — NOT A NEW ANIMATION. Taken from
   components/member-strip.css: `.mstrip`, `.mstrip .line`, `.mstrip .row`,
   `.mem`, `.mem i`, `.mem .lg`, `@keyframes memRise`, `@keyframes
   lineDraw`, and the five `.mstrip.rv.on .mem.m-*` animation-delay stops.
   Geometry, easing, duration and every delay are carried over unchanged.

   ############################################################
   THIS IS A COPY OF `components/member-strip.css`. IT DOES NOT FOLLOW IT.
   Edit that file and NOTHING HERE CHANGES — the two will diverge silently,
   and the first symptom will be the homepage strip and this row animating
   or sitting differently with no error anywhere. If you change one, change
   both, or consolidate. There is no import, no @extend and no shared
   ancestor: the relationship is that someone copied it, and this comment.
   ############################################################

   COPIED RATHER THAN LINKED, BY RULING 2026-08-12. `member-strip.css` is
   one of four components the HOMEPAGE SHELL holds a write grant on, and
   the grant rests on a measured fact: those four are loaded by index.html
   ONLY. Re-measured 2026-08-12 — still true; the 14 pages whose text
   mentions the file all mention it in a COMMENT, and `our-team.html` parses
   to eight <link> elements, none of them this one. **Promoting an
   index-only file to shared is a write-grant change, and not a
   launch-night one.** Linking it would also let another session change
   this page without knowing.

   THIS IS ONE INSTANCE OF A PATTERN THAT RECURS ACROSS THE PROJECT, AND
   THE RECURRENCE IS THE POINT. Several sheets re-declare something a
   component sheet already owns, each because reaching the component would
   have crossed a write grant or imported a layout contract. **That is a
   consolidation backlog, not a coincidence.** No roster of the others is
   kept here: this block used to name two of them and one has since moved
   to another sheet, which is exactly how such a list goes wrong.
   Scheduled post-launch; when it happens, delete this block and link the
   original rather than maintaining both.

   THE PER-LOGO `--cx` NUDGES ARE OPTICAL CENTRING CONSTANTS TUNED TO THESE
   EXACT RENDERED WIDTHS (157/121/110/124/113). They transfer only because
   the widths transfer. Change a width and the matching nudge is wrong.

   GROUND. **THIS SECTION HAS NOW HELD THREE DIFFERENT GROUNDS. SINCE B2,
   2026-08-17, IT CARRIES .tm-white AND SITS ON --white** — page ground until
   G3, --cream from G3, --white from B2. The paragraph that first stood here
   recorded that the dot's 3px --ground-page ring reads as a true mask HERE and
   as a light halo on the homepage, where the same declaration sits on
   --ground-alt. **That prediction has now been correct twice**, and it is why
   the ring was fixed inside the same unit both times rather than found later
   as a visual defect.

   THE RING IS NOW PAINTED IN --white AND MASKS AT 1.0000. THE RULE IS
   UNCHANGED IN KIND AND IS THE LOAD-BEARING PART OF THIS BLOCK: the ring must
   always be painted in whatever ground this section sits on, because its job
   is to interrupt the dotted rule running behind the row, not to draw a
   circle. **If this section's ground ever moves again, this ring moves with it
   in the same edit.** The measured cost of not doing so: left on --ground-page
   it read 1.0694 against sand, and left on --cream it reads **1.1336 against
   white** — a visible halo either way, and exactly the homepage symptom. The
   homepage's own ring is untouched and still sits on --ground-alt; the two
   pages are not aligned and were never meant to be. See TEAM-3, and TEAM-2 for
   the sand step. */

/* THE 52px TOP MARGIN IS BACK, BECAUSE THE HEADING IS BACK. It is heading
   clearance, not decoration: `.mstrip` carries it on the homepage because an
   h2 sits directly above it. 9o removed the h2 from this row and the margin
   went with it — measured then as pure leftover, the strip starting 162px
   below the section top where every other section starts at the 110px
   padding. 9p restores the h2 per the mock, so the clearance is load-bearing
   again and the pairing is restored intact. The two move together; neither
   is a taste value on its own. */
/* A PAGE-LOCAL GROUND, NOT .band-cream — see TEAM-2 for the §46 figures.
   Foreground authored alongside the ground so a later change cannot take the
   text with it. **SINCE B2 THIS CLASS IS ON §4, BOARD OF DIRECTORS, NOT §3.**
   It was MOVED rather than duplicated when B2 reordered the page: it had
   exactly one consumer before and has exactly one now. See TEAM-3. */
.tm-cream{background:var(--cream);color:var(--on-page)}

/* THE §3 GROUND SINCE B2, 2026-08-17. Governing Members is WHITE.
   PAINTED FROM `--white`, NOT FROM A `--ground-*` TOKEN, AND THAT IS A KNOWN
   EXPOSURE RATHER THAN AN OVERSIGHT. components/bands.css pairs a `--ground-*`
   with its matching `--on-*` precisely so a future token split lands there
   without re-auditing every section; this rule sits outside that discipline.
   No token was created and tokens.css was not opened — `--white` already
   exists and G3 shipped it on `.mango-card` by the same ruling. **If a
   `--ground-white`/`--on-white` pair is ever introduced, this rule and
   `.mango-card` move together — they are the only two consumers.** TEAM-3
   carries the full entry. Foreground authored explicitly, as above. */
.tm-white{background:var(--white);color:var(--on-page)}

.gm-strip{position:relative;margin:52px auto 0;max-width:1040px}
.gm-strip .gm-line{
  position:absolute;left:0;right:0;top:9px;
  height:2px;
  background-image:repeating-linear-gradient(to right,
    var(--stone) 0 2px, transparent 2px 4px);
  background-repeat:no-repeat;
  background-position:left center;
  background-size:0 100%;
}
.gm-strip .gm-row{position:relative;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
.gm-mem{flex:1 1 168px;min-width:168px;text-align:center}
.gm-mem i{
  display:block;width:14px;height:14px;border-radius:50%;
  background:var(--ground-fill);
  margin:2px auto 16px;
  /* --white, NOT --ground-page and no longer --cream: this ring is a MASK and
     must match the section's own ground. .tm-white made that --white in B2.
     THE RULE HELD AND CAUGHT THE BREAK — this is the THIRD ground this ring has
     had to follow (paper pre-G3, cream at G3, white at B2), and each time the
     mask reads 1.0000 only because the token moved with the section. Left on
     --cream against white it measures 1.1336 and shows as a halo. **A ground
     change to §3 is never a one-line edit.** See TEAM-3. */
  border:3px solid var(--white);
  transform:translateX(var(--cx,0));
}
.gm-mem.g-bay{--cx:-0.04px}
.gm-mem.g-mem{--cx:-0.39px}
.gm-mem.g-nov{--cx:-10.77px}
.gm-mem.g-pro{--cx:-10.25px}
.gm-mem.g-mic{--cx:-0.17px}
.gm-mem .gm-lg{display:flex;align-items:center;justify-content:center;height:84px;margin:0 0 11px}
.gm-mem .gm-lg img{height:auto;max-width:100%;display:block}
.gm-mem.g-bay .gm-lg img{width:157px}
.gm-mem.g-mem .gm-lg img{width:121px}
.gm-mem.g-nov .gm-lg img{width:110px}
.gm-mem.g-pro .gm-lg img{width:124px}
.gm-mem.g-mic .gm-lg img{width:113px}

@keyframes gmRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes gmLineDraw{from{background-size:0 100%}to{background-size:100% 100%}}

.gm-strip .gm-mem{opacity:0;transform:translateY(14px)}
.gm-strip.rv.on .gm-mem{animation:gmRise .52s cubic-bezier(.22,.85,.3,1) both}
.gm-strip.rv.on .gm-mem.g-bay{animation-delay:.123s}
.gm-strip.rv.on .gm-mem.g-mem{animation-delay:.386s}
.gm-strip.rv.on .gm-mem.g-nov{animation-delay:.637s}
.gm-strip.rv.on .gm-mem.g-pro{animation-delay:.901s}
.gm-strip.rv.on .gm-mem.g-mic{animation-delay:1.177s}
.gm-strip.rv.on .gm-line{animation:gmLineDraw 1.3s linear both}

/* EVERY SELECTOR RESTATED IN FULL. A media query adds no specificity, so
   each pairing below matches the exact selector it steps down —
   `.gm-strip.rv.on .gm-mem` against `.gm-strip.rv.on .gm-mem`, not against
   `.gm-mem`. The delayed variants need no entry: `animation:none` on the
   shorthand clears animation-delay with it. The end state is the finished
   state — logos visible, rule fully drawn — never the from-state. */
@media(prefers-reduced-motion:reduce){
  .gm-strip .gm-mem,
  .gm-strip.rv.on .gm-mem{opacity:1;transform:none;animation:none}
  .gm-strip .gm-line,
  .gm-strip.rv.on .gm-line{background-size:100% 100%;animation:none}
}

/* ---- §4 BOARD OF DIRECTORS — merged roster + endorsements -------------
   ONE SECTION NOW. Until 2026-08-12 the same six people appeared twice on
   this page: a cream quote list (five .q blocks, headshots added in 9p)
   and a separate "Board of Managers" roster (six name+title pairs, no
   quotes, no images). Every governing-member institution has a
   representative on the board, so the two lists were the same people.
   .q-* and .board-* are both retired into .bod-*; neither had any other
   consumer.

   THE HEADING IS "Board of Directors" FROM THIS UNIT. The seven RENDERED
   occurrences of "Board of Managers" in the five news pages are published
   body prose, harvested character-identically, and are NOT touched — the
   string survives on this site, just not as this heading.

   quote-block.css IS STILL NOT LINKED, AND THIS IS THE UNIT THAT WOULD
   TEMPT IT. That sheet declares `blockquote`, `blockquote::before` and
   `.attrib` UNSCOPED, so linking it would put a 96px ornament and a 40px
   serif on EVERY blockquote in this document, including any added later by
   someone who never read this note. Absence is a guarantee from structure;
   an override is a guarantee from compliance. The quote styling below is
   scoped and self-contained. Standing ruling.

   THE ORNAMENT IS THE QUOTATION SIGNAL AND IT SURVIVES THE MERGE. T04
   wraps these passages in a literal pair of U+0022 and that pair is
   STRIPPED per Ruling F; strip the marks and drop the ornament and the
   quotations lose every visual signal they had. It is their replacement,
   not decoration on top of them. --gold-d, not --gold. Sized 44px, not
   quote-block.css's 96px: a stacked list is not a feature quote.

   GROUND IS THE PAGE GROUND, INHERITED FROM THE ROSTER HALF OF THE MERGE,
   AND THAT CHOICE IS A CONTRAST DECISION AS WELL AS A VISUAL ONE. On the
   alt ground --on-page-soft measures 4.6361 and --slate 4.3009, and the
   dropped .q-attrib sat on the first of those at 10.5px. Nothing in this
   component reaches for either token, but the page ground keeps the whole
   card clear of that band by a further ~0.5 on every element.

   THE ATTRIBUTION IS THE NAME AND TITLE — the mono .q-attrib strings are
   GONE. They duplicated the roster and carried LESS: "Chair" and
   "(Ex-Officio)" appear only in the roster strings. Director decision,
   duplication removal, not a copy edit. The five quote texts are frozen
   and character-identical.

   ---- VISHAL AGRAWAL'S CARD IS THE SAME CARD WITH ONE CHILD ABSENT ----
   His quote is not yet supplied and WILL be. His card uses the SAME
   markup and the SAME classes; the only difference is that .bod-quote is
   not present. NOTHING IS CONDITIONAL ON THAT — there is no :last-child
   rule, no modifier class, no :has(), no nth-child anywhere in this
   component, so supplying his quote is a pure insertion with nothing to
   unwind.

   THE GEOMETRY CANNOT DEPEND ON THE QUOTE BECAUSE THE FIRST TWO COLUMNS
   DO NOT FLEX. .bod-shot is `flex:0 0 96px` and .bod-id is `flex:0 0
   300px` — fixed basis, no grow, no shrink — so they occupy the same
   space whether a third child follows them or not. Only .bod-quote flexes.

   THE QUOTE WRAPS TO ITS OWN LINE INSTEAD OF BEING SQUEEZED. `flex:1 1
   320px` on a wrapping row means the quote drops below the shot and id
   whenever less than 320px is left for it, and takes the full width there.
   Measured: the row needs 96+32+300+32+320 = 780px of .in to stay on one
   line, so it is one line at 1440 (1180) and 900 (832) and two lines from
   768 (700) down. No media query does this and none is needed.
   --------------------------------------------------------------------- */

.bod{list-style:none;padding:0;margin:44px 0 0;display:grid;gap:0}

.bod-item{
  display:flex;flex-wrap:wrap;
  gap:32px;
  align-items:flex-start;
}
/* Hairline BETWEEN cards, and the card spacing rides on the same selector.
   `+` gives the first card no rule above it and the last none below, so
   there is no dangling rule at either end.

   THERE IS DELIBERATELY NO :first-child OR :last-child IN THIS COMPONENT.
   An earlier draft used `padding:34px 0` plus a pair of pseudo-class rules
   to trim the outer edges. Neither was conditional on the quote, but the
   brief bars edge pseudo-classes here and the ambiguity is avoidable:
   hanging both the margin and the padding off `+` produces the identical
   34px-rule-34px rhythm with nothing keyed to a card's position in the
   list. Reordering the six, or adding a seventh, needs no CSS change. */
.bod-item + .bod-item{
  border-top:1px solid var(--rule-hair);
  margin-top:34px;
  padding-top:34px;
}

/* THE 834 IS LOAD-BEARING AND IT IS A SUM, NOT A SETTING. `.bod-item` is a
   WRAPPING flex row with three children, and the width it needs to stay on
   one line is the sum of their bases plus two 32px gaps:

       .bod-shot 150  +  32  +  .bod-id 300  +  32  +  .bod-quote 320  =  834

   The card wraps whenever `.in` is narrower than that — viewport ~902 at the
   current numbers. CHANGING ANY ONE OF THE THREE BASES MOVES THE WRAP POINT,
   including this one: at 96px the sum was 780 and the card held one line down
   to viewport ~848. Nothing declares 834 anywhere; it exists only as the
   consequence of three separate declarations in three separate rules, so a
   change to any of them will move it silently. Re-derive the sum after
   touching any of the three, and measure the flip rather than assuming it —
   at viewport 900 the margin is 2px. */
.bod-shot{
  flex:0 0 150px;
  width:150px;
  aspect-ratio:1;
  border-radius:50%;
  overflow:hidden;
}
.bod-shot img{
  width:100%;height:100%;
  object-fit:cover;
  display:block;
}

/* ONE FILE, ONE CROP CORRECTION — director ruling 2026-08-12.
   Vishal Agrawal's original is 613x557, the only non-square headshot on the
   page. `cover` shows a 557x557 window of it, so 56 source px go whatever
   the display size — the crop is invariant to the 96px box. At the default
   50% the window is x28..584 while his subject spans x45..597, which loses
   13px of right shoulder edge and nothing on the left, because his subject
   centre (x321) sits 15px right of the frame centre (x306). At 73% the
   window is x41..597: nothing lost at either end, 4px of background still
   to spare on the left.

   KEYED TO THE FILENAME ON PURPOSE, NOT TO A CLASS. The correction belongs
   to this FILE's framing, not to his card or his position in the list, and
   there is nothing in the markup to unwind. **If the file is ever replaced
   the selector stops matching and the crop silently returns to centre —
   that is the intended failure mode: a new original needs its own
   measurement, not an inherited magic number.** The five square files are
   untouched and crop 0 at the default; this must never be widened to reach
   them, as it would move all five off centre for no reason. */
.bod-shot img[src$="board/Vishal.png"]{object-position:73% center}

.bod-id{flex:0 0 300px;min-width:0}

.bod-name{
  font-family:var(--serif);font-size:19px;line-height:1.3;
  font-weight:700;color:var(--on-page);
}
.bod-role{
  margin-top:7px;font-size:14.5px;line-height:1.5;
  color:var(--on-page-body);
}

.bod-quote{
  flex:1 1 320px;min-width:0;
  margin:0;
  font-family:var(--serif);
  font-size:clamp(19px,1.55vw,22px);
  line-height:1.38;font-weight:400;
  color:var(--on-page);
  max-width:44ch;
}
.bod-quote::before{
  content:"\201C";
  display:block;
  font-family:var(--serif);
  font-size:44px;line-height:.42;
  color:var(--gold-d);
  margin-bottom:14px;
}

/* Below 600 the card stacks, image above text — sustaining the bound set
   in 9p. Restated in full: `.bod-item` here is (0,1,0), the same as the
   base rule, and wins on source order, not on specificity. */
@media(max-width:599.98px){
  .bod-item{flex-direction:column;gap:18px}
  .bod-id{flex:0 0 auto}
  .bod-quote{flex:0 0 auto}
}

/* ---- §6 leadership ---------------------------------------------------
   ================== THE PORTRAIT-READY SHAPE ==================

   THIS PAGE SHIPS NO IMAGE OF ANY PERSON. There is no <img>, no
   <figure>, no empty slot, no placeholder box, no silhouette and no
   initials avatar anywhere in our-team.html, and no rule in this file
   styles one. Photographs are an additive post-launch change.

   WHAT IS BUILT INSTEAD IS A SHAPE THAT MAKES THE ADDITION CHEAP —
   ONE ELEMENT AND ONE RULE, NOT A RESTRUCTURE:

       <li class="person">
         <img class="person-pic" src="…" alt="…">   <-- prepend this
         <div class="person-id"> … </div>
       </li>

       .person>.person-pic{flex:0 0 96px;width:96px;height:96px;
                           border-radius:50%;object-fit:cover}

   WHY THIS IS NOT A SLOT. .person is a flex row that today contains
   exactly one child. A flex row with a single `flex:1 1 auto` child lays
   out identically to a block: no reserved track, no zero-width box,
   nothing in the DOM or in this file that says a picture belongs here.
   `gap` only materialises BETWEEN items, so with one child it
   contributes nothing to the rendered box. A grid would have needed its
   track list rewritten from one column to two — that is the restructure
   this shape avoids, and it is the whole reason for choosing flex.

   THE PROHIBITION IS PERMANENT AND SURVIVES THE SWAP. No portrait of any
   person on this site is ever AI-generated, AI-upscaled or AI-enhanced,
   and no photograph of a person is ever used as a style, reference,
   frame-capture, interpolation or synthesis input to any generation
   step. Mechanical crop and resize only. Approval to USE a client
   photograph is not permission to PROCESS it. T04 names eighteen real
   people. If a supplied original is too small for its rendered box,
   REQUEST A HIGHER-RESOLUTION ORIGINAL FROM THE CLIENT — never upscale.

   THE SHAPE IS AN AFFORDANCE AND IT IS NOT UNIVERSAL. It is offered here
   because these rows are expected to gain photographs. A section that is
   deliberately built NOT to accept one is not an inconsistency to correct,
   and this shape must not be extended to reach it — an affordance added
   "for consistency" is exactly how a prohibition gets designed away.
   ====================================================================== */

/* ---- §6 LEADERSHIP ACCORDION — converted 2026-08-12 -------------------
   Eleven people, one row each, collapsed by default. The former treatment
   was a two-column grid with every bio fully visible.

   NATIVE <details>/<summary>, NO SCRIPT. Measured reasons, not preference:
   the control is keyboard-operable with no JS, Enter and Space both toggle
   for free, and the open state IS the element's own attribute — there is no
   aria-expanded to maintain and therefore nothing that can desynchronise
   from what is actually visible. The existing utility accordion needs
   js/accordion.js precisely because it is built on <button>.

   THIS DOES NOT LINK OR COPY components/accordion.css. That component is
   linked by utilities.html ONLY (measured 2026-08-12: 1 page for the sheet,
   1 for the script, 0 elsewhere — index.html has none of it despite the
   brief's expectation). Linking it here would convert a single-consumer
   component into a shared one, which is the member-strip hazard from 9o.
   Held for a ruling; self-contained here meanwhile.

   NO ANIMATION, SO NO REDUCED-MOTION BRANCH. The site register for
   disclosure is "opens on click and settles" — accordion.css states it in
   those words. Nothing here transitions, so there is no selector for a
   prefers-reduced-motion block to restate and none is authored. Adding a
   height transition later would require restating EVERY selector in full.

   THE WHOLE ROW IS THE HIT TARGET, not just the mark. A <summary> is the
   control, and everything inside it — portrait, name, title, mark — is part
   of that control. Eleven 22px marks would be eleven small targets in a
   list whose rows are already ~116px tall; the row costs nothing extra and
   is far easier to hit. The mark is INSIDE the summary, not adjacent to it.
   --------------------------------------------------------------------- */

.lead{list-style:none;padding:0;margin:44px 0 0;display:grid;gap:0}
.lead-item + .lead-item{border-top:1px solid var(--rule-hair)}

/* SCROLL OFFSET FOR THE SIX DEEP-LINKED ROWS.
   <header> is position:fixed and MEASURED at 81px. Without this, a fragment
   jump lands the summary at viewport top and the header covers it — measured
   at 80.5px obscured, i.e. essentially all of it. Nothing else in src/css sets
   scroll-margin or scroll-padding, so there was no existing offset to inherit.

   110px = the 81px measured header + 29px clearance. 110 IS NOT A NEW NUMBER:
   it is base.css's section padding, so the row lands on the same vertical
   rhythm the rest of the page uses rather than at an arbitrary gap.

   THIS IS NOT VIEWPORT CENTERING. scroll-margin-top aligns the row's top below
   the header; true centering needs scrollIntoView({block:'center'}) in script
   and was explicitly not what was wanted.

   [id] SCOPES THIS TO THE SIX. Only the deep-linked rows carry an id, so the
   selector cannot drift onto the other five, and a seventh would inherit the
   offset automatically the moment it becomes addressable. */
.lead-item details[id]{scroll-margin-top:110px}

.lead-sum{
  display:flex;align-items:center;gap:24px;
  padding:22px 0;
  cursor:pointer;
  list-style:none;
}
/* Both are needed: the pseudo-element for WebKit, list-style for the
   spec-compliant path. Removing only one leaves a stray triangle. */
.lead-sum::-webkit-details-marker{display:none}
.lead-sum::marker{content:""}
.lead-sum:focus-visible{outline:3px solid var(--focus);outline-offset:2px}

.lead-shot{
  flex:0 0 150px;width:150px;aspect-ratio:1;
  border-radius:50%;overflow:hidden;
}
.lead-shot img{width:100%;height:100%;object-fit:cover;display:block}

/* EYEBROW SIZE MATCHES THE OTHER TWO INTERIOR HEROES, WHICH BOTH BUMP
   base.css's 11px TO 14px — home.css `.hero .kick` and utilities.css
   `.u-hero .kick`. This is the same one-line pattern, not a new treatment:
   no new class, no new token, nothing scoped beyond the hero. 14px is still
   SMALL by both WCAG tests, so the threshold stays 4.5 and the measured
   4.5994 on the paper ground is unchanged by the size. The ground
   dependency is recorded at the element in our-team.html. */
.a-hero .kick{font-size:14px}



.lead-id{flex:1 1 auto;min-width:0}
.lead-name{
  font-family:var(--serif);font-size:19px;line-height:1.3;
  font-weight:700;color:var(--on-alt);margin:0;
}
.lead-role{
  display:block;margin-top:5px;
  font-size:14.5px;line-height:1.5;
  color:var(--on-page-body);
}

/* The mark is drawn from two bars so it needs no glyph and no icon file.
   The vertical bar is removed when open, turning + into -. */
.lead-mark{
  flex:0 0 auto;position:relative;
  width:22px;height:22px;
}
.lead-mark::before,.lead-mark::after{
  content:"";position:absolute;left:50%;top:50%;
  background:var(--on-alt);
}
.lead-mark::before{width:22px;height:2px;margin:-1px 0 0 -11px}
.lead-mark::after{width:2px;height:22px;margin:-11px 0 0 -1px}
.lead-item details[open] .lead-mark::after{display:none}

/* Indented to the name column: 150px portrait + 24px gap = 174px. The two
   numbers are written as a sum, not as the total, so the relationship to
   .lead-shot's width stays visible — if the portrait resizes again this is
   the second of exactly two places to change and the arithmetic is already
   spelled out. 9s moved both from 72/96 together. */
.lead-bio{
  margin:0 0 26px calc(150px + 24px);
  font-size:16.5px;line-height:1.65;
  color:var(--on-page-body);
  max-width:64ch;
}

/* Below 600 the row stacks — sustaining the bound set in 9p and held in
   9q. The bio loses its indent there because there is no name column to
   align to any more. */
@media(max-width:599.98px){
  .lead-sum{flex-direction:column;align-items:flex-start;gap:18px}
  .lead-bio{margin-left:0}
}
