/* ADD-008 (R3-BOARD-B): visual system rules for the player app.
   Readable type, strong selection states, responsive controls, motion only to confirm an action, prices and terms
   visible, no false urgency. Written as overrides (html body …) so the load position and the other stylesheets
   (groups, group tickets, board, shell) stay untouched. */

/* 1. Readable type: no text under 12px on player pages; prices use tabular figures. */
html body :is(.hse-when,.hse-what,.hse-add,.hse-fine,.hse-fine b,.hse-odds s,.fm-why,.gw-meta,.gw-top small,.cw-card small,.footnote,.bell-count,.hs-head,.hs-live,
  .spotlight-kicker span,.live-badge,.score-team-identity,.sp-team small,.sp-when small,.spot-entry small,.spotlight-bottom .text-link,.pe-strip-text small,
  .acct-eyebrow,.grp-eyebrow,.model-bets-meta span,.model-tools summary,.bc-status,.bc-kind,.bc-cointag,.bc2-main small,.bc2-now,.bc-more,.bc-win small,.bc-profit,.bc-id,.econ-unit,
  .ticket-head .tag,.ticket-head span,.led-id,.led-id a,.led-coin,.header-slip-pill b,.gl-role,.gl-access,.gf-head p,.tc-chip,.tc-price small,.tc-track-label,.tc-track-label span,
  .tl-main small,.tc-receipt span,.tc-receipt a,.pf-avatar-change span,.pt-main small,.pt-st,.pt-aud,.gp-live-chip,.section-title a,.eyebrow,
  .hm-views button small,.fm-cols small,.sw-card li a small,.spotlight-lines section h2,.broadcast-channels button small,.sl-nav-1 a small,.bc-money small,.table-wrap th,.led th,.pf-tabs button small){font-size:12px!important;line-height:1.3}
html body .acct-bets .econ-big b .econ-unit,html body .bets-econ .econ-big>b .econ-unit{font-size:12px!important}
html body :is(main,.slip-rail) :is(.sl-mb-price,.odds .price,.price,.gp-rung-line){font-variant-numeric:tabular-nums}
html body :is(main,.slip-rail) :is(button.sl-mb,button.odds) .sl-mb-price,html body main button.odds .price{font-size:max(15px,1em);font-weight:800;white-space:nowrap}

/* 2. Strong selection states: brand fill, a 2px inner ring and a check mark (aria-pressed carries it for assistive tech). */
html body :is(.sl-mb.is-selected,.odds.selected,.gp-rung.is-selected){background-color:#c8001a!important;background-image:none!important;border-color:#c8001a!important;box-shadow:inset 0 0 0 2px #fff!important;color:#fff!important;position:relative}
html body :is(.sl-mb.is-selected,.odds.selected,.gp-rung.is-selected) *{color:#fff!important}
html body :is(.sl-mb.is-selected,.odds.selected,.gp-rung.is-selected)::after{content:"✓";position:absolute;top:3px;right:5px;font:800 12px/1 var(--sl-font,Manrope,sans-serif);color:#fff}
/* Focus: a 2px ring with 2px offset that reads on light and dark surfaces. */
html body :is(a[href],button,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid #2563eb!important;outline-offset:2px!important}
html body :is(.sl-mb,.odds):focus-visible{outline-offset:1px!important}

/* 3. Responsive controls: 24px minimum targets; 44px for bet buttons, steppers, tabs and line toggles. */
html body :is(.hm-head a,.section-title a,.sl-more,.text-link,.footer-links a,.acct-foot a,.grp-dense,.pf-invite,.gl-card a,.gf-head a,.tc-receipt a,.tc-foot a,.bc-foot a,.grp-back,.grp-join-link){display:inline-flex;align-items:center;min-height:24px}
html body main .sl-team{display:flex;align-items:center;min-height:24px}
html body :is(.pe-add,.hse-add,[data-action="pick"].pr-pick){min-height:44px!important}
/* the EVEN+ hero slide keeps its 12px text and 44px Add buttons inside the card: the rail is a little taller */
html body .promo-rail:has(.hs-even){--pr-h:clamp(264px,19.5vw,312px)}
html body .promo-rail:has(.hs-even) .pr-card{height:var(--pr-h)!important}
html body .hs-even .hse-sub{margin:0;flex:none}
html body .hs-even .hse-copy{gap:2.4cqh;padding-bottom:max(12cqh,40px)} /* clear of the slide dots */
@media(max-width:500px){html body .promo-rail:has(.hs-even){--pr-h:300px}html body .hs-even .hse-brand{height:19cqh}html body .hs-even .hse-odds b{font-size:min(22px,9.4cqh)}html body .hs-even .hse-team{font-size:min(15px,5.6cqh)}html body .hs-even .hse-row{gap:6px}html body .hs-even .hse-fine{display:-webkit-box!important}}
html body :is(.acct-link,.gl-joinlink,.gw-dense,.fm-card footer a,.demo-strip a){display:inline-flex;align-items:center;min-height:24px}
/* hero slide dots: a 24px hit area around the same small dot */
html body .hs-dots{gap:0;padding:0 4px}
html body .hs-dots button{position:relative;width:24px!important;height:24px!important;background:none!important;border:0}
html body .hs-dots button::before{content:"";position:absolute;left:50%;top:50%;width:8px;height:8px;border-radius:999px;background:rgba(255,255,255,.55);transform:translate(-50%,-50%)}
html body .hs-dots button[aria-current="true"]::before{width:18px;background:#fff}
html body [data-action="grp-view"]{min-height:44px}
@media(max-width:500px){html body .coin-drop{left:auto;right:0;max-width:calc(100vw - 24px)}html body .demo-strip{flex-wrap:wrap}html body .demo-strip>span{min-width:0;white-space:normal}}

/* 4. Motion only to confirm an action: live is a static dot plus the word LIVE; nothing pulses forever. */
html body :is(.sl-live i,.gp-live-chip i,.gp-live-note i,.grp-live-dot::before,.gt-chip-live i,.tc-chip-live i,.tc-watching i,.td-dot,.gl-live i,.gl-livetag i,
  .fm-dot,.gw-status i,.cw-card span i,.sw-card span i,.bc2-now i,.bc-status i,.bc-live-dot,.bc-seg.bc-k-live,.sl-live-chip i,[class*="pulse"]){animation:none!important}
html body .grp-live-dot::before{animation:none!important}
html body .promo-rail .pr-track{animation:none!important;overflow-x:auto;scroll-snap-type:x mandatory}
@media(prefers-reduced-motion:reduce){html body *,html body *::before,html body *::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}

/* 5. Prices and terms visible: prices never ellipsize; the value offer carries its Terms link. */
html body :is(.sl-mb-price,.odds .price,.hse-odds,.pr-pick b){white-space:nowrap;text-overflow:clip}
html body .gp-promo-terms{display:inline-flex;align-items:center;min-height:24px;padding:0 4px;color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}

/* 6. No false urgency: the kickoff countdown is ordinary text (minute resolution, no red). */
html body :is(.gp-starts b,.gp-countdown){color:inherit!important}
