/* ============================================================================
   Agentimus — dark palettes per wp-admin COLOR SCHEME
   (Users → Profile → Admin Color Scheme)

   The base dark palette (app.css) is keyed to wp-admin's classic charcoal, so
   it sits naturally beside Fresh, Midnight and friends. Schemes with a
   different key get their own dark here — and ONLY dark: light mode keeps the
   designed cream palette everywhere (its scheme flavour is the separate
   PHP-side SchemeInk feature — see inc/SchemeInk.php).

   HOW IT WORKS — no PHP, no JS: wp-admin stamps `admin-color-<slug>` on
   <body>, the theme toggle stamps `data-ar-theme` on <html>, and a block here
   simply redefines the design tokens where both match. Everything the app
   paints — teleported modals, toasts and tooltips included — lives inside
   <body>, so nothing escapes a re-key, and every wash, tint and chip below
   the tokens re-derives on its own.

   ADDING A SCHEME (a third-party one too) is one block in this shape — from
   this file or from any admin stylesheet loaded after the app's:

     :root[data-ar-theme="dark"] body.admin-color-<slug> {
       --ar-paper:   ...;  ( the page canvas — darkest )
       --ar-surface: ...;  ( cards )
       --ar-surface-2: ...;( raised: chips, dark buttons, menus )
       --ar-ink: ...; --ar-ink-soft: ...; --ar-ink-faint: ...;
       --ar-line: ...; --ar-line-strong: ...;
       ( optional: --ar-chrome / --ar-chrome-bright / --ar-chrome-line
         re-key the rail identity — see Coffee's gold below )
       ( re-keying --ar-accent here? re-key --ar-good and --ar-chrome with it:
         both are declared FROM the accent at :root, not at body )
     }

   Keep ink ≥ 4.5:1 on surface, and keep the ink family in the SAME
   temperature as the ground (a warm ink on a cool ground is a quiet clash).
   A scheme with no block here falls back to the charcoal base — nothing
   breaks. Values below are Heera's hand-tuned picks (paper/surface anchors)
   with the rest of each family derived to match.

   HOW THIS FILE IS ORDERED — his call, 2026-08-20, and it is a layout to
   follow, not a suggestion. One scheme, one section, nothing of that scheme
   anywhere else in the file:

     ===== SCHEME ==========================================
     -- Scheme · both variations ---------------------------
        rules on body.admin-color-<slug> alone: the gold, the note frame,
        anything true of the scheme whichever WordPress registered it
     -- Scheme · WP 7.1 — …  (agentimus-scheme-<hex>) ------
        its tokens, then its one literal (the About snippet)
     -- Scheme · before 7.1 — …  (agentimus-scheme-<hex>) --
        the same, for the other ground

   WHY IT IS SAFE TO READ IN THAT ORDER rather than in cascade order: a
   scheme-wide selector is one class lighter than a variation's, so the room
   always wins on SPECIFICITY, never on which line came last. And two rooms of
   the same scheme are mutually exclusive — <body> carries one
   `agentimus-scheme-<hex>` — so their order relative to each other cannot
   decide anything either. ⛔ That licence stops at the section edge: inside a
   block, order still matters (see Light, where several same-weight rules stack
   deliberately), so move whole rules between sections, never within one.

   ⚠️ A value shared by two schemes is WRITTEN OUT IN BOTH — the note gold
   #b2a484 appears in four sections. One rule listing four slugs would be
   shorter and would break the rule above the moment a scheme needed its own.
   ========================================================================= */

/* ===========================================================================
   FRESH — the default. Keeps the base dark; only its gold is its own.
   ======================================================================== */
/* THE WORTH-KNOWING CARD'S GOLD — his pick, 2026-08-12: a grey-warmed sand
   against Fresh's cool charcoal, where the base #c2a157 ran too brassy.
   ⭐ The same value appears in the MIDNIGHT, BLUE and OCEAN sections. It is
   written out once per scheme rather than shared in one rule across them, so
   every section reads on its own — the price is four copies of one hex, and
   that is the trade this file makes throughout. */
:root[data-ar-theme="dark"] body.admin-color-fresh {
  --ar-note-gold: #b2a484;
  --ar-note-glow: #b2a484;
}
/* Same step-darker frame as Modern's (his call, 2026-08-12): the sand at the
   base 55% still framed too bright on the cool grounds. */
:root[data-ar-theme="dark"] body.admin-color-fresh .ar-aud__note {
  border-color: color-mix(in srgb, var(--ar-note-gold) 32%, var(--ar-line));
}

/* ===========================================================================
   MODERN — WP 7.1’s neutral near-black.
   ======================================================================== */
/* ---- Default (slug: modern) — WP 7.1's neutral near-black ---------------- */
:root[data-ar-theme="dark"] body.admin-color-modern {
  --ar-paper: #151515;
  /* ⚠️ #242424 IS ALSO THIS SCHEME'S LIGHT-MODE INK, since 2026-08-21 — his
     call, "make the rail's bg as its dark mode looks". The other copy is
     SchemeInk::SCHEME_INKS['#1e1e1e'] in PHP. Neither is the original: if
     WordPress retunes `modern`, both move together or the readiness card,
     the buttons and the chips start reading two colours again. */
  --ar-surface: #242424;
  --ar-surface-2: #2e2e2e;
  --ar-field: #2d2d2d; /* surface, lightness +3.5 — his hand-picked input tone. */
  --ar-ink: #dedede;
  --ar-ink-soft: #a3a3a3;
  /* Raised with the base dark faint (2026-08-11): #6f was unreadable small. */
  --ar-ink-faint: #8b8b8b;
  --ar-line: #383838;
  --ar-line-strong: #464646;
  /* The Worth-knowing card's gold on the neutral near-black (his pick
     2026-08-12): a paler parchment gold, brighter than the cool schemes'
     sand so it carries on a ground with no warmth of its own. */
  --ar-note-gold: #d2bd8e;
  --ar-note-glow: #d2bd8e;
}
/* The two hue-carrying literals in the dark overrides go neutral with it. */
/* The parchment gold at the base 55% made a bright frame on the near-black —
   the card's border sits a step darker here (his call, 2026-08-12). */
:root[data-ar-theme="dark"] body.admin-color-modern .ar-aud__note {
  border-color: color-mix(in srgb, var(--ar-note-gold) 32%, var(--ar-line));
}
/* The row hairlines inside the six big dashboard panels, his exact pick
   (2026-08-12): a clean step off the near-black without going bright.
   Other dialects keep the token-derived line from app.css. */
