
/* ---- DENSITY: what the small frames do differently ----------------------
   THIS FILE WAS 60-ledger.css AND IT IS THE SAME FILE, RENAMED. Round 3, the
   owner: "remove the session data, wagered, rolls tweats etc..." — every
   #ledger rule and every [data-led] selector left with the node. What stayed
   is what was always the larger half of the file and never had anything to do
   with the ledger: the [data-tiny] / [data-narrow] rungs for .sf, #stats,
   .dial, #modes, #chipn, #chiplane, #tabs, .amt, .qb, #balzone,
   #bal, #capline and #cta. A file called 60-ledger.css holding no ledger is a
   lie, so it is called what it is.

   THE LEADING NUMBER DOES NOT MOVE, and that is the point of renaming rather
   than relocating: css/ is concatenated in filename order (build-game.mjs),
   so the numbers ARE the cascade — 60-density sorts in exactly the slot
   60-ledger did, between 50-readouts.css and 70-dock.css, and every rule
   below keeps the byte-identical cascade position it had. */
/* THE BOARD'S TOP LINE IS DELETED, NOT RE-GATED. The rule that stood here —
   #frame:not([data-room="full"]) #boardtop{display:none}, itself the third
   gate the record line wore ([data-led="pill"], then [data-tiny], then
   data-room) — is gone WITH the line: the owner's live-test mark over the
   mode rail ("random writting tab appearing") retired the strip at every
   room, so a rule hiding it at some of them has nothing left to hide. The
   sentence this file already carried is now the whole design: the record
   itself is one press away behind the first door at every size. See
   src/index.html at #play for the full ruling. */
/* ---- WF-UI: THE CONSOLE'S DENSITY LADDER (UI-CHOICE §Density story) -----
   Height and width are SEPARATE questions and stay separate: data-room
   steps the bar's HEIGHT (--barh 60/52) and the dock's floorpad; data-tiny
   and data-narrow step the WIDTHS and faces (--stakefs 22/19/15, --qbw
   44/40/32, --ctafs 17/15/13) — --qbw is keyed on width flags ONLY, never
   on data-room. 720x405 (tiny, not narrow) keeps the full grammar at the
   19px scale with the commit in the bar; 380x300 (narrow) sheds the field
   caption (the 15px mark stays as the field's identity — never ellipsize
   to a lone letter), sheds PRESS SPACE, and drops the commit to its own
   full-width row (VERDICT collision 5, below). The rungs sit in THIS file
   (before 70-dock in the cascade) and win by specificity — the ids are the
   rung's gate, not its position. */
#frame[data-room="short"] .hzBar,
#frame[data-room="min"] .hzBar{--barh:52px}
#frame[data-tiny] .hzBar{--stakefs:19px;--qbw:40px;--ctafs:15px}
#frame[data-tiny] #bal{font-size:13.5px}
/* VERDICT COLLISION 5, BINDING — at the docked minimum the commit LEAVES
   the bar for its own full-width row: all three competition finals showed
   MAX abutting ROLL with no gutter, the money mis-tap the producer ruled
   against. A 340x30 commit is a larger target than the shipped 104x92
   block. The refinement round priced the second row honestly — field 36 +
   commit 30 + 4px row-gap, repaid by the narrow dock's own rhythm
   (70-dock's floorpad 5/gap 4, the 9.5px tabs, #betMsg:empty leaving its
   row) — because iter1's 44px field over a 40px commit put Between's
   second readout row into rail 1. */
#frame[data-narrow] .hzBar{--stakefs:15px;--qbw:32px;--ctafs:13px;--barh:36px;
  grid-template-columns:100%;height:auto;row-gap:4px}
#frame[data-narrow] .hzField{height:var(--barh,36px);
  border-right:1px solid var(--hair);border-radius:12px}
#frame[data-narrow] .hzBar #cta{grid-column:1;grid-row:2;height:30px;border-radius:12px}
#frame[data-narrow] .hzBar #cta .s{font-size:9.5px}
#frame[data-narrow] .hzCap{display:none} /* the caption sheds, never MAX */
#frame[data-narrow] .hzMk{width:15px;height:15px}
#frame[data-narrow] .qb{height:26px;padding:0 5px;font-size:10px}
#frame[data-narrow] #tabs button{font-size:9.5px;padding-bottom:4px}
#frame[data-narrow] #bal{font-size:12.5px}
#frame[data-narrow] .hzSpace{display:none}
/* graft C2: rail 2 sheds WHOLE at the docked minimum's height — the one
   frame class short enough (≤330px) is also bled, so the viewport IS the
   frame and a media query cannot disagree with layout() about it.
   #dock's id, NOT bare .hzRail2: this file precedes 70-dock.css, whose
   base .hzRail2{display:flex} would win a specificity tie by order alone —
   the exact cascade-shadowing class the old tiny rungs died of. */
