/* v12: every visual of the display runs on design tokens set by theme.js (html[data-th] + --th-* custom properties) */
html[data-th] body.billboard,html[data-th] body.billboard #bg{background:var(--th-pg)}
html[data-th] body.billboard #bg{background-attachment:fixed}
#thfx{will-change:contents;position:fixed;inset:0;width:100vw;height:100vh;z-index:0;pointer-events:none}
html[data-th] .bbw{position:relative;z-index:1}
html[data-th] .bbx,html[data-th] .bb-tk,html[data-th] .bb-bar{border-radius:var(--th-r);border:var(--th-bw) solid var(--th-bd);box-shadow:var(--th-sh)}
html[data-th] .dots{opacity:var(--th-dots)}
html[data-th] .bbl,html[data-th] .bb-now small,html[data-th] .bb-next small{font-family:var(--th-b)}
html[data-th] .bb-bl{background:var(--bl-bg);color:var(--bl-fg)}
html[data-th] .bb-clock,html[data-th] .bb-now b,html[data-th] .bb-next b,html[data-th] .bb-pot,html[data-th] .bb-h,html[data-th] .bb-bar,html[data-th] .bb-chips .chip,html[data-th] .wv b,
html[data-th] .en,html[data-th] .wtitle,html[data-th] .i-t,html[data-th] .i-n span,html[data-th] .b-t,html[data-th] .f-pl,html[data-th] .f-n,html[data-th] .s-t,html[data-th] .a-big,html[data-th] .a-grid b,html[data-th] .a-clock b{font-family:var(--th-d);font-weight:var(--th-dw);letter-spacing:var(--th-ls)}
html[data-th] .bb-clock{text-shadow:var(--th-numsh)}
html[data-th] .bb-prog{background:color-mix(in srgb,currentColor 18%,transparent)}html[data-th] .bb-prog i{background:var(--th-a)}
html[data-th] .bb-phase{background:var(--ph-bg);color:var(--ph-fg);font-family:var(--th-b)}
html[data-th] .bb-phase.rebuy{background:#30ff60;color:#003a10}html[data-th] .bb-phase.last{background:#ff9f1a;color:#3a1d00}html[data-th] .bb-phase.addon{background:#ffde00;color:#3a3000}html[data-th] .bb-phase.freeze{background:#e4003a;color:#fff}
html[data-th] .bb-paused{background:var(--th-a2);color:#fff;font-family:var(--th-b)}
html[data-th] body.bb-break .bb-bl{background:var(--th-brk);color:#fff}html[data-th] body.bb-break .bb-clock{text-shadow:0 .3vw 0 rgba(0,0,0,.3)}
html[data-th] .bb-jp{background:var(--jp-bg);color:var(--jp-fg)}
html[data-th] .bb-jump{font-family:var(--th-b)}html[data-th] .bb-jump b{background:var(--jp-fg);color:var(--th-p);color:color-mix(in srgb,var(--jp-fg) 0%,var(--th-a))}
html[data-th] .bb-br{background:var(--br-bg);color:var(--br-fg)}html[data-th] .bb-s,html[data-th] .bb-n{font-family:var(--th-b)}
html[data-th] .bb-in{background:var(--in-bg);color:var(--in-fg);border:var(--in-bw) solid var(--in-bd)}
html[data-th] .bb-list .row{font-family:var(--th-m);text-shadow:var(--in-glow);border-bottom:1px dashed color-mix(in srgb,currentColor 28%,transparent)}
html[data-th] .bb-list i{color:inherit;opacity:.7}
html[data-th] .bb-out{background:var(--out-bg);color:var(--out-fg)}
html[data-th] .orow{font-family:var(--th-b)}html[data-th] .orow b{color:var(--out-ac)}html[data-th] .orow s{text-decoration-color:var(--out-ac)}html[data-th] .orow em,html[data-th] .orow.more{color:inherit;opacity:.6}
html[data-th] .bb-qr span{font-family:var(--th-b)}html[data-th] .bb-qr img{border-radius:calc(var(--th-r)/2);background:#fff;padding:3px}
html[data-th] .bb-tk{background:var(--tk-bg);border-color:var(--tk-ac)}
html[data-th] .tkin{font-family:var(--th-m);color:var(--tk-fg);text-shadow:var(--tk-glow)}
html[data-th]:not([data-th=crazy]) .tkin .r,html[data-th]:not([data-th=crazy]) .tkin .g,html[data-th]:not([data-th=crazy]) .tkin .b,html[data-th]:not([data-th=crazy]) .tkin .y{text-shadow:var(--tk-glow)}
html[data-light="1"] .tkin .r{color:#c4161c}html[data-light="1"] .tkin .g{color:#137a2e}html[data-light="1"] .tkin .b{color:#1450b4}html[data-light="1"] .tkin .y{color:#8a5a00}
html[data-th] .bb-bar{background:var(--bar-bg);color:var(--bar-fg)}
html[data-th] #bbCu:not(:empty){background:var(--th-a);color:var(--th-ai);font-family:var(--th-b)}
/* podium inside the players panel */
html[data-th] body.bb-podium .bb-in{border-color:var(--th-a2);background:var(--in-bg);color:var(--in-fg)}
html[data-th] .bb-podwrap{color:var(--in-fg)}html[data-th] .bb-podwrap .champ{color:var(--th-gold);font-family:var(--th-d)}html[data-th] .bb-podwrap .champ span,html[data-th] .bb-podwrap .results,html[data-th] .bb-podwrap .awards{color:var(--in-fg)}
html[data-th] .bb-podwrap .results i{color:var(--th-gold)}html[data-th] .bb-podwrap .results em{color:var(--th-a2)}
/* overlays: intro, bubble, wheel, finale, seat draw, attract */
html[data-th]:not([data-th=crazy]) #xov,html[data-th]:not([data-th=crazy]) .evt,html[data-th]:not([data-th=crazy]) #attract,html[data-th]:not([data-th=crazy]) #seatov{background:var(--th-ov);color:var(--th-ovfg)}
html[data-th]:not([data-th=crazy]) .f-bg{background:var(--th-ov)}
html[data-th] .i-t,html[data-th] .en,html[data-th] .wtitle,html[data-th] .s-t,html[data-th] .a-k,html[data-th] .f-k{color:var(--th-a);text-shadow:0 0 40px color-mix(in srgb,var(--th-a2) 70%,transparent)}
html[data-th] .ed,html[data-th] .i-k,html[data-th] .i-p,html[data-th] .a-s,html[data-th] .a-clock{color:var(--th-ovfg);font-family:var(--th-b)}html[data-th] .i-s{color:var(--th-a2);font-family:var(--th-b)}
html[data-th] .ptr{text-shadow:0 0 20px var(--th-a2)}html[data-th] .s-seat b{background:var(--th-a);color:var(--th-ai);font-family:var(--th-d)}html[data-th] .a-dots i.on{background:var(--th-a)}
html[data-light="1"] .a-big,html[data-light="1"] .a-grid,html[data-light="1"] .i-n,html[data-light="1"] .s-seat span{color:var(--th-fg)}
/* phone personal panel */
html[data-th] .me,html[data-th] #me2.me{background:var(--th-p);color:var(--th-fg);border:var(--th-bw) solid var(--th-bd);border-radius:var(--th-r);font-family:var(--th-b)}
html[data-th] #me2 select,html[data-th] #mesel{background:color-mix(in srgb,var(--th-fg) 8%,transparent);color:var(--th-fg);border-color:var(--th-bd)}
html[data-th] .avpick button.on{background:var(--th-a);border-color:var(--th-a)}
/* motion intensity */
html[data-motion="0"] .bbw *,html[data-motion="0"] .bbw *::before,html[data-motion="0"] .bbw *::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.15s!important}
html[data-motion="0"] .tkin{animation:tk 120s linear infinite!important}
html[data-motion="2"] .bb-pot{animation:thpump 2.4s ease-in-out infinite}@keyframes thpump{50%{transform:scale(1.035)}}

/* ---------- v12 widgets ---------- */
.bbw .wx{display:none}
html[data-th] .bbx.wx{background:var(--wx-bg,var(--th-p));color:var(--wx-fg,var(--th-fg))}
.wv{position:relative;flex:1;display:flex;flex-direction:column;justify-content:center;min-height:0}
.wv b{display:block;font-size:clamp(28px,4.2vw,110px);line-height:1}.wv small{display:block;font:600 clamp(11px,1.1vw,24px) var(--th-b);opacity:.75;margin-top:.6vh}
.wv .row2{display:flex;gap:2vw;justify-content:space-between}.wv .row2>div{flex:1}
.w-pay{display:grid;grid-template-columns:auto 1fr;gap:.2vh 1vw;font:400 clamp(16px,1.9vw,44px)/1.25 var(--th-d);align-content:center}.w-pay i{font-style:normal;opacity:.7}.w-pay span{text-align:right}
.w-title{font:400 clamp(28px,4vw,110px)/1 var(--th-d);letter-spacing:var(--th-ls);text-align:center}.w-title small{display:block;font:600 clamp(11px,1vw,22px) var(--th-b);letter-spacing:.3em;opacity:.7;margin-top:.6vh}
.w-custom{font:400 clamp(18px,2.4vw,64px)/1.15 var(--th-d);text-align:center;white-space:pre-wrap}
.wx[data-w=qr] .wv{align-items:center}.wx[data-w=qr] img{max-height:80%;max-width:90%;aspect-ratio:1;object-fit:contain;background:#fff;padding:4px;border-radius:6px}
.wx[data-w=chips] .wv{flex-direction:row;align-items:center;justify-content:space-around}.wx[data-w=chips] .bb-chips{gap:1vw;justify-content:center;width:100%}
html[data-th=crazy] .wx[data-w=clock]{--wx-bg:#9146ff}html[data-th=crazy] .wx[data-w=nextbr]{--wx-bg:#00a35c}html[data-th=crazy] .wx[data-w=avg]{--wx-bg:#ff7a00;--wx-fg:#000}html[data-th=crazy] .wx[data-w=title]{--wx-bg:#ff0080}html[data-th=crazy] .wx[data-w=stats]{--wx-bg:#00e5ff;--wx-fg:#000}html[data-th=crazy] .wx[data-w=pay]{--wx-bg:#fff;--wx-fg:#000}html[data-th=crazy] .wx[data-w=custom]{--wx-bg:#ffde00;--wx-fg:#000}
/* custom grid layout from the layout editor */
@media (min-width:801px){body.billboard.lay .bbw{grid-template-areas:none!important;grid-template-columns:repeat(var(--lc),minmax(0,1fr))!important;grid-template-rows:repeat(var(--lr),minmax(0,1fr))!important}
 body.billboard.lay .bbw>[data-w]{grid-area:var(--ga)!important}}
body.billboard.lay .bbw>[data-w].off{display:none!important}
body.billboard.lay .bbw>[data-w].wx:not(.off){display:flex}
[data-w]>*:not(.dots){zoom:var(--ws,1)}
@media (max-width:800px){body.billboard.lay .bbw{grid-template-areas:none!important;grid-template-columns:1fr!important}body.billboard.lay .bbw>[data-w]{grid-area:auto!important;order:var(--wo)}
 body.billboard.lay .bbw>[data-w=qr],body.billboard.lay .bbw>[data-w=clock]{display:none!important}.wv b{font-size:12vw}.w-pay{font-size:7vw}.w-title{font-size:11vw}.w-custom{font-size:7vw}}

/* ---------- per-theme flourishes ---------- */
html[data-th=classic] .bbl{color:#e8c770;letter-spacing:.35em}html[data-th=classic] .bb-out .bbl{color:#6b1414}
html[data-th=classic] .bb-bl::after{content:'♠ ♥ ♦ ♣';position:absolute;bottom:1.4vh;left:0;right:0;text-align:center;font-size:clamp(14px,1.4vw,30px);letter-spacing:.6em;opacity:.35}
html[data-th=simple-dark] .bbl,html[data-th=simple-light] .bbl{letter-spacing:.12em;font-weight:700;opacity:.55}
html[data-th=simple-light] .bb-in,html[data-th=simple-dark] .bb-in{border-width:1px}
html[data-th=wsop] .bbx .bbl{align-self:flex-start;background:linear-gradient(90deg,#c8102e,#7a0019);color:#fff;padding:.5vh 1vw;margin-left:-1.6vw;border-radius:0 2px 2px 0;letter-spacing:.18em;opacity:1;box-shadow:4px 0 0 #d4af37}
html[data-th=wsop] .bb-bl .bbl,html[data-th=wsop] .bb-jp .bbl{align-self:center;margin-left:0}html[data-th=wsop] .bb-jp .bbl{background:#000;color:#d4af37;box-shadow:none}
html[data-th=wsop] .bb-tk::before,html[data-th=ept] .bb-tk::before,html[data-th=scoreboard] .bb-tk::before{content:'● LIVE';flex:none;height:100%;display:flex;align-items:center;padding:0 1.2vw;font:700 clamp(14px,1.6vw,34px) var(--th-b);letter-spacing:.12em;background:#000;color:#ff2a2a;z-index:2;animation:pulse 1.6s infinite}
html[data-th=wsop] .bb-clock{background:linear-gradient(180deg,#fff,#f1e2a8 60%,#d4af37);-webkit-background-clip:text;background-clip:text;color:transparent}
html[data-th=ept] .bbx .bbl{color:#00d1ff;letter-spacing:.25em}html[data-th=ept] .bb-jp .bbl,html[data-th=ept] .bb-out .bbl{color:inherit}
html[data-th=ept] .bbx::after{content:'';position:absolute;left:0;top:0;width:5px;height:100%;background:linear-gradient(#00d1ff,#ff3c6e)}
html[data-th=ept] .bb-tk::before{background:#ff3c6e;color:#fff}
html[data-th=montecarlo] .bbl{letter-spacing:.45em;color:#a8842c}html[data-th=montecarlo] .bb-bl .bbl{color:#d9c38a}
html[data-th=montecarlo] .bb-jp::before{content:'❦';position:absolute;top:1.5vh;left:50%;transform:translateX(-50%);font-size:clamp(18px,2vw,40px);color:#a8842c;opacity:.6}
html[data-th=vegas] .bbx{animation:thflick 7s infinite}html[data-th=vegas] .bb-in{border-color:#39ff6a;box-shadow:0 0 18px #39ff6a,inset 0 0 18px rgba(57,255,106,.25)}
html[data-th=vegas] .bb-jp{border-color:#ffe600;box-shadow:0 0 18px #ffe600,inset 0 0 18px rgba(255,230,0,.25)}html[data-th=vegas] .bb-pot{text-shadow:0 0 8px #fff,0 0 22px #ffe600,0 0 44px #ff9900}
html[data-th=vegas] .bb-bl{border-color:#00f0ff;box-shadow:0 0 18px #00f0ff,inset 0 0 18px rgba(0,240,255,.25)}html[data-th=vegas] .bbl{text-shadow:0 0 8px currentColor}
html[data-th=vegas] .bb-bar{font-family:Monoton,var(--th-d);letter-spacing:.08em;text-shadow:0 0 10px #ffe600}
@keyframes thflick{0%,96%,100%{opacity:1}97%{opacity:.7}98%{opacity:1}99%{opacity:.8}}
html[data-th=macau] .bbl{color:#ffcc33}html[data-th=macau] .bb-jp .bbl,html[data-th=macau] .bb-out .bbl{color:#8f0a10}
html[data-th=macau] .bb-bl::before{content:'福';position:absolute;right:-1vw;bottom:-4vh;font:900 22vh serif;color:#ffcc33;opacity:.09}
html[data-th=saloon] .bb-out .bbl::before{content:'★ WANTED ★ ';display:block;font:400 clamp(20px,2.6vw,56px) Rye;letter-spacing:.08em;color:#3a210c;margin-bottom:.5vh}
html[data-th=saloon] .bb-out .orow s{text-decoration-thickness:4px}html[data-th=saloon] .bbl{color:#e8b04a}html[data-th=saloon] .bb-out .bbl,html[data-th=saloon] .bb-jp .bbl{color:#3a210c}
html[data-th=saloon] .bbx::after{content:'';position:absolute;inset:6px;border:2px dashed rgba(0,0,0,.25);border-radius:4px;pointer-events:none}
html[data-th=noir] .bbl{letter-spacing:.3em}html[data-th=noir] .bb-out{transform:rotate(-.6deg)}html[data-th=noir] .bb-out .orow b{background:#c1121f;color:#fff;padding:0 .3em}
html[data-th=noir] .bb-br::after{content:'CASE FILE';position:absolute;right:1vw;bottom:1vh;font:400 clamp(14px,1.6vw,32px) 'Special Elite';color:#c1121f;border:3px solid #c1121f;padding:.2vh .6vw;transform:rotate(-8deg);opacity:.75}
html[data-th=synthwave] .bb-clock{background:linear-gradient(180deg,#fff 10%,#4dfff3 45%,#ff2e88 52%,#ffd319 90%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 12px #ff2e88)}
html[data-th=synthwave] .bbl{color:#4dfff3;text-shadow:0 0 6px #4dfff3}html[data-th=synthwave] .bb-jp .bbl{color:#2a0050;text-shadow:none}
html[data-th=cyberpunk] .bbx,html[data-th=cyberpunk] .bb-bar{clip-path:polygon(0 0,calc(100% - 24px) 0,100% 24px,100% 100%,24px 100%,0 calc(100% - 24px))}
html[data-th=cyberpunk] .bbl::before{content:'// ';color:var(--th-a2)}html[data-th=cyberpunk] .bb-bl .bbl::before{color:#ff003c}
html[data-th=cyberpunk] .bb-pot{animation:thglitch 4s infinite steps(1)}@keyframes thglitch{0%,90%,100%{transform:none;text-shadow:3px 0 #ff003c,-3px 0 #00ffea}92%{transform:translate(4px,-2px) skewX(8deg);text-shadow:-6px 0 #ff003c,6px 0 #00ffea}94%{transform:translate(-4px,2px)}}
html[data-th=vaporwave] .bbl::before{content:'▣ ';}html[data-th=vaporwave] .bbx::before{content:'';position:absolute;left:0;right:0;top:0;height:1.6vh;background:linear-gradient(90deg,#000080,#1084d0);opacity:.9}html[data-th=vaporwave] .bbx{padding-top:3.4vh}
html[data-th=arcade] .bbl{color:#ff5ac8;font-size:clamp(9px,.8vw,18px);letter-spacing:.08em}html[data-th=arcade] .bb-pot{font-size:clamp(40px,5.2vw,120px)}html[data-th=arcade] .bb-clock{font-size:clamp(46px,6vw,140px)}html[data-th=arcade] .bb-now b{font-size:clamp(22px,2.6vw,60px)}html[data-th=arcade] .bb-next b{font-size:clamp(14px,1.5vw,34px)}
html[data-th=arcade] .bb-h{font-size:clamp(16px,1.9vw,42px);line-height:1.3}html[data-th=arcade] .bb-bar{font-size:clamp(10px,1.1vw,26px)}html[data-th=arcade] .orow{font-size:clamp(9px,.85vw,18px);line-height:2}html[data-th=arcade] .bb-s{font-size:clamp(9px,.9vw,20px);line-height:1.6}
html[data-th=arcade] .wv b{font-size:clamp(18px,2.2vw,54px)}html[data-th=arcade] .bb-phase{font-size:clamp(9px,.85vw,18px)}
html[data-th=arcade] .bb-tk::after{content:'INSERT COIN';position:absolute;right:0;background:#000;padding:0 1vw;color:#ff3030;font:400 clamp(10px,.9vw,20px) 'Press Start 2P';animation:pulse 1s steps(2) infinite}
html[data-th=squid] .bbl::before{content:'○ △ □  ';letter-spacing:.1em}html[data-th=squid] .bb-clock{text-shadow:none}
html[data-th=squid] .bb-in .bbl::after{content:' · ALIVE';}html[data-th=squid] .orow b::before{content:'#4'}html[data-th=squid] .orow b{font-variant-numeric:tabular-nums}
html[data-th=royale] .bb-bl::before{content:'';position:absolute;inset:-30%;background:repeating-radial-gradient(circle at 50% 50%,transparent 0 3.2vw,rgba(201,166,70,.06) 3.2vw 3.4vw);pointer-events:none}
html[data-th=royale] .bbl{letter-spacing:.5em;color:#c9a646}html[data-th=royale] .bb-jp .bbl{color:#0b0b0b}
html[data-th=aurora] .bbx,html[data-th=aurora] .bb-tk,html[data-th=aurora] .bb-bar,html[data-th=oceanic] .bbx,html[data-th=space] .bbx{backdrop-filter:blur(10px)}
html[data-th=aurora] .bbl{color:#adffe5;letter-spacing:.3em}html[data-th=aurora] .bb-jp .bbl,html[data-th=aurora] .bb-out .bbl{color:inherit}
html[data-th=hytte] .bbl{font-family:Oswald;letter-spacing:.25em;color:#7a1712}html[data-th=hytte] .bb-bl .bbl,html[data-th=hytte] .bb-in .bbl,html[data-th=hytte] .bb-br .bbl{color:#ffd9a0}
html[data-th=hytte] .bb-bl .bb-clock{text-shadow:0 5px 0 #4a0d09}html[data-th=hytte] .bb-list .row{font-size:clamp(16px,1.9vw,40px)}
html[data-th=space] .bbx::before{content:'';position:absolute;inset:8px;pointer-events:none;background:linear-gradient(var(--th-a),var(--th-a)) 0 0/24px 2px,linear-gradient(var(--th-a),var(--th-a)) 0 0/2px 24px,linear-gradient(var(--th-a),var(--th-a)) 100% 100%/24px 2px,linear-gradient(var(--th-a),var(--th-a)) 100% 100%/2px 24px;background-repeat:no-repeat;opacity:.8}
html[data-th=space] .bbl::before{content:'▸ ';color:#ff8a3d}html[data-th=space] .bbl{letter-spacing:.3em}
html[data-th=pirate] .bbl::before{content:'☠ '}html[data-th=pirate] .bb-bl .bbl,html[data-th=pirate] .bb-tk{color:#e0a526}html[data-th=pirate] .bb-in .bb-list .row{border-bottom-style:dotted}
html[data-th=pirate] .bb-out{transform:rotate(.5deg)}html[data-th=pirate] .bb-jp::after{content:'✕';position:absolute;right:1.2vw;bottom:.5vh;font:400 8vh 'Pirata One';color:#8b1a1a;opacity:.5}
html[data-th=gatsby] .bbx::before{content:'';position:absolute;left:50%;bottom:-40%;width:140%;aspect-ratio:1;transform:translateX(-50%);background:repeating-conic-gradient(from -90deg at 50% 50%,rgba(212,175,55,.09) 0 5deg,transparent 5deg 12deg);border-radius:50%;pointer-events:none}
html[data-th=gatsby] .bbl{letter-spacing:.5em;color:#d4af37}html[data-th=gatsby] .bb-jp .bbl,html[data-th=gatsby] .bb-bar{color:#0d0d0d}
html[data-th=anime] .bbx{transform:rotate(-.4deg)}html[data-th=anime] .bbx:nth-child(odd){transform:rotate(.5deg)}html[data-th=anime] .bbl{background:#111;color:#fff;align-self:flex-start;padding:.3vh .8vw;transform:skewX(-10deg)}
html[data-th=anime] .bb-bl::before{content:'';position:absolute;inset:-50%;background:repeating-conic-gradient(from 0deg,rgba(255,255,255,.14) 0 2deg,transparent 2deg 9deg);pointer-events:none;animation:spin 40s linear infinite}
html[data-th=anime] .bb-br::after{content:'ドン!';position:absolute;right:1vw;bottom:0;font:400 clamp(30px,4vw,90px) Bangers;color:#ffd400;-webkit-text-stroke:3px #111;transform:rotate(-12deg)}
html[data-th=brutalist] .bbl{letter-spacing:0;opacity:1;font-size:clamp(14px,1.4vw,30px);text-transform:uppercase}html[data-th=brutalist] .bb-clock{font-size:clamp(80px,12.5vw,260px);letter-spacing:-.05em}
html[data-th=brutalist] .bb-pot{letter-spacing:-.05em}html[data-th=brutalist] .bbx::after{content:attr(data-w);position:absolute;right:.6vw;top:.4vh;font:400 clamp(10px,.9vw,18px) 'Space Grotesk';opacity:.5;text-transform:uppercase}
html[data-th=newspaper] .bb-tk{font-family:UnifrakturMaguntia}html[data-th=newspaper] .bbl{letter-spacing:.2em;border-bottom:1px solid currentColor;padding-bottom:.6vh}
html[data-th=newspaper] .bb-br .bbl::before{content:'EXTRA! ';color:#a3121a}html[data-th=newspaper] .bb-h{font-weight:900;font-style:italic}
html[data-th=newspaper] .bb-bar{font-family:UnifrakturMaguntia;font-size:clamp(20px,2.8vw,60px);letter-spacing:.02em}
html[data-th=newspaper] .bb-in .bb-list{column-rule:1px solid #161412}
html[data-th=matrix] .bbl::before{content:'> '}html[data-th=matrix] .bbl{color:#00ff41}html[data-th=matrix] .bb-bar .bbl{color:#000}
html[data-th=matrix] .bb-clock::after{content:'_';animation:pulse 1s steps(2) infinite}
html[data-th=halloween] .bbl::before{content:'🎃 '}html[data-th=halloween] .bb-bl .bbl::before{content:'🦇 '}html[data-th=halloween] .bb-clock{text-shadow:0 4px 0 #6a1d00,0 0 30px #ffb000}
html[data-th=halloween] .bbx::after{content:'';position:absolute;left:0;right:0;top:0;height:2.2vh;background:radial-gradient(circle at 10px 0,var(--th-a) 6px,transparent 7px) 0 0/30px 100% repeat-x;opacity:.55}
html[data-th=christmas] .bbx::before{content:'';position:absolute;left:0;right:0;top:0;height:1.4vh;background:radial-gradient(circle,#fff 40%,transparent 42%) 0 0/2vh 2vh;opacity:.9;filter:drop-shadow(0 0 3px #fff)}
html[data-th=christmas] .bbl::before{content:'❄ '}html[data-th=christmas] .bb-in .bbl,html[data-th=christmas] .bb-out .bbl{color:#c62828}
html[data-th=mafia] .bbl{letter-spacing:.45em;color:#b88a4a}html[data-th=mafia] .bb-out .bbl{color:#7a1010}html[data-th=mafia] .bb-h{font-style:italic}
html[data-th=mafia] .bb-bl::before{content:'';position:absolute;left:50%;top:-30%;width:120%;height:90%;transform:translateX(-50%);background:radial-gradient(ellipse at 50% 0,rgba(255,210,140,.18),transparent 70%);pointer-events:none}
html[data-th=scoreboard] .bb-clock,html[data-th=scoreboard] .bb-pot{background:radial-gradient(circle,currentColor 55%,transparent 60%) 0 0/.12em .12em;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px var(--bl-fg))}
html[data-th=scoreboard] .bb-pot{color:#ff2d2d;filter:drop-shadow(0 0 10px #ff2d2d)}html[data-th=scoreboard] .bb-clock{color:#ffb400}
html[data-th=scoreboard] .bbl{background:#14326b;color:#fff;align-self:center;padding:.4vh 1vw;border-radius:4px;letter-spacing:.15em}
html[data-th=blackcard] .bbl{letter-spacing:.55em;color:#9a8866}html[data-th=blackcard] .bb-jp .bbl{color:#3a3a3a}
html[data-th=blackcard] .bb-pot{text-shadow:0 1px 0 rgba(255,255,255,.6),0 -1px 0 rgba(0,0,0,.35)}
html[data-th=blackcard] .bb-jp::after{content:'';position:absolute;left:1.6vw;top:2vh;width:3.4vw;height:2.6vw;border-radius:.4vw;background:linear-gradient(135deg,#d9c38a,#8a7340 50%,#d9c38a);opacity:.9}
html[data-th=oceanic] .bbl{color:#38f9d7;letter-spacing:.3em}html[data-th=oceanic] .bb-jp .bbl{color:#00241f}
@media (min-width:801px){body.billboard.lay .bbw>.bbx{container-type:inline-size}}
@container (max-width:520px){.bb-list{grid-template-columns:1fr!important}}
@container (max-width:300px){.bb-chips .disc{width:clamp(22px,2.2vw,50px)!important}}
/* smooth theme swap (View Transitions) */
::view-transition-old(root),::view-transition-new(root){animation-duration:.7s;animation-timing-function:cubic-bezier(.4,0,.2,1)}
html[data-motion="0"]::view-transition-old(root),html[data-motion="0"]::view-transition-new(root){animation-duration:.25s}
html[data-th] .wheelwrap svg{filter:drop-shadow(0 0 40px color-mix(in srgb,var(--th-a2) 55%,transparent))}
/* ---------- shared party-mode components: every theme styles these through tokens ----------
   .pt-ov  full-screen overlay backdrop     .pt-card  minigame / rule card     .pt-wanted bounty poster
   .pt-power power-up burst                .pt-badge small pill                .pt-btn    phone action button   */
.pt-ov{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:var(--th-ov);color:var(--th-ovfg);animation:xin .35s ease-out}
.pt-card{position:relative;width:min(70vw,900px);padding:4vh 3vw;text-align:center;background:var(--br-bg);color:var(--br-fg);border:max(var(--th-bw),2px) solid var(--th-bd);border-radius:max(var(--th-r),12px);box-shadow:var(--th-sh),0 30px 80px rgba(0,0,0,.45);animation:ptdeal .6s cubic-bezier(.2,1.5,.4,1) both}
.pt-card .k{font:700 clamp(12px,1.3vw,28px) var(--th-b);letter-spacing:.3em;opacity:.8}.pt-card .e{font-size:clamp(60px,10vh,160px);line-height:1.1}
.pt-card h2{margin:.4vh 0;font:var(--th-dw) clamp(40px,6vw,130px)/1 var(--th-d);letter-spacing:var(--th-ls);color:inherit;text-shadow:var(--th-numsh)}.pt-card p{font:500 clamp(16px,1.8vw,40px)/1.3 var(--th-b);margin:1.4vh 0 0}
.pt-card .pt-badge{position:absolute;top:-1.8vh;left:50%;transform:translateX(-50%)}
.pt-badge{display:inline-block;padding:.6vh 1.2vw;border-radius:99px;background:var(--ph-bg);color:var(--ph-fg);font:800 clamp(12px,1.1vw,24px) var(--th-b);letter-spacing:.12em}
@keyframes ptdeal{from{opacity:0;transform:translateY(40vh) rotate(-12deg) scale(.6)}to{opacity:1;transform:none}}
.pt-wanted{position:relative;width:min(34vw,520px);aspect-ratio:3/4;padding:3vh 2vw;display:flex;flex-direction:column;align-items:center;text-align:center;background:var(--out-bg);color:var(--out-fg);border:max(var(--th-bw),3px) solid var(--th-bd);border-radius:var(--th-r);box-shadow:var(--th-sh),0 30px 80px rgba(0,0,0,.5);transform:rotate(-2deg);animation:ptdeal .7s cubic-bezier(.2,1.4,.4,1) both}
.pt-wanted .t{font:var(--th-dw) clamp(40px,5vw,110px)/1 var(--th-d);letter-spacing:.06em;color:var(--out-ac)}.pt-wanted .s{font:700 clamp(12px,1.1vw,24px) var(--th-b);letter-spacing:.35em;margin:.6vh 0 2vh}
.pt-wanted .av{width:60%;aspect-ratio:1;border-radius:calc(var(--th-r)*.6);display:grid;place-items:center;font:400 clamp(50px,7vw,150px) var(--th-d);background:color-mix(in srgb,var(--out-fg) 12%,transparent);border:3px solid currentColor}
.pt-wanted .n{font:var(--th-dw) clamp(30px,3.6vw,80px)/1 var(--th-d);margin-top:2vh}.pt-wanted .r{margin-top:auto;font:var(--th-dw) clamp(26px,3vw,64px)/1 var(--th-d);color:var(--out-ac)}
.pt-power{position:relative;display:grid;place-items:center;width:min(50vh,50vw);aspect-ratio:1}
.pt-power::before{content:'';position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(var(--th-a) 0 10deg,transparent 10deg 20deg);opacity:.5;animation:spin 8s linear infinite;mask:radial-gradient(circle,transparent 30%,#000 31%,#000 60%,transparent 70%)}
.pt-power::after{content:'';position:absolute;inset:18%;border-radius:50%;background:radial-gradient(circle,var(--th-a),color-mix(in srgb,var(--th-a2) 70%,transparent) 60%,transparent 72%);animation:ptpulse 1.2s ease-in-out infinite}
.pt-power b{position:relative;z-index:1;font:var(--th-dw) clamp(40px,7vw,150px)/1 var(--th-d);color:var(--th-ai);text-shadow:0 0 30px var(--th-a)}.pt-power small{position:absolute;bottom:-4vh;left:0;right:0;font:800 clamp(14px,1.6vw,34px) var(--th-b);letter-spacing:.2em;text-align:center;color:var(--th-fg)}
@keyframes ptpulse{50%{transform:scale(1.12)}}
.pt-btn{appearance:none;min-width:200px;border:var(--th-bw) solid var(--th-bd);border-radius:max(var(--th-r),10px);background:var(--th-a);color:var(--th-ai);font:800 18px var(--th-b);padding:14px 20px}
html[data-motion="0"] .pt-card,html[data-motion="0"] .pt-wanted{animation-duration:.2s}html[data-motion="0"] .pt-power::before{animation:none}
html[data-th=saloon] .pt-wanted .t::before,html[data-th=pirate] .pt-wanted .t::before{content:''}
html[data-th=noir] .pt-wanted{filter:grayscale(1) contrast(1.1)}html[data-th=noir] .pt-wanted .t,html[data-th=noir] .pt-wanted .r{color:#c1121f;filter:none}
/* broadcast polish: lower-third wipe when the spotlight changes */
html[data-th=wsop] .bb-br>*:not(.dots),html[data-th=ept] .bb-br>*:not(.dots),html[data-th=scoreboard] .bb-br>*:not(.dots){animation:thwipe .6s cubic-bezier(.2,.9,.3,1) both}
@keyframes thwipe{from{clip-path:inset(0 100% 0 0);transform:translateX(-12px)}to{clip-path:inset(0 0 0 0);transform:none}}
/* ---------- v12.1 moments: level-up, bust, theme-of-the-night reveal ---------- */
#thfl{position:fixed;inset:0;z-index:70;pointer-events:none;display:none;place-items:center;align-content:center;text-align:center;overflow:hidden}
#thfl.on{display:grid}#thfl b{display:block;font:var(--th-dw) clamp(60px,11vw,240px)/1 var(--th-d);letter-spacing:var(--th-ls);color:var(--th-a);text-shadow:var(--th-numsh),0 0 60px color-mix(in srgb,var(--th-a2) 60%,transparent)}
#thfl small{display:block;font:800 clamp(16px,1.8vw,40px) var(--th-b);letter-spacing:.4em;color:var(--th-ovfg);margin-bottom:2vh}
/* default (medium): zoom-fade title + soft backdrop */
#thfl.lvl{background:radial-gradient(circle,color-mix(in srgb,var(--th-a) 22%,transparent),transparent 60%);animation:mfade 1.9s ease both}#thfl.lvl b{animation:mzoom 1.9s cubic-bezier(.2,.9,.3,1) both}
#thfl.bust{background:radial-gradient(circle,transparent 30%,color-mix(in srgb,var(--th-a2) 55%,transparent));animation:mfade 1.6s ease both}#thfl.bust b{color:var(--th-a2);animation:mzoom 1.6s cubic-bezier(.2,.9,.3,1) both}
#thfl.reveal{background:var(--th-ov);animation:mfade 5.2s ease both}#thfl.reveal b{animation:mslam 1s .3s cubic-bezier(.2,1.6,.4,1) both}#thfl.reveal small{animation:mfade 5.2s ease both}
@keyframes mfade{0%{opacity:0}12%,80%{opacity:1}100%{opacity:0}}@keyframes mzoom{0%{transform:scale(.6);opacity:0;filter:blur(8px)}20%{transform:scale(1);opacity:1;filter:none}80%{transform:scale(1.04);opacity:1}100%{transform:scale(1.15);opacity:0}}
@keyframes mslam{from{transform:scale(2.6);opacity:0}to{transform:none;opacity:1}}
body.m-lvl .bb-bl{animation:mglow 1.6s ease}@keyframes mglow{30%{box-shadow:0 0 0 4px var(--th-a),0 0 60px var(--th-a)}}
body.m-bust .bb-out .orow:first-child{animation:mhl 1.6s ease}@keyframes mhl{20%,60%{background:color-mix(in srgb,var(--out-ac) 30%,transparent)}}
/* subtle themes: no full-screen title, only the panel glow */
:is(html[data-th=simple-dark],html[data-th=simple-light],html[data-th=classic],html[data-th=montecarlo],html[data-th=royale],html[data-th=blackcard],html[data-th=mafia]) #thfl:is(.lvl,.bust){display:none}
/* broadcast themes: lower-third banner slides in */
:is(html[data-th=wsop],html[data-th=ept],html[data-th=scoreboard]) #thfl:is(.lvl,.bust){background:none;align-content:end;justify-items:start;padding:0 0 13vh 4vw}
:is(html[data-th=wsop],html[data-th=ept],html[data-th=scoreboard]) #thfl:is(.lvl,.bust) b{font-size:clamp(36px,4.6vw,100px);padding:1.4vh 3vw;background:var(--br-bg);color:var(--br-fg);border-left:10px solid var(--th-a);text-shadow:none;animation:mlt 1.9s cubic-bezier(.2,.9,.3,1) both}
@keyframes mlt{0%{transform:translateX(-110%)}18%,82%{transform:none}100%{transform:translateX(-110%)}}
/* wild themes: slam, flash and screen shake */
:is(html[data-th=crazy],html[data-th=anime],html[data-th=arcade],html[data-th=cyberpunk],html[data-th=vegas],html[data-th=synthwave],html[data-th=squid],html[data-th=halloween],html[data-th=matrix]) #thfl.lvl b{animation:mslam2 1.9s cubic-bezier(.2,1.7,.4,1) both}
@keyframes mslam2{0%{transform:scale(3) rotate(-8deg);opacity:0}15%{transform:scale(1) rotate(-3deg);opacity:1}80%{transform:scale(1) rotate(-3deg);opacity:1}100%{transform:scale(.4);opacity:0}}
:is(html[data-th=crazy],html[data-th=anime],html[data-th=arcade],html[data-th=cyberpunk],html[data-th=vegas],html[data-th=squid],html[data-th=halloween]) body.m-bust .bbw{animation:mshake .5s}
@keyframes mshake{20%{transform:translate(-14px,6px) rotate(-.6deg)}40%{transform:translate(12px,-6px) rotate(.6deg)}60%{transform:translate(-8px,3px)}80%{transform:translate(5px,-2px)}}
html[data-th=crazy] #thfl.lvl{background:repeating-conic-gradient(from 0deg,#ffde0033 0 10deg,transparent 10deg 20deg)}
html[data-th=anime] #thfl.lvl{background:repeating-conic-gradient(from 0deg,#11111122 0 3deg,transparent 3deg 9deg)}html[data-th=anime] #thfl b{-webkit-text-stroke:4px #111}
html[data-th=arcade] #thfl.lvl b::after{content:' UP!';}html[data-th=arcade] #thfl b{font-size:clamp(30px,5vw,110px)}
html[data-th=cyberpunk] #thfl b,html[data-th=matrix] #thfl b{animation:mglitch 1.9s steps(1) both!important}
@keyframes mglitch{0%{opacity:0}5%{opacity:1;transform:translate(8px,0) skewX(12deg)}10%{transform:translate(-8px,0)}15%,85%{transform:none;opacity:1}90%{transform:translate(10px,-4px)}100%{opacity:0}}
html[data-th=vegas] #thfl b{color:#fff;text-shadow:0 0 10px #fff,0 0 30px #ff2bd6,0 0 70px #ff2bd6}
html[data-th=squid] #thfl.bust b::before{content:'✕ ';color:#ff2d78}html[data-th=saloon] #thfl.bust b::before,html[data-th=pirate] #thfl.bust b::before{content:'☠ '}
html[data-th=christmas] #thfl.lvl b::before{content:'🎄 '}html[data-th=halloween] #thfl.bust b::before{content:'🎃 '}html[data-th=noir] #thfl.bust b::after{content:' — CASE CLOSED';font-size:.35em;display:block;color:var(--th-ovfg)}
html[data-motion="0"] #thfl:is(.lvl,.bust){display:none}html[data-motion="0"] body.m-bust .bbw{animation:none}
/* ---------- v12.1: party-mode screens follow the theme (non-Crazy themes; Crazy keeps the original party look) ---------- */
html[data-th]:not([data-th=crazy]) .prb{background:var(--br-bg);color:var(--br-fg);border:max(var(--th-bw),2px) solid var(--th-bd);box-shadow:var(--th-sh),0 .5vw 2vw rgba(0,0,0,.5);font-family:var(--th-b)}
html[data-th]:not([data-th=crazy]) #pwheel{background:color-mix(in srgb,var(--th-host) 86%,transparent)}
html[data-th]:not([data-th=crazy]) .pbig{border-radius:max(var(--th-r),8px);box-shadow:var(--th-sh),0 0 4vw color-mix(in srgb,var(--pc) 60%,transparent)}
html[data-th]:not([data-th=crazy]) .pcardbig{background:var(--jp-bg);color:var(--jp-fg);border-color:var(--th-bd);border-radius:max(var(--th-r),10px)}
html[data-th]:not([data-th=crazy]) .pwanted{background:var(--out-bg);color:var(--out-fg);border-color:var(--th-bd);border-radius:var(--th-r);font-family:var(--th-b)}
html[data-th]:not([data-th=crazy]) .pwt{font-family:var(--th-d);color:var(--out-ac)}
html[data-th]:not([data-th=crazy]) .pshout{background:var(--th-p);color:var(--th-fg);border-color:var(--th-a2);font-family:var(--th-b)}
html[data-th]:not([data-th=crazy]) .pfxtoast{font-family:var(--th-b)}
html[data-th=saloon] .pwanted,html[data-th=pirate] .pwanted{background:radial-gradient(ellipse,#f3dfb0,#d9b97a);color:#3a210c}html[data-th=saloon] .pwt{font-family:Rye}
html[data-th=noir] .pwanted{filter:grayscale(1) contrast(1.1);transform:rotate(-1deg)}
html[data-th=wsop] .prb,html[data-th=ept] .prb{border-radius:2px;border-left:10px solid var(--th-a)}
html[data-motion="0"] .pbig,html[data-motion="0"] .pwanted,html[data-motion="0"] .pcardbig{animation-duration:.2s!important}
/* podium inside a widget: keep the steps inside the box */
body.billboard.lay .bb-podwrap{min-height:0;overflow:hidden}body.billboard.lay .bb-podwrap .podium{min-height:0!important;flex:1}
/* ---------- v12.1 character upgrades for the quieter themes ---------- */
html[data-th=newspaper] .bb-tk,html[data-th=newspaper] .bb-bar{font-family:'Playfair Display',serif;font-style:italic;letter-spacing:.04em}
html[data-th=newspaper] .bb-bar::before{content:'VOL. XII · ';opacity:.6}
/* Deep Sea: moving caustics + wave divider */
html[data-th=oceanic] body.billboard #bg{background:radial-gradient(ellipse 40% 20% at 30% 0,rgba(56,249,215,.18),transparent),radial-gradient(ellipse 30% 15% at 70% 10%,rgba(56,249,215,.12),transparent),var(--th-pg);animation:caus 14s ease-in-out infinite alternate}
@keyframes caus{to{background-position:200px 40px,-160px 20px,0 0}}
html[data-th=oceanic] .bbx::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2.2vh;background:radial-gradient(circle at 50% 0,transparent 62%,rgba(56,249,215,.18) 64%) 0 0/3vh 2.2vh repeat-x;pointer-events:none}
/* Orbital: cut corner panels, scanning line over the clock, orbit ring behind the jackpot */
html[data-th=space] .bbx{clip-path:polygon(22px 0,100% 0,100% 100%,0 100%,0 22px)}
html[data-th=space] .bb-bl::after{content:'';position:absolute;left:0;right:0;height:2px;top:0;background:linear-gradient(90deg,transparent,var(--th-a),transparent);animation:scan 4s linear infinite;opacity:.7}@keyframes scan{to{top:100%}}
html[data-th=space] .bb-jp::after{content:'';position:absolute;left:50%;top:50%;width:70%;aspect-ratio:2.6;transform:translate(-50%,-50%) rotate(-12deg);border:2px solid rgba(255,178,122,.35);border-radius:50%;pointer-events:none}
/* Black Card: hologram sheen sweeping the jackpot + platinum hairlines */
html[data-th=blackcard] .bb-jp::before{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.55) 50%,transparent 65%);transform:translateX(-100%);animation:sheen 6s ease-in-out infinite;pointer-events:none}@keyframes sheen{40%,100%{transform:translateX(100%)}}
html[data-th=blackcard] .bbl{border-bottom:1px solid rgba(255,255,255,.12);padding-bottom:.8vh}
/* La Famiglia: film grain, vignette and a rose */
html[data-th=mafia] body.billboard::after{content:'';position:fixed;inset:0;pointer-events:none;z-index:2;background:radial-gradient(ellipse at center,transparent 60%,rgba(0,0,0,.32)),repeating-radial-gradient(circle at 17% 32%,rgba(255,255,255,.025) 0 1px,transparent 1px 3px)}
html[data-th=mafia] .bb-br .bbl::before{content:'🌹 '}html[data-th=mafia] .bb-bar{letter-spacing:.3em}
/* Monte Carlo: gilded corner ornaments + roulette watermark */
html[data-th=montecarlo] .bbx::after{content:'';position:absolute;inset:8px;pointer-events:none;background:linear-gradient(#c9b27a,#c9b27a) 0 0/26px 2px,linear-gradient(#c9b27a,#c9b27a) 0 0/2px 26px,linear-gradient(#c9b27a,#c9b27a) 100% 0/26px 2px,linear-gradient(#c9b27a,#c9b27a) 100% 0/2px 26px,linear-gradient(#c9b27a,#c9b27a) 0 100%/26px 2px,linear-gradient(#c9b27a,#c9b27a) 0 100%/2px 26px,linear-gradient(#c9b27a,#c9b27a) 100% 100%/26px 2px,linear-gradient(#c9b27a,#c9b27a) 100% 100%/2px 26px;background-repeat:no-repeat}
html[data-th=montecarlo] .bb-bl::before{content:'';position:absolute;left:50%;top:50%;width:90%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:repeating-conic-gradient(rgba(243,231,196,.06) 0 9.73deg,transparent 9.73deg 19.46deg);pointer-events:none;animation:spin 90s linear infinite;will-change:transform}
/* Casino Royale: suits line on the bar */
html[data-th=royale] .bb-bar::before{content:'♠  ';color:#c9a646}html[data-th=royale] .bb-bar::after{content:'  ♠';color:#c9a646}
/* Hytte: knitted band on the ticker + lantern glow */
html[data-th=hytte] .bb-tk{background:repeating-linear-gradient(135deg,#2a170a 0 8px,#3a2010 8px 16px);border-top:4px solid #b3261e;border-bottom:4px solid #b3261e}
html[data-th=hytte] .bb-in{box-shadow:inset 0 0 60px rgba(255,170,80,.18),0 10px 25px rgba(0,0,0,.4)}
/* Macau: lantern dots in the ticker + scale-pattern jackpot frame */
html[data-th=macau] .bb-tk{border-top:3px solid #e3b341;border-bottom:3px solid #e3b341}
html[data-th=macau] .bb-jp{border-image:repeating-radial-gradient(circle at 50% 100%,#e3b341 0 6px,#8f0a10 6px 9px) 12}
/* Brutalist: big panel index numbers + offset slab shadow */
html[data-th=brutalist] .bbw{counter-reset:w}html[data-th=brutalist] .bbw>[data-w]:not(.off){counter-increment:w;box-shadow:10px 10px 0 #000}
html[data-th=brutalist] .bbx::after{content:counter(w,decimal-leading-zero);font:400 clamp(28px,3vw,70px) 'Archivo Black';opacity:.18;right:.8vw;top:.2vh;text-transform:none}
/* Pirate: rope border + compass rose */
html[data-th=pirate] .bbx{border-image:repeating-linear-gradient(45deg,#8a6a3a 0 6px,#c9a46a 6px 12px) 8}
html[data-th=pirate] .bb-bl::after{content:'✵';position:absolute;right:1vw;bottom:-1vh;font-size:20vh;color:#e0a526;opacity:.07;pointer-events:none}
/* Aurora: frosted label strip */
html[data-th=aurora] .bbl{background:linear-gradient(90deg,rgba(93,255,181,.18),transparent);padding:.4vh .6vw;margin-left:-.6vw;border-radius:4px}