:root[data-ar-theme="dark"] body.admin-color-modern .ar-sys__rows li,
:root[data-ar-theme="dark"] body.admin-color-modern .ar-aud__rows li {
  border-color: #433f3f;
}
:root[data-ar-theme="dark"] body.admin-color-modern .ar-about-snippet { background: #111111; }

/* ===========================================================================
   COFFEE — the warm brown key.
   ======================================================================== */
/* ---- Coffee — the same idea in that scheme's warm brown key -------------- */
:root[data-ar-theme="dark"] body.admin-color-coffee {
  --ar-paper: #202020;
  --ar-surface: #35322f;
  --ar-surface-2: #403c38;
  --ar-field: #3e3b37; /* surface, lightness +3.5 — same warm key, a breath brighter. */
  --ar-ink: #e2dfdb;
  --ar-ink-soft: #a8a49e;
  /* Raised with the base dark faint (2026-08-11), keeping the warm cast. */
  --ar-ink-faint: #918c83;
  --ar-line: #46423d;
  --ar-line-strong: #55504a;
  /* Coffee's accent is the base sage pulled 14 degrees toward yellow (his
     round, 2026-08-13): the teal read cold against the brown, but GOLD could
     not take the job — coffee already speaks gold three times (the chrome
     below, the Worth-knowing note, and --ar-warn at hue 41), and the one-
     accent law makes --ar-good the accent, so a gold accent collapses
     good / needs-attention / identity into one colour. A warm sage belongs in
     the room and still stands 59 degrees clear of amber. Restated in full
     because --ar-good and --ar-hover resolve FROM the accent where they are
     declared — at :root they would still be reading the base green. */
  --ar-accent: #98ba87;
  --ar-good: var(--ar-accent);
  --ar-good-strong: #adc79c;
  --ar-good-deep: #c1d4b4;
  --ar-hover: color-mix(in srgb, #98ba87 16%, transparent);
  /* The rail joins the accent (his call, 2026-08-13, second round): with the
     accent warmed to sage the gold rail was the last surface still speaking
     gold — and it spoke it right beside --ar-warn's amber ("11 to fix" sits
     on the same rows), which is the collision the accent change was meant to
     end. Coffee keeps its warmth in the ground and in the Worth-knowing
     note's bronze below; the identity follows the app. */
  --ar-chrome: var(--ar-accent);
  --ar-chrome-bright: #adc79c;
  --ar-chrome-line: color-mix(in srgb, #98ba87 24%, var(--ar-line));
  /* The Worth-knowing card's gold on coffee's brown (his pick 2026-08-12):
     a quieter bronze, so the card separates from a surface that is already
     warm instead of doubling its brass. */
  --ar-note-gold: #af9a6d;
  --ar-note-glow: #af9a6d;
}
:root[data-ar-theme="dark"] body.admin-color-coffee .ar-about-snippet { background: #181715; }
/* Coffee's card, his hue pair (2026-08-12): the ground casts from a brighter
   brass (#cda54e) than the bronze the text wears, and the frame is a flat
   muted olive-tan — quieter than the text's bronze. Same day, later round:
   the ground base moved from paper to the panels' surface-2 at the note's
   new slight strength, when the whole note left its warm room to sit on the
   cards' own paper. */
:root[data-ar-theme="dark"] body.admin-color-coffee .ar-aud__note {
  --ar-note: color-mix(in srgb, #cda54e 8%, var(--ar-surface-2));
  border-color: #776e58;
}

/* -- Coffee · the rug by day ------------------------------------------------- */
/* ⭐ HIS CALL, 2026-08-21: "apply the same colour rule in coffee light mode."
   The fourth rug to take the treatment blue started — the identity colour back
   on --rail-good, --rail-face left white because it carries the rung names,
   their counts and the score number.
   ⭐ THE VALUE IS THIS SCHEME'S OWN NIGHT ACCENT, #98ba87 (the base sage pulled
   14 degrees toward yellow, his 2026-08-13 round). So the card wears one green
   whichever way the toggle sits — which is what the two screenshots he sent
   were: the same rail, green after dark and white by day.
   ⭐ AND IT IS THE CHEAPEST OF THE FOUR: 4.60:1 on the 7.1 light ink #4e4036 and
   4.72 on the older #46403c — both OVER the floor, where blue and ocean landed
   at 4.25 and put their kicker under it. One rule covers both generations: the
   inks differ, the green does not, and both clear.
   ⛔ The hover matches the GESTURE, not the step: #aec9a1 is +0.08 L at this
   hue for a 1.20:1 lift, the same move blue's word makes at 1.21. */
:root:not([data-ar-theme="dark"]) body.admin-color-coffee .ar-rail-card.ar-rail-card--readiness {
  --rail-good: #98ba87;
}
:root:not([data-ar-theme="dark"]) body.admin-color-coffee
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-tier__name {
  color: #aec9a1;
}
/* The score number comes to full strength instead of past it — see the note in
   the BLUE section. */
:root:not([data-ar-theme="dark"]) body.admin-color-coffee
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-gauge__num {
  color: var(--rail-face);
}

/* ===========================================================================
   MIDNIGHT — two grounds; only the older one needs a block.
   ======================================================================== */

/* -- Midnight · both variations --------------------------------------------- */
/* THE WORTH-KNOWING CARD'S GOLD — his pick, 2026-08-12, the same sand Fresh
   takes: against Midnight's cool slate the base #c2a157 ran too brassy.
   ⭐ Slug-only, so it holds on BOTH of Midnight's grounds — the older grey
   below has a key of its own and wears this gold on top of it.
   ⚠️ The sand was picked on that darker ground. Worth his eye on 7.1's, but it
   is his value and stays until he moves it. */
:root[data-ar-theme="dark"] body.admin-color-midnight {
  --ar-note-gold: #b2a484;
  --ar-note-glow: #b2a484;
}
/* Same step-darker frame as Modern's (his call, 2026-08-12): the sand at the
   base 55% still framed too bright on the cool grounds. */
:root[data-ar-theme="dark"] body.admin-color-midnight .ar-aud__note {
  border-color: color-mix(in srgb, var(--ar-note-gold) 32%, var(--ar-line));
}

/* -- Midnight · before 7.1 — the flat grey  (agentimus-scheme-363b3f) ------- */
/* ---- Midnight, the OLDER one — his surface pick #3c4146 -------------------
   Keyed to the COLOUR, not the slug. WordPress retuned Midnight in 7.1: it was
   #363b3f for years (still is on heera.it) and is #333c42 now, and the two are
   not the same night — the old one is a flat grey at 7.7% saturation, the new
   one is a blue-grey at 12.8%, which is the base palette's own family. So the
   base dark already sits right on 7.1's Midnight (his verdict) and this block
   must not touch it.

   PHP stamps the active scheme's own surface colour on <body> as
   `agentimus-scheme-<hex>` (see Admin::scheme_body_class), so this applies on
   the install actually wearing #363b3f and nowhere else. A future retune stops
   matching and quietly falls back to the base dark.

   Against that older grey the base dark put cards (#262d31) a full step BELOW
   the menu beside them, so the app read as a hole in the admin. His #3c4146
   lifts the cards just above the menu and drops the canvas just below it —
   the same relationship the base palette has with Fresh.

   Everything else is that anchor's own hue and saturation (210°, 7.7%) at the
   base palette's own lightness STEPS, so this is the same night in a different
   key rather than a different design: canvas −6.5, raised +4.9, field +3.5,
   line +8.6, line-strong +14.5.

   The ink family is the one place the steps could not simply travel. A ground
   this much lighter eats contrast: the base's soft grey lands at 4.29:1 here,
   under the 4.5 floor this file sets, and the faint tier falls to 3.2. Both
   are lifted until they measure what they measure on the base ground — soft
   4.98:1, faint 4.4:1, body ink 8.0:1 — rather than being copied and left
   quietly failing. */
:root[data-ar-theme="dark"] body.admin-color-midnight.agentimus-scheme-363b3f {
  --ar-paper: #2d3134;
  --ar-surface: #3c4146; /* his pick — every value here is derived from it. */
  --ar-surface-2: #474e53;
  --ar-field: #444a50; /* surface, lightness +3.5 — the file's formula. */
  --ar-ink: #e1e3e5;
  --ar-ink-soft: #afb5bb;
  --ar-ink-faint: #a4abb2;
  --ar-line: #51575e;
  --ar-line-strong: #5e666e;
}
/* The hue-carrying literal left in app.css's dark overrides: the About snippet
   sits below the page. ⭐ The button hover that used to be re-keyed here is
   gone — it lifts from --ar-surface-2 by rule now, which on this lighter ground
   goes UP as it should, the thing the old base literal #3a454d got wrong. */
:root[data-ar-theme="dark"] body.admin-color-midnight.agentimus-scheme-363b3f .ar-about-snippet { background: #232629; }

/* ===========================================================================
   BLUE — one room, every generation.
   ======================================================================== */

/* -- Blue · both variations ------------------------------------------------- */
/* The grey-warmed sand Fresh and Midnight take — these grounds are cool, and the
   base brass ran hot on them. ⭐ EVERY blue WordPress has ever shipped is cool,
   so this one value holds whichever of them is being served. */
:root[data-ar-theme="dark"] body.admin-color-blue {
  --ar-note-gold: #b2a484;
  --ar-note-glow: #b2a484;
}
:root[data-ar-theme="dark"] body.admin-color-blue .ar-aud__note {
  border-color: color-mix(in srgb, var(--ar-note-gold) 32%, var(--ar-line));
}

/* -- Blue · every variation ------------------------------------------------ */
/* ---- Blue — WP's mid blue. His anchors; the ink family is the same hue at a
   fraction of its saturation, so the text reads as the room's own.

   ⭐ ONE ROOM FOR EVERY GENERATION — his call, 2026-08-20: "just one for all".
   Everything here is mixed for #245278, the dark slate menu WP 7.1 registers,
   and it now serves the older palette too — the one that registered #4796b3 and
   painted its menu #52accc, a LIGHT blue. That second room existed, with his own
   anchors in it, and it is gone: neither install we can look at is older than
   7.1, so it was a room nobody could hold against a screen.
   ⚠ WHAT THAT COSTS, said plainly: a pre-7.1 install now wears a night mixed
   for a menu it is not showing. The two are the same hue family — #245278 is
   207deg/54%, #4796b3 196deg/43% — near enough that one room covers both, which
   is the trade he chose over a room that could not be verified.
   ⭐ The class is still stamped server-side from what WordPress registers; this
   block simply no longer asks for it. {@see Agentimus\Admin::scheme_body_class}

   ⛔ NOTE THE ASYMMETRY WITH MIDNIGHT, and do not "correct" it: Midnight still
   carries two rooms, keyed to #363b3f and to its 7.1 colour, because each was
   measured against the WordPress of its day. Blue is one room by his decision,
   not by an oversight in the keying. */
:root[data-ar-theme="dark"] body.admin-color-blue {
  --ar-paper: #14293c;
  --ar-surface: #1e4362;
  --ar-surface-2: #214c6e;
  --ar-field: #224c70; /* surface, lightness +3.5 — the same step every block here uses. */
  --ar-ink: #d2d7da;
  --ar-ink-soft: #a7afb7;
  --ar-ink-faint: #85919b;
  --ar-line: #2e5679;
  --ar-line-strong: #3d698d;
}
:root[data-ar-theme="dark"] body.admin-color-blue .ar-about-snippet { background: #0f1f2d; }
/* ⭐ AND THE ACCENT, the same catch on the room he actually runs — 7.1's Blue.
   ⚠ IT DID NOT MOVE FOR THE ARITHMETIC. The green reads 4.48:1 on this card —
   a hair under the floor, not the outright failure it was on the bright-blue
   room that used to live below this one. It moves for the reason he gave: a
   green pass mark on a navy room is a second hue with nothing to explain it.
   ⚠ THE SCHEME'S OWN BLUE, LIFTED. #437aa8 is this menu's highlight and what
   light mode already wears, but only 2.26:1 here, so it rises at its own hue and
   saturation (207.3°, 43%) from L 46% to 75%: #a4c2db, 5.55:1 on the card, 7.99
   on the page, 4.86 on --ar-surface-2. As a GROUND it carries --ar-on-signal
   (#14120e) at 10.05:1 — the four places app.css paints text on the accent.
   ⛔ --ar-chrome-line names the accent as a LITERAL because the base night rule
   mixes the green literal, not var(--ar-accent); a room that re-keys the accent
   and leaves this one out keeps a green hairline. */
/* ⭐ AND THE RAIL KEEPS A GREEN OF ITS OWN — his call, 2026-08-21, given as the
   two rails side by side: "apply this in blue light/dark mode: #a0c49c … I
   think it should be --ar-chrome: #a0c49c in dark mode."
   ⛔ SO THE CHROME LEAVES THE ACCENT HERE. Everything above still holds — the
   scheme's blue is the accent, the good mark and the washes — but the score
   card's identity (its ring, band word, kicker, rung ticks and "Next:" line)
   goes back to a green, one step lighter than the base night sage.
   ⚠️ It costs nothing at night: 5.34:1 on this room's card against the pale
   blue's 5.56. ⚠️ Its light-mode twin is the expensive one — see the rug rule
   at the end of this section.
   ⚠️ --ar-chrome-bright and --ar-chrome-line are LEFT ON THE BLUE, deliberately
   and flagged to him: the first is the focus step declared as "above the
   accent" and the second is the card hairline, and both read as the scheme
   rather than as the score card. If the green should carry them too, they are
   two more lines here — not a silent consequence of this one. */
:root[data-ar-theme="dark"] body.admin-color-blue {
  /* ⭐ THE WHOLE NIGHT ACCENT IS THE GREEN — his call, 2026-08-21, minutes after
     asking for the chrome alone: "in blue, in dark mode, set accent to
     #a0c49c". So the room stops carrying two identities and the pale blue
     #a4c2db is retired; --ar-good and every wash below follow the token.
     ⚠️ IT COSTS ESSENTIALLY NOTHING, measured against what it replaces: card
     5.34:1 (was 5.56), raised 4.68 (4.87), page 6.84 (7.12), text ON the accent
     9.68 (10.08), and the switch knob actually improves, 1.86 -> 1.93.
     ⛔ THIS REVERSES THE NOTE ABOVE, which argued the green out of this room on
     the grounds that "a green pass mark on a navy room is a second hue with
     nothing to explain it". His answer is that the green is now the ONLY hue
     here — accent, good and chrome are one value — so there is no second one
     left to explain. The paragraph above is kept because its arithmetic is
     still the record of why #437aa8 could not serve. */
  --ar-accent: #a0c49c;
  --ar-good: var(--ar-accent);
  /* One value again, so this points at the token instead of naming it twice. */
  --ar-chrome: var(--ar-accent);
  /* ⚠️ BOTH OF THESE MOVED WITH THE ACCENT, and had to. This one is defined as
     "the step above the accent" — the base night pair's own +0.082 L, taken at
     this hue — and a pale BLUE step above a green accent was the mismatch left
     over from the previous round. */
  --ar-chrome-bright: #b9d4b6;
  /* ⛔ Still a LITERAL, for the reason written above: the base night rule mixes
     the green hex rather than var(--ar-accent), so a room that re-keys the
     accent and leaves this out keeps a hairline nobody chose. */
  --ar-chrome-line: color-mix(in srgb, #a0c49c 24%, var(--ar-line));
  --ar-good-wash: color-mix(in srgb, var(--ar-good) 10%, var(--ar-surface));
  --ar-good-tint: color-mix(in srgb, var(--ar-good) 26%, var(--ar-surface));
  --ar-accent-wash: color-mix(in srgb, var(--ar-accent) 12%, var(--ar-surface));
  --ar-accent-soft: color-mix(in srgb, var(--ar-accent) 20%, var(--ar-surface));
}
/* -- Blue · the app by day --------------------------------------------------- */
/* ⭐ THE DAY ACCENT IS THE SCHEME'S HIGHLIGHT — his call, 2026-08-21: "set blue
   light accent: #437aa8". That is `colors[2]`, WordPress's own current-item
   colour for this scheme, and what light mode already paints its menu with.
   ⛔⛔ THIS IS A DELIBERATE OVERRULE OF THE GATE, and the number is why it has to
   be written here rather than in PHP. Admin::scheme_css() prefers colors[2]
   wherever it CARRIES TEXT, and this is the one core scheme that misses:
   #437aa8 is 4.4999:1 on the cream card against a 4.5 floor — four
   ten-thousandths short, which the arc's notes already record as deliberate. It
   is 4.02:1 on the page ground. The ink it replaces read 8.09:1.
   ⭐ So the gate stays exactly as it is — no epsilon, no special case in the
   maths — and this scheme states its own preference in its own section, where
   the cost is visible next to it. A future WordPress retune of blue moves the
   registered value and this line, not the rule.
   ⚠️ ALL THREE, or the washes stay keyed to the deep ink: app.css writes them as
   teal literals in light mode and Admin.php re-mixes them from whatever it
   chose, so overriding --ar-accent alone leaves two blues in the wash.
   ⛔ --ar-good IS DELIBERATELY LEFT ON THE INK (#245278, 8.09:1). It carries the
   wordless verdict marks — the tick, the totals dot, the group rung — where a
   4.5-marginal blue would be the weakest thing on the screen, and it is a
   different question from what a link wears. Flagged to him; one line here if
   he wants them one colour. */
:root:not([data-ar-theme="dark"]) body.admin-color-blue {
  --ar-accent: #437aa8;
  --ar-accent-wash: color-mix(in srgb, #437aa8 12%, var(--ar-surface));
  --ar-accent-soft: color-mix(in srgb, #437aa8 20%, var(--ar-surface));
}

/* -- Blue · the rug by day -------------------------------------------------- */
/* ⭐ THE SAME GREEN BY DAY, his call in the same breath: "apply this in blue
   light/dark mode". By day this rug wears the white treatment Admin.php emits
   for every scheme-coloured ground (--rail-face and --rail-good both #e8e8e8);
   this puts the identity green back on --rail-good alone.
   ⛔ --rail-face IS DELIBERATELY LEFT WHITE. It carries the rung names, their
   counts and the score number — the card's reading matter — and the green is
   the card's IDENTITY: the ring, the band word, the kicker, the ticks and the
   "Next:" line. Re-keying the face too would paint the whole card green.
   ⚠️⚠️ WHAT IT COSTS, and he has the number: #a0c49c is 4.26:1 on this
   scheme's light ink #245278, where the #e8e8e8 it replaces was 6.71. The ring,
   the ticks and the band word are fine — a graphic and large text both answer
   to 3:1 — but the KICKER ("AEO / GEO") and the "Next:" line are small text and
   land under the 4.5 floor. Raised with him; ⛔ do not "fix" it by quietly
   splitting the token into two, which is the thing this file keeps undoing. */
:root:not([data-ar-theme="dark"]) body.admin-color-blue .ar-rail-card.ar-rail-card--readiness {
  --rail-good: #a0c49c;
}

/* ⛔ AND THE HOVER LIFTS WITHIN THE HUE — his catch 2026-08-21, "in blue light
   the hover is not appropriate": the band word rested GREEN and jumped to WHITE
   under the pointer while the ring beside it stayed green.
   ⚠️ NOT A BUG IN THE HOVER — a rule that outlived its ground. Admin.php emits
   `color:#ffffff` for every scheme-coloured rug, and it is right there: that rug
   has --rail-face AND --rail-good both at #e8e8e8, so every line lifts #e8e8e8
   -> #ffffff, one gesture, no hue in it. Putting the identity green back on
   --rail-good left that line lifting from a colour to a non-colour.
   ⭐ So the word lifts to the STEP ABOVE ITS OWN GREEN — the same +0.082 L pair
   this file uses for --ar-chrome-bright, and the same value blue's night block
   now names. #a0c49c -> #b9d4b6 is 1.21:1, a shade under the 1.28-1.36 the
   rooms move their grounds by, and app.css's `filter: brightness(1.08)` on the
   whole block lifts the RING with it, so the row answers as one thing.
   ⛔ .ar-rail-gauge__num IS DELIBERATELY LEFT ON WHITE. It rests at 70% of
   --rail-face, which is still the near-white — so white is a lift for it and
   the same hue it already had. Only the word rests on a colour. */
:root:not([data-ar-theme="dark"]) body.admin-color-blue
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-tier__name {
  color: #b9d4b6;
}
/* ⛔ AND THE SCORE NUMBER STOPS GOING PURE WHITE — his call 2026-08-21, chosen
   from the three on the table: "the number/99 changes to white."
   ⭐ It rests at 70% of --rail-face and now lifts to the FACE ITSELF, so it
   comes to full strength without becoming whiter than the card's own white.
   Same gesture, one step shorter. ⚠️ The rungs still lift to #ffffff and cannot
   do otherwise: --rail-read is 100% here, so they already sit AT the face and
   white is the only headroom left above it. That means the number and the rungs
   now lift to two different whites on one card — raised with him with that
   spelled out, and taken. ⛔ Do not "harmonise" it by dropping the rungs back to
   a veil: that is the hierarchy he removed on 2026-08-20. */
:root:not([data-ar-theme="dark"]) body.admin-color-blue
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-gauge__num {
  color: var(--rail-face);
}

/* ===========================================================================
   ECTOPLASM — two grounds share one room; only the highlight differs.
   ======================================================================== */

/* -- Ectoplasm · both variations -------------------------------------------- */
/* ---- Ectoplasm — the violet key. Its ground is the most saturated of the four, so
   the inks carry the least colour of any block here — a violet text on a violet
   ground reads as a haze. */
:root[data-ar-theme="dark"] body.admin-color-ectoplasm {
  --ar-paper: #2a1b3e;
  --ar-surface: #3a2853;
  --ar-surface-2: #3f2d57;
  --ar-field: #422e5f; /* surface, lightness +3.5 — the same step every block here uses. */
  --ar-ink: #cbc8d0;
  --ar-ink-soft: #9d97a5;
  --ar-ink-faint: #827b8c;
  --ar-line: #4d3969;
  --ar-line-strong: #5e497c;
  /* The grey-warmed sand Fresh and Midnight take — these grounds are
     cool, and the base brass ran hot on them. */
  --ar-note-gold: #b2a484;
  --ar-note-glow: #b2a484;
}
/* ⭐ THE NIGHT ACCENT IS AN OLIVE, AND THE RAIL A LIGHTER ONE — his call,
   2026-08-21: "in ecto dark, set accent to #7c8841 and ar--crome to #95a353".
   It puts this room's night in the same hue family as the lime he gave its DAY
   rug (#b0c35b) and as its own pre-7.1 room's #a3b745, instead of the base sage
   that belongs to the charcoal schemes.
   ⭐⭐ AND THE CHROME SPLITS OFF THE ACCENT, which is the part that saves it.
   Everywhere else at night the two are one value; here the identity sits a step
   and a half above the accent, so the rail — ring, band word, kicker — reads
   where the accent alone would not:

       accent #7c8841   page 4.12:1   card 3.39:1   raised 3.16:1
       chrome #95a353   page 5.77:1   card 4.75:1   raised 4.43:1

   ⚠️⚠️ WHAT IT STILL COSTS, and he has the numbers: the ACCENT is under the 4.5
   text floor on both the card and the raised ground, and the PASS pill — which
   reads --ar-good, and --ar-good aliases the accent at night — lands at 3.03:1,
   exactly on the graphic floor. What this replaced read 5.66 / 5.28 / 4.79.
   ⛔ So the accent's reach is the thing to watch, not the rail: links, tab
   underlines, numbers, chart bars and every verdict mark take #7c8841.
   ⭐ The same hue two stops lighter is already in this file — #a3b745, his own
   08-20 pick for the pre-7.1 room below, reads 5.85 here — if he ever wants the
   family without the cost.
   ⛔ SLUG-LEVEL ON PURPOSE, so the variation below still wins for the older
   generation: that room keeps the #a3b745 he chose for it. */
:root[data-ar-theme="dark"] body.admin-color-ectoplasm {
  --ar-accent: #7c8841;
  /* ⛔ NOT var(--ar-accent) EITHER — his call, 2026-08-21, and it is the one
     that answers the cost written above. The verdict marks were riding the
     accent at 3.39:1 on the card and 3.03 on the PASS pill; on #95a446 they
     read 4.77 / 4.15, so a "pass" is legible again while the accent stays the
     deeper olive he chose for links and bars. ⚠️ --ar-good-wash and
     --ar-good-tint are mixes of this token and follow it without being named. */
  --ar-good: #95a446;
  /* ⛔ NOT var(--ar-accent) — his value, and the only room in this file where
     the rail identity and the accent are deliberately two colours. ⚠️ It sits a
     hair under --ar-good (4.75 vs 4.77 on the card) and is a different hue by
     two degrees: they are separate decisions that happened to land together. */
  --ar-chrome: #95a353;
  /* The base pair's +0.082 L step, taken above the CHROME rather than the
     accent, because that is what this token is a step above here: 5.84:1 on the
     card, a 1.23:1 lift. */
  --ar-chrome-bright: #a7b46c;
  /* ⛔ A LITERAL, like every other room that re-keys: the base night rule mixes
     the green hex, not the token. Mixed from the CHROME — it is the rail card's
     own hairline, and it belongs to the identity, not to the accent. */
  --ar-chrome-line: color-mix(in srgb, #95a353 24%, var(--ar-line));
  --ar-good-wash: color-mix(in srgb, var(--ar-good) 10%, var(--ar-surface));
  --ar-good-tint: color-mix(in srgb, var(--ar-good) 26%, var(--ar-surface));
  --ar-accent-wash: color-mix(in srgb, var(--ar-accent) 12%, var(--ar-surface));
  --ar-accent-soft: color-mix(in srgb, var(--ar-accent) 20%, var(--ar-surface));
}
:root[data-ar-theme="dark"] body.admin-color-ectoplasm .ar-about-snippet { background: #201530; }
:root[data-ar-theme="dark"] body.admin-color-ectoplasm .ar-aud__note {
  border-color: color-mix(in srgb, var(--ar-note-gold) 32%, var(--ar-line));
}

/* -- Ectoplasm · before 7.1 — the lime highlight  (agentimus-scheme-523f6d) -- */
/* ⭐ HIS CALL, 2026-08-20, from heera.it: "--ar-accent: #a3b745 in dark mode".
   That is this generation's colors[2] — the lime WordPress paints on the current
   menu item — and at night it is the better colour by measurement as well as by
   provenance: 5.85:1 on this card against the base green's 5.66, 7.11 on the page
   against 6.88.

   ⛔ THE ROOM ITSELF IS SHARED, only the accent is not. Both ectoplasms sit on
   the same violet ground, so the block above serves either; what changed between
   generations is the highlight, and 7.1's is #646c3e — an olive that measures
   2.34:1 here. It stays on the base green, which is why this is keyed to the
   colour rather than to the slug.

   ⚠️ AND THE TWO THAT MUST MOVE WITH IT. --ar-good and --ar-chrome are declared
   FROM the accent at :root, not at body, so they resolve there and would have
   been left on the night green — this file's own header says so at the top. The
   washes are mixes of --ar-good and need restating for the same reason.
   ⛔ Light mode is untouched: #a3b745 is 2.19:1 on the cream card, so
   carries_text() refuses it there and the ink #413256 (11.37:1) keeps the job. */
:root[data-ar-theme="dark"] body.admin-color-ectoplasm.agentimus-scheme-523f6d {
  --ar-accent: #a3b745;
  --ar-good: var(--ar-accent);
  --ar-chrome: var(--ar-accent);
  --ar-chrome-bright: #b3c462; /* the base pair's +8.2 L step, at this hue — 6.83:1 */
  --ar-chrome-line: color-mix(in srgb, #a3b745 24%, var(--ar-line));
  --ar-good-wash: color-mix(in srgb, var(--ar-good) 10%, var(--ar-surface));
  --ar-good-tint: color-mix(in srgb, var(--ar-good) 26%, var(--ar-surface));
  --ar-accent-wash: color-mix(in srgb, var(--ar-accent) 12%, var(--ar-surface));
  --ar-accent-soft: color-mix(in srgb, var(--ar-accent) 20%, var(--ar-surface));
}

/* -- Ectoplasm · the rug by day ---------------------------------------------- */
/* ⭐ HIS PICK, 2026-08-21: "#b0c35b, set in light mode of Ecto". The third rug to
   take the treatment blue started — the identity colour back on --rail-good,
   --rail-face left white because it carries the rung names, their counts and the
   score number.
   ⭐ AND IT IS THE ONE THAT COSTS NOTHING: #b0c35b reads 6.02:1 on this scheme's
   light ink #432e5f, where blue and ocean landed at 4.25 and put their kicker
   under the floor. The purple is deep enough to carry a lime; the two blue-greens
   were not. (The #e8e8e8 it replaces was 9.55.)
   ⚠️ ONE RULE COVERS BOTH GENERATIONS — SCHEME_INKS maps #413256 and #392751 to
   the same light ink #432e5f, so unlike this scheme's NIGHT, its day has one
   room and needs no agentimus-scheme- variation.
   ⛔ The hover matches blue's GESTURE, not blue's step. A +0.082 L step lands at
   1.14:1 here because this green rests darker; #c6d388 is 1.21:1, the same lift
   blue's word makes, which is what the eye actually reads. */
:root:not([data-ar-theme="dark"]) body.admin-color-ectoplasm .ar-rail-card.ar-rail-card--readiness {
  --rail-good: #b0c35b;
}
:root:not([data-ar-theme="dark"]) body.admin-color-ectoplasm
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-tier__name {
  color: #c6d388;
}
/* The score number comes to full strength instead of past it — see the note in
   the BLUE section. */
:root:not([data-ar-theme="dark"]) body.admin-color-ectoplasm
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-gauge__num {
  color: var(--rail-face);
}

/* ⭐ AND THE ✓ ON THE REGISTRATIONS CARD WEARS THE BRIGHTER OLIVE — his call,
   2026-08-21, chosen from three: "the light mode should show the same colour
   style in All registrations … using its chrome/accent colour, or maybe
   --ar-good."
   ⚠️ WHY ONLY THE MARK. That row is one value today — ✓, text and arrow all on
   --ar-good, which on this scheme by day is #646c3e, its own light accent, at
   5.50:1. It already IS the theme colour; what the night card has and this one
   lacks is a mark that reads brighter than the words beside it. Every lighter
   olive in the family fails as TEXT on the cream card — the night accent 3.78,
   the night good 2.69, the night chrome 2.70, the day rail's lime 1.91.
   ⭐ THE RING IS A GRAPHIC, so it answers to 3:1 rather than 4.5, and #7c8841
   clears that at 3.78 while the words keep the value that carries them. One
   spot of the scheme's colour, nothing pushed under a floor.
   ⛔ THE TEXT AND THE ARROW ARE NOT IN THIS RULE, deliberately: they are the
   sentence, and a sentence answers to 4.5. ⛔ Nor is the hover, which takes
   --ar-accent for the whole row by app.css's own rule and should keep doing so.
   ⚠️ Ectoplasm only. The same idea would suit any scheme whose day accent is
   dark, but the value is this one's; a second scheme is a second line. */
:root:not([data-ar-theme="dark"]) body.admin-color-ectoplasm
  .ar-rail-regcard.is-ok .ar-rail-regcard__icon {
  color: #7c8841;
}

/* ===========================================================================
   OCEAN — two grounds, one slug, and ONE night: they are the same teal.
   ======================================================================== */

/* -- Ocean · both variations ------------------------------------------------ */
/* ⭐ ONE NIGHT FOR BOTH GROUNDS, and Ocean got here first. Its two menus are
   1.0deg apart — #39535a is hue 192.7, #738e96 is 193.7, the same teal — so
   rotating for the older one and re-solving at the same luminance returned this
   room UNCHANGED, to the byte: two rooms would have been two copies of one
   palette. Blue reached the same place from the other direction on 2026-08-20,
   by his decision rather than by the arithmetic, and every scheme in this file
   is now heading for one room apiece.
   ⛔ WHAT THE OLDER MENU DIFFERS IN IS LIGHTNESS, 28.8% against 52.0%, and that
   is the one thing a night must not inherit from a menu. A room mixed at the
   bright menu's own lightness was measured on 2026-08-20 and could not carry
   the palette at all: --ar-accent 2.40:1 on its card, --ar-warn 2.81,
   --ar-bad 2.12 — every state under the floor, with only hue telling a pass
   from a failure. The ceiling was the ground itself: on a #576c72 card, pure
   BLACK reaches 3.79:1 and pure white 5.54:1, so nothing on it could pass.
   ⭐ On this room the same tokens read 4.45 · 5.20 · 3.93, and the ink family
   goes 5.30 -> 7.02:1. His call, 2026-08-20: "apply same way like blue".
   ⚠️ This replaces a ladder he set by eye on heera.it against the bright menu.
   It was the right instinct for a LIGHT ground and the wrong ground to have. */
:root[data-ar-theme="dark"] body.admin-color-ocean {
  --ar-paper: #263438;
  --ar-surface: #2f444a;
  --ar-surface-2: #39535a;
  --ar-field: #364e55; /* surface, lightness +3.5 — the same step every block here uses. */
  --ar-ink: #d3d6d7;
  --ar-ink-soft: #aaafb1;
  --ar-ink-faint: #8a9294;
  --ar-line: #41585f;
  --ar-line-strong: #516b72;
}
/* The grey-warmed sand Fresh and Midnight take — these grounds are cool, and the
   base brass ran hot on them. ⭐ Slug-only: both Oceans are cool, so this one
   value serves whichever WordPress is being worn. Same split Blue and Midnight
   make. */
:root[data-ar-theme="dark"] body.admin-color-ocean {
  --ar-note-gold: #b2a484;
  --ar-note-glow: #b2a484;
}
:root[data-ar-theme="dark"] body.admin-color-ocean .ar-aud__note {
  border-color: color-mix(in srgb, var(--ar-note-gold) 32%, var(--ar-line));
}
/* The hue-carrying literal left in app.css's dark overrides: the About snippet
   sits below the page. ⭐ Slug-only with the room itself.
   ⚠️ The button is worth knowing about here. Its resting ground is
   --ar-surface-2, which on Ocean IS the bar (#39535a) — his pick for the ink in
   light mode, arriving at the night button by a different road. The hover lifts
   from it by rule; there is no per-room value to keep in step. */
:root[data-ar-theme="dark"] body.admin-color-ocean .ar-about-snippet { background: #1e292c; }
/* ⚠️ AND THE HOVER LABEL, which the lift had quietly broken: --ar-ink #d3d6d7
   reads 4.04:1 on the hovered ground (#51686e), under the floor, while the
   resting button is a comfortable 5.30:1. The ground is derived and correct —
   it is the label that has to move with it. Same mechanism sunrise carries. */
:root[data-ar-theme="dark"] body.admin-color-ocean
  .ar-btn:not(.ar-btn--ghost):not(.ar-btn--danger) { --ar-btn-hover-ink: #eef0f0; }

/* -- Ocean · the rug by day -------------------------------------------------- */
/* ⭐ THE SAME TREATMENT BLUE TOOK, on his word 2026-08-21: "apply same style in
   light mode of ocean". By day this rug wears Admin.php's white treatment
   (--rail-face and --rail-good both #e8e8e8); the identity green goes back on
   --rail-good alone, and --rail-face stays white because it carries the rung
   names, their counts and the score number — the card's reading matter.
   ⚠️⚠️ SAME COST AS BLUE'S, and the same number almost exactly: #a0c49c is
   4.25:1 on this scheme's light ink #39535a, where the #e8e8e8 it replaces was
   6.70. The ring, the ticks and the band word are fine — a graphic and large
   text both answer to 3:1 — but the KICKER and the "Next:" line are small text
   and land under 4.5. Raised with him on the blue and taken again here. */
:root:not([data-ar-theme="dark"]) body.admin-color-ocean .ar-rail-card.ar-rail-card--readiness {
  --rail-good: #a0c49c;
}

/* The same lift, for the same reason — see the note in the BLUE section. */
:root:not([data-ar-theme="dark"]) body.admin-color-ocean
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-tier__name {
  color: #b9d4b6;
}
/* ⛔ AND THE SCORE NUMBER STOPS GOING PURE WHITE — his call 2026-08-21, chosen
   from the three on the table: "the number/99 changes to white."
   ⭐ It rests at 70% of --rail-face and now lifts to the FACE ITSELF, so it
   comes to full strength without becoming whiter than the card's own white.
   Same gesture, one step shorter. ⚠️ The rungs still lift to #ffffff and cannot
   do otherwise: --rail-read is 100% here, so they already sit AT the face and
   white is the only headroom left above it. That means the number and the rungs
   now lift to two different whites on one card — raised with him with that
   spelled out, and taken. ⛔ Do not "harmonise" it by dropping the rungs back to
   a veil: that is the hierarchy he removed on 2026-08-20. */
:root:not([data-ar-theme="dark"]) body.admin-color-ocean
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-gauge__num {
  color: var(--rail-face);
}

/* ===========================================================================
   SUNRISE — one room, every generation.
   ======================================================================== */

/* -- Sunrise · both variations ---------------------------------------------- */
/* Coffee's quieter bronze, not the cool schemes' sand: this ground is already
   warm, and the sand doubled it. ⭐ Slug-only — both Sunrises are warm reds, so
   one bronze serves either. Same split Blue, Midnight and Ocean make. */
:root[data-ar-theme="dark"] body.admin-color-sunrise {
  --ar-note-gold: #af9a6d;
  --ar-note-glow: #af9a6d;
}
:root[data-ar-theme="dark"] body.admin-color-sunrise .ar-aud__note {
  border-color: color-mix(in srgb, var(--ar-note-gold) 32%, var(--ar-line));
}

/* -- Sunrise · every variation ---------------------------------------------- */
/* ---- Sunrise — the warm red. ⚠️ The brightest surface of the four (his pick), which
   is why its inks run lighter than the others' — the same ratios cost more
   lightness on a ground this near the middle.
   ⭐ ONE ROOM FOR EVERY GENERATION — his call, 2026-08-20, the third and last
   scheme to be collapsed. Everything here is mixed for #8a312d, WP 7.1's deep
   red bar; the older palette, which registered #b43c38 and painted its menu a
   bright #cf4944, now wears it too. That room had his own anchors in it
   (--ar-surface #a24744, --ar-paper #7e3838) and it is gone with the rest.
   ⚠️ ⛔ IT WAS ALSO THE WORST-CARRYING ROOM IN THIS FILE, and losing it is a
   gain the arithmetic already argued for: on that bright ground the night's
   status family read --ar-accent/--ar-good 2.59:1, --ar-warn 3.02, --ar-bad
   2.29 — every state under the floor. This room clears them. */
:root[data-ar-theme="dark"] body.admin-color-sunrise {
  --ar-paper: #433030;
  --ar-surface: #693634;
  --ar-surface-2: #643e3c;
  --ar-field: #753c3a; /* surface, lightness +3.5 — the same step every block here uses. */
  --ar-ink: #e0dcdb;
  --ar-ink-soft: #bbb2b1;
  --ar-ink-faint: #a09392;
  --ar-line: #7e4846;
  --ar-line-strong: #915856;
}
:root[data-ar-theme="dark"] body.admin-color-sunrise .ar-about-snippet { background: #372727; }
/* ⭐ HIS PICK, 2026-08-20, set by eye and arrived at in three steps: the bar
   itself (#8a312d, what this scheme wears in light), then #754341, then this.
   ⚠️ WHAT THE LAST STEP BOUGHT: #754341 sat 1.21:1 from the card it rests on, so
   the button was held by its border rather than by its own ground. #8b4c49 is
   lighter at the same warmth and separates on the ground itself.
   ⚠️ Ocean rests its buttons on its bar for free: its --ar-surface-2 IS the bar.
   Sunrise's surface-2 is #643e3c, so this scheme names its own ground.
   ⭐ AND THE HOVER IS NAMED HERE, the one room in the file that needs to be:
   #a45a57, his pick 2026-08-20. The derived lift (12% toward white) washed this
   ground out — the most saturated in the file, so the mix cost it 8 points of
   saturation and landed on a dusty pink. This rises at the SAME saturation
   instead (31% both), 1.29:1.
   ⛔ AND THE LABEL WITH IT. --ar-ink #e0dcdb reads 3.69:1 on that hover, under
   the floor, so the ink goes near-white for the hovered state only: #fafafa,
   4.81:1. The ground is his and the readability is paid for on the other side —
   ⛔ do not "simplify" this back to one declaration.
   ⛔ --ghost and --danger are held out. They paint themselves, and a ghost on the
   bar would be a solid red slab where the design wants the quiet option. */
:root[data-ar-theme="dark"] body.admin-color-sunrise
  .ar-btn:not(.ar-btn--ghost):not(.ar-btn--danger) {
  --ar-btn-ground: #8b4c49;
  --ar-btn-hover: #a45a57;
  --ar-btn-hover-ink: #fafafa;
}

/* -- Sunrise · the bars by day ------------------------------------------------- */
/* ⭐ HIS PICK, 2026-08-21: "in sunrise light mode use #8e0403 for those bars, all
   stat bars, the vertical/horizontal." So the six measured bars go to this
   scheme's own deep red while its links, tabs, numbers and chips keep the
   #ad631e the accent gives them.
   ⭐ ONE LINE, NOT SIX SELECTORS — --ar-bar exists in app.css for exactly this,
   defaulting to var(--ar-accent) so every other scheme is untouched. A bar is a
   filled AREA judged against its neighbours; a link is small text judged against
   the page. Wanting one darker is not wanting the other darker.
   ⚠️ WHAT IT MEASURES: #8e0403 is 9.52:1 on the card and 8.50 on the page —
   where the accent it replaces reads 4.51. The vertical strips wear the 0.82
   veil over it, which lands at 6.84:1, so even the quietest bar in the run is
   twice the floor a graphic answers to. ⛔ Nothing here is at risk of being too
   faint; the reason for the change is that he wants the RED, not more contrast. */
:root:not([data-ar-theme="dark"]) body.admin-color-sunrise {
  --ar-bar: #8e0403;
}

/* -- Sunrise · the rug by day -------------------------------------------------- */
/* ⭐ THE LAST RUG TO TAKE THE TREATMENT blue started — his call 2026-08-21, once
   the audit showed sunrise was the only scheme still wearing the plain white.
   (fresh, modern and midnight are NOT gaps: their inks are greys, carries_colour
   refuses them, no white-out is emitted and their rugs keep the designed green.
   Light is hand-dressed monochrome on purpose.)
   ⭐⭐ GREEN IS THE ONLY HUE LEFT ON THIS CARD, and that is the argument for it
   rather than an accident. The ground is hue 3, the failure mark 12, the warn
   gold 41 — all three of the warm family are spoken for. #a0c49c sits at hue
   114: 111 degrees off the ground, 102 off the failure, 73 off the gold. On a
   red card it is the one colour that cannot be mistaken for any of them.
   ⚠️ 4.25:1 on this ink — the same number blue and ocean landed at, and the same
   trade: the ring, the ticks and the band word are fine (a graphic and large
   text answer to 3:1), the KICKER and the "Next:" line are small text and sit
   under 4.5. Taken knowingly on those two schemes and taken again here.
   ⛔ Not its own #ad631e highlight, which is 1.79:1 on this ground — invisible.
   ⛔ Not the sage #8ab685 either: same hue, but 3.56:1 where this reads 4.25.
   ⭐ The hover matches the GESTURE the other four make — #b9d4b6, a 1.21:1 lift. */
:root:not([data-ar-theme="dark"]) body.admin-color-sunrise .ar-rail-card.ar-rail-card--readiness {
  --rail-good: #a0c49c;
}
:root:not([data-ar-theme="dark"]) body.admin-color-sunrise
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-tier__name {
  color: #b9d4b6;
}
/* The score number comes to full strength instead of past it — see BLUE. */
:root:not([data-ar-theme="dark"]) body.admin-color-sunrise
  .ar-rail-card--readiness .ar-rail-readiness--link:hover .ar-rail-gauge__num {
  color: var(--rail-face);
}

/* -- Sunrise · the failing rug, by day ---------------------------------------- */
/* ⛔ RED ON RED — his catch 2026-08-21, asking what a failed rug would even look
   like here. This is the ONLY scheme where the question arises: by day its card
   IS the scheme's deep red #8a312d (hue 3), and the failure mark it inherits is
   --ar-bad-on-ink #e08a72 (hue 13). Ten degrees apart, 3.15:1 — visible, but it
   reads as a lighter TINT of the card rather than as an alarm.
   ⚠️ THE MIRROR OF A GUARD THAT ALREADY EXISTS. verdict_can_take() refuses to
   let this scheme's colour stand in for GREEN, on the grounds that hue 3 sits
   four degrees from --ar-bad and every PASSING check would paint red. Nothing
   asked the reverse — whether --ar-bad still reads once the card went red.
   ⭐ ON A RED GROUND A FAILURE CAN ONLY SEPARATE BY WEIGHT, not by hue, so his
   pick goes lighter and stays in the family: #f2bcae, 4.92:1, still hue 12.
   ⛔ NOT the white the good state wears (#e8e8e8, 6.70:1): it separates best of
   all and would erase the difference between a pass and a failure, which is the
   one distinction this card exists to make.
   ⚠️ Day only, and this scheme only. At night the card is the app's own dark and
   the inherited salmon is correct there. */
:root:not([data-ar-theme="dark"]) body.admin-color-sunrise .ar-rail-card.ar-rail-card--readiness {
  --ar-bad-on-ink: #f2bcae;
}

/* ===========================================================================
   LIGHT — the one scheme that looks the same in both modes.
   ======================================================================== */
/* ---- Light — THE ONE SCHEME THAT LOOKS THE SAME IN BOTH MODES -------------
   His call, 2026-08-19: on wp-admin's Light scheme the plugin keeps one
   palette whichever way the toggle stands. Every other block here is
   dark-only, because light mode wears the designed cream everywhere; this
   scheme is the exception, and it is why the first selector carries no theme.

   ⚠️⚠️ FIRST CUT WAS WRONG, and it is worth naming so nobody rebuilds it: the
   greys were assigned paper #e8e8e8 / surface #d9d9d9, which put the CARD
   BELOW THE PAGE — 85.1% lightness under 91.0%. Every other palette in this
   plugin lifts the card OFF the page (cream: page 92.9 → card 98.4; dark:
   page 10.6 → card 17.1), and a recessed card reads as dirty rather than
   designed. He said he did not like it; the measurement said why.

   ⭐ So the card is the lightest thing here too. The page is wp-admin's own
   Light body (#e5e5e5) so the plugin's canvas is continuous with the chrome
   around it, and the card sits 18 luminance points above it — a stronger lift
   than the cream palette's 11, which is this SCHEME's idiom: WordPress's own
   Light boxes are white on that same grey. A dialect should speak its room's
   dialect, not the base's.

   ⚠️ It must beat the CREAM at :root (a body class outranks :root) AND the
   dark palette at :root[data-ar-theme="dark"] — which is why the second block
   restates the grounds rather than inheriting them.
   ⭐ The toggle still does something honest: the ink steps down a shade.
   ⛔ What it must NOT do is flip the ink light. The ground stays near-white,
   and light text on it is unreadable at any weight.
   -------------------------------------------------------------------------- */
body.admin-color-light {
  /* ⚠️ HIS THIRD ROUND, and the values are sampled from the screen he pointed
     at rather than chosen: page #f5f5f5, card #fbfbfb, panel #f1f1f1, borders
     #e4e4e4. My second round dropped the desk to #d9d9d9 for 27 luminance
     points of lift; he wanted the opposite — 5 points, where a card is a sheet
     laid on paper of nearly the same shade and the border does the separating.
     ⛔ Do not "restore contrast" here: the near-flat ground IS the choice. */
  --ar-paper: #f5f5f5;
  --ar-surface: #fbfbfb;
  --ar-surface-2: #f1f1f1;
  --ar-field: #ffffff;  /* wp-admin paints fields white by day and outranks .ar-input; the night rule outranks wp-admin. Same white either way. */
  /* ⚠️ Measured against the PANEL, the darkest of the three grounds, because
     text sits on all of them. */
  --ar-ink: #1e1e1e;      /* 14.8:1 on a panel · 16.1:1 on a card */
  --ar-ink-soft: #5a5a5a; /*  6.1:1 · 6.7:1 */
  --ar-ink-faint: #6f6f6f;/*  4.5:1 · 4.9:1 — the floor, held on the worst ground */
  --ar-line: #e4e4e4;
  --ar-line-strong: #d2d2d2;
}
/* Dark mode on the Light scheme: THE SAME ROOM, UNCHANGED — his call,
   2026-08-19, and it replaced an earlier one. The ink used to step down a
   shade here so the toggle did something; he asked for the palette to be
   identical and the score card to be the only thing that moves. So every
   value below is the day's, restated — ⛔ not inherited, because the base dark
   palette at :root outranks a plain body class and would otherwise take the
   grounds back. */
:root[data-ar-theme="dark"] body.admin-color-light {
  --ar-paper: #f5f5f5;
  --ar-surface: #fbfbfb;
  --ar-surface-2: #f1f1f1;
  --ar-field: #ffffff;  /* wp-admin paints fields white by day and outranks .ar-input; the night rule outranks wp-admin. Same white either way. */
  --ar-ink: #1e1e1e;
  --ar-ink-soft: #5a5a5a;
  --ar-ink-faint: #6f6f6f;
  --ar-line: #e4e4e4;
  --ar-line-strong: #d2d2d2;
  /* ⛔ The dark palette's gold is picked for a dark ground; on a near-white
     card it washes out. The light palette's own gold takes over with it. */
  --ar-note-gold: var(--ar-warn-deep);
  --ar-note-glow: #ebc98a;
  /* ⛔ AND THE RAIL'S IDENTITY, which is declared at :root for the night and so
     arrives from a palette this scheme never adopted — a green (#8ab685) drawn
     for a charcoal card, landing at 2.2:1 on a white one.
     ⚠️⚠️ NAMED AS A LITERAL, not as var(--ar-accent): the accent token is
     itself redeclared by the dark palette at :root, so pointing at it here
     fetched the night green straight back — the bug this line exists to fix,
     wearing the fix's own clothes. */
  --ar-chrome: #146b64;
  --ar-chrome-bright: #146b64;
  --ar-chrome-line: var(--ar-line);

  /* ⛔⛔ AND EVERY STATE COLOUR WITH THEM — the leak he found, and the one that
     shows how far this goes. The night palette redeclares 43 tokens; this
     scheme adopts none of its grounds, so 29 of them stayed night values in a
     room that is still the day's. His case: the "last time's numbers" strip
     paints from --ar-warn-wash, which at night is a wash mixed FOR a dark
     ground, so a cream notice came out charcoal on a white card. The same was
     true of every good/warn/bad/info wash, tint and deep on the screen.
     ⭐ These are the day's own values, lifted from :root — restated rather than
     inherited, because a plain body class cannot outrank :root[data-ar-theme].
     ⚠️ Keep them generated from that block if it ever moves; a hand-copied
     palette is a palette that drifts.
     ⛔ Not in this list, deliberately: the grounds, inks, lines and the note
     gold above, which this scheme sets for itself. */
  --ar-accent: #146b64;
  --ar-good: #2f7a4c;
  --ar-warn: #ad7b18;
  --ar-bad: #b93c2b;
  --ar-info: #2f5f9e;
  --ar-hover: color-mix(in srgb, #8bc34a 22%, transparent);
  --ar-good-wash: #eef5f0;
  --ar-good-tint: #bcdcc6;
  --ar-good-strong: #2f9e5e;
  --ar-good-deep: #1d7a45;
  --ar-warn-wash: #f7f1df;
  --ar-warn-tint: #e6d5a8;
  --ar-warn-deep: #96690f;
  --ar-bad-wash: #f8ebe8;
  --ar-bad-tint: #e6c1b9;
  --ar-bad-strong: #c0392b;
  --ar-bad-deep: #8c2f22;
  --ar-info-wash: #e9eff7;
  --ar-info-tint: #c3d2e6;
  --ar-info-strong: #3a6ea5;
  --ar-info-deep: #2c5680;
  --ar-accent-wash: #f0f6f4;
  --ar-accent-soft: #e3efec;
  --ar-teal-on-ink: #57b6a6;
  --ar-teal-on-ink-hover: #6fc7b8;
  --ar-on-signal: #fff;
  --ar-ink-hard: #000;
  --ar-shade: #1b1913;
  --ar-skel-sheen: rgba(255, 255, 255, 0.45);
}
/* ⭐ "Keep everything the same" reaches the rail itself. Two night rules paint
   every rail card from the chrome — the section labels and the card borders —
   and on this scheme the day's answer is a quiet grey label and a plain line.
   ⛔ The readiness card is not included: its own rule below is one class more
   specific, which is what leaves the rug the only thing that moves. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-rail-card { border-color: var(--ar-line); }
:root[data-ar-theme="dark"] body.admin-color-light .ar-rail-card__label { color: var(--ar-ink-faint); }
/* ⭐ THE ONE THING THAT CHANGES AT NIGHT ON THIS SCHEME: the rug. Everything
   else above is the day's, restated. The card inverts to his charcoal, the way
   it does on every other scheme by day — and that hands its colours back their
   proper ground: --ar-good-on-ink (5.7:1 here) and --ar-warn-on-ink (6.6:1)
   were drawn for a dark card, with none of the compromise the daytime rug
   forces on a mid-grey ground, where nothing coloured can reach 4.5 in
   either direction. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-rail-card.ar-rail-card--readiness {
  background: #333333;   /* his value — the charcoal, not a true black */
  border-color: #333333;
  --rail-face: #f2f2f2;  /* 11.7:1 on the charcoal — the veils below all clear the floor */
  --rail-read: 76%;      /* the light theme's own reading for an inverted card */
  --rail-good: #5cc08a;
  /* ⛔ AND THE CHROME WITH THEM. The band word ("Excellent") and the settled
     rungs do not read --rail-good — app.css gives them --ar-chrome at night,
     which this scheme re-keyed to its day teal for the rail labels standing on
     WHITE cards. On the charcoal that same teal lands at 2.0:1 and the word
     all but disappears. --ar-teal-on-ink is the palette's own teal for exactly
     this ground: 5.3:1, and re-keyed inside the card so the white cards keep
     theirs. */
  --ar-chrome: var(--ar-teal-on-ink);
}
/* ⛔ The night rule for rail labels names --ar-chrome and outranks the card's
   own --rail-good, so the kicker is said again here — otherwise the one green
   on a black card would come from the base dark palette, which this scheme
   never adopted. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-rail-card--readiness .ar-rail-card__label { color: #5cc08a; }
:root[data-ar-theme="dark"] body.admin-color-light .ar-rail-card--readiness .ar-rung__todo { color: #e0b24c; }
/* ⛔ THE HARD COLOURS DARK MODE PAINTS. Everything else the app draws comes
   from the tokens above and re-derives on its own, but these are literals in
   app.css — a near-black snippet and a dark form-control key — and a light
   ground is the one case where they land as a black box on a white card. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-about-snippet {
  background: #f2f2f2; color: var(--ar-ink-soft);
}
/* ⛔⛔ AND THE ROOM ITSELF IS STILL A LIGHT ROOM. app.css tells the browser
   color-scheme:dark at night, which is right everywhere else and wrong here:
   it flips every browser-DRAWN default under a ground that never darkened.
   The visible cost was on Discovery — a <button> that sets no colour of its own
   let the UA pick, so its big number came out WHITE on a near-white tile. Also
   select arrows, scrollbars, focus rings. */
:root[data-ar-theme="dark"] body.admin-color-light #agentimus-app,
:root[data-ar-theme="dark"] body.admin-color-light .ar-modal,
:root[data-ar-theme="dark"] body.admin-color-light .ar-drawer { color-scheme: light; }
/* ⛔ The last three night recipes that assume a dark room, handed back the
   day's own — found by diffing every painted element against itself in the
   other mode, screen by screen, not by looking:
   · the Worth-knowing note (night casts it from --ar-note-gold at 8%/55%, day
     from --ar-note-glow at 8%/85% — same tokens here, different recipe),
   · the danger button (night gives it the on-ink salmon, for a dark ground),
   · the hairlines between rows in the six big cards (night warms them). */
:root[data-ar-theme="dark"] body.admin-color-light .ar-aud__note {
  --ar-note: color-mix(in srgb, var(--ar-note-glow) 8%, var(--ar-surface-2));
  border-color: color-mix(in srgb, var(--ar-note-glow) 85%, var(--ar-line));
}
:root[data-ar-theme="dark"] body.admin-color-light .ar-btn--danger {
  background: transparent; color: var(--ar-bad); border-color: var(--ar-bad);
}
:root[data-ar-theme="dark"] body.admin-color-light .ar-sys__rows li,
:root[data-ar-theme="dark"] body.admin-color-light .ar-aud__rows li {
  border-color: var(--ar-line);
}
/* And the Findings score, which at night drops its green for plain ink — a
   choice that belongs to a dark card, not to this one. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-today__score-n { color: var(--ar-good); }
/* ⚠️ THREE MORE THE FAST SWEEP COULD NOT SEE. .ar-btn transitions its
   background over 0.15s, and reading a computed style straight after flipping
   the mode reads the value MID-FLIGHT — both reads landed on the same stale
   colour and the pair looked equal. Re-measured with the transition allowed to
   land, these came out:
   · the nav tabs read one step fainter at night (--ar-ink-soft, not
     --ar-ink-faint) — and that rule also outranks .is-active, so the tab you
     are actually on lost its ink,
   · the rail's links sit at 74% of the ink at night against 88% by day,
   · and the fields take wp-admin's own border by day (it outranks .ar-input)
     but ours at night. One border, ours, in both. */
:root[data-ar-theme="dark"] body.admin-color-light .ar__tab { color: var(--ar-ink-faint); }
:root[data-ar-theme="dark"] body.admin-color-light .ar__tab:hover { color: var(--ar-ink-soft); }
:root[data-ar-theme="dark"] body.admin-color-light .ar__tab.is-active { color: var(--ar-ink); }
:root[data-ar-theme="dark"] body.admin-color-light .ar__rail { --rail-read: 88%; }
:root body.admin-color-light :is(#agentimus-app, .ar-modal, .ar-drawer)
  :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), textarea, select) {
  border-color: var(--ar-line-strong);
}
/* ⛔⛔ AND THE INK SURFACES WITH THEM — the buttons and the chips.
   These do not take their colour from the room, they take it from the SCHEME:
   inc/Admin.php paints --ar-ink onto .ar-btn / .ar-tags__chip / the rug from
   the curated map (#333333 here) — and guards that to light mode only, because
   on every other scheme the night palette owns the whole token set and a
   scheme ink would have put dark ink on dark buttons.
   ⚠️ This scheme is the exception the guard did not foresee: it keeps the day's
   palette at night, so the guard drops the charcoal and app.css's night rule
   repaints the button from --ar-surface-2 — a raised charcoal in the night
   palette, but #f1f1f1 here — with a label from --ar-ink, light there and
   #1e1e1e here. The result was a pale button carrying a pale-ground label.
   ⭐ His pick, 2026-08-20, as a dev-tools edit of the readiness actions: the
   same charcoal button in both modes, 11.6:1 — which is the law the whole
   scheme already follows.
   ⛔ --ghost and --danger are left out: they paint themselves at night and are
   not ink surfaces. */
/* ⭐⭐ THE INK SURFACES FOLLOW THE RUG AGAIN — his call, 2026-08-21: "button's on
   light mode in light should match #6e6e6e, maybe ink should be #6e6e6e".
   ⛔ THIS RESTORES THE PAIRING that 08-20 deliberately broke. That split
   ("the buttons go charcoal anyway") existed because the day rug was a PALE
   slab, so a button could not belong to it without turning pale too. The rug is
   a mid grey again, so the reason is gone and the buttons rejoin it.
   ⭐⭐ AND THEY REJOIN IT BY READING THE TOKEN, not by naming a hex — his own
   "maybe ink should be #6e6e6e". app.css already paints .ar-btn and
   .ar-tags__chip as `background: var(--ar-ink); color: var(--ar-paper)`, and
   inc/SchemeInk.php scopes the ink to exactly those selectors, so DAY NEEDS NO
   RULE HERE AT ALL. What is left below is the night, which still wants the
   charcoal, and one hover.
   ⚠️ WHAT THE DAY MEASURES NOW: #f5f5f5 on the ink is 5.47:1 — over the floor,
   and the price of a mid grey (the charcoal read 11.6:1). Its earlier pale
   version read 13.2:1 the other way round. ⭐ Written as "the ink" and not as a
   hex on purpose: that value has moved twice in one evening (#ebeaea ->
   #6e6e6e -> #656363) and a number pinned to a hex goes stale with it.
   ⛔ The rail cards' 22px glyph tile is still NOT in this list — his call,
   2026-08-20, shown as a black square he did not want. It is a mark on a card,
   not a surface you press. Only the things you act on follow the rug. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-btn:not(.ar-btn--ghost):not(.ar-btn--danger),
:root[data-ar-theme="dark"] body.admin-color-light .ar-tags__chip {
  --ar-ink: #333333;
  background: #333333;
  border-color: #333333;
  color: #f5f5f5;
}
/* ⭐ THE NIGHT HOVER — his call, 2026-08-20: "don't just change the color of
   button, maybe lift up with shadowy color". It used to hold the ground still
   and swap the label to teal, the one button in the app that answered the
   pointer without moving.
   ⚠️ The lift is the file's own 12%-toward-white step, resolved here rather than
   derived: #333333 -> #474747, a 1.36:1 move, in the same band as the night
   rooms. The label stays #f5f5f5 (8.52:1 on the lift) instead of turning teal —
   other schemes do not recolour their label either.
   ⛔ NO SHADOW — his call, 2026-08-20, after seeing one. The ground alone does
   the lifting, which is what every ink-bearing scheme already does: Admin.php
   writes box-shadow:none into all of their hovers. app.css's drop shadow is
   left standing for the default scheme only. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-btn:not(.ar-btn--ghost):not(.ar-btn--danger):hover:not(:disabled) {
  background: #474747; color: #f5f5f5; box-shadow: none;
}
/* ⛔ AND THE DAY HOVER DEEPENS, where every dark ink lifts. This is the app's
   OWN rule for the case, not a new one: Admin.php lifts a hover 88% toward
   white on a dark ink and deepens it 88% toward black on a bright one, and
   a mid grey is the bright end of what this app calls an ink.
   ⚠️ THE NUMBER IS WHY THE RULE EXISTS. The label sits ON this ground, so every
   step the ground RISES the label loses — app.css's base lift takes the ink to
   #777676 and the #f5f5f5 label down to 4.15:1, under the floor. Deepening is
   the same gesture mirrored: #595757, and the label goes UP to 6.58:1. The
   ground itself shifts 1.20:1, a shade under the 1.28–1.36 the night rooms
   move, and app.css's translateY(-1px) — the part he said actually reads —
   still runs underneath, because this rule names only a background.
   ⭐ Derived from the token, not from a hex, so it follows the ink if it moves. */
:root:not([data-ar-theme="dark"]) body.admin-color-light .ar-btn:not(.ar-btn--ghost):not(.ar-btn--danger):hover:not(:disabled) {
  background: color-mix(in srgb, var(--ar-ink) 88%, #000);
}
/* ⭐⭐ AND THE DAY ACCENT IS THE INK — his call, 2026-08-21, shown as the
   Endpoint Activity chart: "use in light's day mode, same color from
   button/rail bg". So the whole scheme speaks in one grey by day: the slabs,
   the bars, the links, the tab underline, the numbers, the focus ring.
   ⭐ RE-KEY THE TOKEN, NEVER THE ELEMENTS — his own pattern, and it is why this
   is three declarations and not a list of selectors. He pointed at two bar
   kinds (.ar-act-bar__fill and .ar-act-rank__bar); both read --ar-accent, and
   so do 234 other places in app.css.
   ⛔ THE INK, AND NOT THIS SCHEME'S HIGHLIGHT. Admin.php prefers colors[2]
   where it carries text, and here that is #c64606 — a strong orange that DOES
   carry, which is exactly why that path stays fenced off for this scheme (see
   the is_bright guard in scheme_css). He asked for the button's colour, not
   WordPress's.
   ⚠️ AND ALL THREE, because the accent's two washes are mixes OF the accent —
   re-keying it alone would leave every wash keyed to a colour this scheme no
   longer wears. Same 12% / 20% formulas Admin.php uses. ⚠️ Declared at BODY
   level, which outranks the :root block they are declared in, and inherits
   everywhere the app paints. (Those two were hand-picked teal literals in
   app.css until 2026-08-21, when they became mixes for the same reason.)
   ⚠️ The measurements live with the value itself, just below.
   ⛔ DAY ONLY. At night the slabs are #333333, and an accent there would be
   near-black links; the night keeps the designed teal. ⚠️ This does mean the
   mode now changes more than the rug on this scheme — it changes the rug, the
   slabs and the accent. The 08-20 note saying otherwise is superseded.
   ⭐ The greens and golds are untouched: a grey cannot stand in for a verdict
   (carries_colour() refuses it), so "↑ 999%" stays green and "↓ 71%" gold. */
/* ⛔ THE DANGER BUTTON STOPS FILLING RED — his call, 2026-08-21: "I want to get
   rid of this danger color fill, it breaks the light vibe." In a room made of
   one grey, a saturated red slab was the single loud thing on the screen.
   ⭐ IT STILL SAYS DANGER, and louder than before where it counts: the label
   and the border DEEPEN to --ar-bad-deep. #b93c2b -> #8c2f22 is a 1.47:1 move
   on the text itself — bigger than the 1.36:1 the night buttons move their
   GROUND, and it lands at 7.57:1 on the paper. The red never leaves; it
   concentrates.
   ⛔ THE GROUND GOES TO --ar-paper, which is what .ar-btn--ghost already hovers
   to on this scheme — the two outline buttons now answer the pointer the same
   way. ⚠️ On its own that ground step is 1.054:1, far too small to read, which
   is exactly why the colour move carries this hover and not the fill.
   ⭐ AND THE 1px LIFT DOES THE REST. app.css's .ar-btn:hover translateY(-1px)
   was always running here — his "it doesn't move like Refresh does" was the red
   fill drowning it, not a missing rule. Take the slab away and the travel reads.
   ⚠️ THIS SCHEME ONLY, and by day. Everywhere else the fill IS the app's danger
   language and is untouched. */
:root:not([data-ar-theme="dark"]) body.admin-color-light .ar-btn--danger:hover:not(:disabled) {
  background: var(--ar-paper);
  color: var(--ar-bad-deep);
  border-color: var(--ar-bad-deep);
}
:root:not([data-ar-theme="dark"]) body.admin-color-light {
  /* ⚠️ #656363 SINCE 2026-08-21, tracking the ink he moved in the same breath.
     These two are ONE decision — his instruction was "same colour from
     button/rail bg" — so they move together or the room stops speaking once.
     ⭐ The step down bought contrast everywhere: 5.77:1 on a card and 5.28 on
     the panel, where #6e6e6e read 4.93 and 4.51. */
  --ar-accent: #656363;
  --ar-accent-wash: color-mix(in srgb, #656363 12%, var(--ar-surface));
  --ar-accent-soft: color-mix(in srgb, #656363 20%, var(--ar-surface));
}
/* ⚠️ AND THE BRAND TILE, WHICH IS THE SAME KIND OF SURFACE. app.css paints it
   from --ar-ink with the A cut out in --ar-paper, and at night flips both — so
   on this scheme the header mark went from a near-black tile by day to a pale
   one at night, the one piece of chrome that changed when the mode did.
   ⭐ The day's own two lines, restated: this scheme's mode changes the rug and
   nothing else. */
:root[data-ar-theme="dark"] body.admin-color-light .ar__mark,
:root[data-ar-theme="dark"] body.admin-color-light .ar-wiz__welcome-mark--brand {
  background: var(--ar-ink); color: var(--ar-paper);
}
:root[data-ar-theme="dark"] body.admin-color-light .ar__logo-line { stroke: var(--ar-paper); }
/* The last two the mode still moved, found by diffing every painted element on
   the screen against itself in the other mode rather than by looking:
   the source picker's ON pill (an ink pill by day, the accent at night) and the
   ghost button's label, which by day reads the SCHEME ink #333333 that Admin.php
   scopes to .ar-btn and at night fell back to the body's own ink. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-srcpick__btn.is-on {
  background: var(--ar-ink); color: var(--ar-paper);
}
/* ⛔ The ghost button is the one .ar-btn that reads --ar-ink as TEXT, not as a
   ground — so the scheme ink reaches it too, and now that the ink is a light
   grey its label would be #e5e5e5 on white. It keeps the dark it always had,
   in both modes. */
:root body.admin-color-light .ar-btn--ghost { --ar-ink: #333333; }
/* ⚠️ And it is FILLED at night by the generic .ar-btn repaint, which outranks
   .ar-btn--ghost — #f1f1f1 here against a transparent button by day, on a card
   that never darkened. Hover likewise dives to a dark slate. Both restated. */
:root[data-ar-theme="dark"] body.admin-color-light .ar-btn--ghost {
  background: transparent; border-color: var(--ar-line-strong);
}
:root[data-ar-theme="dark"] body.admin-color-light .ar-btn--ghost:hover:not(:disabled) {
  background: var(--ar-paper); border-color: var(--ar-line-strong); box-shadow: none;
}
/* ⛔ The Light-scheme grey that used to sit here is GONE, deliberately. It gave
   this one scheme a hand-picked #1e1e1e-on-#e5e5e5 tile while every other scheme
   kept an accent wash — one mark wearing two unrelated costumes depending on a
   setting. app.css now states the mark in tokens (--ar-paper / --ar-line /
   --ar-ink-soft), so every scheme here re-keys it for free and it always matches
   .ar-sys__mark on the same screen. ⛔ Don't reintroduce a literal for one
   scheme; move the tokens instead. */
/* ---- Light — the readiness rug -------------------------------------------
   HIS PICK, 2026-08-21: the day rug is a MID GREY again (painted by
   inc/SchemeInk.php as this scheme's ink — #6e6e6e when he chose this, #656363
   since), and by night it stays his charcoal.
   ⚠️ THIS REVERSES 08-20, which had put a light #ebeaea slab here — and it is
   worth knowing WHY the light slab existed, because the reason is still true:

   ⛔ MID GREY IS THE ONE GROUND WHERE COLOUR CANNOT BE SEEN AT ALL. Measured on
   this ink, every mark this card paints fails the floor — the green 2.66:1, the
   teal 2.46, the amber 3.02, and the day teal/gold/red this block used to
   re-key sit near 1.2. 4.5:1 downward wants near-black, upward
   wants near-white, and a colour is neither. That is what sank the FIRST
   #6e6e6e rug: its green and amber degraded into near-white tints (#cfe9d4,
   #f0e0bb) and stopped being green and amber.

   ⭐ SO THE RUG GOES MONOCHROME, and that is what makes the grey work this time
   — the treatment he wrote later on 08-20 for every scheme-coloured ground:
   "a rug that has taken a ground wears white." One face for the card, no
   hierarchy drawn in brightness, and the only colour left is the one actionable
   count. Nothing is being asked to carry a hue it cannot carry.

   ⛔ THE *-on-ink RE-KEYS ARE GONE. They existed only because the day card was
   PALE — the single card in the app whose ground flips with the mode — and on a
   grey they are the worst values on the screen (1.1–1.2:1). The base on-ink
   colours stand instead; they are drawn for an ink ground, which this is again. */
:root:not([data-ar-theme="dark"]) body.admin-color-light .ar-rail-card.ar-rail-card--readiness {
  /* ⛔ No background here: the rug's ground IS --ar-ink, and inc/SchemeInk.php
     paints this scheme's ink. ⚠️ The BUTTONS and CHIPS do not follow it
     — they are pinned to #333333 by the rule above, his call 2026-08-20 ("the
     split is the instruction"), in both modes. */
  --rail-face: #f2f2f2;       /* 4.55:1 — and the same face the night rug uses */
  /* ⛔ 100%, not the 82% veil this block used to carry. The veil was drawn to
     sit ABOVE a near-black face on a pale slab; over a near-white face on a
     grey it composites back down to 3.65:1 and the rung rows read as "dimmed"
     beside the band word. His own note on the scheme-coloured rugs, and it
     lands the same way here: with one face for the card, the rungs read at
     full strength. */
  --rail-read: 100%;
  --rail-good: #f2f2f2;       /* ring, dots, band word, kicker — no colour survives here */
  /* ⭐ The one thing that keeps a colour: "N to fix" is the only mark on the
     card that means an action. This is the gold Admin.php already puts on every
     mid-tone ground. ⚠️ 3.14:1 — under the floor, knowingly, and for the reason
     written there: a saturated gold on a mid-tone ground cannot reach 3:1
     without turning into cream and ceasing to read as the warning colour. The
     count is legible by position and size. */
  --ar-warn-on-ink: #f8c350;
}
/* THE HOVER, and it moves with the ground. The `filter: brightness(0.82)` that
   used to sit here was mirrored for a PALE slab, where lifting walked the card
   toward its own ground and washed out. On a mid grey the card is an ink
   surface again, so it lifts like every other one — and app.css's own
   brightness(1.08) underneath does that unaided.
   ⛔ WHAT IT CANNOT DO ALONE is answer on the LINES. At --rail-read:100% the
   rungs already paint the full --rail-face, and app.css's rung hover is
   `color: var(--rail-face)` — it resolves to the colour it started from and the
   row stops answering the pointer. A value at the end of its range has no
   headroom left, so the lift goes ABOVE the face, to white. Same pair, same
   reason and the same two selectors Admin::scheme_css() emits for every
   scheme-coloured rug; this scheme is exempt from that emission (its ink is
   bright by the is_bright test) so it says them itself.
   ⭐ And the score block joins them by name rather than by filter, so every
   line on the card answers the pointer identically — his call, 2026-08-20. */
:root:not([data-ar-theme="dark"]) body.admin-color-light .ar-rail-card--readiness .ar-rung__btn:not(.ar-rung__btn--static):hover :is(.ar-rung__name, .ar-rung__count),
:root:not([data-ar-theme="dark"]) body.admin-color-light .ar-rail-card--readiness .ar-rail-readiness--link:hover :is(.ar-rail-tier__name, .ar-rail-gauge__num) {
  color: #ffffff;
}