@media (max-height:330px){ #dock .hzRail2{display:none}
  /* casino-manager MAJOR (scale round): the AT-CAP truth outranks the shed.
     Item 5 hid the max-bet line at rest and surfaces it only ON the
     ceiling — but this height gate deleted the whole rail regardless of
     state, so at 380x300 (the frame the MAX ruling was written FOR) a
     capped player got no explanation at all. The rail returns for exactly
     the at-cap state; the idle hint and the running readout stay shed,
     which is what graft C2 actually priced. */
  #dock .hzRail2:has(#capline[data-at]){display:flex} }
/* EVERY .sf / #stats / .dial RUNG IS DELETED (collar round, 2026-08-27) —
   the readout row and the odds dial left the board for the collar and the
   end-stop etch (50-readouts.css carries the ruling), so a density ladder
   for cards that no longer exist would be exactly the stale-selector
   defect class §13 of the spec tallies. What replaced them needs almost
   nothing from this file: the satellite's face and the etch's face are
   layout()-solved from the drop's own diameter (--orbfs/--mrfs), which
   already steps with the frame, and the one genuine density decision —
   the WIN CHANCE caption shedding at the docked minimum — lives with its
   own rule in 50-readouts.css. The docked-minimum From/To story ends the
   same way it was heading: the cards are gone at EVERY room now, the
   balls drag, the hv values print the edges, and mult/chance still
   reprice the band. */
#frame[data-tiny] #modes{padding:2px;border-radius:999px}  /* goo r6 task 4a: the pill stays a pill at the dense rung */
/* task 9: the rail's own [data-tiny] sizing (was 30px, a pre-cascade leftover
   from before the rail's three-rung ladder existed) moved to 10-chrome.css,
   which is the rail's one file — this sheet was a second, later-cascading
   opinion on the same buttons and it was winning by source order alone. */
/* THE TICK RETURNS AT THE SMALL FRAMES (fix round M2b). The rule that stood
   here — #frame[data-tiny] #chipn{display:none} — reasoned "the number IS
   the marker, its tick a second pointer at the same position", and that
   premise broke the day the chip's translate was clamped: at the rail ends
   the figure drifts off the pixel it names by up to 7.7 track units at
   380/720 (the clamp biting), which is precisely where the small frames
   live and precisely the job the tick was kept for (verdict graft 11).
   40-track.css now counter-translates #chipn onto the TRUE --mkpx, so the
   tick is not a second pointer at the same position — it is a pointer at
   the RIGHT position whenever the clamp bites. Division of labour, stated
   honestly (producer audit): on a WIN the landing is inside the paying
   region, where the hung tick sits BEHIND the rope (later positioned
   sibling) in the rope's own gold — there #wigland's highlight is what
   marks the landing; the tick's visible work at tiny is the LOSS (a
   landing over empty track) and the decayed echo. At tiny it hangs
   OUT OF FLOW below the chip (the rule under this comment): charging its
   9+2px to the lane instead was measured to cost the 720x405 track box its
   42px (35, under check §23's 40px floor) and to demote 900x430's Under
   room a rung — hung absolute, it overlaps the track box's own empty upper
   band, where the settled bead it points at already sits, and the lane
   budget (tickalw 4) stays exactly what the flow holds.

   task 5 (kept): the size override that also sat here is long removed.
   It shrank the OLD hollow-ring .grip to an 11x22 tap target at this frame.
   The goo grip is a transparent 60x60 box standing in for the blob under it
   ("the box must match the blob's or the player grabs at a place the blob is
   not" — 40-track.css), so re-shrinking it here would put the drag target
   out of register with what the player sees. */
#frame[data-tiny] #chipn{position:absolute;top:calc(100% + 1px);left:50%;margin-left:-1px;height:8px}
/* #frame[data-tiny] #chiplane{height:calc(var(--num) + 4px)} IS DELETED —
   the lane's extra is layout()'s --lanex now (40-track.css), which already
   carries the 4-instead-of-14 tick allowance at tiny AND the settled WIN
   sub-line the constant never budgeted; a second fixed height here would
   re-open the win-collides-with-modes defect the variable exists to close. */
/* #frame[data-tiny] #dock{gap:5px;padding:7px} IS DELETED, not retired —
   same cascade-shadowing class as above: tiny is only ever true alongside
   lay="stack" (both of tiny's own conditions, w<470 and !flank&&h<520,
   require !flank), so this selector's match set is always a subset of
   `#frame[data-lay="stack"] #dock`, which 70-dock.css declares later
   (padding:9px at :16, gap:7px;padding:9px at :82) at equal specificity —
   this rule's gap:5px/padding:7px never once painted. */
/* #frame[data-tiny] #dockhead{margin-bottom:6px} IS DELETED WITH ITS NODE —
   the chrome never reparents into the console any more (owner: "settings
   should be always on the top right"), so #dockhead left index.html and a
   margin on a node that does not exist is not a rule. */
/* THE OLD CONSOLE'S TINY RUNGS (#tabs pill sizes, .amt/.qb trims, the
   balance/capline/cta face steps, and the MAX-restoration note that lived
   here) ARE DELETED WITH THE CONSOLE THEY SIZED — the wf-ui rewrite's
   ladder at the top of this file is the one opinion now, keyed on the same
   flags. MAX's restoration itself is permanent (owner ruling, restated in
   70-dock.css at the .qb rule): the key exists at every width and the
   caption is what sheds. */
