/* =====================================================================================
   gi-pages.css — HF GameImpact, additions to gi.css for the multi-page site.
   2026-09-28 07:36 MDT. Loaded after gi.css by Content/Snippets/gi-head.html.

   ONLY ported rules live here: each block is an RMF rule restated for a case gi.css's
   single-page port did not have (a second table on one page, extra home panels). Nothing
   is restyled. Declared differences are numbered P1..P5 and listed in site/README.md.
   Sources as in gi.css: S3 = RMF fantasy/cfb/index.html, S4 = RMF fantasy/cfb/players.html.
   ===================================================================================== */

/* [P1] S4:39-45 + S4:471 + gi.css section 11 — the players-table look, as a CLASS.
   gi.css keys it to the id #playersTable, and a page here can hold several tables
   (home: Game Impact + Player of the Game + four boards). gi-ui.js sortableTable() puts
   .gi-ptable on each one. Same declarations, same !important where the source has it. */
table.gi-ptable { --row-hover:#e4eef8; }
table.gi-ptable tbody tr:hover td { background:var(--row-hover) !important; }
table.gi-ptable td { vertical-align:middle; }
table.gi-ptable td.num { font-size:15px; }
table.gi-ptable th:nth-child(1), table.gi-ptable td:nth-child(1) { text-align:center !important; }
/* [P5] one line per record. RMF's players table never wraps a cell (fixed column widths, a
   nowrap .pname); here widths are content-sized, so the rule is stated directly and a narrow
   screen scrolls the table inside its .tscroll box instead of breaking "W 13-1" or "#11 name"
   over two lines. Measured at 390: without it the result chip and jersey+name cells wrapped. */
table.gi-ptable td { white-space:nowrap; }

/* [P2] a row that opens a page (schedule / POG rows -> the game page). Cursor only. */
table.gi tr[data-href] { cursor:pointer; }

/* [P3] S3:13-62 home ordering, extended to this home's extra panels. RMF orders its home by
   panel id once the rail leaves column three: This Week first, League Info last. Here the main
   column also holds #pogPanel (RMF's #txPanel slot) and the rail holds #giBoards (the four
   Overall boards), so they get order values between the ones gi.css already sets. */
#giBoards { display:flex; flex-direction:column; gap:14px; margin-top:14px; }
@media (max-width:1280px){
  #giBoards { order:3; margin-top:0; }
  #infoPanel { order:4; }
}
@media (max-width:640px){
  #pogPanel { order:3; }
  #giBoards { order:4; }
  #infoPanel { order:5; }
}

/* [P4] Data notes: a <details> window. Its <summary> IS the gold .ph band; this only hides the
   browser's disclosure triangle and says it can be clicked. */
details.gi-notes > summary { list-style:none; cursor:pointer; }
details.gi-notes > summary::-webkit-details-marker { display:none; }

/* [SP1] retired 2026-09-28: the Total page's one-column freeze (.gi-freeze) moved to SP6 (freeze:2) when the
   jersey card got its own column (C5). No page uses .gi-freeze any more. */

/* [PS1] RMF settings.html:1152-1159 (md5 6d5a4c12105af7f28d4a3bbc1e5940fe) — #evalPrompt, the
   read-only "copy the prompt" field, as a CLASS (gi-ui codeBox()). Used by the Sync page for the
   HF Sync bookmarklet code and nothing else yet. Same declarations and !important as the source;
   they beat gi.css section 7's bare `textarea` rule on specificity. ONE DECLARED DIFFERENCE:
   height:300px -> auto, so the rows attribute sizes it (RMF's field holds a 40-line prompt; this
   one holds 2-8 lines of code). 2026-09-28 07:58 MDT. */
textarea.gi-code { width:100%; height:auto; background:#fff !important; color:var(--text) !important;
  border:1px solid rgba(0,0,0,.25) !important; border-radius:4px;
  padding:12px 14px !important; font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:12px !important; line-height:1.5; resize:vertical; }
textarea.gi-code:focus { background:#fff !important; color:var(--text) !important;
  border-color:var(--accent) !important; outline:none; }
textarea.gi-code::selection { background:var(--row-hover, #e4eef8); color:var(--text); }
textarea.gi-code::-moz-selection { background:var(--row-hover, #e4eef8); color:var(--text); }

/* [PS2] RMF settings.html:429 (md5 6d5a4c12105af7f28d4a3bbc1e5940fe) — table.pos-tbl, as a CLASS
   (sortableTable cls:'gi-minw'). Craig on that table, 2026-08-27: "This table should be 100% width
   until it collapses down" — full width while it fits, then it holds its width and scrolls inside
   its .tscroll box. Used by the Sync page's Coach inputs table, whose long "What it is" column was
   squeezed to one word per line at 390 (rows 110px tall). ONE DECLARED DIFFERENCE: no
   table-layout:fixed — that rule exists for pos-tbl's colgroup, and this table's columns size to
   their content. width:100% is already table.gi's. 2026-09-28 08:20 MDT. */
table.gi-minw { min-width:838px; }

/* [P10] the game page's top — S3:13-62 ordering, extended to /gameimpact/game/<n>. #gameTop is a
   .home-grid: main column = #gameHead (the game) + #gameImpact / #gamePending, rail = #gamePog,
   #gameRunner, #gameInfo. RMF stacks its home by panel id once the rail leaves column two, and the
   rail's windows then land ABOVE the whole main column. On a game page the game's own header has to
   stay first, so the main column opens up (display:contents, the same move RMF's <=640 rule makes)
   and each window takes an order: header, Player of the Game, Runner-up, Game Impact, Game Info.
   Order only. The flex gap replaces the 14px top margins the two-column layout writes inline. */
@media (max-width:1280px){
  #gameTop > div { display:contents; }
  #gameHead { order:1; }
  #gamePog { order:2; }
  #gameRunner { order:3; }
  #gameImpact, #gamePending { order:4; }
  #gameInfo { order:5; }
  #gameTop .panel { margin-top:0 !important; }
}

/* [G11] the line score's R H E are one group. Craig 2026-09-29: "R H E at the end are a major grouping every
   game, they belong together, not with a huge gap between. they could even be separated with a vertical
   separator". table.gi is auto layout at 100%, and the leftover width went to every column in proportion to its
   content, so R / H / E sat 78 / 103 / 132px wide at 1440. Each now has a set width (auto layout hands the slack
   to the columns without one: Team and the innings, which keep their spacing), and a rule in the table's own
   --line color opens the group. game.js lineScore() tags the body cells (ls-rhe, ls-r on R); a header cell
   carries its column key (data-k), not the column's cls, so the headers are matched on that. */
#lineScoreTable th[data-k="R"], #lineScoreTable th[data-k="H"], #lineScoreTable th[data-k="E"],
#lineScoreTable td.ls-rhe { width:44px; }
/* E is the last cell, padded 24px on the right (table.gi:last-child) instead of 8: +16px keeps its digits 44px
   from H's, the same step as R to H (cells are border-box, gi.css *) */
#lineScoreTable th[data-k="E"], #lineScoreTable td.ls-rhe:last-child { width:60px; }
#lineScoreTable th[data-k="R"], #lineScoreTable td.ls-r { border-left:1px solid var(--line); }
/* [G11b] Craig 2026-09-30: "spacing between innings must be the same as runs hit errors RHE, especially between the
   six in the divider line". Every inning takes R / H's 44px (Team, the one column without a width, takes the slack)
   and inning + R H E digits center in their cells (game.js center:true -> .ctr): right-aligned, the rule sat 11px
   after the last inning's digit and 32px before R's. Centered, each digit is one column from the next and the rule
   sits halfway. Headers carry data-k i0..iN (the only keys starting with "i"). min-width = width: auto layout
   otherwise squeezes set widths unevenly to keep a long team name whole (steps 15.6-20.7px at 390); held, the table
   overflows instead, so gi-ui's measureFreeze marks it .fz-tight and the names drop to HF / the ABR [SP8]. */
#lineScoreTable th[data-k^="i"], #lineScoreTable td.ls-inn { width:44px; min-width:44px; }
#lineScoreTable th[data-k="R"], #lineScoreTable th[data-k="H"], #lineScoreTable td.ls-rhe { min-width:44px; }
#lineScoreTable th[data-k="E"], #lineScoreTable td.ls-rhe:last-child { min-width:60px; }
@media (max-width:700px){
  /* phone: the same equal step at 24px (2px sides) so 7 innings + R H E + the ABR fit a 390 screen; E is 46px, its
     digit 24px from H's under table.gi's 24px last-cell padding (2 + (46-2-24)/2 = 12, the others' center) */
  #lineScoreTable th[data-k^="i"], #lineScoreTable td.ls-inn,
  #lineScoreTable th[data-k="R"], #lineScoreTable th[data-k="H"], #lineScoreTable th[data-k="E"],
  #lineScoreTable td.ls-rhe { width:24px; min-width:24px; padding-left:2px; padding-right:2px; }
  #lineScoreTable th[data-k="E"], #lineScoreTable td.ls-rhe:last-child { width:46px; min-width:46px; }
}
/* [B2] Batting Total groups. Craig 2026-09-30: "make sure these columns are grouped together if like columns (Pos, Yr,
   B/T) should be together, Game and High should be next to each other with any add'l space around not between them".
   pages/batting.js gives every column but Player a width (Player takes the table's slack) and tags each group's first
   cell .gi-grp; a header carries its column key (data-k), not the column's cls. 40px (not 8) opens a group; widths in
   batting.js include it (cells are border-box). Game is right-aligned so its ABR sits against High's number. */
#batTotalTable th[data-k="pos"], #batTotalTable th[data-k="impact"], #batTotalTable th[data-k="opp"],
#batTotalTable td.gi-grp { padding-left:40px; }
/* a team mark beside its name centers on it (estate rule, Craig 2026-09-29: "center align vertical items in same row"):
   inline with vertical-align:middle the .tmark sat 1.3px (ribbon) / 1.6px (line score) below the name's center. The gap
   is the space the markup had between them (Open Sans space = .26em). gi-ui tickerSide, game.js lineScore. */
.tm-line { display:inline-flex; align-items:center; gap:.26em; }

/* [SP2] the Awards page STATS cell (Player of the Game text, 2-3 lines of up to ~110 characters) is the
   one cell allowed to wrap: P5's nowrap is this site's addition, RMF's own table cells wrap (table.gi sets
   no white-space). Without it the STATS column pushed RUNNER-UP, IMPACT and MAXPREPS out of view at 1440.
   The floor keeps a line readable on a phone, where the table scrolls inside its .tscroll box. */
table.gi-ptable td.gi-stats { white-space:normal; min-width:280px; }

/* [SP6] RMF players.html:428-446 (md5 369e4f1806e4b0d5ea6aff4a378a3878) — frozen leading columns, as a
   CLASS for any table (gi-ui sortableTable({ freeze:n }) adds .gi-fz and marks the cells .fz). RMF freezes
   Rnk / Player / Team / Pos at fixed pixel offsets against fixed column widths; these tables size their
   columns to content, so gi-ui MEASURES each frozen column's offset off the rendered header and writes it
   as the cell's inline `left` (re-measured on resize and font load), which is what keeps a frozen column
   from sliding under its neighbour (the table-layout trap in Spartan-Local CLAUDE.md cannot arise).
   Same opaque panel fill, header fill, z-index and edge shadow as RMF. ONE DECLARED DIFFERENCE: the
   shadow shows only while the table is wider than its box (.fz-scroll), so a table that fits at 1440
   gets no stray line down its middle. Row hover still reaches the frozen cells (table.gi / P1 hover
   rules outrank this one). 2026-09-28 MDT. */
table.gi-fz { border-collapse:separate; border-spacing:0; }
table.gi-fz th.fz, table.gi-fz td.fz { position:sticky; z-index:2; background:var(--panel); }
table.gi-fz thead th.fz { background:var(--panel-2); z-index:3; }
table.gi-fz.fz-scroll .fz-last { box-shadow:6px 0 8px -6px rgba(0,0,0,.30); }

/* [SP8] RMF matchup.html:410-418 + :647 and team.html:791-792 + :962 (md5 c9e14f64c3f96eade877565c7a868550)
   — FIRST INITIAL, LAST NAME ON A PHONE ("N. Whitlock", Craig 2026-09-28: "when space is tight"). Both
   forms are in the DOM (gi-ui pname(): .pnm-full / .pnm-abbr) and CSS picks one. 700px = RMF matchup's
   phone tier. ONE DECLARED DIFFERENCE: RMF abbreviates every row at that width; here only a frozen
   table that side-scrolls with full names (.fz-tight, set by gi-ui measureFreeze) does, so a table that
   fits on the phone (Roster, the rail boards) keeps full names. (0,4,1) beats the base (0,2,0) at any
   sheet order. 2026-09-28 MDT. */
.pname .pnm-abbr { display:none; }
@media (max-width:700px){
  table.gi-fz.fz-tight .pname .pnm-full { display:none; }
  table.gi-fz.fz-tight .pname .pnm-abbr { display:inline; }
}
/* [SP9] the frozen OPPONENT on a tight phone table (Schedule, POG, Awards, Sync freeze through the
   opponent) gets RMF's fixed-width frozen name column back (players.html:481-482: a 120px Player column,
   ellipsis): content-sized, one raw GameChanger name ("Legend Varsity Titans Softball", 194px) made the
   Schedule's frozen block 304 of 374px at 390 and left 70px to scroll in. 130px keeps every other 2026
   opponent whole (widest: "Columbine Rebels", 119px). vertical-align:top keeps the text on the row's line
   (an inline-block with overflow:hidden sits on its bottom edge). 2026-09-28 MDT. */
@media (max-width:700px){
  table.gi-fz.fz-tight td.fz-last > a { display:inline-block; max-width:130px; overflow:hidden;
    text-overflow:ellipsis; white-space:nowrap; vertical-align:top; }
}

/* [P7b] the rail boards' rank column is labelled "Rk" (RMF players.html's rank label) instead of "#",
   which on this site means the jersey (2026-09-28 review: "1 Lindsey Morris" read as jersey 1). "Rk" is
   8px wider than "#", and the Pitching board then ran 2px past the 320px rail. Its first cell takes
   the Season Info card's 14px inset (table.linfo, the card in the same rail) instead of table.gi's
   22px; !important because the rule it replaces has it (gi.css section 5). */
#giBoards table.gi th:first-child, #giBoards table.gi td:first-child { padding-left:14px !important; }

/* =====================================================================================
   CRAIG'S DESIGN CALLS — 2026-09-28 MDT. Not RMF rules: his own decisions for this site, quoted.
   ===================================================================================== */
/* HF purple = the Holy Family brand's --color1 (holyfamilytigers.com ID Colors; the fill of
   /img/logo/HolyFamilyTigers/icon_onLt.svg). These pages load no brand chain ("Don't Use Template"),
   so it is declared here once and read through the token. */
:root { --hf-purple:#31006f; }
/* [C1] "Overall needs to be BOLD font: purple / Batting: Gold / Fielding: Green / Pitching: Orange".
   The category totals everywhere they show: Overall (and a game's TOTAL, which is that game's overall),
   Off / batting, Def / fielding, Pitch / pitching — tables and the Player of the Game card. Off+Def and
   the per-PA / per-game averages were not named and keep the table ink. A score is never 800.
   Tokens: --gold / --green / --warn are the theme's own gold, green and orange.
   2026-09-29: Craig's block, verbatim — ".gi-ovr { color: var(--hf-purple); font-weight: 600; }" (was 700). */
.gi-ovr { color:var(--hf-purple); font-weight:600; }
/* Craig 2026-10-16 (Fielding Total): "impact font thickness should be at least 1 stronger than this on ALL DataTable" —
   the IMPACT column read at the body's 300. One step up; the purple OFF+DEF / Play of the Game impact keeps its 600. */
table.gi td.gi-impact:not(.gi-ovr) { font-weight:400; }
.gi-bat { color:var(--gold); }
.gi-fld { color:var(--green); }
.gi-pit { color:var(--warn); }
/* [C2] "Rank should always be something like 50% gray" — the rank numbers take the header gray
   (--muted #697080, L* 47), so a rank never reads as a jersey or a score. */
table.gi td.gi-rank { color:var(--muted); }
/* [C3] "Jersey Number square should be purple with white text" — S2's card, filled HF purple; the
   border takes the fill so the square stays one color at the same 1px geometry. */
.jerseyno { background:var(--hf-purple); color:var(--pill-text); border-color:var(--hf-purple); }
/* [C4] "Do NOT bold the result" — a W/L result chip (gi-ui resultChip / lastResults, .res) keeps the
   cell's weight; gi.css S3 bolds .wk-chip.w. Other green chips (Entered, Written) are not results. */
.wk-chip.w.res, .wk-chip.l.res { font-weight:inherit; }
/* ...except inside a bold line — the kv card's name (#gameHead "vs Longmont Trojans  W 13-1"), which is 700:
   there it takes the card's regular weight (its rows are 400) instead of inheriting the bold. */
.linfo-name .wk-chip.res { font-weight:400; }
/* [C6] STATUS chips on the schedule (pages/schedule.js statusOf). Craig 2026-10-12: "Submit on MaxPreps should be the
   only one bold Red. Everything else at standard status needs to be gold pill with white text" — the brand gold (--neon,
   the nav's active fill) with the pill's white ink; the MaxPreps chip keeps the red chip (.l) and goes bold. */
.wk-chip.gi-status { background:var(--neon); color:var(--pill-text); }
.wk-chip.gi-status-mp { font-weight:700; }
/* [C5] "jersey chip should be centered within it's own column" — sortableTable({ center:true }) marks
   the # column's th + td .ctr. The name sits in its own column, left (gi-ui playerCols), so names line
   up down the table whatever the card's width. */
table.gi th.ctr, table.gi td.ctr { text-align:center; }

/* =====================================================================================
   [PM] THE PLAYER CARD — 2026-09-29 MDT. Craig: "Clicking a Player needs to open a modal showing all
   player stats and game-by-game account (similar to Player card on mudcup/RMF CFB)."
   PORTED from RockyMtnFantasy Content/Snippets/custom-fcfb-playermodal.html (md5
   cf8b55ecf5789a5b07623c6c83ec8f8c), its <style> block, declaration for declaration, for every piece this
   card renders; the plate rules for .pm-win .ph are the skin's own selector-list entries (S1
   custom-fantasy-skin-cfb.html:290-379, md5 a2b11b78561c9fbd640042e7c5e24ef2); .flag is S2:460-465.
   LEFT OUT with the features (README PM5): Game Events overlay (.ge-*), Mentions (.nw-row), owner pills
   (.pm-own), BYE, DraftKings (.pm-odds / .pm-ou). Differences are tagged [PMn] where they land.
   ===================================================================================== */
#pmBg { position:fixed; inset:0; background:rgba(0,0,0,.72); display:none; z-index:400;
  align-items:flex-start; justify-content:center; padding:24px 14px; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }
#pmBg.open { display:flex; }
.pm-modal { position:relative; width:100%; max-width:720px; margin:auto; background:var(--panel);
  border:none; border-radius:12px; overflow:hidden; box-shadow:0 24px 70px rgba(0,0,0,.55); }
.pm-x { position:absolute; top:10px; right:12px; z-index:5; width:34px; height:34px; border:none; cursor:pointer;
  border-radius:50%; background:rgba(0,0,0,.28); color:#fff; font-size:17px; line-height:34px; text-align:center; padding:0; }
.pm-x:hover { background:rgba(0,0,0,.45); }
/* [PM8] the edit gear: .pm-x's own circle, one place to its left; only a member of the Operations zone gets it */
.pm-gear { position:absolute; top:10px; right:52px; z-index:5; width:34px; height:34px; border:none; cursor:pointer;
  border-radius:50%; background:rgba(0,0,0,.28); color:#fff; font-size:15px; line-height:34px; text-align:center; padding:0; }
.pm-gear:hover { background:rgba(0,0,0,.45); }
.pm-gear[hidden] { display:none; }
/* [PM10] the X and the gear sit in the name's row, so they center on it: the name line's middle is 32.5px down the
   card (header padding 20 + half its 26.4px line), a 34px circle's is top + 17 (RMF: top 10px, 5.5px high). The
   phone header (padding 16, 20px name) puts that middle at 27 = RMF's own 10px. */
.pm-x, .pm-gear { top:15.5px; }
@media (max-width:520px){ .pm-x, .pm-gear { top:10px; } }

.pm-head { position:relative; color:#fff; padding:20px 52px 18px 20px; background:#3c4248;
  background-image:linear-gradient(115deg,#3c4248 0%,#161f24 62%); display:flex; align-items:center; gap:16px; }
.pm-head::after { content:""; position:absolute; left:0; right:0; bottom:0; height:5px;
  background:var(--pm-teamcol, var(--line)); }
/* [PM2] the band under the header is HF purple (RMF: the school's color, from its team file) */
#pmHead { --pm-teamcol:var(--hf-purple); }
.pm-head .pm-flag { align-self:stretch; display:flex; align-items:center; justify-content:center;
  background:#fff; margin:-20px 0 -18px -20px; padding:0 20px; }
.pm-head .pm-flag .flag { margin:0 !important; height:auto !important; overflow:visible !important; display:inline-flex; }
.pm-head .pm-flag img { height:40px !important; width:auto !important; max-width:none !important; display:block; }
.pm-head .pm-id { min-width:0; }
/* [PM10] RMF sets the rows below on baseline; Craig, 2026-09-29 (estate rule): "center align vertical items in same
   row" — every row that holds two or more things centers them (name + #jersey, stat label + value, title + meta,
   a breakdown line, a legend dot + its words). align-items only; the rest of each rule is RMF's. */
.pm-head .pm-nm { font-size:24px; font-weight:800; line-height:1.1; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.pm-head .pm-jno { font-size:21px; font-weight:600; color:#9fb2e6; font-variant-numeric:tabular-nums; }
.pm-head .pm-sub { margin-top:6px; display:flex; align-items:center; gap:8px; font-size:13.5px; color:rgba(255,255,255,.82); flex-wrap:wrap; }
.pm-head .pm-stats { display:inline-flex; align-items:center; gap:12px; font-size:13.5px; }
.pm-head .pm-stats > span, .pm-head .pm-projline .pm-proj { display:inline-flex; align-items:center; }
/* [PM2] five cells wrap on a phone rather than run past the band */
.pm-head .pm-stats { flex-wrap:wrap; row-gap:2px; }
.pm-head .pm-stats .k { color:rgba(255,255,255,.55); margin-right:4px; }
.pm-head .pm-stats .v { color:#fff; font-weight:600; font-variant-numeric:tabular-nums; }
.pm-head .pm-projline { flex:0 0 100%; margin-top:5px; font-size:13.5px;
  display:flex; align-items:center; gap:10px; }
/* [PM2] a label and its value never part ("2026 Pts" split over two lines at 390); the items wrap instead */
.pm-head .pm-projline { flex-wrap:wrap; row-gap:2px; }
.pm-head .pm-projline .pm-proj, .pm-head .pm-stats > span { white-space:nowrap; }
.pm-head .pm-projline .k { color:rgba(255,255,255,.55); margin-right:4px; }
.pm-head .pm-projline .v { color:#fff; font-weight:700; font-variant-numeric:tabular-nums; }
.pm-head .pm-dot { color:rgba(255,255,255,.45); }
/* S2:460-465 the logo slot the header's white band holds */
.flag { display:inline-flex; align-items:center; justify-content:center; min-width:30px; height:20px; border-radius:3px;
  margin-right:7px !important;
  font-size:10px; font-weight:800; letter-spacing:.5px; background:var(--panel-3); color:var(--muted);
  border:1px solid rgba(0,0,0,.12); padding:0 3px; vertical-align:middle; overflow:hidden; }
.flag.has-img { background:transparent; border:none; min-width:0; padding:0; }
.flag img { width:30px; height:20px; object-fit:cover; border-radius:2px; display:block;
  box-shadow:0 0 0 1px rgba(0,0,0,.10); }

.pm-body { padding:14px; display:flex; flex-direction:column; gap:14px; background:var(--panel-2, #f4f6f8); }
.pm-win { background:var(--panel); border:1px solid var(--line); border-radius:8px; overflow:hidden; }
/* S1:290-334 the gold plate, restated for .pm-win (the skin lists it with .panel .ph; gi.css ported only .panel) */
.pm-win .ph {
  color:var(--ph-band-text) !important;
  border:none !important;
  background-color:#1b1204;
  background-image:var(--ph-flare1), var(--ph-plate);
  background-repeat:no-repeat;
  background-size:100% 100%, 100% 100%, max(var(--ph-sheet-w), 100%) 100%, 100% 100%;
  box-shadow:inset 0 1px 0 var(--ph-band-top), inset 0 -1px 0 var(--ph-band-edge);
  text-shadow:none;
}
.pm-win .ph .meta { color:var(--ph-band-meta) !important; text-shadow:none; }
.pm-win .ph.pm-ph1 { background-image:var(--ph-flare1), var(--ph-plate); }
.pm-win .ph.pm-ph2 { background-image:var(--ph-flare2), var(--ph-plate); }
.pm-win .ph.pm-ph3 { background-image:var(--ph-flare3), var(--ph-plate); }
.pm-win { container-type:inline-size; }
@container (max-width: 700px) {
  .pm-win .ph { --ph-sheet-w:640px; }
}
.pm-win .ph { --ph-sheet-w:700px; }
.pm-win .ph { border:none !important; margin:0; border-radius:0; font-size:15px; padding:11px 13px;
  display:flex; align-items:center; justify-content:space-between; gap:10px; }
.pm-win .ph .meta { font-size:12.5px; font-weight:500; }

.pm-g.pm-hd { background:var(--panel-2); border-bottom:1px solid var(--line); cursor:default; padding-top:8px; padding-bottom:8px; }
.pm-g.pm-hd > span { font-size:10px; font-weight:700; letter-spacing:.6px; text-transform:uppercase; color:var(--muted); }
/* [PM3] RMF: Wk · v/@ · Opponent · Owner 44 · Result 64 · Date 74 · DK 38 + 50 · caret 14 · FPTS 34.
   Here: G · v/@ · Opponent · Result 64 · Date 74 · Bat · Fld · Pit 44 each · caret 14 · Total 44 (a game
   Total reads "53.5"). Same fixed-track rule as RMF: every column holds its x down the log. */
.pm-g { display:grid;
  grid-template-columns:34px 14px minmax(0,1fr) 64px 74px 44px 44px 44px 14px 44px; gap:8px 10px;
  align-items:center; padding:9px 12px; border-bottom:1px solid var(--line); font-size:15px; }
.pm-g:last-child { border-bottom:none; }
.pm-g.pm-alt { background:var(--panel-2); }
.pm-g.pm-played { cursor:pointer; }
.pm-g.pm-played:hover { background:#eef6f1; }
a.pm-g { color:inherit; text-decoration:none; }
a.pm-g:hover { background:#eef6f1; }
.pm-g a.pm-oppa { color:inherit; text-decoration:none; }
/* [D19] RMF underlines the abbreviation on hover; this site never underlines — hover is a color change */
.pm-g a.pm-oppa:hover .ab, .pm-g a.pm-oppa:hover .nm { color:var(--accent); }
.pm-g .pm-rnd { font-size:12px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.3px; }
.pm-g .pm-opp { min-width:0; display:flex; align-items:center; gap:7px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pm-g .pm-side { color:var(--muted); font-size:12.5px; font-weight:400; text-align:center;
  white-space:nowrap; }
.pm-g .pm-opp .ab { font-weight:600; }
.pm-g .pm-opp .nm { font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  min-width:0; }
.pm-g .pm-opp .ab { display:none; }
@media (max-width:720px){
  .pm-g .pm-opp .nm { display:none; }
  .pm-g .pm-opp .ab { display:inline; }
}
.pm-g .pm-res { display:flex; align-items:center; justify-content:center; gap:5px; font-size:13px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.pm-g .pm-res .wl { display:inline-block; width:16px; height:16px; line-height:16px; text-align:center; border-radius:4px;
  font-size:10px; font-weight:800; color:#fff; margin-right:5px; vertical-align:1px; }
/* [PM10] the W / L square and its score are one row: centered, not riding the text baseline (RMF: vertical-align:1px) */
.pm-g .pm-rz { display:inline-flex; align-items:center; }
.pm-g .pm-res .wl-w { background:var(--green); } .pm-g .pm-res .wl-l { background:var(--danger); } .pm-g .pm-res .wl-d { background:#9aa3af; }
/* [PM9] C4 "Do NOT bold the result" reaches the card's W / L square too */
.pm-g .pm-res .wl { font-weight:400; }
.pm-g .pm-min { text-align:center; color:var(--muted); font-size:13.5px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.pm-g .pm-fpts { text-align:center; font-weight:500; color:var(--gold); font-variant-numeric:tabular-nums; }
/* [PM3] the three category columns take .pm-fpts's alignment and figures; their ink is C1's (gi-bat / gi-fld / gi-pit) */
.pm-g .pm-pt { text-align:center; font-variant-numeric:tabular-nums; font-size:13.5px; }
/* [PM9] the log's Total is the game's overall: C1 purple, Craig's 600 (RMF's FPTS is gold 500) */
.pm-g .pm-fpts.gi-ovr { color:var(--hf-purple); font-weight:600; }
.pm-g .pm-cr { text-align:center; color:var(--muted); font-size:11px; transition:transform .15s; }
.pm-g.pm-open .pm-cr { transform:rotate(90deg); }
.pm-g.pm-up { color:var(--muted); }
.pm-g.pm-up .pm-fpts { color:var(--muted); font-weight:600; }
.pm-g.pm-dnp .pm-fpts { color:var(--muted); font-weight:600; }
/* [PM3] a game she played and scored 0 in: the dnp ink (the Total page mutes a 0 the same way, SP4) */
.pm-g .pm-fpts.pm-z { color:var(--muted); font-weight:600; }
/* [PM11] Craig 2026-09-30, the card's Game Log: "Calculated Points (numbers) should be 100 bolder or whatever the next
   thickness up is." Bat / Fld / Pit 400 (inherited) -> 500, Total 600 -> 700 (.pm-fpts base 500 -> 600). "IF tallied,
   should be 0.0 (color = mid-gray) IF not tallied (pitching stats here), should just be 0 (color = subtle faded gray)":
   gi-player.js gameLog() marks a tallied zero .pm-z (--muted) and an untallied one .z0 (Z1 --zero-ink); an untallied
   "0" is not a calculated number, so it stays 400. "W/L icon should be it's own column so centered all. then score
   should be left-aligned": the 64px Result track is now an 18px W/L track and a 46px score track (the header's Result
   spans both; an upcoming game's start time spans both, as before). */
.pm-g { grid-template-columns:34px 14px minmax(0,1fr) 18px 46px 74px 44px 44px 44px 14px 44px; }
.pm-g .pm-pt { font-weight:500; }
.pm-g .pm-fpts { font-weight:600; }
.pm-g .pm-fpts.gi-ovr, .pm-g .pm-fpts.pm-z { font-weight:700; }
.pm-g .pm-pt.pm-z { color:var(--muted); }
.pm-g .pm-pt.z0 { font-weight:400; }
.pm-g .pm-res.pm-sc { justify-content:flex-start; }
.pm-g .pm-res.pm-wl .wl { margin-right:0; }
/* [PM3] on a phone the three category columns go (RMF drops its DK pair at the same width); the tracks go
   with them rather than staying as 0px tracks, so Total stays in the last column */
@media (max-width:720px){
  .pm-g .pm-pt { display:none; }
  .pm-g { grid-template-columns:34px 14px minmax(0,1fr) 18px 46px 74px 14px 44px; }   /* [PM11] W/L + score tracks */
}
.pm-bd { display:none; padding:4px 12px 12px; background:var(--panel-2); border-bottom:1px solid var(--line); }
.pm-bd.open { display:block; }
.pm-bd .ln { display:grid; grid-template-columns:max-content minmax(0,1fr) max-content;
  align-items:center; gap:0 12px; padding:2px 2px; font-size:13px; border-bottom:1px dashed var(--line); }
.pm-bd .ln .ln-v { text-align:right; font-variant-numeric:tabular-nums; }
.pm-bd .ln .ln-l { min-width:0; }
.pm-bd .ln b { font-variant-numeric:tabular-nums; text-align:right; }
.pm-bd .ln.ln-tot > span { grid-column:1 / 3; }
.pm-bd .ln:last-child { border-bottom:none; }
.pm-bd .ln b { font-variant-numeric:tabular-nums; }
.pm-bd .ln b.pos { color:var(--green); } .pm-bd .ln b.neg { color:var(--danger); }
.pm-bd .ln-tot { margin-top:5px; padding-top:5px; border-top:2px solid var(--line); font-weight:700; }
.pm-bd .none { color:var(--muted); font-size:12.5px; padding:4px 2px; }
/* [PM12] the group label row now OPENS its group (gi-player.js breakdownHtml): the first one sits at the top of the
   panel, directly under the game row's own 1px line, so it drops the 2px rule and its 5px lead-in there */
.pm-bd .ln-grp:first-child { border-top:none; margin-top:0; }
/* [PM13] Craig 2026-09-30: "indent all this to align with opponent column" — the breakdown's rows start where the
   game row's Opponent column does: the row's 12px padding + the G (34px) and v/@ (14px) tracks + two 10px column gaps
   (.pm-g grid above; the same first three tracks at every width) */
.pm-bd { padding-left:80px; }
/* [PM3] a group's total and the game Total take C1 (the plain .ln b rules above would paint them table ink) */
.pm-bd .ln-tot b.gi-bat { color:var(--gold); } .pm-bd .ln-tot b.gi-fld { color:var(--green); }
.pm-bd .ln-tot b.gi-pit { color:var(--warn); } .pm-bd .ln-tot b.gi-ovr { color:var(--hf-purple); font-weight:600; }

.pm-tothead { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border-bottom:1px solid var(--line); }
.pm-tothead .lab { font-size:13px; font-weight:400; letter-spacing:.7px; text-transform:uppercase; color:var(--muted); }
.pm-tothead .big { font-size:30px; font-weight:700; color:var(--gold); font-variant-numeric:tabular-nums; line-height:1; }
.pm-tothead .big small { font-size:12px; font-weight:600; color:var(--muted); margin-left:4px; letter-spacing:.5px; }
/* [PM9] the season Total is Overall: C1 purple at Craig's 600 */
.pm-tothead .big.gi-ovr { color:var(--hf-purple); font-weight:600; }
.pm-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(70px,1fr)); gap:0; background:var(--panel-2); }
.pm-cell { background:var(--panel); padding:0; text-align:center; box-shadow:inset -1px -1px 0 var(--line); }
.pm-cell .k { display:block; padding:4px 6px; background:var(--panel-2); box-shadow:inset -1px 0 0 var(--line); font-size:9.5px; font-weight:700; letter-spacing:.4px; text-transform:uppercase; color:var(--muted); }
.pm-cell .v { display:block; font-size:17px; font-weight:700; margin-top:0; padding:2px 6px 8px; background:var(--panel); box-shadow:inset -1px -1px 0 var(--line); font-variant-numeric:tabular-nums; }
.pm-cell .v.z { color:var(--muted); opacity:.4; font-weight:500; }
/* [PM9] category values in their C1 ink; Overall at Craig's 600; a rank in C2's gray */
.pm-cell .v.gi-ovr { font-weight:600; }
.pm-cell .v.gi-rank { color:var(--muted); }

.pm-note { padding:12px 14px; font-size:13px; font-weight:400; letter-spacing:.7px;
  text-transform:uppercase; color:var(--muted); text-align:center;
  background:none; border:none; box-shadow:none; }
.pm-load { padding:44px 14px; text-align:center; color:var(--muted); font-size:14px; }

@media (max-width:520px){
  .pm-head { padding:16px 48px 14px 16px; gap:12px; }
  .pm-head .pm-flag { margin:-16px 0 -14px -16px; padding:0 16px; }
  .pm-head .pm-nm { font-size:20px; }
  /* [PM3] RMF's line here (40px minmax 104px 68px 46px 12px) is its World Cup six-column grid, which the
     ten-cell row wraps onto two lines; this keeps one line per game at 390: G · v/@ · Opp · Result · Date · ▶ · Total */
  .pm-g { grid-template-columns:30px 12px minmax(0,1fr) 60px 64px 12px 40px; gap:6px 6px; font-size:14px; padding:8px 10px; }
  .pm-body { padding:12px; }
  /* [PM11] the Result track splits here too: W/L 18px + score 42px (was one 60px track, so at 390 the score took the
     Date track and Total wrapped). [PM13] the breakdown's rows start at the Opponent column: 10 + 30 + 12 + 2 x 6 */
  .pm-g { grid-template-columns:30px 12px minmax(0,1fr) 18px 42px 64px 12px 40px; }
  .pm-bd { padding-left:64px; }
}
/* [PM8] room for the gear beside the X on the NAME line only (the buttons sit 10-44px from the top, level with
   it); the lines under it keep RMF's width, which a phone needs for the stat strip */
.pm-modal:has(.pm-gear:not([hidden])) .pm-head .pm-nm { margin-right:40px; }

/* [PM1] a player's name opens her card: RMF players.html:77 (.pname-lnk), with the house hover (a color
   change, never an underline) on the name itself — a row can open a game page, so the row does not light it */
.pname-lnk { cursor:pointer; }
.pname-lnk:hover { color:var(--accent); }

/* [PM6] [PM7] the softball field under Positions Played and the Hit Chart. The grass, apron and chalk are the
   RMF card's own field values (custom-fcfb-field.html TURF / TURF3 / CHALK, md5 2481e47553763cd586d831e959ccbc24);
   the infield clay is new. The dots take the colors the RMF card writes ON its field (the Game Events overlay's
   up / down, #5be12c / #e0483a) — GameChanger's own chart draws hits #00D682 and outs #B90018 on white. */
.pm-field-toggle { min-width:0; cursor:pointer; }
.pm-field-toggle > .pm-win { height:100%; }
.pm-field-toggle:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.pm-2up { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:560px){ .pm-2up { grid-template-columns:1fr; } }
.pm-field { --pm-turf:#2e7d32; --pm-apron:#1b5e20; --pm-chalk:#f4f6f4; --pm-clay:#b7835a;
  display:block; width:100%; height:auto; background:var(--pm-apron); }
.pm-field .pm-fg { fill:var(--pm-turf); stroke:var(--pm-chalk); stroke-width:1.2; }
.pm-field .pm-fd { fill:var(--pm-clay); }
.pm-field .pm-fm { fill:var(--pm-clay); stroke:var(--pm-chalk); stroke-width:.8; }
.pm-field .pm-fl { stroke:var(--pm-chalk); stroke-width:1.2; fill:none; }
.pm-field .pm-fb { fill:var(--pm-chalk); }
.pm-spot circle { fill:var(--hf-purple); stroke:var(--pm-chalk); stroke-width:1.5; }
.pm-spot-n { fill:var(--pm-chalk); font-size:11px; font-weight:600; text-anchor:middle; font-variant-numeric:tabular-nums; }
.pm-spot-k { fill:var(--pm-chalk); font-size:9px; font-weight:700; text-anchor:middle; letter-spacing:.4px; }
.pm-hit { stroke:#fff; stroke-width:1.2; }
.pm-hit.h { fill:#5be12c; } .pm-hit.o { fill:#e0483a; }
.pm-legend { display:flex; justify-content:center; flex-wrap:wrap; gap:6px 16px; padding:8px 12px 10px;
  font-size:12.5px; color:var(--muted); }
.pm-legend > span { display:inline-flex; align-items:center; }
.pm-legend .pm-key { display:inline-block; width:10px; height:10px; border-radius:50%; margin-right:6px; }
.pm-legend .pm-key.h { background:#5be12c; } .pm-legend .pm-key.o { background:#e0483a; }

/* [PM8] the edit form: gi.css's RMF .wmodal (S2:534-541), lifted over the card (#pmBg is 400) */
#pmEditBg { z-index:410; }
#pmEditBg .wmodal { max-width:460px; }
#pmEditBg .wmodal h3 { font-weight:600; }
/* [CE] the CM edit popup (gi-cmedit.js, 2026-09-29): every GI module edits in #pmEditBg. GI Games' 15 fields need the
   wider box; the box scrolls inside the window instead of running off it (the backdrop is position:fixed). A textarea
   takes the whole row. Section labels use table.gi th's own type (gi.css:329-330). */
#pmEditBg .wmodal { max-height:calc(100vh - 32px); overflow-y:auto; overscroll-behavior:contain; }
#pmEditBg .wmodal.gi-ed-wide { max-width:640px; }
#pmEditBg .gi-ed-full { flex:1 1 100%; }
#pmEditBg textarea { width:100%; font-family:inherit; }
#pmEditBg .gi-ed-sec { margin:16px 0 8px; color:var(--muted); font-size:11px; letter-spacing:.5px; text-transform:uppercase; font-weight:500; }
#pmEditBg h3 + .gi-ed-sec { margin-top:4px; }
/* [CE3] an in-text edit link (gi-cmedit editLink): a <button>, because it opens the popup and goes nowhere, dressed as
   the site's own link (gi.css a: --accent, no underline, no hover rule) */
.gi-edlink { -webkit-appearance:none; appearance:none; background:none; border:0; padding:0; margin:0; font:inherit;
  color:var(--accent); cursor:pointer; text-align:inherit; }
/* [RV] 2026-09-30 MDT — the Coach Review window (gi-review.js) in the same #pmEditBg host. Nothing new to look at:
   the site's .btn.btn-sm / .wk-chip / .chip / .jerseyno / table.gi / .gi-ed-sec, sized and spaced like the [CE] form.
   A row holding several things (checkbox, jersey card, name, chips, points, buttons) is one flex line centered
   vertically (estate rule); the play text under it is its own 12px muted line. The table scrolls in its own .tscroll. */
#pmEditBg .wmodal.gi-rv { max-width:760px; }
#pmEditBg .gi-rv-row { display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; font-size:13px; }
#pmEditBg .gi-rv-row > input[type=checkbox] { margin:0; }
#pmEditBg label.gi-rv-row { cursor:pointer; }
#pmEditBg .gi-rv-item { padding:8px 0; border-bottom:1px solid var(--line); }
#pmEditBg .gi-rv-sub { margin:4px 0 0; font-size:12px; color:var(--muted); }
#pmEditBg .gi-rv-in { padding-left:21px; }
#pmEditBg .gi-rv-head { margin-top:12px; font-weight:600; }
#pmEditBg .gi-rv-pts, #pmEditBg .gi-rv-act { margin-left:auto; }
#pmEditBg .gi-rv-pts { font-variant-numeric:tabular-nums; font-weight:600; }
#pmEditBg .gi-rv-act { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:6px; }
#pmEditBg .gi-rv-players { display:flex; flex-wrap:wrap; align-items:center; gap:8px 18px; margin-top:8px; font-size:13px; }
#pmEditBg .gi-rv-pl { display:inline-flex; align-items:center; gap:6px; }
#pmEditBg .gi-rv-pick { padding:8px 0; border-bottom:1px solid var(--line); }
#pmEditBg .gi-rv-chg { display:inline-flex; align-items:center; gap:4px; }
#pmEditBg .gi-rv-effect { margin-top:4px; }
#pmEditBg .tscroll { margin-top:8px; }
/* [RV] the game page's Coach Review row opens the rail; once the rail stacks ([P10] <=1280) it follows the game's
   own header (order 1 = #gameHead's; the header comes first in the markup) and precedes Player of the Game */
@media (max-width:1280px){ #gameReview { order:1; } }
/* [RV-C1] 2026-09-30 MDT — Craig: "too much text here. Where is my CoachUser button (above PlayerOfgame) to open modal?"
   #gameReview is now one row, not a window: the site's .btn.btn-sm "Coach Review" + its status .wk-chip, one flex line
   centered vertically (estate rule), 8px apart as in the POG card's Copy stats row (.pf). Layout only: no background,
   no border, no type of its own. [RV-D9] Game Info › HIT RTG: "not confirmed" + Confirm are one unit that never
   breaks (the chip wrapped its own text at 1440: 37.9px tall, 8.4px off Confirm). Kept INLINE, not inline-flex: as
   flex items the chip lost 1.4px of height and sat 1.52px off the rating text sharing its line (measured); inline they
   center within 0.05px of each other and 0.5px of the text, as they did everywhere it did not wrap. */
#gameReview.gi-rvbar { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
#gameInfo .gi-rtgc { white-space:nowrap; }
/* [Z1] 2026-09-30 09:27 MDT — Craig: "all pages, when looking at stats, all '0' stats should be something like 30% black
   in color to minimize UNLESS it's a real stat where 0 is important (P has multiple innings, era is 0.00) batter has
   multiple ABs, strikeouts is 0." A stat whose SHOWN text is a zero (0, 0.0, .000, 0% ...) carries .z0: gi-ui.js
   tableBody decides it for every table on every paint (isZeroText / zeroKeep, sortableTable spec.zeroInk), and the
   game page's Player of the Game rows and the player card add it by hand. Color only.
   What each selector has to beat: the C1 category inks on the td or on a span / b (.gi-ovr .gi-bat .gi-fld .gi-pit,
   0,1,0), the Total grids' per-game <span class="muted"> (0,1,0), a link (0,0,1), table.linfo td (0,1,2); on the card
   .pm-g .pm-fpts.pm-z / .gi-ovr (0,3,0), .pm-bd .ln b.pos / .ln-tot b.gi-* (0,3,1) and .pm-tothead .big.gi-ovr
   (0,3,0) tie and lose on order (this block comes after them). No competitor sets color with !important. */
:root { --zero-ink:rgba(0,0,0,.30); }
table.gi td.z0, table.gi td.z0 :is(b, strong, a, span), table.linfo td .z0,
.pm-g .pm-pt.z0, .pm-g .pm-fpts.z0, .pm-bd .ln b.z0, .pm-tothead .big.z0 { color:var(--zero-ink); }
/* the card's GameChanger / Season Totals chips: a zero was .v.z (muted, opacity .4, weight 500). It takes the token
   instead and keeps that 500; a dash or a blank still carries .z */
.pm-cell .v.z0 { color:var(--zero-ink); font-weight:500; }

/* =====================================================================================================================
   [SG] / [EG] 2026-09-30 MDT — THE EDIT GAME WINDOW ON THE STYLE GUIDE'S COMPONENTS (site/README.md SG1-SG6, EG1-EG14).
   Craig 2026-09-30 10:55 MDT on the Edit Game popup: "this needs major work - should be inputs ported from style guide
   with floating labels"; on the roster popup: "this is not the button or inputs with floating labels at all from Style
   Guide"; "load the other style sheets if needed. we do this on RMF and MudCup CFB". The host #pmEditBg is the guide's
   §Modals 2 short form (gi-shell-foot.html); its controls are Bootstrap 5.1.3 + the SST core, scope-prefixed
   (css/gameimpact/sg/, tools/scope-css.mjs) and loaded by gi-cmedit ensureSg() on the first open. Proof reference:
   https://rockymtnfantasy.com/ops/style-guide (Craig 12:46 MDT; GI is the RMF CFB port, root 16px on both, the same SST
   v1.054 files). Receipts: _notes/verify/component-eg-*.txt.
   ===================================================================================================================== */
/* [SG1] TOKEN BRIDGE — the custom properties the guide's components read, on the three scopes that carry them (the
   window, the rail's Edit Game bar, the sign-in card). A value GameImpact already has is its own token (--neon IS
   RMF's --PrimaryButtonColor #dfae35, Craig 12:46 MDT: "primary buttons ... use the GameImpact gold"); the rest are
   RockyMtnFantasy's RESOLVED values, read 2026-09-30 11:5x MDT off https://rockymtnfantasy.com/ops/style-guide
   (session scratchpad eg/guide-tokens-rockymtnfantasy.com.json). The input inks are RMF's own color-mix expressions
   with its page ground (#FCFCFC) resolved: the luminance clamp is 1 there, so each reduces to the mix written here.
   Fonts are Open Sans (D29: GameImpact pages read in Open Sans) in RMF's shorthand shape. NOT bridged, on purpose:
   --PageBgColor — the scoped core turns the page ground (sst's body::before, a fixed full-window veil) into a ::before
   of the scope element, which must stay transparent over the backdrop (measured: #FCFCFC there hid the page). */
#pmEditBg.ct-dashboard, .gi-sync-controls.gi-sgbtn, #gameReview.gi-sgbtn, .gi-award-copy.gi-sgbtn, .tlcsi-overlay {
  --color1:var(--neon); --color1rgb:rgb(223,174,53); --color1raw:223,174,53;
  --color1l:#e2b445; --color1xl:#e6bf60; --color1d:#cd9b20; --color1xd:#a87f1b; --color1xxd:#866615;
  --color1f1:rgba(223,174,53,.1); --color1f2:rgba(223,174,53,.2); --color1f3:rgba(223,174,53,.3);
  --flexcolor1:var(--neon); --flexcolor1raw:223,174,53; --flexcolor1d:#cd9b20; --flexcolor1xd:#a87f1b;
  --PrimaryButtonColor:var(--neon); --PrimaryButtonTextColor:var(--pill-text); --PrimaryButtonVisitedColor:var(--neon);
  --PrimaryButtonHoverColor:#ffcc00; --PrimaryButtonActiveColor:#a87f1b; --PrimaryButtonDisabledColor:#7F7F7F;
  --PrimaryButtonTextHoverColor:var(--pill-text); --PrimaryButtonTextActiveColor:var(--pill-text);
  --SecondaryButtonColor:#fcc72c; --SecondaryButtonTextColor:var(--pill-text); --SecondaryButtonVisitedColor:#fcc72c;
  --SecondaryButtonHoverColor:#ffcc00; --SecondaryButtonActiveColor:#d39e03; --SecondaryButtonDisabledColor:#7F7F7F;
  --SecondaryButtonTextHoverColor:var(--pill-text); --SecondaryButtonTextActiveColor:var(--pill-text);
  --LabelTagColor:var(--neon); --ContentTagColor:var(--neon); --SectionTagColor:var(--neon); --BorderBrandColor:var(--neon);
  --PasswordIconColorHover:var(--neon); --attention:#ffcc00;
  /* the guide page's own toggle-off ink (its style-guide.css #tl-style-guide-mount .btn-toggle-group, read 2026-09-30
     13:5x MDT: color-mix(--tgb, black 30%); the scoped sst-styles v1.054 default is 38%) — through the hook SST gives it */
  --ToggleGroupOffColor:color-mix(in srgb, var(--neon), black 30%);
  --RadiusBrand:15px; --ButtonBorderRadius:10px; --InputBorderRadius:4px; --InputBorderWidth:1px; --TagTextTransform:lowercase;
  --InputColor:color-mix(in srgb, rgba(0,0,0,.85) 100%, rgba(255,255,255,.92));
  --InputColorHover:var(--InputColor); --InputColorFocus:var(--InputColor);
  --InputBgColor:var(--panel); --InputBgColorHover:var(--panel); --InputBgColorFocus:var(--panel);
  --InputBorderColor:color-mix(in srgb, var(--InputColor) 10.6%, transparent);
  --InputBorderColorHover:var(--InputBorderColor); --InputBorderColorFocus:var(--InputBorderColor);
  --InputLabelColor:color-mix(in srgb, var(--InputColor) 80%, transparent);
  --InputPlaceholderColor:color-mix(in srgb, var(--InputColor) 47%, transparent);
  --RadioLabelColor:#222222; --FontColor:#222222;
  --flexwhite03:rgba(0,0,0,0.03); --flexwhite07:rgba(0,0,0,0.07);
  --gray1:#E5E5E5; --gray2:#CCCCCC; --gray3:#B2B2B2; --gray4:#999999; --gray5:#7F7F7F; --gray6:#666666; --gray7:#4C4C4C; --gray8:#333333; --gray9:#191919;
  --font1:400 normal 100%/1.3 'Open Sans', Arial, Helvetica, sans-serif; --fontPrimary:var(--font1);
  --font1Family:'Open Sans', Arial, Helvetica, sans-serif; --font2Family:var(--font1Family); --font3Family:var(--font1Family);
  --buttonFont:var(--font1); --ButtonFont:var(--font1); --LabelTagFont:var(--font1);
}

/* [SG2] NEUTRALIZER RELEASE — gi.css "7. SHELL NEUTRALIZER" (S2:612-631, not edited: it is the ported base) pins
   .btn / .btn-sm / .btn-xxs / text inputs / select / textarea / checkbox / label with !important, so on a GameImpact page
   the guide's own values lose. Inside the three scopes, each property it pins is stated AGAIN at the value the SST
   cascade gives on the guide (the authored declaration, read off the winning rule), at !important only because the
   rule being beaten has it. Derived rule by rule from tlc-verify-component's MISMATCH lines (receipts
   _notes/verify/component-eg-*.txt); never a restyle to compensate. The old #pmEditBg textarea rule ([CE], below the
   [PM8] block) is released the same way. */
/*SG2-BEGIN*/
/* the two empty @supports blocks bracket the generated rules for the tools (CSSOM keeps no comments); they style nothing */
@supports (--gi-sg2: begin) {}
.tlcsi-overlay input[type="hidden"] { border-top-color:revert !important; border-right-color:revert !important; border-bottom-color:revert !important; border-left-color:revert !important; }
.tlcsi-overlay input[type="hidden"].g-recaptcha-response-v3-tlcsignin_modal_v1 { border-top-color:revert !important; border-right-color:revert !important; border-bottom-color:revert !important; border-left-color:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-warning.caps.w-100.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-xxxs.btn-red.caps.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-xxxs.btn-black.btn-gc.caps.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-xxxs.btn-black.btn-chsaa.caps.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
.tlcsi-overlay button[type="submit"].btn.btn-primary.w-100.caps.egs-go { letter-spacing:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-sm.btn-danger.btn-gc.caps.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-sm.btn-success.caps.w-100.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-sm.btn-primary.caps.w-100.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-xxs.btn-primary.caps.w-100.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-xxs.btn-dark.caps.w-100.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) button[type="button"].btn.btn-xxs.btn-primary.caps.hvr-pop { letter-spacing:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) input[type="text"].form-control { box-shadow:revert !important; min-height:revert !important; max-height:revert !important; background-image:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) select.form-select { box-shadow:revert !important; min-height:revert !important; max-height:revert !important; }
.tlcsi-overlay input[type="password"].form-control { box-shadow:revert !important; min-height:revert !important; max-height:revert !important; background-image:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
.tlcsi-overlay input[type="text"].form-control { box-shadow:revert !important; min-height:revert !important; max-height:revert !important; background-image:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) textarea.form-control.gi-eg-stats { box-shadow:revert !important; background-image:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) textarea.form-control { box-shadow:revert !important; background-image:revert !important; background-position-x:revert !important; background-position-y:revert !important; background-size:revert !important; background-repeat:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) label { font-weight:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) label.form-check-label { font-weight:revert !important; }
.tlcsi-overlay label { font-weight:revert !important; }
.tlcsi-overlay label.form-check-label { font-weight:revert !important; }
:is(.ct-dashboard, .gi-sgbtn) input:is(input[type="text"]) { margin-top:0px !important; margin-right:0px !important; margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) select:is(select) { margin-top:0px !important; margin-right:0px !important; margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) textarea:is(textarea) { margin-top:0px !important; margin-right:0px !important; margin-left:0px !important; }
.tlcsi-overlay input:is(input[type="password"]) { margin-top:0px !important; margin-right:0px !important; margin-left:0px !important; }
.tlcsi-overlay input:is(input[type="text"]) { margin-top:0px !important; margin-right:0px !important; margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-control:is(textarea) { width:100% !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-select:is(select) { padding-right:2.25rem !important; display:block !important; background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e") !important; background-position-x:right 0.75rem !important; background-position-y:center !important; background-size:16px 12px !important; background-repeat:no-repeat !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-check-input:is(input[type="checkbox"]) { height:1em !important; width:1em !important; appearance:none !important; }
.tlcsi-overlay .form-check-input:is(input[type="checkbox"]) { height:1em !important; width:1em !important; appearance:none !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating>.form-control:is(textarea) { padding-top:1rem !important; padding-right:0.75rem !important; padding-bottom:1rem !important; padding-left:0.75rem !important; }
.tlcsi-overlay .form-floating>.form-control:is(input[type="password"]) { padding-top:1rem !important; padding-right:0.75rem !important; padding-bottom:1rem !important; padding-left:0.75rem !important; }
:is(.ct-dashboard, .gi-sgbtn) input[type='text']:is(input[type="text"]), :is(.ct-dashboard, .gi-sgbtn) input[type="text"]:not(.browser-default):is(input[type="text"]) { padding-top:13px !important; padding-right:13px !important; padding-bottom:13px !important; padding-left:10px !important; border-radius:var(--InputBorderRadius) !important; display:block !important; border-width:var(--InputBorderWidth) !important; border-top-style:solid !important; border-right-style:solid !important; border-bottom-style:solid !important; border-left-style:solid !important; border-color:var(--InputBorderColor) !important; background-color:var(--InputBgColor) !important; color:var(--InputColor) !important; margin-bottom:1.25rem !important; }
.tlcsi-overlay input[type='password']:is(input[type="password"]) { margin-bottom:1.25rem !important; display:block !important; }
.tlcsi-overlay input[type='text']:is(input[type="text"]), .tlcsi-overlay input[type="text"]:not(.browser-default):is(input[type="text"]) { padding-top:13px !important; padding-right:13px !important; padding-bottom:13px !important; padding-left:10px !important; margin-bottom:1.25rem !important; border-radius:var(--InputBorderRadius) !important; display:block !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-control:is(textarea), :is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:is(textarea) { border-color:var(--InputBorderColor) !important; background-color:var(--InputBgColor) !important; color:var(--InputColor) !important; }
:is(.ct-dashboard, .gi-sgbtn) textarea:is(textarea), :is(.ct-dashboard, .gi-sgbtn) textarea.form-control:is(textarea) { margin-bottom:1.25rem !important; border-radius:var(--InputBorderRadius) !important; border-width:var(--InputBorderWidth) !important; border-top-style:solid !important; border-right-style:solid !important; border-bottom-style:solid !important; border-left-style:solid !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:focus:is(input[type="text"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:focus:is(textarea) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:not(:placeholder-shown):is(textarea) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:focus:is(textarea), :is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:not(:placeholder-shown):is(textarea) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:focus:is(input[type="text"]), :is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:not(:placeholder-shown):is(input[type="text"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-control:not(:placeholder-shown):is(input[type="text"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
.tlcsi-overlay .form-floating > .form-control:focus:is(input[type="password"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
.tlcsi-overlay .form-floating > .form-control:not(:placeholder-shown):is(input[type="password"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
.tlcsi-overlay .form-floating > .form-control:focus:is(input[type="password"]), .tlcsi-overlay .form-floating > .form-control:not(:placeholder-shown):is(input[type="password"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
.tlcsi-overlay .form-floating > .form-control:focus:is(input[type="text"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
.tlcsi-overlay .form-floating > .form-control:not(:placeholder-shown):is(input[type="text"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
.tlcsi-overlay .form-floating > .form-control:focus:is(input[type="text"]), .tlcsi-overlay .form-floating > .form-control:not(:placeholder-shown):is(input[type="text"]) { padding-top:1.625rem !important; padding-bottom:0.925rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-control:focus:is(input[type="text"]) { box-shadow:none !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-select:focus:is(select) { box-shadow:none !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-control:focus:is(textarea) { box-shadow:none !important; }
:is(.ct-dashboard, .gi-sgbtn) select.form-select:is(select), :is(.ct-dashboard, .gi-sgbtn) .form-floating > .form-select:is(select) { padding-left:10px !important; margin-bottom:1.25rem !important; border-radius:var(--InputBorderRadius) !important; border-width:var(--InputBorderWidth) !important; border-top-style:solid !important; border-right-style:solid !important; border-bottom-style:solid !important; border-left-style:solid !important; border-color:var(--InputBorderColor) !important; background-color:var(--InputBgColor) !important; color:var(--InputColor) !important; }
:is(.ct-dashboard, .gi-sgbtn) input[type="checkbox"]:not(:checked):is(input[type="checkbox"]) { margin-top:10px !important; margin-right:10px !important; margin-bottom:10px !important; margin-left:0px !important; opacity:1 !important; position:relative !important; pointer-events:auto !important; }
:is(.ct-dashboard, .gi-sgbtn) input[type="checkbox"]:checked:is(input[type="checkbox"]) { margin-top:10px !important; margin-right:10px !important; margin-bottom:10px !important; margin-left:0px !important; opacity:1 !important; position:relative !important; pointer-events:auto !important; }
.tlcsi-overlay input[type="checkbox"]:checked:is(input[type="checkbox"]) { margin-top:10px !important; margin-right:10px !important; margin-bottom:10px !important; margin-left:0px !important; opacity:1 !important; position:relative !important; pointer-events:auto !important; }
.tlcsi-overlay input[type="checkbox"]:not(:checked):is(input[type="checkbox"]) { margin-top:10px !important; margin-right:10px !important; margin-bottom:10px !important; margin-left:0px !important; opacity:1 !important; position:relative !important; pointer-events:auto !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating label:is(label) { margin-top:0.7rem !important; margin-right:0px !important; margin-bottom:0px !important; margin-left:0px !important; }
.tlcsi-overlay .form-floating label:is(label) { margin-top:0.7rem !important; margin-right:0px !important; margin-bottom:0px !important; margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating>.form-select~label:is(label) { margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating>.form-control:not(:placeholder-shown)~label:is(label) { margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating>.form-control:focus~label:is(label), :is(.ct-dashboard, .gi-sgbtn) .form-floating>.form-control:not(:placeholder-shown)~label:is(label) { margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) .form-floating>.form-control:focus~label:is(label) { margin-left:0px !important; }
.tlcsi-overlay .form-floating>.form-control:focus~label:is(label) { margin-left:0px !important; }
.tlcsi-overlay .form-floating>.form-control:focus~label:is(label), .tlcsi-overlay .form-floating>.form-control:not(:placeholder-shown)~label:is(label) { margin-left:0px !important; }
.tlcsi-overlay .form-floating>.form-control:not(:placeholder-shown)~label:is(label) { margin-left:0px !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn-sm:is(button[type="button"]) { font-weight:normal !important; }
.tlcsi-overlay .btn:is(button[type="submit"]) { padding-top:1.5rem !important; padding-right:2.25rem !important; padding-bottom:1.5rem !important; padding-left:2rem !important; margin-top:0px !important; margin-right:0px !important; margin-bottom:0.75rem !important; margin-left:0px !important; font-size:1.25rem !important; line-height:1.5 !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn.btn-sm:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn-sm:is(button[type="button"]) { padding-top:1.75rem !important; padding-right:7% !important; padding-bottom:1.9rem !important; padding-left:7% !important; margin-top:0.15rem !important; margin-right:0.15rem !important; margin-bottom:0.15rem !important; margin-left:0.15rem !important; font-size:1.2rem !important; line-height:1.15rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn-danger:is(button[type="button"]) { display:inline-block !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn-success:is(button[type="button"]) { display:inline-block !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn-primary:is(button[type="button"]) { display:inline-block !important; }
.tlcsi-overlay .btn-primary:is(button[type="submit"]) { display:inline-block !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn.btn-sm:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn-sm:is(button[type="button"]) { border-radius:var(--ButtonBorderRadius, 10px) !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn:is(button[type="button"]) { padding-top:1.5rem !important; padding-right:2.25rem !important; padding-bottom:1.5rem !important; padding-left:2rem !important; margin-top:0px !important; margin-right:0px !important; margin-bottom:0.75rem !important; margin-left:0px !important; font-size:1.25rem !important; line-height:1.5 !important; border-radius:var(--ButtonBorderRadius, 10px) !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn-xxs:is(button[type="button"]) { font-weight:normal !important; display:inline-block !important; }
:is(.ct-dashboard, .gi-sgbtn) .hvr-pop:is(button[type="button"]) { box-shadow:rgba(0, 0, 0, 0) 0px 0px 1px !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn.btn-xxs:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn-xxs:is(button[type="button"]) { padding-top:0.9rem !important; padding-right:6% !important; padding-bottom:0.95rem !important; padding-left:6% !important; margin-top:0.15rem !important; margin-right:0.15rem !important; margin-bottom:0.15rem !important; margin-left:0.15rem !important; line-height:0.95rem !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn-warning:is(button[type="button"]) { display:inline-block !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn.btn-xxs:is(button[type="button"]), :is(.ct-dashboard, .gi-sgbtn) .btn-xxs:is(button[type="button"]) { border-radius:var(--ButtonBorderRadius, 10px) !important; }
:is(.ct-dashboard, .gi-sgbtn) .btn:hover:is(button[type="button"]) { box-shadow:none !important; }
.tlcsi-card.egs-modal .btn:is(button[type="submit"]) { border-radius:var(--ButtonBorderRadius, 10px) !important; }
.tlcsi-card.egs-modal .form-control:is(input[type="password"]) { border-top-left-radius:8px !important; border-top-right-radius:8px !important; border-bottom-left-radius:8px !important; border-bottom-right-radius:8px !important; }
.tlcsi-card.egs-modal input.form-control:focus:is(input[type="password"]) { box-shadow:rgba(0, 121, 193, 0.18) 0px 0px 0px 0.2rem !important; }
.tlcsi-card.egs-modal input.form-control:focus:is(input[type="text"]) { box-shadow:rgba(0, 121, 193, 0.18) 0px 0px 0px 0.2rem !important; }
/* the SST's own !important declarations for the released properties, re-asserted above the release */
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .w-100 { width:100% !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .caps { text-transform:uppercase !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type='text'], html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type="text"]:not(.browser-default) { font-size:1.25rem !important; line-height:4.5rem !important; height:4.5rem !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type='email'] { font-size:1.25rem !important; line-height:4.5rem !important; height:4.5rem !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type='password'] { font-size:1.25rem !important; line-height:4.5rem !important; height:4.5rem !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-control:focus { border-color:var(--InputBorderColorFocus) !important; background-color:var(--InputBgColorFocus) !important; color:var(--InputColorFocus) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-select:focus { border-color:var(--InputBorderColorFocus) !important; background-color:var(--InputBgColorFocus) !important; color:var(--InputColorFocus) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) textarea, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) textarea.form-control { font-size:1.4rem !important; line-height:2.1rem !important; min-height:260px !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type='text']:focus, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-control:focus { border:0px solid var(--InputBorderColorFocus) !important; border-width:var(--InputBorderWidth) !important; background-color:var(--InputBgColorFocus) !important; color:var(--InputColorFocus) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) select.form-select:focus, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-select:focus { border:0px solid var(--InputBorderColorFocus) !important; border-width:var(--InputBorderWidth) !important; background-color:var(--InputBgColorFocus) !important; color:var(--InputColorFocus) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) textarea:focus, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-control:focus { border:0px solid var(--InputBorderColorFocus) !important; border-width:var(--InputBorderWidth) !important; background-color:var(--InputBgColorFocus) !important; color:var(--InputColorFocus) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type='email']:focus, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-control:focus { border:0px solid var(--InputBorderColorFocus) !important; border-width:var(--InputBorderWidth) !important; background-color:var(--InputBgColorFocus) !important; color:var(--InputColorFocus) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type='password']:focus, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-control:focus { border:0px solid var(--InputBorderColorFocus) !important; border-width:var(--InputBorderWidth) !important; background-color:var(--InputBgColorFocus) !important; color:var(--InputColorFocus) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) select.form-select, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-floating > .form-select { padding-top:1.325rem !important; padding-bottom:0.625rem !important; font-size:1.25rem !important; line-height:1.95rem !important; height:4.5rem !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-check > label { color:var(--RadioLabelColor) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type="checkbox"]:checked + label { display:block !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) input[type="checkbox"]:not(:checked) + label { display:block !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-check input[type="checkbox"]:not(:checked) + label { padding-left:35px !important; text-transform:initial !important; display:block !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-check input[type="checkbox"]:checked + label { padding-left:35px !important; text-transform:initial !important; display:block !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-check-input[type="checkbox"] + label { padding-top:5px !important; padding-right:0px !important; padding-bottom:0px !important; padding-left:20px !important; margin-top:0px !important; margin-right:0px !important; margin-bottom:0.25rem !important; margin-left:0px !important; line-height:1.25 !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .form-floating label { padding-top:0.7rem !important; padding-right:0px !important; padding-bottom:0px !important; padding-left:15px !important; font-size:1.05rem !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-sm { font-family:var(--buttonFont) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn { font-family:var(--buttonFont) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-danger { box-shadow:none !important; background-image:none !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-success { box-shadow:none !important; background-image:none !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-primary { box-shadow:none !important; background-image:none !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-success, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-success:not([disabled]), html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-success { background-color:var(--bs-success, #00b52b) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-success, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-success { background-color:var(--bs-success, #00b52b) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-success:hover, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-success:hover, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-success:not([disabled]):not(.disabled):hover { background-color:rgb(0, 196, 0) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-success:hover, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-success:hover { background-color:rgb(0, 196, 0) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-danger, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-danger:not([disabled]), html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-danger { background-color:var(--bs-danger, #e60000) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-danger:hover, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-danger:hover, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-danger:not([disabled]):not(.disabled):hover { background-color:red !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-primary, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-primary:not([disabled]), html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-primary { background-color:var(--PrimaryButtonColor) !important; color:var(--PrimaryButtonTextColor) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-primary:hover, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn.btn-primary:hover, html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-primary:not([disabled]):not(.disabled):hover { background-color:var(--PrimaryButtonHoverColor) !important; color:var(--PrimaryButtonTextHoverColor) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay).tlc-ctx-ops :is(.btn, button, input, select, textarea, label, legend, .form-control, .form-label, .form-check-label) { font-family:var(--font0Family, 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif) !important; }
html:not(#gi-sg2) :is(.ct-dashboard,.tlcsi-overlay) .btn-primary:hover { background-color:var(--PrimaryButtonColor) !important; }
html:not(#gi-sg2) .gi-sgbtn .w-100 { width:100% !important; }
html:not(#gi-sg2) .gi-sgbtn .caps { text-transform:uppercase !important; }
html:not(#gi-sg2) .gi-sgbtn .btn { font-family:var(--buttonFont) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn, html:not(#gi-sg2) .gi-sgbtn .btn-xxs { font-family:var(--buttonFont) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn, html:not(#gi-sg2) .gi-sgbtn .btn-xxxs { font-family:var(--buttonFont) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn.btn-xxs, html:not(#gi-sg2) .gi-sgbtn .btn-xxs { font-size:0.8rem !important; }
html:not(#gi-sg2) .gi-sgbtn .btn.btn-xxxs, html:not(#gi-sg2) .gi-sgbtn .btn-xxxs { font-size:0.65rem !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-warning { box-shadow:none !important; background-image:none !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-primary { box-shadow:none !important; background-image:none !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-red { box-shadow:none !important; background-image:none !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-warning, html:not(#gi-sg2) .gi-sgbtn .btn-warning:not([disabled]), html:not(#gi-sg2) .gi-sgbtn .btn.btn-warning { background-color:var(--bs-warning, #ffd700) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-warning:hover, html:not(#gi-sg2) .gi-sgbtn .btn.btn-warning:hover, html:not(#gi-sg2) .gi-sgbtn .btn-warning:not([disabled]):not(.disabled):hover { background-color:rgb(255, 237, 0) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-dark, html:not(#gi-sg2) .gi-sgbtn .btn-dark:not([disabled]), html:not(#gi-sg2) .gi-sgbtn .btn.btn-dark { background-color:rgb(33, 37, 41) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-dark:hover, html:not(#gi-sg2) .gi-sgbtn .btn.btn-dark:hover, html:not(#gi-sg2) .gi-sgbtn .btn-dark:not([disabled]):not(.disabled):hover { background-color:var(--attention) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-black, html:not(#gi-sg2) .gi-sgbtn .btn-black:not([disabled]), html:not(#gi-sg2) .gi-sgbtn .btn.btn-black { border-top-width:2px !important; border-right-width:2px !important; border-bottom-width:2px !important; border-left-width:2px !important; border-top-style:solid !important; border-right-style:solid !important; border-bottom-style:solid !important; border-left-style:solid !important; border-top-color:rgb(0, 0, 0) !important; border-right-color:rgb(0, 0, 0) !important; border-bottom-color:rgb(0, 0, 0) !important; border-left-color:rgb(0, 0, 0) !important; background-color:rgb(0, 0, 0) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-black:hover, html:not(#gi-sg2) .gi-sgbtn .btn.btn-black:hover { border-top-width:2px !important; border-right-width:2px !important; border-bottom-width:2px !important; border-left-width:2px !important; border-top-style:solid !important; border-right-style:solid !important; border-bottom-style:solid !important; border-left-style:solid !important; border-top-color:rgb(51, 51, 51) !important; border-right-color:rgb(51, 51, 51) !important; border-bottom-color:rgb(51, 51, 51) !important; border-left-color:rgb(51, 51, 51) !important; background-color:rgb(51, 51, 51) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-red, html:not(#gi-sg2) .gi-sgbtn .btn-red:not([disabled]), html:not(#gi-sg2) .gi-sgbtn .btn.btn-red { background-color:rgb(230, 0, 0) !important; color:rgb(255, 255, 255) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-red:hover, html:not(#gi-sg2) .gi-sgbtn .btn.btn-red:hover, html:not(#gi-sg2) .gi-sgbtn .btn-red:not([disabled]):not(.disabled):hover { background-color:red !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-primary, html:not(#gi-sg2) .gi-sgbtn .btn-primary:not([disabled]), html:not(#gi-sg2) .gi-sgbtn .btn.btn-primary { background-color:var(--PrimaryButtonColor) !important; color:var(--PrimaryButtonTextColor) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-primary:hover, html:not(#gi-sg2) .gi-sgbtn .btn.btn-primary:hover, html:not(#gi-sg2) .gi-sgbtn .btn-primary:not([disabled]):not(.disabled):hover { background-color:var(--PrimaryButtonHoverColor) !important; color:var(--PrimaryButtonTextHoverColor) !important; }
html:not(#gi-sg2) .gi-sgbtn.tlc-ctx-ops :is(.btn, button, input, select, textarea, label, legend, .form-control, .form-label, .form-check-label) { font-family:var(--font0Family, 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif) !important; }
html:not(#gi-sg2) .gi-sgbtn .btn-primary:hover { background-color:var(--PrimaryButtonColor) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal .btn.btn-primary { border-top-width:0px !important; border-right-width:0px !important; border-bottom-width:0px !important; border-left-width:0px !important; border-top-style:none !important; border-right-style:none !important; border-bottom-style:none !important; border-left-style:none !important; border-top-color:currentcolor !important; border-right-color:currentcolor !important; border-bottom-color:currentcolor !important; border-left-color:currentcolor !important; background-color:var(--PrimaryButtonColor, #0079c1) !important; background:var(--PrimaryButtonColor, #0079c1) !important; color:var(--PrimaryButtonTextColor, #fff) !important; opacity:1 !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal .btn.btn-primary:hover { border-top-width:0px !important; border-right-width:0px !important; border-bottom-width:0px !important; border-left-width:0px !important; border-top-style:none !important; border-right-style:none !important; border-bottom-style:none !important; border-left-style:none !important; border-top-color:currentcolor !important; border-right-color:currentcolor !important; border-bottom-color:currentcolor !important; border-left-color:currentcolor !important; background-color:var(--PrimaryButtonHoverColor, #00c6ff) !important; background:var(--PrimaryButtonHoverColor, #00c6ff) !important; color:var(--PrimaryButtonTextHoverColor, #fff) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal input.form-control, html:not(#gi-sg2) .tlcsi-card.egs-modal input.form-control:focus { border-top-width:1px !important; border-right-width:1px !important; border-bottom-width:1px !important; border-left-width:1px !important; border-top-style:solid !important; border-right-style:solid !important; border-bottom-style:solid !important; border-left-style:solid !important; border-top-color:rgb(206, 212, 218) !important; border-right-color:rgb(206, 212, 218) !important; border-bottom-color:rgb(206, 212, 218) !important; border-left-color:rgb(206, 212, 218) !important; background-color:rgb(255, 255, 255) !important; color:rgb(34, 34, 34) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal input.form-control { border-top-width:1px !important; border-right-width:1px !important; border-bottom-width:1px !important; border-left-width:1px !important; border-top-style:solid !important; border-right-style:solid !important; border-bottom-style:solid !important; border-left-style:solid !important; border-top-color:rgb(206, 212, 218) !important; border-right-color:rgb(206, 212, 218) !important; border-bottom-color:rgb(206, 212, 218) !important; border-left-color:rgb(206, 212, 218) !important; background-color:rgb(255, 255, 255) !important; color:rgb(34, 34, 34) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal input.form-control:focus { border-color:var(--PrimaryButtonColor, #0079c1) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > label, html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > .form-control:focus ~ label { color:rgb(108, 117, 125) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > label { color:rgb(108, 117, 125) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > label, html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > .form-control:focus ~ label, html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > .form-control:not(:placeholder-shown) ~ label { color:rgb(108, 117, 125) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > label, html:not(#gi-sg2) .tlcsi-card.egs-modal .form-floating > .form-control:not(:placeholder-shown) ~ label { color:rgb(108, 117, 125) !important; }
html:not(#gi-sg2) .tlcsi-card.egs-modal .form-check > label, html:not(#gi-sg2) .tlcsi-card.egs-modal .form-check-label { color:rgb(34, 34, 34) !important; }
@supports (--gi-sg2: end) {}
/*SG2-END*/

/* [SG7] [SG8] (refute pass on the Edit Game window, 2026-09-30 MDT; site/README.md SG7-SG8) — two places where the scoping itself
   changed the guide's cascade. Nothing here is a new value: each rule is the guide's own, restated where the scope moved it.
   SG7 THE SCOPE BUMP. Every scoped core selector carries one class more than on the guide (:is(.ct-dashboard,.tlcsi-overlay)
   in front), so Bootstrap's reboot `button` (radius 0, font inherit) and sst-styles `.hvr-pop` (position:relative) now
   outrank the component sheet that wins on the guide: modal-close.css `.ct-modal-close` / `.egs-close`, (0,1,0). The window's
   X and the sign-in card's X fell into the flow, square, at 19.36px (tlc-verify-component MISMATCH font-size / line-height
   / border-radius; the card's X pushed its header from 77.2 to 123.2px). modal-close.css (turnerlee.com/shared/modals/v1/
   modal-close.css v1.000, md5 b888ca51968991aec0eca1f15489160d) is restated rule for rule, one id / class above the bump. */
#pmEditBg :is(.tlc-modal-close, .ct-modal-close), .tlcsi-overlay :is(.tlc-modal-close, .egs-close) {
  position:absolute; top:50%; margin-top:-20px; right:12px; z-index:2;
  display:flex; align-items:center; justify-content:center; width:40px; height:40px; padding:0;
  background:transparent; border:0; border-radius:50%; font-family:inherit; font-size:28px; line-height:1; cursor:pointer;
  color:var(--tlc-modal-close-ink, var(--gray4, #9ca3af)); opacity:.9;
  transition:color .12s ease, background-color .12s ease, opacity .12s ease;
}
#pmEditBg :is(.tlc-modal-close, .ct-modal-close):is(:hover, :focus-visible), .tlcsi-overlay :is(.tlc-modal-close, .egs-close):is(:hover, :focus-visible) {
  opacity:1; color:var(--tlc-modal-close-ink-hover, var(--gray8, #333333)); background:var(--tlc-modal-close-bg-hover, rgba(0, 0, 0, .06));
}
#pmEditBg :is(.tlc-modal-close, .ct-modal-close):focus-visible, .tlcsi-overlay :is(.tlc-modal-close, .egs-close):focus-visible {
  outline:2px solid var(--tlc-modal-close-ink-hover, var(--gray8, #333333)); outline-offset:2px;
}
@media (prefers-reduced-motion: reduce) {
  #pmEditBg :is(.tlc-modal-close, .ct-modal-close), .tlcsi-overlay :is(.tlc-modal-close, .egs-close) { transition:none; }
}
/* SG8 THE SIGN-IN CARD IS A SCOPE ROOT STANDING IN FOR THE GUIDE PAGE'S <body class="tlc-ctx-ops">. The scoped core folds
   html's reset (sst-3rdparty: font-family sans-serif) and body's rule (sst-styles: font-family --font1Family, font-size
   --FontSize, line-height --LineHeight) onto that ONE element and the later html reset wins, so every inherited text in the
   card read in the system sans-serif; --FontSize was never set, so the card took GameImpact's 19.36px page size where the
   guide's card is 16px (measured on https://rockymtnfantasy.com/ops/style-guide #sg-demo-signin: --FontSize 1rem, and
   line-height 1.3 from body.tlc-ctx-ops) — the 19.36px Remember box then showed 1px of Bootstrap blue under its 22px square.
   Restated for the card: the body rule's family (GameImpact's --font1Family, Open Sans: D29), RMF's --FontSize, the ops
   body's line-height, and the ops context's control font (sst-site-structure's html.tlc-ctx-ops rule, which [SG2] already
   re-asserts for the window, whose host carries tlc-ctx-ops). The window keeps GameImpact's page size (declared SG8). */
.tlcsi-overlay { --FontSize:1rem; font-family:var(--font1Family); line-height:1.3; }
html:not(#gi-sg2) .tlcsi-overlay :is(.btn, button, input, select, textarea, label, legend, .form-control, .form-label, .form-check-label) { font-family:var(--font0Family, 'Open Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif) !important; }

/* [SG3] GEOMETRY. The card scrolls its BODY (RMF players.html:156 #txBg's model: header and footer stay put, the card
   keeps overflow:visible so hvr-pop can leave it). Declared: the card is a flex column capped at the window
   (100dvh - the backdrop's 16px padding x 2) instead of RMF's body cap of calc(100vh - 220px) — this footer carries the
   complete box, a status line and the Save, so a fixed 220 would push it off a phone. [hidden] is display:none for
   every part of the window and the sign-in card, whatever display a component rule gives it (the UA rule loses to any
   author display rule). */
#pmEditBg.ct-dashboard .ct-modal { display:flex; flex-direction:column; max-height:calc(100dvh - 32px); }
#pmEditBg.ct-dashboard .ct-modal-header, #pmEditBg.ct-dashboard .ct-modal-footer { flex:0 0 auto; }
#pmEditBg.ct-dashboard .ct-modal-body { flex:1 1 auto; min-height:0; overflow-y:auto; overscroll-behavior:contain; }
#pmEditBg [hidden], #pmEditBg.ct-dashboard .btn[hidden], .tlcsi-overlay [hidden] { display:none !important; }

/* [SG4] §20 Disclosure — TurnerLee shared/style-guide/v1/style-guide.css:2237-2264 (md5 6e16d6183415b532771b5bc54190e68c),
   rule for rule, scoped to the window (that sheet is the guide page's own and is not loaded here). */
:is(#pmEditBg,#giSyncCoach) .sg-disclosure { border:1px solid var(--bdr,rgba(0,0,0,.10)); border-radius:var(--RadiusBrand,6px); overflow:hidden; }
:is(#pmEditBg,#giSyncCoach) .sg-disclosure details + details { border-top:1px solid var(--bdr,rgba(0,0,0,.10)); }
:is(#pmEditBg,#giSyncCoach) .sg-disclosure summary {
  cursor:pointer; padding:12px 16px; font-weight:600; list-style:none;
  font-family:var(--font3Family, inherit);
  display:flex; align-items:center; gap:10px;
  background:var(--flexwhite03,rgba(0,0,0,.03)); transition:background .15s ease;
}
:is(#pmEditBg,#giSyncCoach) .sg-disclosure summary::-webkit-details-marker { display:none; }
:is(#pmEditBg,#giSyncCoach) .sg-disclosure summary::before {
  content:"\25B8"; font-size:12px; opacity:.6; transition:transform .2s ease; flex:0 0 auto;
}
:is(#pmEditBg,#giSyncCoach) .sg-disclosure details[open] > summary::before { transform:rotate(90deg); }
:is(#pmEditBg,#giSyncCoach) .sg-disclosure summary:hover { background:var(--flexwhite07,rgba(0,0,0,.06)); }
:is(#pmEditBg,#giSyncCoach) .sg-disclosure summary:focus-visible { outline:2px solid var(--color1,#0079c1); outline-offset:-2px; }
:is(#pmEditBg,#giSyncCoach) .sg-disclosure-body { padding:14px 16px 16px 42px; font-size:14px; }
/* [EG-R12] the summary's small meta is its own flex item with no top margin (.gi-eg-sub's 6px put its center 3px low) */
#pmEditBg .sg-disclosure summary > .gi-eg-sub { margin:0; }

/* [EG] THE WINDOW'S LAYOUT (gi-review.js). Declared (EG1): the Edit Game card is 960px wide (the guide's short form is
   640px; this one holds a player grid of 7 columns), the roster / settings cards keep the guide's 640. Section heads take
   the short form's own field-label look (tracker-modal.css :is(.ct-dashboard,…) .ct-form-group label: 70%, uppercase,
   1px tracking, --color1 — never gray, Craig 2026-08-31) at weight 600 with a rule above. Every row of two or more
   things is a flex line centered vertically (estate rule); small text is its own box. */
#pmEditBg.gi-eg .ct-modal { max-width:960px; }
#pmEditBg .gi-eg-h { display:flex; align-items:center; gap:10px; margin:28px 0 12px; padding-top:14px; border-top:1px solid var(--line);
  font-size:70%; letter-spacing:1px; text-transform:uppercase; color:var(--color1); font-weight:600; }
#pmEditBg .gi-eg-h:first-child, #pmEditBg .gi-eg-status + .gi-eg-h { margin-top:12px; }
#pmEditBg .gi-eg-hm { font-size:12px; letter-spacing:.3px; text-transform:none; color:var(--muted); font-weight:400; }
#pmEditBg .gi-eg-line { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; font-size:14px; }
#pmEditBg .gi-eg-sub { margin: 6px 0 0; font-size: 17px; color: var(--muted); }
#pmEditBg .gi-eg-line > .gi-eg-sub { margin:0; }
#pmEditBg .gi-eg-status { margin:0 0 4px; }
#pmEditBg .gi-eg-head { margin-top:14px; font-weight:600; }
#pmEditBg .gi-eg-2 { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
#pmEditBg .gi-eg-3 { grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr); }
#pmEditBg .ct-form-row { margin-bottom:12px; }
#pmEditBg .gi-eg-acts { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:16px; }
#pmEditBg .gi-eg-item { padding:10px 0; border-bottom:1px solid var(--line); }
#pmEditBg .gi-eg-act { display:flex; flex-wrap:nowrap; align-items:center; justify-content:flex-end; gap:6px; margin-left:auto; }
/* declared (EG17): a discrepancy's action buttons sit side by side at the end of its line. btn-xxs's horizontal padding is
   a PERCENTAGE of a container that is itself sized by the buttons, so it collapses and they wrapped into a column
   (measured on G18). The same fix the SST gives its own toggle group ("HORIZONTAL padding ... MUST be a length", its
   20px): stated at !important only because the [SG2] release it overrides has it. */
#pmEditBg .gi-eg-act .btn { padding-left:20px !important; padding-right:20px !important; white-space:nowrap; }
#pmEditBg .gi-eg-pre { margin:0; white-space:pre-wrap; font-size:13px; font-family:ui-monospace, Menlo, Consolas, monospace; color:var(--text); }
#pmEditBg #giRvNotes { margin-top:12px; }
#pmEditBg .gi-eg-disc + .gi-eg-disc, #pmEditBg #giRvNotes + .gi-eg-disc { margin-top:12px; }
#pmEditBg .tscroll { margin-top:8px; }
/* [EG-R14] (refute: at 390 the TOTALS table was 338px in a 310px box, the new Total clipped) the table is the box's width
   and the Player column takes what is left, a long name ending in an ellipsis; every number column keeps its content width */
#pmEditBg #giRvTotalsTable { width:100%; }
#pmEditBg #giRvTotalsTable td:nth-child(3) { width:100%; max-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* [EG2] COACH INPUT rows. Craig: "Each row should have the line like SEARCH/CLEAR is usually written (centered
   vertically)" — the row is gi.css .pf's line (S4:19-85: 8px 10px padding, 8px gap, a 1px --line rule, centered) and
   CLUTCH / FUMBLE are its .q-toggle label (gi.css:577, the SEARCH / CLEAR text). The rows share ONE grid (subgrid), so
   every column lands at the same x on every row (estate rule: sibling grids cannot agree). */
#pmEditBg .gi-eg-rows { display:grid; grid-template-columns:minmax(0,1fr) auto auto auto; border-top:1px solid var(--line); }
#pmEditBg .gi-eg-row { grid-column:1 / -1; display:grid; grid-template-columns:subgrid; align-items:center; column-gap:14px;
  padding:8px 10px; border-bottom:1px solid var(--line); }
#pmEditBg .gi-eg-row.dnp .gi-eg-name { color:var(--muted); }
#pmEditBg .gi-eg-who { display:flex; align-items:center; gap:8px; min-width:0; }
#pmEditBg .gi-eg-name { font-size:14px; font-weight:500; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
#pmEditBg .gi-eg-who .q-toggle, #pmEditBg .gi-eg-cnt .q-toggle { text-transform:uppercase; white-space:nowrap; }
#pmEditBg .gi-eg-cnt { display:flex; align-items:center; gap:6px; }
#pmEditBg .gi-eg-n { min-width:22px; text-align:center; font-size:15px; font-weight:600; font-variant-numeric:tabular-nums; }
#pmEditBg .gi-eg-n.z { color:var(--muted); font-weight:400; }   /* a count of 0 reads quieter (the site's muted ink; the
   zero-ink token stays on the stat tables its verifier registers — verify-zero-ink's sweep flags it anywhere else) */
#pmEditBg .gi-eg-cnt .tlc-shortcut-sm[hidden] { display:inline-flex !important; visibility:hidden; }
/* declared (EG-R13): the x that takes one back keeps the guide's 20px sm circle, with a transparent 28px hit area around it
   (the component's ::after is unused: content:none); a thumb at 390 no longer needs a 20px target */
#pmEditBg .gi-eg-cnt .tlc-shortcut.tlc-shortcut-sm { overflow:visible; }
#pmEditBg .gi-eg-cnt .tlc-shortcut.tlc-shortcut-sm::after { content:''; display:block; position:absolute; inset:-4px; border-radius:50%; }
/* [EG-R10] an unpicked row's Off / Def group is in the row but hidden (visibility keeps its width): a first pick moves nothing */
#pmEditBg .gi-eg-side.gi-eg-slot { visibility:hidden; }
#pmEditBg .gi-eg-pog, #pmEditBg .gi-eg-side { display:flex; align-items:center; }
#pmEditBg .gi-eg-more, #pmEditBg .gi-eg-hints { grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; gap:8px 18px;
  padding:6px 10px 8px 46px; border-bottom:1px solid var(--line); background:var(--panel-2); }
#pmEditBg .gi-eg-hints { flex-direction:column; align-items:stretch; gap:6px; }
#pmEditBg .gi-eg-hint .gi-eg-sub { flex:1 1 auto; min-width:0; }
#pmEditBg .gi-eg-stray { display:flex; flex-direction:column; gap:6px; margin-top:10px; }
#pmEditBg .gi-eg-stray .gi-eg-sub { flex:1 1 auto; min-width:0; }
@media (max-width:760px){
  /* declared (EG1): a phone row is three lines — who (+ the more button), then Clutch + Fumble, then Play of the Game
     (+ Off / Def); the row's side padding and the count's gaps close up so the two counts fit a 390 window (measured:
     Clutch 140 + Fumble 142 + 8 = 290 of 302) */
  #pmEditBg .gi-eg-rows { grid-template-columns:auto auto minmax(0,1fr) auto; }
  #pmEditBg .gi-eg-row { row-gap:8px; column-gap:8px; padding:8px 4px; }
  #pmEditBg .gi-eg-cnt { gap:4px; }
  #pmEditBg .gi-eg-who { grid-column:1 / 4; grid-row:1; }
  #pmEditBg .gi-eg-row > .tlc-shortcut-dots { grid-column:4; grid-row:1; justify-self:end; }
  #pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(2) { grid-column:1; grid-row:2; }
  #pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(3) { grid-column:2 / 5; grid-row:2; }
  #pmEditBg .gi-eg-row > .gi-eg-pog { grid-column:1 / 3; grid-row:3; }
  #pmEditBg .gi-eg-row > .gi-eg-side { grid-column:3 / 5; grid-row:3; }
  #pmEditBg .gi-eg-more, #pmEditBg .gi-eg-hints { padding-left:4px; padding-right:4px; }
  #pmEditBg .gi-eg-2, #pmEditBg .gi-eg-3 { grid-template-columns:minmax(0,1fr); }
}
/* [EG6] GAME EVENTS — the reorder list, TurnerLee shared/editor/v1/editor.css:1966-1989 (md5 94f018751d7492e918994588c8b56bb9),
   rule for rule; substitutions (declared EG8): --swcE-line -> --line, --swcE-ink -> --text, scoped to the window. */
#pmEditBg .tlcm-order-list { list-style:none; margin:0 0 18px; padding:0; border-top:1px solid var(--line); }
#pmEditBg .tlcm-order-row {
  position:relative;
  display:flex; align-items:center; gap:10px; padding:9px 4px;
  border-bottom:1px solid var(--line);
}
#pmEditBg .tlcm-order-row.tlcm-drag { opacity:.45; }
#pmEditBg .tlcm-order-row.tlcm-line-top::before,
#pmEditBg .tlcm-order-row.tlcm-line-bot::after {
  content:""; position:absolute; left:0; right:0; height:2px;
  background:var(--color1, #15718d); pointer-events:none;
}
#pmEditBg .tlcm-order-row.tlcm-line-top::before { top:-1.5px; }
#pmEditBg .tlcm-order-row.tlcm-line-bot::after { bottom:-1.5px; }
#pmEditBg .tlcm-grip {
  cursor:grab; color:#96a4aa; background:none; border:0; padding:.3rem .1rem; line-height:1;
}
#pmEditBg .tlcm-grip:active { cursor:grabbing; }
/* declared (EG-R13): the grip is a 32px square target (the SVG keeps its 10x16; cm-write's padding .3rem .1rem made a 13x26
   target, under a thumb's minimum at 390) */
#pmEditBg .tlcm-grip { display:inline-flex; align-items:center; justify-content:center; min-width:32px; min-height:32px; }
#pmEditBg .tlcm-grip svg { display:block; width:10px; height:16px; fill:currentColor; }
/* the slot's own parts: its number, its label + ▲ ▼, then the player (floating select) and her stats (floating textarea) */
#pmEditBg .tlcm-grip:disabled { cursor:default; opacity:.3; }
/* [EG-R11] (refute: grip and rank sat 3.2px above the label, and at 390 slot 1's ▲ ▼ dropped 40px) the slot is a grid:
   the grip, the rank and the header line share row 1 and center on it; the player and her stats stack under the header.
   The body wrapper is display:contents, so its parts are the grid's own items. The header never wraps: the label wraps
   inside its own box and ▲ ▼ keep their place. */
#pmEditBg .gi-eg-ev { display:grid; grid-template-columns:auto 22px minmax(0,1fr); column-gap:10px; row-gap:10px; align-items:center; }
#pmEditBg .gi-eg-ev > .tlcm-grip { grid-column:1; grid-row:1; }
#pmEditBg .gi-eg-ev > .gi-eg-rank { grid-column:2; grid-row:1; }
#pmEditBg .gi-eg-rank { font-size:18px; font-weight:700; color:var(--color1); text-align:center; }
#pmEditBg .gi-eg-evbody { display:contents; }
#pmEditBg .gi-eg-evbody > * { grid-column:3; min-width:0; }
#pmEditBg .gi-eg-evbody > .gi-eg-evhead { grid-row:1; }
#pmEditBg .gi-eg-evhead { justify-content:space-between; flex-wrap:nowrap; }
#pmEditBg .gi-eg-evlab { flex:1 1 auto; min-width:0; font-size:13px; font-weight:600; letter-spacing:1px; text-transform:uppercase; }
#pmEditBg .gi-eg-ud { flex:0 0 auto; display:flex; align-items:center; gap:6px; }
#pmEditBg .gi-eg-ud svg { display:block; width:12px; height:12px; fill:currentColor; }
/* declared (EG8): ▲ / ▼ are the touch path, so each is at least a 44px target — btn-xxs's horizontal padding is a
   percentage and collapses to ~6px in this narrow flex cell (measured 21.7px wide at 390) */
#pmEditBg .gi-eg-ud .btn { min-width:44px; }
#pmEditBg textarea.gi-eg-stats { height:120px; }
/* the footer: the complete box, the message and ONE full-width Save, stacked (the guide's short form puts its primary
   in a flex row; this footer holds three lines). Declared (EG12): the tracker's <=768 column-REVERSE is not used —
   Keep editing stays above Discard changes (Craig 2026-09-23: Cancel is always last). */
#pmEditBg.ct-dashboard .ct-modal-footer { flex-direction:column; align-items:stretch; gap:10px; }
#pmEditBg .gi-eg-msg { margin:0; font-size:13px; }
#pmEditBg .gi-eg-done .form-check { margin:0; }

/* [EG D8] 2026-09-30 12:5x MDT — Craig, on the live game page: "where is my big button to EDIT GAME details". The rail's
   Coach Review row is now ONE full-rail-width "Edit Game" button in the style guide's primary at its normal size (no
   size class: RMF players.html:685's class string, "btn btn-primary caps w-100 hvr-pop"), with the review's status chip
   centered under it. #gameReview carries .gi-sgbtn.tlc-ctx-ops: css/gameimpact/sg/sg-btn.css is the same scoped core
   with the scope .gi-sgbtn and only its button rules (tools/scope-css.mjs; a small sheet linked in gi-head.html, so a
   public page view never loads the whole core), and the window's lazy full set (scope .ct-dashboard) never reaches it. */
#gameReview.gi-egbar { display:flex; flex-direction:column; align-items:stretch; gap:8px; }
/* the guide's .btn:hover lifts the button to z-index 1000 (!important, the hvr-pop keyframe's own layer); the bar is its
   own stacking context so that stays INSIDE it — measured: with the pointer still on the button after the click, the
   hovered button painted over the open window's backdrop (#pmEditBg z 410) */
#gameReview.gi-egbar { position:relative; z-index:0; isolation:isolate; }
#gameReview.gi-egbar > .gi-egchip { display:flex; justify-content:center; align-items:center; }

/* 2026-10-02 — Craig's compact Edit Game layout. Component controls retain the SST styles. */
#gameReview .gi-eg-wait { font-family:var(--font1Family); font-weight:700; color:var(--pill-text); background:none; }
#pmEditBg .gi-eg-ratings { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; padding:20px 0 4px; }
#pmEditBg .gi-eg-rating-label { margin:0; font:600 13px/1.4 var(--font1Family); color:var(--gray7); text-transform:uppercase; letter-spacing:.5px; }
#pmEditBg .gi-eg-rating-value { font:500 44px/1.2 var(--font1Family); font-variant-numeric:tabular-nums; color:var(--text); margin:4px 0 10px; }
#pmEditBg .gi-eg-override { display:flex; align-items:center; gap:10px; }
#pmEditBg .gi-eg-override > label { font:500 11px/1.3 var(--font1Family); color:var(--gray6); text-transform:uppercase; margin:0; }
#pmEditBg .gi-eg-override > select { width:130px; flex:0 1 130px; }
#pmEditBg .gi-eg-evidence { margin:12px 0 4px; font-size:12px; line-height:1.5; color:var(--gray6); }
#pmEditBg .gi-eg-rating-meta { margin:0; font-size:11px; line-height:1.5; color:var(--gray6); }
#pmEditBg .gi-eg-help { border:0; background:none; padding:8px; color:var(--gray5); opacity:.2; font-size:20px; cursor:pointer; }
#pmEditBg .gi-eg-help:is(:hover,:focus-visible,[aria-expanded="true"]) { opacity:1; color:var(--attention); }
#pmEditBg .gi-eg-coach-label, #gameReview .gi-eg-coach-label { font:500 11px/1.3 var(--font1Family); color:var(--gray7); text-transform:uppercase; white-space:nowrap; }
#pmEditBg .gi-eg-pog-label, #gameReview .gi-eg-pog-label { display:flex; align-items:center; gap:8px; cursor:pointer; margin:0; padding:0; border:0; background:none; }
#pmEditBg .gi-eg-pog-empty, #gameReview .gi-eg-pog-empty { border:2px solid var(--gray3); background:transparent; }
#pmEditBg .gi-eg-pog-label:focus-visible, #gameReview .gi-eg-pog-label:focus-visible { outline:2px solid var(--attention); outline-offset:4px; }
#pmEditBg .gi-eg-pog-label:disabled { opacity:.4; cursor:default; }
#pmEditBg .gi-eg-pog .tlc-shortcut { cursor:inherit; }
#pmEditBg .gi-eg-row { column-gap:18px; }
@media(max-width:760px) {
  #pmEditBg .gi-eg-row { grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:12px; }
  #pmEditBg .gi-eg-who { grid-column:1 / -1; }
  #pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(2) { grid-column:1; }
  #pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(3) { grid-column:2; }
  #pmEditBg .gi-eg-row > .gi-eg-pog { grid-column:1 / -1; }
  #pmEditBg .gi-eg-ratings { gap:14px; }
  #pmEditBg .gi-eg-override { flex-direction:column; align-items:flex-start; gap:4px; }
  #pmEditBg .gi-eg-override > select { width:100%; flex-basis:auto; }
  #pmEditBg .gi-eg-rating-label { font-size:11px; min-height:2.8em; }
}

#pmEditBg .gi-eg-pog-empty::before, #gameReview .gi-eg-pog-empty::before { content:none; }

/* Edit Game facts and responsive save label; incumbent colors/type remain authoritative. */
.gi-eg-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.gi-eg-facts dt { font-weight: 500; }
.gi-eg-facts dd { margin: .25rem 0 0; }
.gi-eg-save-long { display: none; }
@media (min-width: 992px) { .gi-eg-save-short { display: none; } .gi-eg-save-long { display: inline; } }
@media (max-width: 575px) { .gi-eg-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.gi-eg-msg:empty { display: none; }

/* 2026-10-02: keep every coach control on its own row when the modal content is narrow. */
#pmEditBg .gi-eg-coach-list { container-type:inline-size; }
#pmEditBg .gi-eg-rows { grid-template-columns:minmax(0,1fr) auto auto auto 28px; }
#pmEditBg .gi-eg-row { grid-template-columns:subgrid; }
#pmEditBg .gi-eg-row > .gi-eg-who,
#pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(2),
#pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(3),
#pmEditBg .gi-eg-row > .gi-eg-pog { grid-column:auto; grid-row:auto; }
#pmEditBg .gi-eg-suggest, #pmEditBg .gi-eg-suggest-slot { width:28px; height:28px; }
#pmEditBg .gi-eg-suggest { display:inline-flex; align-items:center; justify-content:center; padding:4px; }
#pmEditBg .gi-eg-suggest > span { display:flex; align-items:center; justify-content:center; width:18px; height:18px; border:1.5px solid currentColor; border-radius:50%; font:600 11px/1 var(--font1Family); }
#pmEditBg .gi-eg-hints { padding:6px 10px 8px; background:none; }
#pmEditBg .gi-eg-hints[hidden] { display:none; }
#pmEditBg .gi-eg-hint { margin:0; font:italic 12px/1.5 var(--font1Family); color:var(--muted); }
@container (max-width:850px) {
  #pmEditBg .gi-eg-rows { grid-template-columns:minmax(0,1fr) 28px; }
  #pmEditBg .gi-eg-row { row-gap:8px; column-gap:12px; }
  #pmEditBg .gi-eg-row > .gi-eg-who { grid-column:1 / -1; grid-row:1; }
  #pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(2) { grid-column:1 / -1; grid-row:2; }
  #pmEditBg .gi-eg-row > .gi-eg-cnt:nth-of-type(3) { grid-column:1 / -1; grid-row:3; }
  #pmEditBg .gi-eg-row > .gi-eg-pog { grid-column:1; grid-row:4; }
  #pmEditBg .gi-eg-row > .gi-eg-suggest, #pmEditBg .gi-eg-row > .gi-eg-suggest-slot { grid-column:2; grid-row:4; }
}

/* Compact awards: disclosure text for ranks 1–4, editor only for Write In. */
#pmEditBg .gi-eg-ev { display:block; padding:6px 10px; }
#pmEditBg .gi-eg-award-line { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
#pmEditBg .gi-eg-award-grip { display:inline-flex; justify-content:flex-start; gap:10px; padding:4px 0; color:var(--gray7); touch-action:none; }
#pmEditBg .gi-eg-award-grip .gi-eg-evlab { font-size:12px; letter-spacing:.4px; }
#pmEditBg .gi-eg-award-name { border:0; background:none; padding:4px 0; color:var(--text); font:500 14px/1.4 var(--font1Family); text-align:left; cursor:pointer; }
#pmEditBg .gi-eg-award-name:is(:hover,:focus-visible,[aria-expanded="true"]) { color:var(--attention); }
#pmEditBg .gi-eg-award-stats { padding:4px 0 6px 28px; }
#pmEditBg .gi-eg-award-stats[hidden] { display:none; }
#pmEditBg .gi-eg-award-stats p { margin:0; font:400 12px/1.5 var(--font1Family); color:var(--muted); white-space:pre-wrap; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-ev-writein > .form-floating { margin-top:10px; }

/* Ratings: stock floating select occupies 1/3; source criteria occupy 2/3. */
#pmEditBg .gi-eg-ratings { grid-template-columns:minmax(0,1fr); gap:20px; }
#pmEditBg .gi-eg-rating { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); align-items:start; gap:20px; }
#pmEditBg .gi-eg-rating-control, #pmEditBg .gi-eg-rating-criteria { min-width:0; }
#pmEditBg .gi-eg-rating-control .gi-eg-rating-meta { margin-top:6px; }
#pmEditBg .gi-eg-rating-table { table-layout:fixed; }
#pmEditBg .gi-eg-rating-table td { vertical-align:top; padding:6px 8px; }
#pmEditBg .gi-eg-metric-label { display:block; font-size:10px; line-height:1.4; color:var(--muted); }
#pmEditBg .gi-eg-metric-value { display:block; font-size:13px; line-height:1.5; font-variant-numeric:tabular-nums; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-rating-criteria .gi-eg-rating-meta { margin-top:6px; }
#pmEditBg .gi-eg-suggest { opacity:1; color:var(--attention); }
#pmEditBg .gi-eg-suggest:is(:hover,:focus-visible) { opacity:1; color:var(--color1); }
@media(max-width:600px) {
  #pmEditBg .gi-eg-rating { gap:12px; }
  #pmEditBg .gi-eg-rating-table tbody { display:block; }
  #pmEditBg .gi-eg-rating-table tr { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
  #pmEditBg .gi-eg-rating-table td { display:block; padding:4px; }
}

/* One separator between discrepancy rows; section headings supply the outer divider. */
#pmEditBg [data-rv-disc] { border-bottom:0; }
#pmEditBg [data-rv-disc] + [data-rv-disc] { border-top:1px solid var(--line); }

/* Restore SST's hidden-input checkbox: later MDB rules expose a second native box.
   The stock label::before paints the sole indicator (sst-styles.css Checkbox Solid Fill Style). */
#pmEditBg .form-check:not(.form-switch) input.form-check-input[type="checkbox"] { display:none !important; }

/* 2026-10-02: suggestion is the headline; saved override stays in the stock select. */
#pmEditBg .gi-eg-rating-value { color:var(--color1); }
#pmEditBg .gi-eg-rating-override { width:30%; min-width:110px; max-width:100%; }
#pmEditBg .gi-eg-rating-criteria .gi-eg-rating-meta { margin-left:22px; font-size:9px; font-style:italic; text-align:left; }

/* Craig: add 20px to each modal side; align rating table labels with the rating heading. */
#pmEditBg.gi-eg .ct-modal-header { padding-left:44px; padding-right:82px; }
#pmEditBg.gi-eg .ct-modal-body { padding-left:44px; padding-right:44px; }
#pmEditBg.gi-eg .ct-modal-footer { padding-left:40px; padding-right:40px; }
#pmEditBg #giRvCoach { flex-wrap:wrap; }
#pmEditBg .gi-eg-rating-table tr:first-child td { padding-top:0; }
#pmEditBg .gi-eg-rating-override { min-width:min(110px,100%); }

/* Write In opens only on request; suggestion stars use the site's Font Awesome kit. */
#pmEditBg #giRvWriteInFields[hidden] { display:none; }
#pmEditBg #giRvWriteInFields > .form-floating { margin-top:10px; }
#pmEditBg .gi-eg-writein-plus { font-size:18px; line-height:1; color:var(--color1); }
#pmEditBg .gi-eg-suggest > :is(i,svg) { display:block; width:18px; height:18px; line-height:18px; font-size:18px; text-align:center; }

/* Inline means the override sits beside the number, and sync help beside its icon. */
#pmEditBg .gi-eg-rating-control { display:grid; grid-template-columns:max-content 110px; column-gap:14px; align-items:start; }
#pmEditBg .gi-eg-rating-label { grid-column:1; grid-row:1; }
#pmEditBg .gi-eg-rating-value { grid-column:1; grid-row:2; margin-bottom:0; }
#pmEditBg .gi-eg-rating-override { grid-column:2; grid-row:1 / 3; width:110px; min-width:0; }
#pmEditBg .gi-eg-sync-help { display:flex; align-items:center; flex:1 1 210px; gap:6px; min-width:0; }
#pmEditBg .gi-eg-sync-help .gi-eg-help { flex:none; }
#pmEditBg #giRvSyncTip { margin:0; }
@media(max-width:600px) {
  #pmEditBg .gi-eg-rating { grid-template-columns:minmax(0,1fr); }
}

#pmEditBg .gi-eg-pog-description { margin:10px 0; }

#pmEditBg #giRvEvents { flex-wrap:wrap; }
#pmEditBg #giRvEventHelp { padding:0; font-size:16px; line-height:1; }

#pmEditBg #giRvClutchTable .gi-eg-clutch-play { white-space:normal; min-width:180px; }
#pmEditBg #giRvClutchTable .gi-eg-clutch-action { text-align:right; width:32px; }
#pmEditBg .gi-eg-clutch-removed td:not(:last-child) { opacity:.5; }

#pmEditBg #giRvSyncHelp { display:inline-flex; align-items:center; justify-content:center; line-height:1; }
#pmEditBg #giRvSyncHelp > :is(i,svg) { display:block; }
#pmEditBg .gi-eg-rating-control { grid-template-rows:18px 54px; }
#pmEditBg .gi-eg-rating-value { margin:0; }
#pmEditBg .gi-eg-rating-override { height:72px; min-height:0; }

#pmEditBg .gi-eg-rating-control { grid-template-columns:minmax(0,1fr) 110px; column-gap:24px; }
#pmEditBg .gi-eg-rating-value { display:flex; align-items:center; gap:6px; white-space:nowrap; }
#pmEditBg .gi-eg-rating-suggestion { font:italic 9px/1.3 var(--font1Family); color:var(--gray6); white-space:nowrap; }
@media(max-width:600px) { #pmEditBg .gi-eg-rating-suggestion { font-size:8px; } }

#pmEditBg .gi-eg-maxpreps { margin-left:auto; font-weight:400; letter-spacing:normal; text-transform:none; }
#pmEditBg .gi-eg-maxpreps .form-check { margin:0; }

/* Keep the generated suggestion close to the Play of Game description. */
#pmEditBg .gi-eg-pog-description { margin:8px 0 0; }
#pmEditBg .gi-eg-pog-description > .form-control { margin-bottom:0 !important; }

/* Reserve help text space so hover never moves its own target or MaxPreps. */
#pmEditBg #giRvEvents { display:grid; grid-template-columns:max-content max-content 16px minmax(0,1fr) max-content; gap:10px; align-items:center; }
#pmEditBg #giRvEvents > span:first-child { grid-column:1; }
#pmEditBg #giRvEvents > .gi-eg-hm:not(#giRvEventTip) { grid-column:2; }
#pmEditBg #giRvEventHelp { grid-column:3; }
#pmEditBg #giRvEventTip { grid-column:4; min-width:0; white-space:normal; overflow-wrap:anywhere; }
#pmEditBg #giRvEventTip[hidden] { display:block !important; visibility:hidden; }
#pmEditBg #giRvEvents .gi-eg-maxpreps { grid-column:5; margin-left:0; }
@media(max-width:1000px) {
  #pmEditBg #giRvEvents { grid-template-columns:max-content minmax(0,1fr) 16px; }
  #pmEditBg #giRvEventTip { grid-column:1 / -1; grid-row:2; }
  #pmEditBg #giRvEvents .gi-eg-maxpreps { grid-column:1 / -1; grid-row:3; justify-self:end; }
}

/* GC Plays uses the SST xxxs button unchanged; release legacy GI button geometry. */
#pmEditBg [data-rv-disc] a.btn.btn-xxxs {
  display:block !important;
  line-height:.8rem !important;
  padding:.5rem 5% .55rem 5% !important;
  border-radius:var(--ButtonBorderRadius,10px) !important;
  white-space:normal;
}

#pmEditBg [data-rv-disc] .gi-eg-act { width:110px; flex-shrink:0; }
#pmEditBg [data-rv-disc] a.btn.btn-xxxs { flex:1; }

/* Review footer: equal action columns; preserve stock button geometry. */
#pmEditBg .gi-eg-footer-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; align-items:center; }
#pmEditBg .gi-eg-footer-actions > div { min-width:0; }
#pmEditBg .gi-eg-reopen { display:block; margin:12px auto 0; padding:0; border:0; background:transparent; color:var(--muted); font:inherit; font-size:13px; text-transform:uppercase; cursor:pointer; }
#pmEditBg .gi-eg-reopen:hover { color:var(--color1); }
@media(max-width:767px) { #pmEditBg .gi-eg-footer-actions { grid-template-columns:minmax(0,1fr); gap:8px; } }

/* Review audit and RISP layout. */
#pmEditBg .gi-eg-sync-help { align-items:flex-start; }
#pmEditBg .gi-eg-sync-copy { flex:1; min-width:0; }
#pmEditBg .gi-eg-sync-copy > p:first-child { margin-top:0; }
#pmEditBg .gi-eg-sync-help .gi-eg-help { margin-top:0; }
#pmEditBg [data-rv-disc] .gi-eg-act { flex-direction:column; align-items:stretch; }
#pmEditBg [data-rv-disc] .btn.btn-xxxs { display:block!important; line-height:.8rem!important; padding:.5rem 5% .55rem 5%!important; border-radius:var(--ButtonBorderRadius,10px)!important; white-space:normal; }
#pmEditBg .gi-eg-disc-complete > summary { cursor:pointer; }
#pmEditBg .gi-eg-disc-complete > summary .gi-eg-h { display:inline-flex; }
#pmEditBg .gi-eg-disc-history { margin:12px 0; }
#pmEditBg .gi-eg-disc-result { color:var(--color1); font-size:12px; }
#pmEditBg table tbody tr:nth-child(even) > td { background:var(--panel-2); }
table.gi-risp .gi-risp-success { font-weight:700!important; color:var(--green)!important; }
table.gi-risp .gi-risp-rki { font-weight:700!important; color:var(--color1,var(--neon))!important; }
table.gi-risp .gi-risp-secondary { padding-left:30px; }
/* [RI] Craig 2026-10-07: non-zero RISP values read gray at the body's weight 300 (measured live: #1c1f26 / 300 vs the
   names at 500). Black, regular weight. Zeros (.z0), DNP rows, SUCCESS (green) and RKI (gold) keep their own rules. */
:root { --risp-ink:#000; }
table.gi-risp tbody tr:not(.gi-risp-zero) td:not(.z0):not(.fz):not(.ctr):not(.gi-rank) { color:var(--risp-ink); font-weight:400; }
/* [LB5] Craig 2026-10-04: a player with no RISP plate appearance is "much lighter gray, lighter than the players that did
   play but had 0 … barely see" — 18% ink, under the 30% zero ink */
:root { --risp-dnp-ink:rgba(0,0,0,.18); }
table.gi-risp tr.gi-risp-zero td, table.gi-risp tr.gi-risp-zero td * { color:var(--risp-dnp-ink)!important; }
table.gi-risp tr.gi-risp-zero .jerseyno { background:var(--risp-dnp-ink)!important; color:var(--panel)!important; border-color:transparent!important; }
table.gi-risp tr[data-gi-expand] { cursor:pointer; }
table.gi-risp .gi-row-detail[hidden] { display:none!important; }
.gi-risp-breakdown { font-size:13px; line-height:1.7; white-space:normal; padding:12px; text-align:left; }
@media(min-width:901px) { #pmEditBg .gi-eg-cnt + .gi-eg-cnt { margin-left:22px; } }

.gi-award-name { font-weight:700; }
.gi-award-identity { display:grid; grid-template-columns:max-content minmax(0,1fr); column-gap:6px; align-items:center; }
.gi-award-identity .gi-award-name { display:contents; }
.gi-award-name-text { font-weight:700; }
.gi-award-bio { grid-column:2; font-size:11px; text-transform:uppercase; color:rgba(0,0,0,.9); margin:4px 0 12px; }
.gi-award-impact { display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:center; }
#gameInfo .gi-award-impact > div, #gamePog .gi-award-impact > div { text-align:center; }
.gi-award-eyebrow { display:block; font-size:11px; text-transform:uppercase; color:var(--muted); }
.gi-award-impact strong { display:block; font-size:48px; line-height:1.15; font-weight:500; }
.gi-award-impact dl { margin:0; font-size:12px; }
.gi-award-impact dl > div { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.gi-award-impact dt { font-weight:400; }
.gi-award-impact dd { margin:0; }
.gi-award-stats { margin-top:14px; }
.gi-award-stats p { font-size:13px; margin:0; }
.gi-award-copy { display:flex; align-items:center; gap:8px; margin-top:8px; }
#gi-main .gi-award-copy .btn.btn-xxxs { font-size:.65rem!important; line-height:.8rem!important; padding:.5rem 5% .55rem 5%!important; border-radius:var(--ButtonBorderRadius,10px)!important; display:block!important; }
.gi-award-links { border-top:1px solid var(--line); }

#pmEditBg [data-rv-disc] .btn.btn-xxxs { font-size:.65rem!important; }
/* EDIT IN GC under the Reason line (2026-10-13): the SST xxxs is display:block, so its box is sized to the label here. */
#pmEditBg .gi-eg-disc-gclink { width:fit-content; min-width:170px; }   /* = .gi-eg-hhb-head-actions, home of GC EDIT STATS */
#pmEditBg .gi-eg-disc-gclink a.btn.btn-xxxs { white-space:nowrap; }
.gi-award-copy { --PrimaryButtonColor:var(--neon); --PrimaryButtonTextColor:var(--pill-text); }

#pmEditBg #giRvDone.btn-black { letter-spacing:normal!important; display:block!important; }

#pmEditBg .gi-eg-disc-complete > summary { display:flex; align-items:center; gap:8px; list-style:none; border-top:1px solid var(--line); margin-bottom:12px; }
#pmEditBg .gi-eg-disc-complete > summary::-webkit-details-marker { display:none; }
#pmEditBg .gi-eg-disc-complete > summary::before { content:'▸'; color:var(--muted); }
#pmEditBg .gi-eg-disc-complete[open] > summary::before { content:'▾'; }
#pmEditBg .gi-eg-disc-complete > summary .gi-eg-h { flex:1; min-width:0; margin:0; border:0; padding:14px 0; }

/* Paired season-total rows remain aligned, scrolling within the card on small screens. */
.pm-totals-scroll { overflow-x:auto; }
.pm-grid.pm-totals-grid { grid-template-columns:repeat(9,minmax(70px,1fr)); min-width:630px; }
/* 2026-10-13 Craig: "apply gold silver bronze to the Player Card too" — the Overview's medal grounds (gi-medal-1/2/3) */
#pmBg .pm-cell.pm-leader-1 { background:color-mix(in srgb,var(--gi-gold) 35%,var(--panel)); }
#pmBg .pm-cell.pm-leader-2 { background:color-mix(in srgb,var(--gi-silver) 35%,var(--panel)); }
#pmBg .pm-cell.pm-leader-3 { background:color-mix(in srgb,var(--gi-bronze) 30%,var(--panel)); }
#pmBg .pm-cell[class*="pm-leader-"] .v, #pmBg .pm-cell[class*="pm-leader-"] .k { color:var(--text); background:transparent; }
/* 2026-10-13 Craig: "can the header be reversed out of the full color bg (white text), then the result in bottom area as it
   is" — the stat name sits on the full gold / silver / bronze in white; the value keeps the faint ground below it */
#pmBg .pm-cell.pm-leader-1 .k { background:var(--gi-gold); color:#fff; }
#pmBg .pm-cell.pm-leader-2 .k { background:var(--gi-silver); color:#fff; }
#pmBg .pm-cell.pm-leader-3 .k { background:var(--gi-bronze); color:#fff; }
.pm-qualify { margin:0; padding:8px 14px; font-size:11px; color:var(--muted); }

/* Coach nominated plays: separate suggestion from awarded points. */
/* Craig 2026-10-12: "0.5 opacity until checked, 1.0 opacity checked" (aria-pressed = suggested) */
#pmEditBg .gi-eg-clutch-star { color:var(--attention); opacity:.5; display:inline-flex; align-items:center; justify-content:center; }
/* Same icon dimensions as the existing TOTALS suggestion star. */
#pmEditBg .gi-eg-clutch-star > :is(i,svg) { display:block; width:18px; height:18px; line-height:18px; font-size:18px; text-align:center; }
#pmEditBg .gi-eg-clutch-star[aria-pressed="true"] { color:var(--attention); opacity:1; }
#pmEditBg .gi-eg-clutch-star:is(:hover,:focus-visible) { color:var(--attention); opacity:1; }
#pmBg { --attention:#ffcc00; }

#pmEditBg .gi-eg-discrepancy { display:grid; grid-template-columns:minmax(0,3fr) minmax(0,1fr); gap:12px 20px; align-items:start; margin:24px 0; padding:0 0 16px; }
#pmEditBg .gi-eg-discrepancy-heading { grid-column:1/-1; padding:12px 14px; background:var(--panel-2); border-top:2px solid var(--line); }
#pmEditBg .gi-eg-disc-title { margin:0; font-family:inherit; font-size:16px; font-weight:700; line-height:1.4; color:var(--text); text-transform:none; letter-spacing:normal; }
#pmEditBg .gi-eg-disc-header-line { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
#pmEditBg .gi-eg-disc-header-actions { display:flex; flex-direction:column; align-items:flex-end; gap:2px; margin-left:auto; }
#pmEditBg .gi-eg-disc-header-actions .gi-eg-disc-result { font-size:18px; line-height:1.4; white-space:nowrap; }
#pmEditBg [data-rv-disc-state="changed"] .gi-eg-disc-result { color:var(--green); }
#pmEditBg .gi-eg-disc-undo { flex:none; font-size:12px; line-height:1.4; }
#pmEditBg .gi-eg-disc-source, #pmEditBg [data-rv-disc-state="noedit"] .gi-eg-disc-result { color:var(--danger); }
#pmEditBg .gi-eg-disc-reason { font-size: 23px; }
#pmEditBg .gi-eg-sac-note { font-size: 12px; }
#pmEditBg [data-rv-disc-state="ok"] .gi-eg-disc-source { color:var(--color1); }
#pmEditBg .gi-eg-disc-source:not(.gi-eg-disc-reason) { color:var(--navy); }
#pmEditBg .gi-eg-disc-suggestion { margin:4px 0 0; font-size:13px; line-height:1.5; color:var(--text); }
#pmEditBg .gi-eg-discrepancy-copy { padding:0 14px; }
#pmEditBg .gi-eg-discrepancy-actions { margin-right:14px; }
#pmEditBg .gi-eg-discrepancy-main { min-width:0; }
#pmEditBg .gi-eg-discrepancy-main > .gi-evidence { margin:12px 14px 0; }
#pmEditBg .gi-eg-discrepancy-copy { min-width:0; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-discrepancy-actions { display:flex; flex-direction:column; gap:6px; align-items:stretch; }

#pmEditBg .gi-eg-disc-divider { margin:20px 0; border:0; border-top:1px solid var(--line); opacity:1; }

#pmEditBg .gi-eg-discrepancy-actions { width:auto; min-width:0; }
#pmEditBg .gi-eg-discrepancy-actions .btn { white-space:nowrap; }

#gameReview .gi-eg-status { font-family:var(--font1Family); font-size:calc(1em - 4px); font-weight:700; color:var(--pill-text); background:none; border:0; padding:0; border-radius:0; }

#pmEditBg .gi-eg-sync-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:20px; align-items:center; }
#pmEditBg .gi-eg-opponent-logo .tmark { width:80px; height:80px; }
#pmEditBg .gi-eg-sync { min-width:0; }
@media(max-width:600px) {
  #pmEditBg .gi-eg-sync-row { grid-template-columns:64px minmax(0,1fr); gap:16px; align-items:start; }
  #pmEditBg .gi-eg-opponent-logo .tmark { width:64px; height:64px; }
  #pmEditBg .gi-eg-sync #giRvSync { max-width:100%; }
  #pmEditBg .gi-eg-sync-help { flex-basis:100%; }
}

.gi-risp-detail-scroll { overflow-x:auto; margin-top:8px; }
/* Craig 2026-10-13 (/impeccable): "items should be left aligned, reduce wasted space between Calc and Result" — Metric,
   Calculation and Result size to their text (the fixed 11 / 33 / 12 / 44% columns left ~200px between Calculation and
   Result); Details takes the rest */
table.gi-risp-detail-table { width:100%; min-width:640px; table-layout:auto; border-collapse:collapse; }
table.gi-risp-detail-table :is(th,td):not(:last-child) { width:1%; white-space:nowrap; }
table.gi-risp-detail-table :is(th,td) { padding:8px 10px; text-align:left; vertical-align:top; white-space:normal; font-size:13px; line-height:1.5; border-bottom:1px solid var(--line); }
/* the breakdown sits inside the RISP table, whose first-column rule (table.gi-ptable th:nth-child(1) … text-align:center
   !important, 0,2,2) reaches it as a descendant and centered METRIC: matched at its weight, outranked by specificity */
table.gi-ptable table.gi-risp-detail-table :is(th,td) { text-align:left !important; }
table.gi-risp-detail-table thead th { background:var(--panel-2); font-size:11px; }
table.gi-risp-detail-table tbody th { font-weight:700; }
table.gi-risp-detail-table tbody tr:nth-child(even) > :is(th,td) { background:var(--panel-2); }
table.gi-risp-detail-table .gi-risp-detail-result { font-weight:700; font-variant-numeric:tabular-nums; }

table.gi-risp-detail-table tbody tr:nth-child(odd) > :is(th,td) { background:var(--panel); }

#pmBg .pm-totals-grid .pm-group-batting:not([class*="pm-leader-"]) .k { background:color-mix(in srgb,var(--brown,#8b5e3c) 14%,var(--panel)); }
#pmBg .pm-totals-grid .pm-group-fielding:not([class*="pm-leader-"]) .k { background:color-mix(in srgb,var(--green) 12%,var(--panel)); }
#pmBg .pm-totals-grid .pm-group-pitching:not([class*="pm-leader-"]) .k { background:color-mix(in srgb,var(--orange,#ef8b2c) 14%,var(--panel)); }

.scard .st:is(.st-win,.st-loss) { margin:-7px -9px 3px; padding:7px 9px; align-items:center; border-radius:5px 5px 0 0; }
.scard.done .srow { padding:1px 0; }
/* Completed game result colors: soft card, solid header, white header text. */
.scard.done:has(.st-win) { background:var(--tx-add-soft) !important; }
.scard.done:has(.st-loss) { background:var(--tx-drop-soft) !important; }
.scard .st.st-win { background:var(--green); color:#fff; }
.scard .st.st-loss { background:var(--danger); color:#fff; }
.scard .st:is(.st-win,.st-loss) .sb-tv { opacity:1; }

.gi-award-bio .gi-award-year { color:rgba(0,0,0,.5); }

.gi-box-controls { justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; }
#boxPointsFoot[hidden], #boxFoot[hidden], #seasonBoxPointsFoot[hidden], #seasonBoxFoot[hidden] { display:none; }

/* 2026-10-02: stripe visible records after sort/filter, including opaque frozen cells.
   Expanded detail rows do not consume a record's stripe. */
table.gi > tbody > tr.gi-row-odd > td { background:var(--panel); }
table.gi > tbody > tr.gi-row-even > td { background:var(--panel-2); }
#rosterTable .gi-award-suggested { color:var(--gray5, #aaa); }

/* Game Info borrows the POG card; only its date and long record need local layout. */
#gameInfo .gi-info-date { display:grid; gap:2px; margin:4px 0 12px; font-size:13px; color:var(--muted); }
#gameInfo .gi-award-impact { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
#gameInfo .gi-award-impact strong { overflow-wrap:anywhere; }

/* Craig: no game-card borders; gold only marks the selected game. */
.scard { border:0; box-shadow:none; }
/* Paint selection above the full-bleed result header without changing card geometry. */
.scard.cur { position:relative; box-shadow:none; }
.scard.cur::after { content:""; position:absolute; inset:0; z-index:1;
  border:2px solid var(--neon); border-radius:inherit; box-sizing:border-box; pointer-events:none; }

/* MudCup CFB matchup source c87aa19704738eab89d23d985c0ddd41.
   Score rules copied verbatim below; declared changes: scoped, half-panel layout,
   stacked softball logos/records in place of fantasy owners/projections. */
.gi-matchup .mu-score { grid-row:1/-1; display:grid; grid-template-columns:auto auto auto;
    grid-template-rows:auto auto;
    justify-items:center; align-content:center; column-gap:clamp(10px,2.4cqi,18px); row-gap:0; }
.gi-matchup .mu-pts  { font-size:clamp(40px,7.2cqi,60px); font-weight:800; font-variant-numeric:tabular-nums; line-height:1; }
.gi-matchup .mu-pts { color:var(--gray7) !important; }
.gi-matchup .mu-pts.a { grid-column:1; grid-row:1; }
.gi-matchup .mu-pts.h { grid-column:3; grid-row:1; }
.gi-matchup .mu-vs   { grid-column:2; grid-row:1; align-self:center; color:var(--muted); opacity:.2;
    font-size:clamp(30px,5.2cqi,50px); line-height:1; }
.gi-game-summary { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; }
.gi-matchup { min-width:0; container-type:inline-size; }
.gi-matchup .mu-head { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:14px; padding:16px 18px; }
.gi-matchup .mu-side { display:grid; justify-items:center; align-content:center; gap:4px; min-width:0; text-align:center; }
.gi-matchup .mu-logo { width:80px; height:80px; display:flex; align-items:center; justify-content:center; }
.gi-matchup .mu-logo img { max-width:100%; max-height:100%; object-fit:contain; }
.gi-matchup .mu-name { font-size:14px; font-weight:600; overflow-wrap:normal; word-break:normal; }
.gi-matchup .mu-stats, .gi-matchup .mu-rank { font-size:12px; }
.gi-matchup .mu-stats { white-space:nowrap; color:var(--gray7); }
.gi-matchup .gi-matchup-state { grid-column:1/-1; grid-row:2; margin-top:8px; font-size:11px; color:var(--muted); }
.gi-matchup-source { padding:0 12px 12px; font-size:10px; color:var(--muted); text-align:center; }
.gi-innings { min-width:0; }
#gameInfo .gi-info-confirm { font-size:12px; margin-top:4px; }
.gi-matchup .mu-side.away { grid-column:1; grid-row:1; }
.gi-matchup .mu-score { grid-column:2; grid-row:1; }
.gi-matchup .mu-side.home { grid-column:3; grid-row:1; }
@media(max-width:900px) { .gi-game-summary { grid-template-columns:minmax(0,1fr); } }

/* Schedule: one weight step heavier, preserving the existing text hierarchy. */
body[data-gi-page="schedule"] { font-weight:400; }
body[data-gi-page="schedule"] :is(b, strong, .gi-nav a.nl, .gi-nav .nav-auth, .panel .ph, .scard .st .sb-tv) { font-weight:700; }
body[data-gi-page="schedule"] :is(.gi-nav .dd-menu a, .panel .ph .meta, table.gi th, .jerseyno, .scard .st .sb-when) { font-weight:600; }
body[data-gi-page="schedule"] :is(.pname, .scard b.sc) { font-weight:600 !important; }
body[data-gi-page="schedule"] :is(.sync-chip, .tmark) { font-weight:800; }
body[data-gi-page="schedule"] .scard .st .live { font-weight:900; }

/* Per-play source ledger; the existing discrepancy actions stay independent. */
#pmEditBg .gi-evidence { grid-column:1/-1; min-width:0; font-size:12px; }
#pmEditBg .gi-evidence-official, #pmEditBg .gi-evidence-source { padding:8px 0; border-top:1px solid var(--line); }
#pmEditBg .gi-evidence-official p { margin:4px 0; }
#pmEditBg .gi-evidence-source summary { display:flex; align-items:center; justify-content:space-between; gap:12px; cursor:pointer; font-weight:600; }
#pmEditBg .gi-evidence-name { flex:1; min-width:0; overflow-wrap:anywhere; }
#pmEditBg .gi-evidence-observation { display:block; font-weight:400; }
#pmEditBg .gi-evidence-status { flex-shrink:0; margin:0; }
#pmEditBg .gi-evidence-source p { margin:4px 0; }
#pmEditBg .gi-evidence-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin:10px 0; }
#pmEditBg .gi-evidence-field { min-width:0; }
#pmEditBg .gi-evidence-field:has(textarea) { grid-column:1/-1; }
#pmEditBg .gi-evidence textarea { min-height:70px; }
@media(max-width:720px) {
  #pmEditBg .gi-evidence-fields { grid-template-columns:minmax(0,1fr); }
  #pmEditBg .gi-eg-discrepancy { grid-template-columns:minmax(0,1fr); gap:12px; }
  #pmEditBg .gi-eg-discrepancy-actions { margin-left:14px; width:min(220px,calc(100% - 28px)); }
}

/* SST sg-btn.css .btn-xxxs margin; release only the new evidence control. */
#pmEditBg .gi-evidence .btn.btn-xxxs { margin:.15rem !important; }

/* One-time sync setup uses the existing Sync GameChanger SST control. */
.gi-sync-setup-row { display:flex; align-items:center; gap:20px; flex-wrap:wrap; }
.gi-sync-setup-row > p { flex:1 1 240px; margin:0; }
.gi-sync-controls { position:relative; z-index:0; flex:0 1 420px; max-width:100%; }
.gi-sync-controls .btn { max-width:100%; }

/* Existing SST toast, contained on narrow game review windows. */
#pmEditBg :is([data-sync-toast], [data-hhb-opening-toast]) { max-width:calc(100vw - 32px); }

/* Keep each team record together; smaller matchup columns put the score below. */
@container (max-width:600px) {
 .gi-matchup .mu-head { grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px 8px; padding:16px 8px; }
 .gi-matchup .mu-side.home { grid-column:2; }
 .gi-matchup .mu-score { grid-column:1/-1; grid-row:2; justify-self:center; }
 .gi-matchup .mu-stats, .gi-matchup .mu-rank { font-size:11px; }
}

/* RISP lead metrics, then supporting results. */
table.gi-risp .gi-risp-separator { border-left:1px solid var(--line); padding-left:18px; }
.gi-risp-scope { margin:0; padding:0 12px 10px; font-size:12px; color:var(--muted); }

/* Match the existing page segmented control inside the SST review scope. */
#pmEditBg #giRvRispView .pbtn { font-family:'Open Sans', Arial, Helvetica, sans-serif !important; }

/* [POGC] 2026-10-03 MDT — the Player of the Game / Runner-up cards and Game Info, option C of the three designs Craig was
   shown (canvas https://claude.ai/artifact/7XbiVH1G1rxMCKZYpW3QGm, board "C · Spotlight + box score"; Craig: "C for
   sure"). Sizes are the board's, colors this sheet's tokens. Items that share a row center vertically (estate rule). */
.gi-pogc-hero { display:flex; align-items:center; gap:14px; padding:16px; background:var(--hf-purple); color:var(--pill-text); }
.gi-pogc-jersey { display:flex; align-items:center; justify-content:center; width:50px; height:50px; flex:0 0 50px; border-radius:8px;
  background:var(--panel); color:var(--hf-purple); font-size:22px; font-weight:700; line-height:1; font-variant-numeric:tabular-nums; }
.gi-pogc-who { flex:1 1 auto; min-width:0; overflow-wrap:break-word; }
.gi-pogc-first { display:block; font-size:12px; font-weight:600; letter-spacing:1px; text-transform:uppercase; line-height:1.3; color:rgba(255,255,255,.8); }
.gi-pogc-last { display:block; font-size:26px; font-weight:700; line-height:1.1; }
.gi-pogc-bio { display:block; margin-top:3px; font-size:12px; font-weight:600; letter-spacing:.5px; text-transform:uppercase; line-height:1.3; color:rgba(255,255,255,.72); }
.gi-pogc-total { flex:0 0 auto; text-align:right; }
.gi-pogc-eyebrow { display:block; font-size:11px; font-weight:600; letter-spacing:.5px; text-transform:uppercase; line-height:1.3; color:rgba(255,255,255,.72); }
.gi-pogc-score { display:block; font-size:44px; font-weight:600; line-height:1; font-variant-numeric:tabular-nums; }
/* the desktop rail is 320px: at the board's 26px a 9-letter last name broke mid-word ("Whitwor|th", measured 1440) */
@container (max-width:359px) {
  .gi-pogc-hero { gap:12px; }
  .gi-pogc-jersey { width:44px; height:44px; flex-basis:44px; font-size:20px; }
  .gi-pogc-last { font-size:22px; }
  .gi-pogc-score { font-size:38px; }
}
.gi-pogc-cats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-bottom:1px solid var(--panel-3); }
.gi-pogc-cat { padding:10px 6px; text-align:center; }
.gi-pogc-cat + .gi-pogc-cat { border-left:1px solid var(--panel-3); }
.gi-pogc-cat .k { display:block; font-size:11px; font-weight:600; letter-spacing:.5px; text-transform:uppercase; line-height:1.3; color:var(--muted); }
.gi-pogc-cat .v { display:block; font-size:20px; font-weight:600; line-height:1.3; font-variant-numeric:tabular-nums; }
.gi-pogc-cat .v.z0 { color:var(--zero-ink); }
.gi-pogc-stats { padding:14px 16px 4px; }
.gi-pogc-group + .gi-pogc-group { margin-top:14px; }
.gi-pogc-h { font-size:11px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; line-height:1.3; color:var(--hf-purple); }
.gi-pogc-scroll { overflow-x:auto; margin-top:4px; }
table.gi-pogc-bx { width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; }
table.gi-pogc-bx.short { width:60%; }
table.gi-pogc-bx th { padding:6px 2px; border:0; border-bottom:1px solid var(--panel-3); background:none; text-align:center; white-space:nowrap;
  font-size:11px; font-weight:600; letter-spacing:.3px; text-transform:uppercase; line-height:1.3; color:var(--muted); }
table.gi-pogc-bx td { padding:8px 2px; border:0; text-align:center; white-space:nowrap; font-size:15px; font-weight:600; line-height:1.3; color:var(--text); }
table.gi-pogc-bx td.z0 { color:var(--zero-ink); }
.gi-pogc-notes { display:flex; flex-wrap:wrap; align-items:center; gap:6px; margin-top:6px; }
.gi-pogc-note { padding:3px 8px; border:1px solid var(--panel-3); border-radius:4px; background:var(--panel-2); font-size:13px; line-height:1.3; color:var(--text); }
.gi-pogc-stats.gi-award-stats { margin-top:0; }
.gi-pogc-foot { margin-top:10px; padding:12px 16px 16px; border-top:1px solid var(--panel-3); }
.gi-pogc-mp { display:flex; flex-wrap:wrap; align-items:center; gap:8px; font-size:13px; }
.gi-pogc-mpk { font-size:11px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; color:var(--muted); }
.gi-award-copy.gi-pogc-acts { display:grid; grid-template-columns:minmax(0,1fr); align-items:center; gap:10px; margin-top:0; }
.gi-award-copy.gi-pogc-acts.two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.gi-pogc-mp + .gi-award-copy.gi-pogc-acts { margin-top:10px; }

#gameInfo.gi-infoc-panel { background:var(--skin-page-grad-b); color:var(--pill-text); }
.gi-infoc { padding:16px; }
.gi-infoc-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.gi-infoc-where { min-width:0; }
.gi-infoc-site { display:block; font-size:11px; font-weight:700; letter-spacing:1px; text-transform:uppercase; line-height:1.3; color:var(--neon); }
.gi-infoc-opp { display:block; font-size:24px; font-weight:700; line-height:1.2; overflow-wrap:anywhere; }
.gi-infoc-when { flex:0 0 auto; text-align:right; line-height:1.3; }
.gi-infoc-when .d { display:block; font-size:14px; font-weight:600; }
.gi-infoc-when .t { display:block; font-size:13px; color:rgba(255,255,255,.72); }
.gi-infoc-rtgs { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:16px; }
.gi-infoc-rtg { padding:12px; border:1px solid rgba(255,255,255,.12); border-radius:8px; background:rgba(255,255,255,.06); }
.gi-infoc-rtg .k { display:block; font-size:11px; font-weight:600; letter-spacing:.5px; text-transform:uppercase; line-height:1.3; color:rgba(255,255,255,.72); }
.gi-infoc-rtg .v { display:block; font-size:34px; font-weight:600; line-height:1.1; font-variant-numeric:tabular-nums; }
.gi-infoc-meter { display:flex; gap:2px; margin-top:8px; }
.gi-infoc-meter > span { flex:1 1 0; height:6px; border-radius:1px; background:rgba(255,255,255,.14); }
.gi-infoc-meter > span.on { background:var(--neon); }

/* HHB instructions use the existing table and button components. */
#pmEditBg .gi-eg-hhb-summary { padding:16px 14px; margin:20px 0 28px; background:var(--panel-2); border:1px solid var(--line); }
#pmEditBg .gi-eg-hhb-head { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
#pmEditBg .gi-eg-hhb-head-actions { display:grid; justify-items:center; gap:5px; min-width:170px; }
#pmEditBg .gi-eg-hhb-head-actions .btn { width:100%; min-width:0; }
#pmEditBg .gi-eg-hhb-summary h3 { margin:0; font:700 16px/1.4 var(--font1Family); color:var(--text); text-transform:none; letter-spacing:normal; }
#pmEditBg .gi-eg-hhb-summary h4 { margin:0 0 8px; font:700 13px/1.5 var(--font1Family); color:var(--text); text-transform:none; letter-spacing:normal; }
#pmEditBg .gi-eg-hhb-tables { display:grid; grid-template-columns:1fr 1fr; gap:24px; margin:18px 0 12px; }
#pmEditBg .gi-eg-hhb-tables > div { min-width:0; }
#pmEditBg .gi-eg-hhb-tables td .gi-eg-sub { display:block; margin:2px 0 0; }
#pmEditBg .gi-eg-hhb-tables td { vertical-align:middle; }
#pmEditBg .gi-eg-hhb-foot { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin-top:12px; }
#pmEditBg .gi-eg-hhb-foot .gi-eg-sub { margin:0; flex:1 1 220px; }
#pmEditBg .gi-eg-hhb-actions { min-width:0; }
#pmEditBg .gi-eg-hhb-actions > .gi-eg-sub { margin:0 0 4px; }
@media(max-width:600px) { #pmEditBg .gi-eg-hhb-tables { grid-template-columns:1fr; } }

/* Release SG2's base button pins for the SST extra-small button family. */
:is(.ct-dashboard, .gi-sgbtn) .btn.btn-xxxs:is(button[type="button"]) { font-size:.65rem!important; line-height:.8rem!important; padding:.5rem 5% .55rem 5%!important; margin:.15rem!important; display:block!important; border-radius:var(--ButtonBorderRadius,10px)!important; }

#pmEditBg .btn.btn-xxxs { font-size:.65rem!important; line-height:.8rem!important; padding:.5rem 5% .55rem 5%!important; display:block!important; border-radius:var(--ButtonBorderRadius,10px)!important; }

/* HHB busy buttons: neutralize gi.css .btn:disabled cursor; SST owns button style. */
#pmEditBg .gi-eg-hhb-summary .btn:disabled { cursor:pointer; }

/* HHB setup actions: release SG2 base-button pins to the SST btn-xs component.
   Craig requested readable labels while retaining the inline row (2026-10-04). */
#pmEditBg .gi-eg-setup-actions .btn.btn-xs:not([hidden]) { font-size:.95rem!important; line-height:1.05rem!important; padding:1.25rem 6% 1.35rem 6%!important; margin:.15rem!important; display:block!important; border-radius:var(--ButtonBorderRadius,10px)!important; }

/* gi.css .btn-sm tracking/case pins do not belong to the SST FIX action. */
#pmEditBg .gi-eg-hhb-buttons .btn { letter-spacing:normal!important; text-transform:none!important; }

/* The progress card keeps the canonical 640px short-form width inside the wider Edit Game host. */
#pmEditBg [data-coach-progress] .ct-modal { max-width:640px; font-family:var(--font1Family); }
#pmEditBg [data-coach-progress] #giCoachProgressMessage { overflow-wrap:anywhere; }

/* Coach progress body, Craig 2026-10-12: "i don't want the status in the header bar '(0 of 5 updated)' it should be
   the primary thing in the body. What happened 'GC corrections stopped' needs to be part of that message with some
   hierarchy", then on the first render: "NON-Bold: Game 23 • Riverdale Ridge" and "Elapsed … should not be bold,
   should not be in a pill, just make it an eyebrow at the very top, but light gray — same applies to … all warning
   modals". Every line is a block span inside the SST h3 (#giCoachProgressMessage), so sizes stay relative to the
   responsive heading, as Craig's 70% rule below asks: Elapsed eyebrow first, state 100%, count 70%, game eyebrow,
   message 70% (the old headline size). Eyebrow = 12px uppercase .16em (the guide's .odc-eyebrow tracking,
   ops-dashboard.css:1715) at weight 400, --muted ink; the clock is the same eyebrow in a lighter mix of --muted.
   The header band keeps the state alone. The > [hidden] rule exists because these spans set display. */
#pmEditBg [data-coach-progress] #giCoachProgressMessage > span { display:block; }
#pmEditBg [data-coach-progress] #giCoachProgressMessage > [hidden] { display:none; }
#pmEditBg [data-coach-progress] .gi-cp-state { margin:0 0 2px; }
#pmEditBg [data-coach-progress] .gi-cp-count { font-size:70%; line-height:1.3; margin:0 0 14px; padding-bottom:10px; color:var(--color1); }   /* Craig 2026-10-12: gold, padding below */
#pmEditBg [data-coach-progress] .gi-cp-eyebrow { margin:0 0 6px; font-size:12px; font-weight:400; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); line-height:1; }
#pmEditBg [data-coach-progress] .gi-cp-clock { margin:0 0 14px; color:color-mix(in srgb, var(--muted) 55%, var(--panel)); }
#pmEditBg [data-coach-progress] [data-coach-progress-text] { margin:8px 0 16px; }

/* GC actions: Craig's dedicated navy / bright-green palette (2026-10-04).
   SST continues to own button size, padding, typography, radius and disabled behavior. */
:root { --gc-button-bg:#001a3e; --gc-button-hover:#072d58; --gc-button-text:#00ff66; }
.gi .btn.btn-gc, html body.gi #pmEditBg.ct-dashboard .btn.btn-gc {
  color:var(--gc-button-text)!important;
  background-color:var(--gc-button-bg)!important;
  border-color:var(--gc-button-bg)!important;
}
.gi .btn.btn-gc:is(:hover,:focus,:active), html body.gi #pmEditBg.ct-dashboard .btn.btn-gc:is(:hover,:focus,:active) {
  color:var(--gc-button-text)!important;
  background-color:var(--gc-button-hover)!important;
  border-color:var(--gc-button-hover)!important;
}
.gi .btn.btn-gc:focus-visible, html body.gi #pmEditBg.ct-dashboard .btn.btn-gc:focus-visible {
  outline:2px solid var(--gc-button-text); outline-offset:2px;
}

/* Adjacent actions have equal SST component sizes. Phone keeps the equal-width pair in one column. */
#pmEditBg .gi-eg-hhb-buttons { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; flex:1 1 560px; min-width:0; }
#pmEditBg .gi-eg-hhb-buttons .btn { min-width:0; }
@media(max-width:600px) { #pmEditBg .gi-eg-hhb-buttons { grid-template-columns:1fr; } }

#pmEditBg .gi-eg-setup-actions > .btn:not([hidden]) { flex:1 1 0; min-width:0; }
@media(max-width:600px) { #pmEditBg .gi-eg-setup-actions > .btn:not([hidden]) { flex-basis:100%; } }

/* Craig 2026-10-05: all discrepancy actions use the existing large HHB button.
   Evidence rows belong to the left column; the GC palette stays owned by .btn-gc above. */
#pmEditBg .gi-eg-discrepancy-actions .btn:not([hidden]) { width:calc(100% - .3rem)!important; height:calc(1.25rem + 1.35rem + 1.05rem + 4px)!important; font-weight:700!important; font-size:.95rem!important; line-height:1.05rem!important; padding:1.25rem 6% 1.35rem 6%!important; margin:.15rem!important; display:block!important; border-radius:var(--ButtonBorderRadius,10px)!important; letter-spacing:normal!important; text-transform:uppercase!important; white-space:normal; }
#pmEditBg .gi-eg-hhb-selected { min-height:62.4px; margin:.15rem; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; padding:6px; border:1px solid var(--line); border-radius:var(--ButtonBorderRadius); background:var(--color1f1); color:var(--text); text-align:center; }
#pmEditBg .gi-eg-hhb-selected strong { font:700 24px/1.2 var(--font1Family); }
#pmEditBg .gi-eg-hhb-selected span { font:400 12px/1.4 var(--font1Family); }

/* Craig: progress headlines are 30% smaller, and stopped jobs are unmistakably danger.
   A child scales the inherited responsive SST heading by70%; no fixed font sizes. */
#pmEditBg [data-coach-progress-text] { display:block; font-size:70%; line-height:1.3; }
#pmEditBg [data-progress-state="danger"] .ct-modal-header { background:var(--bs-danger); }
#pmEditBg [data-progress-state="success"] .ct-modal-header { background:var(--bs-success); }

/* [LB] 2026-10-04 MDT — Layout B, Craig's sketch (canvas https://claude.ai/artifact/1K7NSr1ns67zCr4jD1ieyu, "HOME · B" /
   "GAME · B"; Craig: both B, and "black bg instead of purple with purple number block with white #"). A 12-column grid:
   home 10 + 2, game 4 + 6 + 2. Under 1280 the columns open (display:contents, the move gi.css's home rules make) and the
   windows take an order; under 900 the tiles go two across, under 480 one. */
.gi-l12 { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:14px; align-items:start; }
.gi-l12 > div { min-width:0; }
.gi-home-b .gi-l12-main { grid-column:span 10; }
.gi-l12-rail { grid-column:span 2; }
.gi-game-b .gi-l12-left { grid-column:span 4; }
.gi-game-b .gi-l12-mid { grid-column:span 6; }
.gi-sect { display:flex; align-items:center; flex-wrap:wrap; gap:14px; margin:20px 0 10px; color:#fff; }
.gi-sect-t { font-size:13px; font-weight:700; letter-spacing:1px; text-transform:uppercase; }
.gi-sect-ctl { display:flex; align-items:center; flex-wrap:wrap; gap:10px; min-width:0; }
.gi-sect-ctl .pf { margin:0; padding:0; background:none; border:0; flex-wrap:wrap; gap:10px; }
.gi-sect-ctl .gi-filter-label { display:none; }
.gi-sect-ctl .gi-risp-scope, .gi-sect-note { font-size:12px; color:var(--on-bg); opacity:.8; padding:0; margin:0; }
.gi-tiles { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.gi-tile .tscroll { overflow-x:hidden; }
table.gi-tile-t th { display:none; }
table.gi-tile-t td { padding:6px 8px; }
table.gi-tile-t td:first-child { padding-left:14px !important; }
table.gi-tile-t td:last-child { padding-right:14px !important; }
/* Top-5 tile criteria (Craig 2026-10-14: "click the (green) header on all of these top5 windows to expand and show the
   criteria"). The header is the button (gi-ui panel opts.criteria); the criteria sit on the soft gray band under it, in the
   body ink, inset 14px like the rows below. No hover movement; the chevron turns when open. */
.panel .ph.gi-crit-h { cursor:pointer; user-select:none; }
.panel .ph.gi-crit-h:focus-visible { outline:2px solid var(--attention); outline-offset:-2px; }
.panel .ph.gi-crit-h .gi-crit-chev { display:inline-flex; align-items:center; justify-content:center; width:20px; height:20px; }
.panel .ph.gi-crit-h[aria-expanded="true"] .gi-crit-chev svg { transform:rotate(180deg); }
.panel .gi-crit { padding:9px 14px; background:var(--panel-3); color:var(--text); border-bottom:1px solid var(--line);
  font-size:13px; font-weight:500; line-height:1.35; }
.panel .gi-crit[hidden] { display:none; }
/* Season rail hero (Craig 2026-10-14: "an animated chart with specific stand-out number called out" — the section's impact,
   Combo's Offense and Defense). Label and sub-line in text ink; the number and the bars in the section ink (the container's
   gi-bat / gi-fld / gi-pit class): every game a light step of it, the best game full. Bars: 4px rounded data-end, square at the
   baseline, 2px gaps, <= 24px; they grow once from the baseline (no fill-mode, so a tab that never runs it shows them full). */
#sectRail .gi-rail-hero { display:flex; flex-direction:column; padding:14px 14px 12px; border-bottom:1px solid var(--line); }
#sectRail .gi-rail-k { font-size:12px; font-weight:400; letter-spacing:.16em; text-transform:uppercase; color:var(--muted); line-height:1.2; }
#sectRail .gi-rail-v { font-size:48px; font-weight:700; line-height:1.05; margin:6px 0 2px; }
#sectRail .gi-rail-sub { font-size:13px; font-weight:400; color:var(--muted); }
#sectRail .gi-rail-chart { position:relative; display:flex; gap:2px; height:64px; margin:14px 0 8px; }
#sectRail .gi-rail-zero { position:absolute; left:0; right:0; height:1px; background:var(--line); }
#sectRail .gi-rail-col { position:relative; flex:1 1 0; min-width:0; max-width:24px; height:100%; }
#sectRail .gi-rail-bar { position:absolute; left:0; right:0; border-radius:4px 4px 0 0; background:color-mix(in srgb,currentColor 32%,var(--panel));
  transform-origin:50% 100%; animation:giRailGrow .7s cubic-bezier(.16,1,.3,1); }
#sectRail .gi-rail-bar.neg { border-radius:0 0 4px 4px; transform-origin:50% 0; }
#sectRail .gi-rail-bar.best { background:currentColor; }
#sectRail .gi-rail-best { font-size:13px; font-weight:400; color:var(--text); }
#sectRail .gi-rail-best b { font-weight:700; }
#sectRail .gi-rail-best .gi-rail-g { white-space:nowrap; }   /* the game and its opponent wrap as one */
@keyframes giRailGrow { from { transform:scaleY(0); } }
@media (prefers-reduced-motion:reduce) { #sectRail .gi-rail-bar { animation:none; } }
/* Craig 2026-10-14: the description, then the minimum on its own line in caps ("Min: 5 chances" -> MIN: 5 CHANCES) */
.panel .gi-crit { box-sizing:border-box; }
/* gray, Craig 2026-10-14 ("expand should be gray bg"): a tile with a hero strip matched .panel:has(> .gi-pogc-hero) >
   :not(.ph):not(.gi-pogc-hero) {background:var(--panel)} (0,4,0) and painted the band white; this is (0,5,0) */
.panel:has(> .gi-crit) > .gi-crit:not(.ph):not(.gi-pogc-hero) { background:var(--panel-3); }
.panel .gi-crit .gi-crit-t { display:block; }
.panel .gi-crit .gi-crit-min { display:block; margin-top:4px; font-size:11px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
/* the hero strip (one component: [POGC] cards, every tile, the score window, Season Info): black ground, purple jersey */
.gi-pogc-hero { background:var(--chrome2); }
.gi-pogc-jersey { background:var(--hf-purple); color:var(--pill-text); }
.gi-pogc-logo { width:44px; height:44px; flex:0 0 44px; object-fit:contain; }
.gi-hero-sm { gap:10px; padding:12px; }
.gi-hero-sm .gi-pogc-jersey { width:40px; height:40px; flex-basis:40px; font-size:18px; }
.gi-hero-sm .gi-pogc-last { font-size:20px; }
.gi-hero-sm .gi-pogc-score { font-size:30px; }
.gi-hero-col { flex-direction:column; text-align:center; gap:4px; padding:16px 12px; }
.gi-hero-col .gi-pogc-logo { width:72px; height:72px; flex-basis:auto; }
.gi-info-name { font-size:13px; font-weight:700; line-height:1.3; }
.gi-info-rec { font-size:44px; font-weight:700; line-height:1.1; font-variant-numeric:tabular-nums; }
/* the last-game / score hero: two team rows, the runs big; a losing side's runs dim */
.gi-last-rows { display:flex; flex-direction:column; gap:2px; }
.gi-last-row { display:flex; justify-content:space-between; align-items:center; gap:10px; font-size:14px; color:rgba(255,255,255,.8); }
.gi-last-row.hf { font-weight:700; color:#fff; }
.gi-last-row b { font-size:24px; font-weight:700; line-height:1; font-variant-numeric:tabular-nums; }
.gi-last-row b.lose { color:rgba(255,255,255,.55); }
.gi-score-hero { gap:14px; }
.gi-score-hero .gi-pogc-logo { width:56px; height:56px; flex-basis:56px; }
.gi-score-hero .gi-last-row { font-size:18px; }
.gi-score-hero .gi-last-row b { font-size:48px; font-weight:800; }
.gi-last-foot { display:flex; align-items:center; gap:10px; padding:8px 12px; font-size:13px; }
.gi-last-foot a { margin-left:auto; }
.gi-score-when { font-size:12px; color:var(--muted); }
.gi-box-dec { padding:8px 12px 8px calc(57px + .26 * 13px); border-top:1px solid var(--line); font-size:12px; color:var(--muted); }
.gi-box-dec b { color:var(--text); }
.gi-links .linfo td { text-align:right; }
@media (max-width:1280px){
  .gi-l12 { display:flex; flex-direction:column; align-items:stretch; }
  .gi-l12 > div { display:contents; }
  .gi-l12 .panel, .gi-l12 #gameReview, .gi-l12 .gi-notes-slot { margin-top:0 !important; }
  .gi-l12 .gi-sect { margin-top:6px; }
  /* home: Next Up first, then the main column top to bottom, Season Info last */
  #wkPanel { order:1; } #giImpactSect { order:2; } #giImpactSect + .gi-tiles { order:3; } #standPanel { order:4; }
  #giClutchSect { order:5; } #giClutchSect + .gi-tiles { order:6; } #rispPanel { order:7; } .gi-pogrow { order:8; } #infoPanel { order:9; }
  #homeTop #gameLinks { order:1; margin-top:0; }   /* home (2026-10-16): the rail's links stay under Next Up; the flex gap is the seam */
  /* game: the score, EDIT GAME, the picks, Clutch, Box Score, Game Impact, RISP, Game Info, links, notes */
  #gameHead { order:1; } #gameReview { order:2; } #gamePog { order:3; } #gameRunner { order:4; } #gamePlayOff { order:5; } #gamePlayDef { order:6; } #gameClutch { order:7; }
  #gameBox { order:8; } #gameImpact, #gamePending { order:9; } #gameRisp { order:10; } #gameInfo { order:11; } #gameLinks { order:12; } .gi-notes-slot { order:13; }
}
@media (max-width:900px){ .gi-tiles { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:480px){ .gi-tiles { grid-template-columns:minmax(0,1fr); } }
/* the 2-column rail is ~221px at 1400: Season Info's label / value rows wrap instead of running past the window
   (measured: table.linfo 287px in 221), and Game Info's opponent line sits above the date, never beside it */
.gi-l12-rail table.linfo { table-layout:fixed; }
.gi-l12-rail table.linfo th { white-space:normal; width:46%; }
.gi-l12-rail table.linfo td { white-space:normal; overflow-wrap:anywhere; }
.gi-l12-rail .gi-infoc-head { flex-direction:column; align-items:flex-start; gap:4px; }
.gi-l12-rail .gi-infoc-when { text-align:left; }
.gi-l12-rail .gi-infoc-opp { overflow-wrap:normal; }
@media (max-width:1280px){
  .gi-l12-rail table.linfo { table-layout:auto; }
  .gi-l12-rail .gi-infoc-head { flex-direction:row; align-items:center; }
  .gi-l12-rail .gi-infoc-when { text-align:right; }
}
/* on the black hero the page's category inks read dark (measured: purple 683.0 on #0e161b): the board's hero inks —
   a total white, batting / fielding / pitching the lighter gold / green / orange the "B" board drew on black */
.gi-pogc-hero .gi-ovr { color:var(--pill-text); }
.gi-pogc-hero .gi-bat { color:#ffd166; }
.gi-pogc-hero .gi-fld { color:#7ee2a8; }
.gi-pogc-hero .gi-pit { color:#ffb870; }

/* [LB2] 2026-10-04 MDT — Craig's second pass on the home page (his words in pages/home.js): the headings are h1s
   ("GAME IMPACT h1 (like 400px wide)"), the category windows take their own band color, the TOTAL window and the Player
   of Game list are all-large rows on alternating light grounds, the filter group sits in the Game Impact band. */
.gi-h1 { margin:24px 0 10px; display:flex; align-items:baseline; flex-wrap:wrap; gap:0 16px; color:#fff; font-size:55px; font-weight:700; letter-spacing:1px; text-transform:uppercase; line-height:1.1; }
.gi-h1-note { font-size:12px; font-weight:400; letter-spacing:0; text-transform:none; color:var(--on-bg); opacity:.8; }
.gi-l12-main > .gi-h1:first-child { margin-top:0; }
/* the band colors: the player card's own group inks (gi-pages.css pm-group-*), flat, in place of the gold plate */
.panel .ph.ph-bat { background-image:none; background-color:var(--brown,#8b5e3c); }
.panel .ph.ph-fld { background-image:none; background-color:var(--green); }
.panel .ph.ph-pit { background-image:none; background-color:var(--orange,#ef8b2c); }
/* a big row that is not #1: the hero strip on a light ground, alternating */
.gi-pogc-hero.gi-bigrow { background:var(--panel); color:var(--text); border-top:1px solid var(--line); }
.gi-pogc-hero.gi-bigrow.alt { background:var(--panel-2); }
.gi-bigrow .gi-pogc-first, .gi-bigrow .gi-pogc-bio, .gi-bigrow .gi-pogc-eyebrow { color:var(--muted); }
.gi-bigrow .gi-ovr { color:var(--hf-purple); }
.gi-bigrow .gi-bat { color:var(--gold); } .gi-bigrow .gi-fld { color:var(--green); } .gi-bigrow .gi-pit { color:var(--warn); }
/* the filter group in a gold band: white keys, the chosen one gold (Craig's img2) */
.gi-band-ctl { display:inline-flex; align-items:center; margin-left:12px; }
.gi-band-ctl .pf { margin:0; padding:0; background:none; border:0; gap:0; }
.gi-band-ctl .pf > span { display:none; } /* the FILTER IMPACT label and the scope note: the band has room for the keys only */
.gi-band-ctl .posbtns .pbtn { background:var(--panel); border-color:var(--panel); color:var(--muted); font-weight:700; text-transform:uppercase; letter-spacing:.5px; }
.gi-band-ctl .posbtns .pbtn.on { background:var(--neon); border-color:var(--neon); color:var(--pill-text); }
/* the Game Impact table: Rank and # hug their content, the slack goes to the other columns (measured at ~1900: the
   auto layout had spread 170px into Rank) */
#impactTable th:nth-child(-n+2), #impactTable td:nth-child(-n+2) { width:1% !important; white-space:nowrap; }
/* the Player of Game row: the list in column 1, the Awards table across 2-4 */
.gi-pogrow { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; margin-top:20px; align-items:start; }
.gi-pogrow > #pogPanel { grid-column:span 3; min-width:0; }
@media (max-width:1280px){ .gi-pogrow { display:contents; } .gi-pogrow > .panel, #pogList, #pogPanel { order:8; } }
@media (max-width:900px){ .gi-h1 { font-size:32px; } }

/* [LB3] 2026-10-04 21:5x MDT — Craig's game-page pass. His block for the Player of the Game category tiles, verbatim: */
.gi-pogc-cat .v {
  display: block;
  font-size: 34px;
  font-weight: 600;
  line-height: 1.3;
  font-variant-numeric: tabular-nums;
}
/* Game Info back on the light ground ("somewhat more like it was before"): the same window, the page's inks */
#gameInfo.gi-infoc-panel { background:var(--panel); color:var(--text); }
.gi-infoc-site { color:var(--muted); }
.gi-infoc-when .t { color:var(--muted); }
.gi-infoc-eyebrow { margin-top:14px; font-size:11px; font-weight:700; letter-spacing:1px; text-transform:uppercase; line-height:1.3; color:var(--muted); }
.gi-infoc-rtgs { margin-top:6px; }
.gi-infoc-rtg { background:var(--panel-2); border-color:var(--line); }
.gi-infoc-rtg .k { color:var(--muted); }
.gi-infoc-rtg .v { color:var(--hf-purple); }
.gi-infoc-meter > span { background:var(--panel-3); }
.gi-infoc-meter > span.on { background:var(--attention, #ffcc00); }
/* Game Info: small class-colored rank, larger mark, full name on two lines and record on the right. */
.gi-infoc-teams { margin-top:12px; container-type:inline-size; }
.gi-infoc-team { display:grid; grid-template-columns:16px minmax(0,1fr) auto; align-items:center; gap:6px; padding:8px 0; }
.gi-infoc-team + .gi-infoc-team { border-top:1px solid var(--line); }
.gi-infoc-team:last-child { border-bottom:1px solid var(--line); }
.gi-infoc-team .tmark { width:48px; height:48px; }
.gi-infoc-identity { min-width:0; display:flex; align-items:center; gap:6px; }
.gi-infoc-identity .tmark { flex:0 0 48px; }
.gi-infoc-team-details { min-width:0; display:flex; flex-direction:column; gap:2px; text-align:left; }
.gi-infoc-records { display:flex; flex-direction:column; align-items:flex-end; gap:2px; }
.gi-infoc-conf:empty { display:none; }
.gi-infoc-conference-name { max-width:112px; font-size:10px; line-height:1.2; color:var(--black, #000); text-align:right; overflow-wrap:normal; word-break:normal; }
.gi-infoc-team .nm { font-size:12px; font-weight:700; line-height:1.2; color:var(--black, #000); overflow-wrap:anywhere; }
.gi-infoc-team .ln { font-size:12px; line-height:1.2; color:var(--black, #000); overflow-wrap:anywhere; }
.gi-infoc-overall { font-size:28px; font-weight:600; line-height:1; color:var(--text); text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
.gi-infoc-conf { font-size:13px; line-height:1.3; color:var(--gray7, #4c4c4c); text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
@container (min-width:280px) {
 .gi-infoc-team .nm, .gi-infoc-team .ln { font-size:14px; }
 .gi-infoc-overall { font-size:32px; }
}
/* Classification colors apply to each small rank beside its team mark. */
:root { --gi-class-5a:var(--navy); --gi-class-4a:DodgerBlue; --gi-class-3a:LightBlue; }
/* the rail's links: the guide's btn-red / btn-green / btn-blue in one row, wrapping when the rail is narrower than the three */
.gi-award-copy.gi-links { display:flex; flex-wrap:wrap; gap:6px; margin-top:14px; }
.gi-award-copy.gi-links .btn { flex:1 1 auto; }
/* Data notes as a list, not a table (the rail is ~221px) */
.gi-notes-list { padding:4px 12px 10px; }
.gi-note { padding:8px 0; border-top:1px solid var(--line); font-size:12px; line-height:1.4; }
.gi-note:first-child { border-top:0; }
.gi-note-h { font-size:11px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; color:var(--muted); }
.gi-note-t { margin-top:2px; color:var(--text); overflow-wrap:anywhere; }
/* the two rating tiles in the 221px rail: one label line each, so the numbers sit level (measured: "Batting Rtg" wrapped,
   "Pitch Rtg" did not, and 8.0 sat 24px below 8.5) */
.gi-l12-rail .gi-infoc-rtg { padding:10px 8px; }
.gi-l12-rail .gi-infoc-rtg .k { letter-spacing:.3px; white-space:nowrap; }
/* [LB4] 2026-10-04 22:0x MDT — Craig: the second-row windows top-align. Columns 1-2 are a 10-column block: row 1 holds the
   score window (4) beside the Box Score (6), stretched to one height; row 2 the two stacks. The rail is its own column. */
.gi-game-b .gi-g10 { grid-column:span 10; min-width:0; display:flex; flex-direction:column; gap:14px; }
.gi-grow { display:grid; grid-template-columns:repeat(10,minmax(0,1fr)); gap:14px; align-items:start; }
.gi-grow1 { align-items:stretch; }
.gi-grow > .gi-l12-left, .gi-grow > #gameHead { grid-column:span 4; min-width:0; }
.gi-grow > .gi-l12-mid, .gi-grow > #gameBox { grid-column:span 6; min-width:0; }
/* Craig: small colored rank LEFT of the logo, centered beside the two detail lines. */
.gi-infoc-rank { --gi-rank-color:var(--muted); display:block; padding:0; color:var(--gi-rank-color); text-align:center; font-size:14px; font-weight:700; line-height:1; font-variant-numeric:tabular-nums; }
.gi-infoc-team.hf .gi-infoc-rank { --gi-rank-color:var(--hf-purple); }
.gi-infoc-team .gi-infoc-rank[data-class="5A"] { --gi-rank-color:var(--gi-class-5a); }
.gi-infoc-team .gi-infoc-rank[data-class="4A"] { --gi-rank-color:var(--gi-class-4a); }
.gi-infoc-team .gi-infoc-rank[data-class="3A"] { --gi-rank-color:var(--gi-class-3a); }
/* [LB4] Craig: "GC is ALWAYS navy blue bg with bright green text; CHSAA same navy blue bg with gold text". Site tokens for the
   two brands (gi.css keeps its skin tokens the same way); !important because the guide's .btn-black colors carry it */
:root { --navy:#0f2a52; --gc-green:#2ee66b; }
/* html:not(#gi-sg2) on purpose: the [SG2] release re-asserts the guide's .btn-black colors under that prefix (an id, (1,3,1)),
   which beat a plain #gameLinks rule (1,2,0) — measured live 2026-10-04 22:4x: both keys rendered black */
html:not(#gi-sg2) :is(#gameLinks, #giRvLinks) .btn.btn-gc, html:not(#gi-sg2) :is(#gameLinks, #giRvLinks) .btn.btn-gc:hover, html:not(#gi-sg2) :is(#gameLinks, #giRvLinks) .btn.btn-gc:focus { background-color:var(--navy) !important; border-color:var(--navy) !important; color:var(--gc-green) !important; }
html:not(#gi-sg2) :is(#gameLinks, #giRvLinks) .btn.btn-chsaa, html:not(#gi-sg2) :is(#gameLinks, #giRvLinks) .btn.btn-chsaa:hover, html:not(#gi-sg2) :is(#gameLinks, #giRvLinks) .btn.btn-chsaa:focus { background-color:var(--navy) !important; border-color:var(--navy) !important; color:var(--neon) !important; }
@media (max-width:1280px){
  .gi-game-b .gi-g10, .gi-grow { display:contents; }
}
/* Craig 2026-10-12: "fix the phone order so the score is on top" — under 900 the score sat at y 2821 after Clutch and RISP:
   .gi-l12-left / .gi-l12-mid stayed blocks, so the order rules above never reached the score (#gameHead, order 1). */
@media (max-width:900px){
  .gi-game-b .gi-grow > .gi-l12-left, .gi-game-b .gi-grow > .gi-l12-mid { display:contents; }
}
/* [GB2] Craig 2026-10-07, game page one size under the 3-column layout: "place 3rd column (game info) at the very top,
   keeping the other 2 columns side by side. The data notes can go to the bottom after everything". 901-1280: the page
   wrap is the column, #gameTop opens into it, the rail's windows lead (Game Info, EDIT GAME, links), the 10-column block
   stays one block (score beside Box Score, picks beside Game Impact), the box-score stats follow, Data Notes last.
   Under 900 the existing single-column stack above is unchanged. */
@media (min-width:901px) and (max-width:1280px){
  .gi-wrap:has(> #gameTop.gi-game-b) { display:flex; flex-direction:column; gap:14px; }
  #gameTop.gi-game-b { display:contents; }
  #gameTop.gi-game-b > .gi-g10 { display:flex; flex-direction:column; gap:14px; order:4; }
  #gameTop.gi-game-b .gi-grow { display:grid; }
  #gameTop.gi-game-b #gameInfo { order:1; }
  #gameTop.gi-game-b #gameReview { order:2; }
  #gameTop.gi-game-b #gameLinks { order:3; margin-top:0; }   /* the flex gap is the seam; its 14px rail margin would double it */
  .gi-wrap > #boxPanel { order:5; margin-top:0 !important; }
  #gameTop.gi-game-b .gi-notes-slot { order:6; }
  /* [GB3] Craig 2026-10-07 (/impeccable): the full-width Game Info card reads in three columns a hairline apart — the game
     (where, when, the league plate under it), the two teams, the opponent ratings. The AWAY and OPPONENT eyebrows and the
     first team row share one top line; the plate fills column 1 to the bottom. Values, toggle and the rail card unchanged. */
  #gameTop.gi-game-b .gi-infoc { display:grid; grid-template-columns:minmax(220px,1fr) minmax(0,2fr) minmax(236px,1fr); grid-template-rows:auto minmax(0,1fr); grid-template-areas:"head teams oppo" "league teams oppo"; column-gap:24px; row-gap:14px; align-items:start; }
  #gameTop.gi-game-b .gi-infoc-head { grid-area:head; flex-direction:column; align-items:flex-start; gap:4px; }
  #gameTop.gi-game-b .gi-infoc-when { text-align:left; }
  #gameTop.gi-game-b .gi-infoc-league { grid-area:league; margin:0; padding:14px; border-radius:8px; align-self:stretch; display:flex; align-items:center; justify-content:center; }
  #gameTop.gi-game-b .gi-infoc-league img { max-height:64px; }
  #gameTop.gi-game-b .gi-infoc-teams { grid-area:teams; margin:0; padding-left:24px; border-left:1px solid var(--line); align-self:stretch; }
  #gameTop.gi-game-b .gi-infoc-team:first-child { padding-top:0; }
  #gameTop.gi-game-b .gi-infoc-oppo { grid-area:oppo; padding-left:24px; border-left:1px solid var(--line); align-self:stretch; }
  #gameTop.gi-game-b .gi-infoc-eyebrow { margin-top:0; }
}
/* [LB5] the stats block is the copy target: one line each, left, a hand cursor, "Copied" flashes top right */
.gi-pogc-stats.gi-copyblock { position:relative; cursor:pointer; text-align:left; margin-top:0; padding:14px 38px 12px 16px; }
.gi-pogc-stats .gi-stats-copy-icon { position:absolute; top:12px; right:12px; font-size:14px; color:var(--muted); }
.gi-pogc-stats.gi-copyblock p { font-size:13px; line-height:1.45; margin:0 0 4px; }
.gi-pogc-stats.gi-copyblock:hover { background:var(--panel-2); }
.gi-pogc-stats.gi-copyblock:focus-visible { outline:2px solid var(--accent); outline-offset:-2px; }
.gi-pogc-stats.gi-copyblock.copied { background:var(--tx-add-soft); }
.gi-pogc-stats.gi-copyblock.copied::after, .gi-pogc-stats.gi-copyblock.copy-failed::after { content:'Copied'; position:absolute; right:12px; bottom:6px; padding:2px 8px; border-radius:4px; background:var(--green); color:var(--pill-text); font-size:11px; font-weight:700; } /* bottom right: the top corner sat on the first line's end */
.gi-pogc-stats.gi-copyblock.copy-failed::after { content:'Copy failed'; background:var(--danger); }
/* [LB5] the HHB undo inside the state box */
#pmEditBg .gi-eg-hhb-undo { background:none; border:0; padding:0; margin:0; font:700 12px/1.4 var(--font1Family); color:var(--accent); text-transform:uppercase; letter-spacing:.3px; cursor:pointer; }
#pmEditBg .gi-eg-hhb-undo:hover { color:var(--hf-purple); }
/* [LB6] 2026-10-04 22:3x MDT — the two filter groups sit in their h1s, right-aligned; Next Up rows carry the team marks */
.gi-h1 { align-items:center; }
.gi-h1-ctl { margin-left:auto; }
.gi-h1-ctl .posbtns .pbtn { font-size:11px; }
.wkg .wr .tmark { width:24px; height:24px; flex:0 0 24px; }
.wkg .wr .tmark img { max-width:100%; max-height:100%; }
/* 2026 state tournament seeds (gi-ui seededName, Craig 2026-10-16): the seed before a team's name at the name's size, regular
   weight, on every card, chip and the game page; on a Next Up card a seeded name wraps instead of ending in an ellipsis ("31
   Eagle Valley D…" at 1440), and the event ("4A REGION 2") takes its own caption line over the date */
.gi-seed { font-weight:400; font-variant-numeric:tabular-nums; }
.wkg .wk-ev { display:block; }
.wkg .wr .nm.wk-wrap { white-space:normal; }
@media (max-width:900px){ .gi-h1-ctl { margin-left:0; flex-basis:100%; } }
/* [LB7] 2026-10-04 23:0x MDT — Craig: "total and value needs padding on right, should roughly right-align with the pitching
   header below". The PITCHING label sits centered in the last third of the card (6px cell padding, 55.5px text, measured):
   its right edge is W/6 − 27.75px in from the card's right edge at every width (measured 47.3 at W=455, 34.1 at W=374). */
#gamePog .gi-pogc-hero, #gameRunner .gi-pogc-hero, #gameClutch .gi-pogc-hero { padding-right:calc(100% / 6 - 27.75px); }
/* Craig 2026-10-13: "right align the play with the clutch below it (with padding to the edge)" — the Play of the Game
   heroes take the same right edge as the Clutch hero below them */
#gamePlayOff .gi-pogc-hero, #gamePlayDef .gi-pogc-hero { padding-right:calc(100% / 6 - 27.75px); }
/* [LB8] 2026-10-04 23:1x MDT — Craig: "want this look behind the top scorer (transparent black) .gi-pogc-hero { background:
   rgba(0,0,0,0.6); } but you'll need to remove the white from behind the entire card, adding the footer bg for a rounded
   corner bottom to each main window". A window that holds a hero loses its white; what sits under the hero (the rows, the
   category tiles, the stats, the Season Info list) carries the white and the bottom corners. The all-light big rows
   (.gi-bigrow) keep their own grounds. */
.gi-pogc-hero:not(.gi-bigrow) {
  background: rgba(0,0,0,0.6);
}
.panel:has(> .gi-pogc-hero), .panel:has(> .gi-pogc > .gi-pogc-hero), .panel:has(> .gi-bigrows) { background:transparent; }
.panel:has(> .gi-pogc-hero) > :not(.ph):not(.gi-pogc-hero), .gi-pogc > :not(.gi-pogc-hero), .panel:has(> .gi-pogc) > .pbody { background:var(--panel); }
.panel:has(> .gi-pogc-hero) > :last-child:not(.gi-pogc-hero), .panel:has(> .gi-pogc) > :last-child, .gi-pogc:last-child > :last-child, .gi-bigrows > :last-child { border-radius:0 0 8px 8px; }
#infoPanel .linfo { border-collapse:separate; border-spacing:0; } /* collapse ignores the radius */
/* Craig: "top align SEASON INFO window with the GM IMPact buttongroup … move SEASON INFO window down slightly" —
   the group sits 8px under the h1's top (measured: h1 259, group 267) */
.gi-home-b .gi-l12-rail { padding-top:8px; }
/* the game cards' foot had a 10px top margin, which the transparent window now shows as a dark gap above the white foot
   (measured on game 20): the same 22px of space as padding, so the white runs unbroken from the category tiles down */
.gi-pogc-foot { margin-top:0; padding-top:22px; }

/* [POTG] 2026-10-12 — the Offensive / Defensive Play of the Game windows (game page, above Clutch): the hero strip over
   the coach's description; TBD extra bold in light gray while the description is not written (Craig: "leave TBD extra bold
   in light gray if yet to be selected"). The light gray is the sheet's own half-strength muted (the .wkg .rec pattern). */
.gi-potg-note { font-size:20px; line-height:1.4; }   /* Craig 2026-10-13: "make sure the text description below is 20pt font" (20pt in Adobe's screen points = 20px) */
/* Craig 2026-10-13: the play's kind ("Homerun", "Catch") where the Clutch card's "Clutch 4" sits, in gold, with the inning
   as its eyebrow — a word, so the name's size, not the 44px number's */
.gi-pogc-score.gi-pogc-word { font-size:26px; font-weight:700; line-height:1.1; font-variant-numeric:normal; }
@container (max-width:359px) { .gi-pogc-score.gi-pogc-word { font-size:22px; } }   /* with .gi-pogc-last's narrow size */
/* the name never breaks mid-word for it (measured at 390: "Walk-off Single" left "O'Bli|a", "Whitwo|rth"): the name keeps
   its longest word's width and the kind wraps between its words instead */
.gi-pogc-hero:has(.gi-pogc-word) .gi-pogc-who { min-width:min-content; }
.gi-pogc-total:has(.gi-pogc-word) { flex:0 1 auto; }
.gi-potg-tbd { font-weight:800; letter-spacing:1px; color:color-mix(in srgb, var(--muted) 50%, transparent); }

/* Home runs: keep the existing hit color, with a larger white ring beyond the fence. */
#pmBg .pm-hit.pm-hr { stroke-width:2; }
#pmBg .pm-key.pm-key-hr { outline:2px solid currentColor; outline-offset:1px; width:8px; height:8px; margin-right:8px; }

/* Three existing batting grids, separated at SAC and QAB. */
#pmBg .pm-stat-groups { display:grid; row-gap:20px; }
/* [LB9] the score window: two big marks and the runs (Craig: "Just want 2 big logos and the score here") */
.gi-matchup .mu-head.gi-score-big .mu-logo { width:120px; height:120px; }
/* Craig: "inline" — the marks and the runs on ONE row at every width (the matchup's narrow rule dropped the runs to a
   second row under 455px); the three cells center on each other */
.gi-matchup .mu-head.gi-score-big { grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); grid-template-rows:auto; align-items:center; }
.gi-matchup .mu-head.gi-score-big .mu-side.away { grid-column:1; grid-row:1; }
.gi-matchup .mu-head.gi-score-big .mu-score { grid-column:2; grid-row:1; justify-self:center; }
.gi-matchup .mu-head.gi-score-big .mu-side.home { grid-column:3; grid-row:1; }

/* [OD] Offense / Defense (Craig 2026-10-05): the guide's confirm card over the Edit Game window with two equal btn-sm
   choices side by side; a count's off / def split after its -; a pick's side under the Play of Game control */
#pmEditBg [data-side-picker] .ct-confirm-card { font-family:var(--font1Family); }
#pmEditBg [data-side-picker] .ct-confirm-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
#pmEditBg .gi-eg-od { font:500 11px/1.3 var(--font1Family); color:var(--gray7); text-transform:uppercase; white-space:nowrap; }
#pmEditBg .gi-eg-pog-below { grid-column:1 / -1; display:grid; grid-template-columns:subgrid; column-gap:18px; align-items:center; }
#pmEditBg .gi-eg-pog-below > .gi-eg-pog-description { grid-column:1; }
#pmEditBg .gi-eg-pog-below > .gi-eg-pog-side { grid-column:4; display:flex; align-items:center; margin:8px 0 0 -0.15rem; }   /* under the Play of Game control (column 4); the -0.15rem takes back the release's button margin so the left edges meet (measured 925.06 vs 922.67) */
/* the card's title: the window's h2 rules (sg-sst-styles / sg-sst-custom / tlc-ctx-ops) outrank tracker-modal.css's .ct-confirm-title
   on size, weight, transform and line-height — the guide's own declarations (tracker-modal.css:136-153, 166) restated in the window's scope */
#pmEditBg [data-side-picker] .ct-confirm-title { text-align:center; margin:0 0 10px; font-size:1.6rem; font-weight:700; letter-spacing:0.5px; text-transform:uppercase; line-height:1.2; color:var(--color1); }
@container (max-width:850px) {
  /* the phone row stacks who / Clutch / Fumble / Play of Game in column 1 (line ~1033): the side goes under the control there too */
  #pmEditBg .gi-eg-pog-below > .gi-eg-pog-description { grid-column:1; }
  #pmEditBg .gi-eg-pog-below > .gi-eg-pog-side { grid-column:1; margin-left:calc(4px - 0.15rem); }   /* the phone row pads 4px; the control sits at 64, the below-row at 60 */
}

/* Craig 2026-10-05: stationary review controls, category counts and Play of Game in Totals. */
#pmEditBg [data-side-picker] .ct-confirm-close { top:12px; right:12px; margin-top:0; }
/* 2026-10-14 Diving play picker (Craig: "Tie every dive to its play"): the side picker's card with one play per row — the
   inning and RISP on the button, the play under it in sentence case; the list scrolls inside the card */
#pmEditBg [data-side-picker] .ct-confirm-actions.gi-eg-dive-choices { grid-template-columns:minmax(0,1fr); max-height:min(56vh,520px); overflow-y:auto; padding:2px; }
#pmEditBg [data-side-picker] .gi-eg-dive-choices .btn { height:auto; white-space:normal; }
#pmEditBg .gi-eg-dive-play { display:block; margin-top:2px; font-weight:400; line-height:1.3; text-transform:none; letter-spacing:0; }
#pmEditBg .gi-eg-group-diving .gi-eg-dive-pick { margin-top:4px; }
#pmEditBg.ct-dashboard .ct-modal-body { overflow-anchor:none; }
#pmEditBg .gi-eg-rows { grid-template-columns:minmax(180px,1fr) minmax(0,1.2fr) minmax(0,1.2fr); }
/* 2026-10-11 21:19 MDT: carry each player stripe through both colored counter groups. */
#pmEditBg .gi-eg-row { --gi-eg-row-bg:var(--panel); background:var(--gi-eg-row-bg); padding:0; column-gap:12px; }
#pmEditBg .gi-eg-row:nth-child(even) { --gi-eg-row-bg:var(--panel-2); }
#pmEditBg .gi-eg-row > .gi-eg-who { grid-column:1; grid-row:auto; padding:10px; }
#pmEditBg .gi-eg-who .gi-eg-suggest, #pmEditBg .gi-eg-who .gi-eg-suggest-slot { margin-left:auto; flex-shrink:0; }
#pmEditBg .gi-eg-count-group { display:grid; grid-template-columns:minmax(0,1.5fr) repeat(2,minmax(0,1fr)); align-items:stretch; }
#pmEditBg .gi-eg-cnt { justify-content:center; gap:4px; padding:12px 6px; min-width:0; }
#pmEditBg .gi-eg-cat-batting { background:color-mix(in srgb,var(--brown,#8b5e3c) 14%,var(--gi-eg-row-bg)); }
#pmEditBg .gi-eg-cat-fielding { background:color-mix(in srgb,var(--green) 12%,var(--gi-eg-row-bg)); }
#pmEditBg .gi-eg-cat-pitching { background:color-mix(in srgb,var(--orange,#ef8b2c) 14%,var(--gi-eg-row-bg)); }
#pmEditBg .gi-eg-count-group .gi-eg-coach-label { color:var(--color1); font-weight:700; margin-right:4px; }
#pmEditBg .gi-eg-count-group .gi-eg-n { min-width:18px; }
/* 2026-10-13 Craig: "make 'FUMBLE' red, as well as any values above 0 in the 3 fumble columns" */
#pmEditBg .gi-eg-group-fumble .gi-eg-coach-label, #pmEditBg .gi-eg-group-fumble .gi-eg-n:not(.z) { color:var(--danger); }
/* Keep the guide's original SVG art and hover files; quiet only the idle ink and disc. */
#pmEditBg .gi-eg-count-group .tlc-shortcut { --tlc-shortcut-ink:var(--gray3); --tlc-shortcut-tint:var(--panel); opacity:1; }
#pmEditBg .gi-eg-count-group .tlc-shortcut:disabled { opacity:1; }
#pmEditBg .gi-eg-pog-controls { display:flex; align-items:center; gap:8px; }
#pmEditBg .gi-eg-pog-side { display:inline-flex; flex:0 0 90px; }
#pmEditBg .gi-eg-pog-side > .btn { width:100%; }
#pmEditBg .gi-eg-pog-side.gi-eg-slot { visibility:hidden; }
#pmEditBg .gi-eg-total-pog { white-space:nowrap; }
#pmEditBg .gi-eg-total-note { min-width:220px; }
#pmEditBg .gi-eg-total-note .gi-eg-pog-description { margin:0; }
#pmEditBg #giRvTotalsTable td { vertical-align:middle; }
/* Craig 2026-10-05: halve the space above/below the original Play of Game circle.
   The Offense/Defense button (including its invisible slot) also sets this row's height. */
#pmEditBg #giRvTotalsTable tr[data-rv-j] > td { padding-top:4px; padding-bottom:4px; }
html:not(#gi-sg2) #pmEditBg #giRvTotalsTable .gi-eg-pog-side > .btn.btn-xxs { padding-top:.55rem!important; padding-bottom:.55rem!important; }
#pmEditBg #giRvTotals { display:grid; grid-template-columns:auto minmax(0,1fr); gap:4px 10px; }
#pmEditBg #giRvTotals .gi-eg-total-state { white-space:nowrap; }
#pmEditBg #giRvTotals .gi-eg-total-scoring { grid-column:1 / -1; }
@container (max-width:850px) {
  #pmEditBg .gi-eg-rows { grid-template-columns:minmax(0,1fr); }
  #pmEditBg .gi-eg-row { grid-template-columns:minmax(0,1fr); row-gap:0; }
  #pmEditBg .gi-eg-row > .gi-eg-who { grid-column:1; grid-row:1; }
  #pmEditBg .gi-eg-row > .gi-eg-count-group { grid-column:1; }
  #pmEditBg .gi-eg-count-group .gi-eg-cnt { padding:8px 6px; }
}

@media (max-width:575px) {
  #pmEditBg #giRvTotals { grid-template-columns:minmax(0,1fr); }
  #pmEditBg .gi-eg-coach-list { margin-inline:-28px; }
  #pmEditBg .gi-eg-count-group { grid-template-columns:minmax(122px,1.5fr) repeat(2,minmax(66px,1fr)); }
}

/* Coach Sync: existing panel, button and disclosure components with a short action path. */
.gi-sync-browser { display:flex; align-items:center; flex-wrap:wrap; gap:16px; }
.gi-sync-browser > a { flex:0 0 48px; }
.gi-sync-browser img { display:block; width:48px; height:48px; }
.gi-sync-browser > div:not(.gi-sync-controls) { flex:1 1 180px; min-width:0; }
.gi-sync-browser p { margin:4px 0 0; font-size:13px; }
.gi-sync-browser .gi-sync-controls { flex:0 0 auto; }
#coachInputsTable { min-width:620px; }
#coachInputsTable td { vertical-align:middle; }
.gi-sync-category { display:inline-block; padding:3px 7px; border-radius:4px; font-size:12px; white-space:nowrap; }
.gi-sync-category-batting { background:color-mix(in srgb,var(--brown) 14%,var(--panel)); }
.gi-sync-category-fielding { background:color-mix(in srgb,var(--green) 12%,var(--panel)); }
.gi-sync-category-pitching { background:color-mix(in srgb,var(--orange) 14%,var(--panel)); }
.gi-legacy-sync { margin-top:14px; }
.gi-legacy-sync > summary { cursor:pointer; font-size:13px; color:var(--muted); }
#gameClutchTable th, #gameClutchTable td { text-align:left; }
#gameClutchTable td.gi-ovr { padding-right:30px; }
.gi-clutch-count { position:relative; display:inline-block; min-width:1ch; }
.gi-clutch-dots { position:absolute; left:calc(100% + 5px); top:50%; transform:translateY(-50%); display:inline-flex; align-items:center; gap:4px; }
.gi-clutch-dots i { display:block; width:5px; height:5px; border-radius:50%; background:var(--danger); }

/* Team Settings uses the existing rail card and editor; runner-up shares the award window. */
.gi-team-settings { display:block; width:100%; border:0; background:var(--panel); color:var(--text); padding:16px; text-align:left; cursor:pointer; font:inherit; }
.gi-team-settings-row { display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.gi-team-settings-row > :first-child { width:48px; height:48px; object-fit:contain; flex:0 0 48px; }
.gi-team-settings-row > i { display:flex; align-items:center; justify-content:center; color:var(--muted); background:var(--panel-2); }
.gi-team-settings-row > span { min-width:0; }
.gi-team-settings-row b, .gi-team-settings-row small { display:block; }
.gi-team-settings-row small { color:var(--muted); }
.gi-team-settings-action { display:flex; align-items:center; gap:8px; font-size:12px; color:var(--hf-purple); }
.gi-team-settings:hover .gi-team-settings-action { color:var(--neon-dim); }
#gamePog .ph.gi-runner-header { background:var(--panel-3); color:var(--text) !important; border-top:1px solid var(--line); border-radius:0; }
#gamePog .gi-runner-header .meta { color:var(--muted) !important; }
#gamePog .gi-runner .gi-pogc-who, #gamePog .gi-runner .gi-pogc-score { opacity:.8; }
#gamePog > .gi-pogc:first-of-type > :last-child { border-radius:0; }
#gamePog > .gi-runner { background:transparent; }

/* The shell pins .panel margins; this requested Sync gap wins within its own card. */
#giSyncStart #giSyncInstall { margin-top:14px !important; }

.gi-infoc-team .tmark img { width:100%; height:100%; object-fit:contain; }
#giSyncStart > .panel + .panel { margin-top:14px !important; }
/* The guide's danger button releases gi.css letter spacing and suppresses the hover helper's shadow. */
#giSyncInstall .gi-sgbtn .btn.btn-sm.btn-danger.caps.hvr-pop { letter-spacing:revert !important; box-shadow:none !important; }

/* Canonical focused inputs inherit FontColor with no focus border. Release the
   bridge fallback only for Team Settings, measured against the source guide. */
#pmEditBg.gi-ed :is(#giEd_teamLogoUrl, #giEd_conferenceLogoUrl, #giEd_conferenceName) {
  --InputColorFocus:var(--FontColor);
  --InputBorderColorFocus:initial;
}

/* Coach Input spacing: cancel the older 22px sibling margin inside category groups. */
#pmEditBg .gi-eg-row { column-gap:20px; }
#pmEditBg .gi-eg-count-group { column-gap:5px; grid-template-columns:minmax(max-content,1.5fr) repeat(2,minmax(max-content,1fr)); }
#pmEditBg .gi-eg-count-group .gi-eg-cnt { margin-left:0; padding-inline:5px; }
#pmEditBg .gi-eg-count-group .tlc-shortcut { flex-shrink:0; }
#pmEditBg #giRvTotals { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; }
#pmEditBg #giRvTotals .gi-eg-total-scoring { white-space:nowrap; }
#pmEditBg #giRvTotalsTable .gi-eg-total-note { min-width:0; padding:8px 12px 12px; }
#pmEditBg #giRvTotalsTable .gi-eg-total-description-row td { max-width:none; white-space:normal; }
@container (max-width:850px) {
  #pmEditBg .gi-eg-row > .gi-eg-count-group + .gi-eg-count-group { margin-top:20px; }
}
#pmEditBg .gi-eg-total-who { display:flex; align-items:center; gap:8px; min-width:0; }
#pmEditBg .gi-eg-total-who .gi-eg-suggest { flex-shrink:0; color:var(--attention); opacity:1; }
#pmEditBg #giRvTotalsTable tr[hidden] { display:none; }
/* 2026-10-12, Craig: "this expand input should be within the batter's bg color, not creating a new row, so behind
   O'Blia's input should be light gray, with row 3 Lindsey being white bg again". The Play of Game description row
   takes its player's stripe, drops the hairline between them, and does not count in the zebra (nth-child … of). */
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:nth-child(odd of tr[data-rv-j]) > td,
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:nth-child(odd of tr[data-rv-j]) + tr.gi-eg-total-description-row > td { background:var(--panel); }
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:nth-child(even of tr[data-rv-j]) > td,
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:nth-child(even of tr[data-rv-j]) + tr.gi-eg-total-description-row > td { background:var(--panel-2); }
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:has(+ tr.gi-eg-total-description-row:not([hidden])) > td { border-bottom:0; }
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:hover > td, #pmEditBg #giRvTotalsTable tbody tr.gi-eg-total-description-row:hover > td,
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:hover + tr.gi-eg-total-description-row > td,
#pmEditBg #giRvTotalsTable tbody tr[data-rv-j]:has(+ tr.gi-eg-total-description-row:not([hidden]):hover) > td { background:var(--panel-2); }
/* Team names break at spaces. A narrow Game Info panel puts the name below its logo. */
.gi-infoc-team .nm, .gi-infoc-team .ln { overflow-wrap:normal; word-break:normal; hyphens:none; }
@container (max-width:270px) {
  .gi-infoc-identity { flex-direction:column; align-items:flex-start; gap:3px; }
  .gi-infoc-team .gi-infoc-rank { align-self:start; margin-top:18px; }
  .gi-infoc-team .nm, .gi-infoc-team .ln { text-align:left; }
}

@media(max-width:360px) {
  #pmEditBg .gi-eg-count-group .gi-eg-cnt { gap:2px; }
  #pmEditBg .gi-eg-count-group .gi-eg-coach-label { margin-right:0; }
  #pmEditBg .gi-eg-count-group .gi-eg-n { min-width:12px; }
}

#gameInfo.gi-infoc-panel { cursor:pointer; }
#gameInfo.gi-infoc-panel:focus-visible { outline:2px solid var(--attention); outline-offset:3px; }

/* Review Board spinner port: board.html md5 0efe52dc3f44509e6482597a5e482066.
   Declared differences: scope and navy ink on this white card. */
#pmEditBg .gi-sync-loader .preloader-wrapper{position:relative;display:inline-block;width:3.4rem;height:3.4rem;
  font-size:0;animation:mgo-rotate 1568ms linear infinite}
#pmEditBg .gi-sync-loader .preloader-wrapper.crazy{animation-duration:333ms}
#pmEditBg .gi-sync-loader .spinner-layer{position:absolute;width:100%;height:100%;opacity:1;border-color:var(--gc-button-bg);
  animation:mgo-fill 5332ms cubic-bezier(.4,0,.2,1) infinite both}
#pmEditBg .gi-sync-loader .gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;
  overflow:hidden;border-color:inherit}
#pmEditBg .gi-sync-loader .gap-patch .circle{left:-450%;width:1000%}
#pmEditBg .gi-sync-loader .circle-clipper{position:relative;display:inline-block;width:50%;height:100%;
  overflow:hidden;border-color:inherit}
#pmEditBg .gi-sync-loader .circle-clipper .circle{position:absolute;top:0;right:0;bottom:0;width:200%;height:100%;
  border-color:inherit;border-style:solid;border-width:.225rem;
  border-bottom-color:transparent;border-radius:50%}
#pmEditBg .gi-sync-loader .circle-clipper.left .circle{left:0;border-right-color:transparent;
  transform:rotate(129deg);animation:mgo-left 1333ms cubic-bezier(.4,0,.2,1) infinite both}
#pmEditBg .gi-sync-loader .circle-clipper.right .circle{left:-100%;border-left-color:transparent;
  transform:rotate(-129deg);animation:mgo-right 1333ms cubic-bezier(.4,0,.2,1) infinite both}
@keyframes mgo-rotate{to{transform:rotate(360deg)}}
@keyframes mgo-fill{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}
  37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}
  75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}
@keyframes mgo-left{from{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}
@keyframes mgo-right{from{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}

@media(prefers-reduced-motion:reduce){
 #pmEditBg .gi-sync-loader .preloader-wrapper{animation-duration:2s!important}
 #pmEditBg .gi-sync-loader .spinner-layer,#pmEditBg .gi-sync-loader .circle-clipper .circle{animation:none!important}
}

#pmEditBg .gi-sync-loader { display:block; text-align:center; margin:12px 0 20px; }
#pmEditBg .gi-sync-loader[hidden] { display:none!important; }
/* Review Board save-bar port (Craig 2026-10-14: "use the loading animation that we use on the review board that is a
   horizontal line that fills up to 100% as the items are synced"). Source: TurnerLee Content/Pages/reviews/settings.html
   md5 2dc4012d81ebac80938bf7debf47aa30, #awModal .save-bar + paintSaveBar(). Declared differences: scope; a full-width
   line in the spinner's slot (same 12px / 20px margins) instead of an 86px inline counter; the fill is --color1, the gold
   of the count beside it, for the board's gold --accent; the board's --ease curve written out (GameImpact has no --ease). */
#pmEditBg [data-coach-progress] .save-bar{display:block;width:100%;height:4px;border-radius:2px;
  background:rgba(20,21,25,.14);overflow:hidden;margin:12px 0 20px}
#pmEditBg [data-coach-progress] .save-bar i{display:block;height:100%;width:0;border-radius:2px;background:var(--color1);
  transition:width .3s cubic-bezier(.16,1,.3,1)}
@media (prefers-reduced-motion:reduce){
  #pmEditBg [data-coach-progress] .save-bar i{transition:none}}
#pmEditBg [data-coach-progress] .save-bar[hidden]{display:none}
#pmEditBg [data-coach-progress][data-import-waiting="true"] [data-coach-progress-help] { font-size:13px; }

/* Craig 2026-10-05: supplied GPL/CHSAA artwork below the game location/date/time. */
.gi-infoc-league { margin:12px -16px 0; padding:20px; background:var(--panel-2); }
.gi-infoc-league.chsaa { background:var(--gi-chsaa-ribbon, #f2ede4); }
.gi-infoc-league img { display:block; margin:0 auto; width:140px; max-width:100%; height:auto; max-height:80px; object-fit:contain; object-position:center; }

/* Craig 2026-10-05: DID NOT PLAY ink and click controls almost disappear, staying interactive.
   Dim only the content; preserve the existing row/category backgrounds and event handlers. */
#pmEditBg .gi-eg-row.dnp .gi-eg-who,
#pmEditBg .gi-eg-row.dnp .gi-eg-cnt > * { opacity:.18; filter:grayscale(1); }

/* Craig 2026-10-05: the existing discrepancy header as a full-background disclosure row. */
#pmEditBg .gi-eg-disc-history > summary.gi-eg-discrepancy-heading { display:flex; align-items:center; gap:10px; width:100%; cursor:pointer; list-style:none; }
#pmEditBg .gi-eg-disc-history > summary::-webkit-details-marker { display:none; }
#pmEditBg .gi-eg-disc-history > summary::before { content:'▸'; color:var(--muted); }
#pmEditBg .gi-eg-disc-history[open] > summary::before { content:'▾'; }
#pmEditBg .gi-eg-disc-history > summary .gi-eg-hm { margin-left:auto; }

/* Existing opponent mark and Play of Game checks: quarter-width logo, stacked checklist. */
#pmEditBg .gi-eg-review-summary { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,3fr); align-items:center; padding:0 0 20px; margin:0 0 20px; border-bottom:1px solid var(--line); }
#pmEditBg .gi-eg-summary-logo { min-width:0; padding-right:24px; display:flex; justify-content:center; align-items:center; }
#pmEditBg .gi-eg-summary-logo .tmark { width:100%; height:auto; aspect-ratio:1; }
#pmEditBg .gi-eg-summary-checks { min-width:0; display:flex; flex-direction:column; gap:12px; }
/* Craig 2026-10-15: "i want the buttons stacked here in the top right of the Status window" — MaxPreps / GC / CHSAA
   (gi-review gameLinks) as a third column at the top of the checklist, one per row, equal widths. */
#pmEditBg .gi-eg-review-summary:has(#giRvLinks) { grid-template-columns:minmax(0,1fr) minmax(0,3fr) auto; }
#pmEditBg #giRvLinks { align-self:start; display:flex; flex-direction:column; align-items:stretch; gap:6px; margin-left:16px; width:110px; }   /* a set width: the buttons' 5% padding resolves against it (an auto column clipped MAXPREPS at 56px) */
#pmEditBg .gi-eg-review-summary .gi-eg-pog-label, #gameReview .gi-eg-remaining .gi-eg-pog-label { min-width:0; text-align:left; }
#pmEditBg .gi-eg-review-summary .tlc-shortcut, #gameReview .gi-eg-remaining .tlc-shortcut { flex-shrink:0; }
#pmEditBg .gi-eg-review-summary .gi-eg-coach-label, #gameReview .gi-eg-remaining .gi-eg-coach-label { font-size:16px; font-weight:400; text-transform:none; white-space:normal; }   /* 2026-10-12 Craig, pasted: 16px (was 23px) */
#pmEditBg .gi-eg-summary-count, #gameReview .gi-eg-summary-count { text-transform:none; }
/* 2026-10-12, Craig: under the EDIT GAME bar's INCOMPLETE (n) chip, every incomplete item is its own row — the card's
   checklist row (rules above, widened to #gameReview). The group centers under the chip; rows align to each other. */
#gameReview .gi-eg-remaining { display:flex; justify-content:center; }
#gameReview .gi-eg-remaining-list { display:flex; flex-direction:column; gap:12px; min-width:0; }
/* the bar sits on the page's dark chrome (rgb(14,22,27) measured), not the card's white: the row label takes the
   chip's own ink (--pill-text, white) — --gray7 was invisible there (measured 2026-10-12 07:47 MDT). */
#gameReview .gi-eg-remaining .gi-eg-coach-label { color:var(--pill-text); }
/* 2026-10-14 the GameChanger sync rows under DATA COMPLETE (game.js syncedMarkup): the remaining rows' own look, the
   rows' 12px between the two groups. With them present both groups start at one left edge, so every row's check lines up
   (they wrap in the rail, and a centered short group beside a full-width one would not). */
#gameReview .gi-eg-synced { display:flex; justify-content:flex-start; margin-bottom:12px; }
#gameReview .gi-eg-synced ~ .gi-eg-remaining { justify-content:flex-start; }
#gameReview .gi-eg-synced-list { display:flex; flex-direction:column; gap:12px; min-width:0; }
#gameReview .gi-eg-synced .gi-eg-pog-label { min-width:0; text-align:left; }
#gameReview .gi-eg-synced .tlc-shortcut { flex-shrink:0; }
#gameReview .gi-eg-synced .gi-eg-coach-label { font-size:16px; font-weight:400; text-transform:none; white-space:normal; color:var(--pill-text); }
/* the check centers on the one-line label; the detail sits under the label in caps (Craig 2026-10-14) */
#gameReview .gi-eg-synced .gi-eg-synced-row { display:grid; grid-template-columns:auto minmax(0,1fr); column-gap:8px; row-gap:3px; align-items:center; }
#gameReview .gi-eg-synced .gi-eg-synced-row > .tlc-shortcut { grid-column:1; grid-row:1; }
#gameReview .gi-eg-synced .gi-eg-synced-row > .gi-eg-coach-label { grid-column:2; grid-row:1; white-space:nowrap; }
/* Combo Game High (Craig 2026-10-14): the opponent with its game number at 60%, centered on the name */
table .gi-gh { display:inline-flex; align-items:center; gap:5px; }   /* every Game High table (gi-ui gameHighColumns) */
table .gi-gh .gi-gm { font-size:60%; }
#gameReview .gi-eg-synced .gi-eg-synced-at { grid-column:2; grid-row:2; font-size:11px; font-weight:400; letter-spacing:.12em; text-transform:uppercase; color:var(--on-bg); line-height:1.3; }
@media(max-width:600px) { #pmEditBg .gi-eg-summary-logo { padding-right:12px; } }

/* Keep each retained GC run visually separate from the next. */
#pmEditBg .gi-eg-correction-run + .gi-eg-correction-run { margin-top:20px; padding-top:16px; border-top:1px solid var(--line); }
#pmEditBg .gi-eg-correction-run table { table-layout:fixed; min-width:600px; width:100%; }
#pmEditBg .gi-eg-correction-run th:first-child { width:25%; }
#pmEditBg .gi-eg-correction-run th:nth-child(2) { width:45%; }
#pmEditBg .gi-eg-correction-run th:last-child { width:30%; }
#pmEditBg .gi-eg-correction-run .gi-eg-sub.danger { color:var(--bs-danger); }

/* Correction recovery leads; retained sync history is a secondary disclosure. */
#pmEditBg .gi-eg-corrections { min-width:0; padding:24px; margin:24px 0; }
#pmEditBg .gi-eg-correction-status { margin:8px 0 12px; color:var(--text); line-height:1.5; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-corrections .gi-eg-sub:not(.gi-eg-correction-status) { color:color-mix(in srgb,var(--muted) 90%,var(--text)); }
#pmEditBg .gi-eg-correction-intro { margin:8px 0 0; color:var(--muted); line-height:1.5; }
#pmEditBg .gi-eg-corrections > .tscroll { min-width:0; margin-top:24px; }
#pmEditBg .gi-eg-correction-table { width:100%; min-width:0; table-layout:fixed; }
#pmEditBg .gi-eg-correction-table th:first-child { width:25%; }
#pmEditBg .gi-eg-correction-table th:nth-child(2) { width:35%; }
#pmEditBg .gi-eg-correction-table th:last-child { width:40%; }
#pmEditBg .gi-eg-correction-table :is(th,td) { padding:12px 16px; text-align:left; vertical-align:top; white-space:normal; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-correction-table :is(th,td):first-child { padding-left:0; }
#pmEditBg .gi-eg-correction-table :is(th,td):last-child { padding-right:0; }
#pmEditBg .gi-eg-correction-table .gi-eg-sub { margin-top:4px; }

/* Share the same spacing in correction recovery and the normal sync footer. */
#pmEditBg .gi-eg-action-block { display:grid; gap:24px; min-width:0; margin-top:24px; }
#pmEditBg .gi-eg-action-block > :is(p,.gi-eg-sub) { margin:0; line-height:1.5; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-action-controls { display:flex; flex-wrap:wrap; align-items:stretch; gap:16px; min-width:0; }
#pmEditBg .gi-eg-action-controls > .btn { flex:1 1 220px; min-width:0; max-width:100%; white-space:normal; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-sync { gap:16px; align-items:stretch; }
#pmEditBg .gi-eg-sync > .btn { flex:1 1 180px; min-width:0; max-width:100%; white-space:normal; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-sync-help { flex-basis:100%; }
#pmEditBg [data-rv-sync-details] { text-decoration:none; }
#pmEditBg [data-rv-sync-details]:focus-visible,
#pmEditBg .gi-eg-correction-history > summary:focus-visible { outline:2px solid var(--accent); outline-offset:4px; }

#pmEditBg .gi-eg-correction-history { min-width:0; margin:32px 0 24px; padding-top:20px; border-top:1px solid var(--line); }
#pmEditBg .gi-eg-correction-history > summary { min-height:44px; padding:8px 0; color:var(--text); font-weight:600; line-height:1.5; cursor:pointer; overflow-wrap:anywhere; }
#pmEditBg .gi-eg-correction-history > summary > span { margin-left:12px; color:var(--muted); font-weight:400; }
#pmEditBg .gi-eg-correction-history-body { min-width:0; margin-top:16px; }
#pmEditBg .gi-eg-correction-history-body :is(.gi-eg-correction-run,.tscroll) { min-width:0; max-width:100%; }
#pmEditBg .gi-eg-correction-history-body .tscroll { overflow-x:auto; }

@media(max-width:600px) {
  #pmEditBg .gi-eg-correction-table,
  #pmEditBg .gi-eg-correction-table tbody { display:block; width:100%; }
  #pmEditBg .gi-eg-correction-table thead { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
  #pmEditBg .gi-eg-correction-table tr { display:block; padding:16px 0; border-bottom:1px solid var(--line); }
  #pmEditBg .gi-eg-correction-table tr:first-child { padding-top:0; }
  #pmEditBg .gi-eg-correction-table tr:last-child { padding-bottom:0; border-bottom:0; }
  #pmEditBg .gi-eg-correction-table td,
  #pmEditBg .gi-eg-correction-table td:first-child,
  #pmEditBg .gi-eg-correction-table td:last-child { display:block; width:100%; padding:0; border:0; }
  #pmEditBg .gi-eg-correction-table td + td { margin-top:12px; }
  #pmEditBg .gi-eg-correction-table td[data-label]::before { display:block; margin-bottom:4px; color:color-mix(in srgb,var(--muted) 90%,var(--text)); font-size:12px; font-weight:600; line-height:1.5; content:attr(data-label); }
  #pmEditBg .gi-eg-correction-history > summary > span { display:block; margin:4px 0 0; }
}

/* 2026-10-11: one review/sync group, one action row, one navigation level.
   Existing HF tokens, SST action buttons and segmented-control classes retained. */
#pmEditBg .gi-eg-sync-panel { min-width:0; margin:0 0 24px; padding:24px; border:1px solid var(--line); background:var(--panel-2); }
#pmEditBg .gi-eg-sync-panel [hidden] { display:none!important; }
#pmEditBg .gi-eg-sync-panel .gi-eg-action-block { margin-top:0; gap:12px; }
#pmEditBg .gi-eg-sync-panel .gi-eg-sync-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:stretch; gap:16px; }
#pmEditBg .gi-eg-sync-panel .gi-eg-sync-actions > .btn { display:flex; align-items:center; justify-content:center; width:100%; min-width:0; white-space:normal; }
#pmEditBg .gi-eg-sync-copy:empty { display:none; }
/* 2026-10-12: the sync tabs are the guide's .btn-toggle-group (sg-sst-styles owns the buttons). Craig: "this particular set
   of tabs should definitely go 100% the width ... text centered within the buttons" — the guide has no full-width
   variant, so w-100 stretches the group and these two declarations share it equally between the three segments. */
#pmEditBg .gi-eg-sync-tabs { margin-top:24px; }
#pmEditBg .gi-eg-sync-tabs > .btn { flex:1 1 0; min-width:0; }
#pmEditBg .gi-eg-sync-pane { min-width:0; padding-top:20px; }
#pmEditBg .gi-eg-sync-panel .gi-eg-corrections { padding:0; margin:0; }
#pmEditBg .gi-eg-sync-panel :is(.gi-eg-corrections,.gi-eg-correction-history) h3,
#pmEditBg .gi-eg-sync-panel .gi-eg-correction-run h4 { margin:0 0 8px; font:700 16px/1.4 var(--font1Family); color:var(--text); text-transform:none; letter-spacing:normal; }
#pmEditBg .gi-eg-sync-panel .gi-eg-correction-history { margin:0; padding:0; border:0; }
#pmEditBg .gi-eg-sync-panel .gi-eg-correction-history-body { margin-top:20px; }
#pmEditBg .gi-eg-sync-panel .gi-eg-correction-run table { min-width:0; }
#pmEditBg .gi-eg-sync-panel .gi-eg-queue-help { margin:20px 0 0; }
#pmEditBg .gi-eg-sync-panel .gi-eg-log-plays { margin-top:8px; }
#pmEditBg .gi-eg-sync-panel .gi-eg-log-plays p { margin:4px 0 0; font-size:13px; line-height:1.5; }
#pmEditBg .gi-eg-sync-panel .gi-eg-log-activity { margin-top:16px; }
#pmEditBg .gi-eg-sync-panel .gi-eg-log-activity p { margin:4px 0 0; }
@media(max-width:600px) {
  #pmEditBg .gi-eg-sync-panel { padding:16px; }
  #pmEditBg .gi-eg-sync-panel .gi-eg-sync-actions { gap:12px; }
  #pmEditBg .gi-eg-sync-panel .gi-eg-review-summary { grid-template-columns:1fr; }
  #pmEditBg .gi-eg-sync-panel .gi-eg-summary-logo { justify-content:flex-start; padding-right:0; margin-bottom:12px; }
  #pmEditBg .gi-eg-sync-panel .gi-eg-summary-logo .tmark { width:64px; }
  #pmEditBg .gi-eg-sync-panel .gi-eg-review-summary:has(#giRvLinks) { grid-template-columns:minmax(0,1fr) auto; }   /* phone: logo + buttons on top, checklist below */
  #pmEditBg .gi-eg-sync-panel .gi-eg-review-summary:has(#giRvLinks) > .gi-eg-summary-checks { grid-column:1 / -1; }
  #pmEditBg .gi-eg-sync-panel #giRvLinks { grid-column:2; grid-row:1; }
  #pmEditBg .gi-eg-sync-panel .gi-eg-coach-label { min-width:0; overflow-wrap:anywhere; }
}
/* 2026-10-13 Craig: "Allow Coach to add a DIVING + - to far right columns of COACH INPUT window on each Game Modal. if it
   won't fit, make the entire table side-scroll to get to the Diving columns with Player Name sticky". Wide window: a
   fourth column, every count column at least its content, the list side-scrolls and the player cell stays put. */
#pmEditBg .gi-eg-rows { grid-template-columns:minmax(max-content,1fr) minmax(max-content,1.2fr) minmax(max-content,1.2fr) max-content; }   /* the name never truncates; the list scrolls instead */
#pmEditBg .gi-eg-group-diving { grid-template-columns:max-content; }
#pmEditBg .gi-eg-coach-list { overflow-x:auto; }
#pmEditBg .gi-eg-row > .gi-eg-who { position:sticky; left:0; z-index:1; background:var(--gi-eg-row-bg); }
@container (max-width:850px) {
  #pmEditBg .gi-eg-rows { grid-template-columns:minmax(0,1fr); }
  #pmEditBg .gi-eg-row > .gi-eg-who { position:static; }
}
/* 2026-10-13 Craig: Batting / Fielding / Pitching / Combo "should look just like the home page, but use the bg colors
   appropriate to the section" (gi-section.js). Combo is purple (his pick): the Overall ink, flat like the other three. */
.panel .ph.ph-ovr { background-image:none; background-color:var(--hf-purple); }
.gi-sect-b .gi-pogrow > #sectPogPanel { grid-column:span 3; min-width:0; }
@media (max-width:1280px){ .gi-sect-b .gi-pogrow { display:contents; } }
/* Fielding Total's Game High opponent: the full name, the schedule ABR on a phone */
.gi-opp-ab { display:none; }
@media (max-width:575px){ .gi-opp-full { display:none; } .gi-opp-ab { display:inline; } }
@media (max-width:1280px){ .gi-sect-b .gi-pogrow > .panel { order:0; } }   /* home's order:8 is for its own stack */
/* 2026-10-13 Pitching Total groups (Craig: Avg / IP "group with IMPACT AVG/Gm", IP "next to APP"): the Batting Total
   grouping above, the same 40px opener — Impact · Avg / GM · Avg / IP, then App · IP. */
#pitTotalTable th[data-k="impact"], #pitTotalTable th[data-k="app"], #pitTotalTable td.gi-grp { padding-left:40px; }
/* 2026-10-13 Scoring Weights: the table in the left two thirds, the auto Clutch / Fumble rules in the right third (Craig:
   "Each DataTable doesn't need to go 100% width, could be 66% width allowing for the Clutch descriptions ... right 1/3") */
.gi-w-split { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr); align-items:start; }
.gi-w-split:has(> .gi-w-rules[hidden]) { grid-template-columns:minmax(0,1fr); }
.gi-w-rules { border-left:1px solid var(--line); padding:12px 14px; font-size:13px; color:var(--text); }
.gi-w-rules[hidden] { display:none; }
.gi-w-rule + .gi-w-rule { margin-top:16px; }
.gi-w-rule-h { display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:12px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; }
.gi-w-rule ul { margin:6px 0 0; padding-left:18px; }
.gi-w-rule li + li { margin-top:3px; }
.gi-w-rule-note { margin:14px 0 0; font-size:12px; color:var(--muted); }
@media (max-width:900px){ .gi-w-split { grid-template-columns:minmax(0,1fr); } .gi-w-rules { border-left:0; border-top:1px solid var(--line); } }
/* 2026-10-14 each view in three tables side by side (Craig: "collapse width so each can be listed in 3 columns"), the
   rules' own 1px line between them. The widest table measures 328px unwrapped (Pitching's RUNS & RUN GAME), so the three
   take 3/4 and the rules 1/4 (it was 2/3 + 1/3); the rules go under them below 1380px and the tables stack below 1040px,
   the widths where three would no longer fit unwrapped */
.gi-w-split:has(> .gi-w-cols) { grid-template-columns:minmax(0,3fr) minmax(0,1fr); }
.gi-w-split:has(> .gi-w-cols):has(> .gi-w-rules[hidden]) { grid-template-columns:minmax(0,1fr); }
.gi-w-cols { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:start; }
.gi-w-col { min-width:0; }
.gi-w-col + .gi-w-col { border-left:1px solid var(--line); }
.gi-w-col[hidden] { display:none; }
@media (max-width:1380px){ .gi-w-split:has(> .gi-w-cols) { grid-template-columns:minmax(0,1fr); } .gi-w-split:has(> .gi-w-cols) > .gi-w-rules { border-left:0; border-top:1px solid var(--line); } }
@media (max-width:1040px){ .gi-w-cols { grid-template-columns:minmax(0,1fr); } .gi-w-col + .gi-w-col { border-left:0; border-top:1px solid var(--line); } }
/* 2026-10-13 Overview grids (Craig: "minimize alternating bg row colors, instead feature alternating bg columns from game
   1-end"): no row zebra; the first game column and every other one after it take the zebra's --panel-2 (total.js
   gi-gcol-alt). Same weight as the zebra and the medals: later than the zebra, earlier than the medals, so a medal wins. */
table.gi-ovgrid > tbody > tr.gi-row-even > td { background:var(--panel); }
table.gi-ovgrid > tbody > tr > td.gi-gcol-alt { background:var(--panel-2); }
/* Craig 2026-10-13: "hover color should be behind the 1st,2nd,3rd markers" — the row hover (table.gi-ptable tbody tr:hover
   td, !important) painted over them; a medal keeps its ground on the hovered row (!important to match, higher specificity). */
table.gi-ovgrid > tbody > tr:hover > td.gi-medal-1 { background:color-mix(in srgb,var(--gi-gold) 35%,var(--panel)) !important; }
table.gi-ovgrid > tbody > tr:hover > td.gi-medal-2 { background:color-mix(in srgb,var(--gi-silver) 35%,var(--panel)) !important; }
table.gi-ovgrid > tbody > tr:hover > td.gi-medal-3 { background:color-mix(in srgb,var(--gi-bronze) 30%,var(--panel)) !important; }
/* 2026-10-13 Overview: each game's top 3 scores on a faint gold / silver / bronze ground (Craig: "Gold Silver Bronze
   because it's intuitive on the Overview tables"). Beats the zebra stripe (table.gi > tbody > tr.gi-row-even > td). */
.gi { --gi-gold:#d4af37; --gi-silver:#a9afb7; --gi-bronze:#cd7f32; }
table.gi > tbody > tr > td.gi-medal-1 { background:color-mix(in srgb,var(--gi-gold) 35%,var(--panel)); }
table.gi > tbody > tr > td.gi-medal-2 { background:color-mix(in srgb,var(--gi-silver) 35%,var(--panel)); }
table.gi > tbody > tr > td.gi-medal-3 { background:color-mix(in srgb,var(--gi-bronze) 30%,var(--panel)); }

/* ---------- GAME PAGE PREV / NEXT: MUDCUP CFB MATCHUP WEEK ARROWS, PORTED ----------
   2026-10-15 Craig: "those arrows should be like they are in mudcup fantasy CFB for matchups, big bleed buttons" +
   "GM 3 can be listed before the 2 buttons". Lines 1431-1493 of MudCup Content/Pages/fantasy/cfb/matchup.html
   (md5 018d87490a0f40aaa29799d4a94b5770), byte for byte below, comments and all. Same band padding here (.panel .ph
   10px 12px, gi.css), so the negative margins cancel it exactly as there; --gold / --neon are this skin's own tokens.
   ONE ADDITION: MudCup's panel is overflow:clip and rounds the arrow's top-right corner; this header is not, so it
   clips itself (#gameHead > .ph) to give the same shape. */
  /* WEEK ARROWS, PORTED FROM THE SCHEDULE'S COLLAPSE CHEVRON — Craig, 2026-09-05: "REPLACE the
     '69/99 Final' text with right and left arrows like they are in the TurnerLee Schedule for
     projects, clients ... (except left and right instead of up/down) to switch MATCHUP weeks."
     SOURCE: #pbx-clients-all-chevron on turnerlee.com/ops/schedule. Its rules live in an SST
     sheet rather than in that page, so the values here were read off the RENDERED node
     (2026-09-05): 65x32, padding 0 14px, background rgb(0,160,255), white, no border, radius 0,
     flex-centred, with an 11px `viewBox="0 0 12 8"` chevron on path M1 1.8 6 6.4l5-4.6 at
     stroke-width 2 with round caps. The glyph is that same path ROTATED, not a second drawing,
     which is what "except left and right instead of up/down" means literally.
     HEIGHT IS align-self:stretch, NOT 32px. The gold band is its own height and a hard number
     would either float in it or overflow it; stretching makes the pair fill the band exactly
     whatever that band becomes.
     DISABLED HAS NO SOURCE TO COPY — the schedule's chevron is never disabled — so it is
     declared here: the arrow stays in place, at .32, and stops taking the pointer, because a
     control that disappears at the end of the week moves the one beside it. */
  /* EDGE TO EDGE, TOP TO BOTTOM — Craig, 2026-09-09: "The arrow BG color needs to go top to
     bottom and edge to edge the width of the arrow".  align-self:stretch was already here and was
     already working; it stretches to the band's CONTENT box, and the band is `padding:10px 12px`,
     so the arrows measured 15.59 in a 35.59 band and stopped 12px short of the right edge.
     Measured on the live page 2026-09-09 (_dbg-fcfb-wkarrows.mjs): 20px short vertically = the
     10+10, 11px short horizontally = the 12 less the border.  The negative margins cancel exactly
     that padding for this one item, so its border box reaches the band's edges and nothing else in
     the band moves.  The band does not grow: a negative margin gives back what the stretch took.
     THE CORNER IS NOT OURS TO ROUND — #muStripPanel is overflow:clip with border-radius 8px, so
     the panel clips the arrow's top-right itself, which is exactly the shape in Craig's img2. */
  .mu-wkarrows { display:inline-flex; align-self:stretch; align-items:stretch; gap:1px;
    margin-left:auto; margin-top:-10px; margin-bottom:-10px; margin-right:-12px; }
  /* THE WEEK, RIGHT IN FRONT OF THE PAIR — "State the week number right in front of it so it would
     go week to button button".  On the band, not on the gold: the gold was asked for edge to edge
     THE WIDTH OF THE ARROW.  Its own padding restores the band's inset the negative margin above
     removed, so the label sits where the meta text always did. */
  /* Craig's own block, 2026-09-11, pasted as he sent it — font-weight 700 -> 300. */
  .mu-wklab {
    display: inline-flex;
    align-items: center;
    padding: 0 10px 0 0;
    white-space: nowrap;
    font-weight: 300;
    letter-spacing: .04em;
  }
  /* --gold, NOT the ported hex.  rgb(0,160,255) came in verbatim with the control from
     #pbx-clients-all-chevron on turnerlee.com/ops/schedule, which is blue.  Token, never a hex —
     a hard-coded color here is a bug report about the brand pipeline.  --btn-gold-text is the
     estate's own existing pairing for a gold button, not a new choice. */
  /* WHITE, NOT --btn-gold-text.  Craig, 2026-09-09: "white arrows not black.  NEVER do black on
     light-to-mid colors."  That token exists and is the estate's pairing for a gold BUTTON, which
     is why it was reached for — but the standing rule outranks it: white ink on saturated colour
     is his default and --gold is squarely a light-to-mid.  The chevron paints with
     stroke="currentColor", so `color` carries the glyph. */
  .mu-wkarrow { display:inline-flex; align-items:center; justify-content:center;
    padding:0 14px; background:var(--gold); color:#fff; border:0; border-radius:0;
    cursor:pointer; line-height:1; }
  .mu-wkarrow svg { width:11px; height:11px; display:block; }
  .mu-wkarrow.prev svg { transform:rotate(90deg); }
  .mu-wkarrow.next svg { transform:rotate(-90deg); }
  .mu-wkarrow[disabled] { opacity:.32; cursor:default; pointer-events:none; }
  /* HOVER GOES TO THE BRIGHTER GOLD — Craig, 2026-09-09.  --neon is the skin's own brighter gold,
     the CFP trophy gold picked 2026-08-24, sitting on the header plate's ramp between its #e8c169
     highlight and its #cf9a30 body.  Token, never a hex.
     BACKGROUND ONLY — no transform, no lift, no scale.  The no-hover-lift rule is a health rule.
     AFTER the [disabled] rule so source order can never give a disabled arrow a live colour; its
     pointer-events:none already makes :hover unreachable, and this is the belt to that braces. */
  .mu-wkarrow:hover { background:var(--neon); }
#gameHead > .ph { overflow:clip; }
/* SEASON PROGRESS (gi-race.js) — Craig 2026-10-16: every player on one animated bar chart, in the Season Info rail ("could
   that chart fit in the skinny sidebar?"); under 1281px the rail folds into the one-column page and the window sits after the
   four cards. One row per player, sorted by OVERALL to date; a row slides to its rank by transform only (no lift, no scale).
   Bars: 4px rounded data-end, square at the zero line; the leader full HF purple, the rest its light step (the #sectRail
   chart's ink); values in text ink. --race-row is the row pitch gi-race.js reads.
   FULL WIDTH (one column): label column | bar track | value, 30px rows, the game caption bottom-right of the plot.
   RAIL (1281px+, 195-280px wide): too narrow for name, bar and value side by side (a 25px track at 1281), so each row is two
   lines — jersey + name with the value right, then the bar across the whole width under them (34px rows); no rank number,
   the game caption on its own two lines above the rows, no gridlines or tick labels (every bar carries its value). */
.gi-race [hidden] { display:none !important; }
.gi-race { --race-lab:250px; --race-end:64px; --race-row:30px; }
.gi-race .ph .gi-race-btn { cursor:pointer; }
.gi-race-body { padding:14px 22px 12px; }
.gi-race-plot { position:relative; }
.gi-race-rows { position:relative; height:calc(var(--race-n) * var(--race-row)); }
.gi-race-row { position:absolute; top:0; left:0; right:0; height:var(--race-row); display:grid; grid-template-columns:var(--race-lab) minmax(0,1fr); align-items:center; }
.gi-race-who { display:flex; align-items:center; gap:10px; min-width:0; font-size:14px; color:var(--text); white-space:nowrap; overflow:hidden; }
.gi-race-who .pname { min-width:0; overflow:hidden; text-overflow:ellipsis; }
.gi-race-rk { flex:0 0 22px; text-align:right; font-size:13px; color:var(--muted); font-variant-numeric:tabular-nums; }
.gi-race-track { position:relative; height:100%; margin-right:var(--race-end); }
.gi-race-bar { position:absolute; top:6px; bottom:6px; border-radius:0 4px 4px 0; background:color-mix(in srgb,var(--race-ink,var(--hf-purple)) 32%,var(--panel)); }
.gi-race-bar.neg { border-radius:4px 0 0 4px; }
.gi-race-row.is-top .gi-race-bar { background:var(--race-ink,var(--hf-purple)); }
/* the section pages' window in the page's ink (Craig 2026-10-16: "match colors, orange chart for pitching, green for fielding"):
   the #sectRail chart's .gi-fld / .gi-pit; Combo and Home keep HF purple */
.gi-race.race-bat { --race-ink:var(--gold); }
.gi-race.race-fld { --race-ink:var(--green); }
.gi-race.race-pit { --race-ink:var(--warn); }
.gi-race-v { position:absolute; top:50%; transform:translateY(-50%); margin-left:8px; font-size:14px; font-weight:600; color:var(--text); font-variant-numeric:tabular-nums; white-space:nowrap; }
.gi-race-grid { position:absolute; top:0; height:calc(var(--race-n) * var(--race-row)); left:var(--race-lab); right:var(--race-end); pointer-events:none; }
.gi-race-gl { position:absolute; top:0; bottom:0; width:1px; background:var(--line); }
.gi-race-gl.zero { background:var(--muted); }
.gi-race-now { position:absolute; right:var(--race-end); bottom:4px; display:flex; flex-direction:column; align-items:flex-end; text-align:right; pointer-events:none; }
.gi-race-g { font-size:44px; font-weight:700; line-height:1; color:var(--text); }
.gi-race-sub { margin-top:4px; font-size:13px; color:var(--muted); white-space:nowrap; }
.gi-race-axis { display:grid; grid-template-columns:var(--race-lab) minmax(0,1fr); align-items:center; height:16px; margin-top:6px; }
.gi-race-axis-k { font-size:11px; letter-spacing:.5px; text-transform:uppercase; color:var(--muted); }
.gi-race-ticks { position:relative; height:100%; margin-right:var(--race-end); }
.gi-race-ticks span { position:absolute; top:0; transform:translateX(-50%); font-size:11px; line-height:16px; color:var(--muted); font-variant-numeric:tabular-nums; }
@media (min-width:1281px){
  .gi-l12-rail .gi-race { --race-lab:0px; --race-end:0px; --race-row:34px; }
  .gi-l12-rail .gi-race-body { padding:10px 12px; }
  .gi-l12-rail .gi-race-plot { padding-top:44px; }
  .gi-l12-rail .gi-race-row { grid-template-columns:minmax(0,1fr); grid-template-rows:20px 10px; align-content:start; row-gap:2px; }
  .gi-l12-rail .gi-race-who { gap:6px; font-size:12px; padding-right:44px; }
  .gi-l12-rail .gi-race-rk { display:none; }
  .gi-l12-rail .gi-race .pname .pnm-full { display:none; }
  .gi-l12-rail .gi-race .pname .pnm-abbr { display:inline; }
  .gi-l12-rail .gi-race-track { position:static; height:10px; }
  .gi-l12-rail .gi-race-bar { top:auto; bottom:2px; height:8px; }
  /* the value rides line 1, right; gi-race.js sets its left each frame, the rail pins it right */
  .gi-l12-rail .gi-race-v { left:auto !important; right:0; top:0; height:20px; display:flex; align-items:center; transform:none; margin:0; font-size:12px; }
  .gi-l12-rail .gi-race-grid { display:none; }
  .gi-l12-rail .gi-race-now { top:0; left:0; right:0; bottom:auto; height:38px; align-items:flex-start; text-align:left; }
  .gi-l12-rail .gi-race-g { font-size:20px; }
  .gi-l12-rail .gi-race-sub { max-width:100%; margin-top:2px; font-size:12px; overflow:hidden; text-overflow:ellipsis; }
  .gi-l12-rail .gi-race-axis { display:none; }
}
@media (max-width:1280px){ #racePanel { order:3; } }
@media (max-width:700px){
  .gi-race { --race-lab:140px; --race-end:52px; }
  .gi-race-body { padding:10px 12px; }
  .gi-race-who { gap:6px; }
  .gi-race-rk { flex-basis:16px; }
  .gi-race .pname .pnm-full { display:none; }
  .gi-race .pname .pnm-abbr { display:inline; }
  /* the game caption leaves the plot on a phone (the last rows' values sit where it would) and takes its own line under the
     rows, the big G# and its date / opponent / score centered on one line */
  .gi-race-now { position:static; flex-direction:row; align-items:center; justify-content:flex-end; gap:8px; height:22px; margin-top:6px; }
  .gi-race-g { font-size:22px; }
  .gi-race-sub { margin-top:0; }
}

/* Verified MaxPreps completion: keep the explicit repeat action visible. */
.gi-egbar button.btn[data-gi-mp-complete="true"]{opacity:.5}
