
/* ============================================================
   COIN DICE — the 0–100 slider, built to
   ../../work/coinpoker-prototype/docs/producer/dice-build-spec.md.

   Classic script, no build step, runs by double-clicking this file
   over file://. No type="module" anywhere: over file:// a module is
   fetched with CORS from origin "null" and Chrome refuses it, so
   NOTHING would run — not the game, not the shared panels.

   THE CHROME IS COPIED, NOT DESIGNED. The lockup, the four-button
   corner rail and the data-chromedock compressions are Mines'
   (games/Mines/index.html:251-375 and :10150) with only the game's
   own word changed. Two corrections the owner already made once are
   carried over verbatim and are marked where they live: settings is
   LAST, and its icon is Plinko's sliders and not a gear.

   WHAT IS THIS GAME'S OWN: the track, the travelling result, the
   four bet modes, the odds dial, the session ledger and the cap
   line. Those are commented where the reasoning is not obvious.
   ============================================================ */
:root{
  /* brand — the same block Mines and Plinko declare, unchanged */
  --cp-red:#C0180C;   --cp-red-hi:#F24235;   --cp-red-lo:#8E1108;
  --cp-border:#35394A;
  --e3:#262A35;
  --ink:#E7E9F0; --off:#7E8498;

  /* TASK 4: THE ACCENT IS THE HOUSE RED, AND NOTHING ELSE IS RED. v1 marked
     the winning band, the travelling result, the odds dial's lit sector and
     the cap line in four gold custom properties this build owned outright —
     a cream, a mid-tone, a low tone and an edge tone — never v1's literal
     ember, which never reached this file. All four tokens and every one of
     their fourteen call sites are deleted; the sites that were marking THE
     ACCENT now read --acc / --acc2 below, a VAR ON A VAR on purpose: the
     goo CSS names --acc, so a tenant swap stays a token edit and never
     reaches a component. */
  --acc:var(--cp-red);
  --acc2:var(--cp-red-lo);

  /* the stage's radial ground: warm at the foot, near-black at the head */
  --bg0:#2A0E0C;
  --bg1:#090A0F;

  /* MONEY UP IS ITS OWN COLOUR, NOT THE ACCENT'S. The profit-on-win figure
     and the ledger's "up" values were also gold in v1, for the same reason
     the band was: gold was the only colour in the file. Left on --acc they
     would say "money" and "brand" in the same hue, so they read --win
     instead. */
  /* TASK 9: THE WIN IS MINES' GOLD, BY THE OWNER'S OWN WORDS ("the winning
     colors should be yellowish like mines", sent with v1's gold win state).
     #F3C33F is Mines' --gold, lifted verbatim from games/Mines/src/css/
     00-tokens.css:37 rather than re-derived, so the two games cannot drift
     apart a shade at a time. The TOKEN is repointed rather than a second
     gold introduced beside it: --win is the one semantic name every win
     surface already reads (the figure, the blob, the bead, the history
     pips, the balance delta, the Last-rounds up-states), so one edit moves
     all of them together and no call site holds a hex. The green that stood
     here (#5EE39B) leaves the file entirely. Contrast, verified in the
     render rather than assumed: gold on this near-black board is Mines' own
     shipped pairing, and the two rgba glow mirrors in 40-track.css moved to
     243,195,63 in the same change. (--loss has since become a text-only
     ink and the line's loss is the ember --acc-out — see both below.) */
  --win:#F3C33F;

  /* THE LOSS INK — EMBER LAW (colors gauntlet, owner-ratified 2026-08-26).
     Task 7's #5A6A8F blue-grey did two jobs and failed one, measured: as
     TEXT on the panel ground it was 3.63:1 (below AA) while --win on
     identical rows read 11.82:1 — losing rows were harder to read than
     winning ones. Repointed to #8E93A3: the same cool family (hue 220→226),
     half the saturation, +14 L — 6.38:1 on the panel, and the hex
     80-auto.css's run readout already used, now unified through the token.
     --loss is a TEXT colour ONLY now — the figure, #chipn, #dl, the
     ledger/Last-rounds down-states. The BOARD's loss is not this hue or
     any hue: it is the house red going out (--acc-out below); the foreign
     blue-grey leaves the line entirely. */
  --loss:#8E93A3;

  /* THE ACCENT, OUT — the ember the whole filtered line banks to on a
     loss (40-track.css's [data-res="lose"] readers, all inside the goo
     group). SOLVED, NOT PICKED: >=1.5:1 above the board ground so the
     blob stays an object (#48201B fails at 1.35), and <=0.5x the
     dead-zone tick's luminance so the inversion holds — on a loss the
     paying region falls BELOW the dead zone and the pale ruler ticks the
     roll landed among become the brightest marks on the line (#6B332B
     fails at 0.55+). The player never has to learn a hue: the verdict is
     how much light the line carries (rest 2.0x the dead zone, win 9.9x,
     loss 0.67x). */
  --acc-out:#5A2A24;

  /* --icoin IS BACK — task (r2) 2. Deleted in the final whole-branch review
     for having zero readers (see the block comment two groups up); the
     CoinPoker mark riding the blob is the reader now. A warm off-white
     rather than plain #fff: the blob under it is --acc/--win/--acc-out in
     turn, and a pure white mark went flat and paper-cut against all three,
     while this cream keeps the same warmth as --bg0/--ink without tipping
     into any one of the three verdict colours. Constant across win/lose —
     see the r2 report for why the mark doesn't recolour with the blob. */
  --icoin:#FBEAE0;

  /* THE MODE PILL IS RED WITH WHITE INK — the owner corrected the previous
     round's reading of their mark: "I meant the text to be white the button
     should be red." So r2 task 4's accent fill was right all along; what was
     wrong was the ACTIVE LABEL's ink (#2B0805, "the red's own shadow", near-
     invisible on the fill). The pair still lives HERE so the pill has one
     writer and 80-auto.css holds no stray hexes. */
  --pill:var(--cp-red);
  --pill-ink:#FFFFFF;

  --panel:#111319; --frame-line:#22252F;
  --hair:#20232C;

  /* WF-UI (UI-CHOICE grafts B2/§1): THE WELL'S TWO BLACKS AND THE CARD'S
     PADDING. --well-hi/--well-lo are graft B2's inset stake well — the
     field blacks the winning render used, named once so the gradient's two
     stops cannot drift apart. --floorpad WAS the console's standoff from
     the horizon line; the horizon is retired (owner: "We can have centered
     with the UI organized in a container") and the same token is the
     console CARD's own padding now — 70-dock.css still steps it per
     density, so the rungs that were solved against it keep their sums.
     --skygap is the play group's standoff above the card — layout()
     writes it (28/18/2, scaled by --sc at big frames) and counts it in
     the budget. */
  --well-hi:#06070B;
  --well-lo:#0C0E14;
  --floorpad:20px;
  --skygap:28px;

  /* layout(), and only layout(), writes these */
  /* --floorh IS DELETED WITH THE HORIZON — the ground it measured (frame
     bottom to console top) no longer exists: the unit centres in the frame
     and the console carries its own card. #hzGround and the .stars
     stop-line were its only readers and both left with it. */
  /* --sc IS THE INSTRUMENT'S OWN SCALE — playw/760, floored at 1, written
     by layout() when the big-frame cap reopens (2544-class monitors; see
     layoutPass). Every game-object size that was solved at the 760
     measure multiplies by it (track height, dots, mark, bubble, ticks) so
     the unit grows as one drawing. --scc is the CONSOLE and readouts'
     damped copy (1 + (sc-1)*.62): control type scaled 1:1 read as a
     poster at 2544, measured on the render. Both are exactly 1 at every
     frame below the 1382px reopen line, so the approved frames cannot
     move a pixel. */
  --sc:1;
  --scc:1;
  --pad:22px;
  /* --dockw IS DELETED AGAIN, this time with its layout: the owner chose the
     centred column (candidate A), the side dock is retired, and a width token
     for a column that no longer exists has no reader. --dockh stayed dead
     through both lives of the column; neither returns. */
  /* --num, not --fig: type.css already owns --fig as the figure FONT
     FAMILY and a second meaning for the same name would resolve the family
     to "52px" in every rule that reads it — a whole frame of Times New Roman
     with no error anywhere. */
  --num:52px;      /* the travelling result's type size */
  /* --railh IS DELETED, not retired. It stood in for #tk's height in the
     spent budget layout() computes, at a value (10/13/20px) that stopped
     matching #tk (110px, 40-track.css) the day the goo track shipped —
     game.js reads #tk's own offsetHeight now instead. */
  /* --wellpad IS DELETED, not retired. It padded the well, which is what made
     the rail 122px narrower than everything around it and put the result on top
     of the bet panel; the room the chip needs is now solved as --chipmin /
     --chipmax against the board's own margin. A token with no reader is deleted
     the same day its reader is. */
  /* --icoin, --winink, --stage, --dim, --e0, --e1, --e2 ARE DELETED, same
     rule as --wellpad above — final whole-branch review, checked with grep
     across every file in this folder (css/*.css and js/*.js) before
     deleting any of them: zero readers, none. --e3 stays (70-dock.css:193
     reads it); --panel stays too, despite reading zero here — the Games/
     Dice/Tokens Storybook story (packages/ui/src/games/dice/
     DiceTokens.stories.tsx) imports this file directly and uses --panel as
     every swatch card's own background, a real external reader this
     folder's own grep cannot see. */
}

*{box-sizing:border-box}
html,body{margin:0;height:100%;background:#000;overflow:hidden}
/* the tap-highlight reset (casino-manager, fix round 2026-08-27): Chromium
   paints its own unstyled pale rectangle over any tappable box whose
   pointerdown does not preventDefault, and the S1-acknowledge branch
   shipped one gesture that didn't — a full-width foreign flash over the
   goo track (culprit-A-deadtap.png). The branch now takes preventDefault
   (the brace); this is the belt, and it is what every reference operator
   ships as a base style: NO browser-drawn highlight anywhere on a board
   whose every acknowledgement is designed. Inherited, so one write covers
   every current and future coarse-pointer target. */
body{font-family:var(--ui);color:var(--ink);-webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent}
button,input{font-family:inherit;color:inherit}
button{background:none;border:0;padding:0;cursor:pointer}
:focus-visible{outline:2px solid var(--cp-red-hi);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap;border:0}
