:root{--bg:#08130f;--panel:#10231b;--card:#152b22;--line:#294438;--text:#f4f4ed;--muted:#a5b1aa;--gold:#e6c15f;--danger:#a84c45}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{text-decoration:none;color:inherit}button,input{font:inherit}.wrap{max-width:1180px;margin:auto;padding:18px}.top,.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.top{justify-content:space-between}.card{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;margin:14px 0}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--card);color:var(--text);padding:12px 16px;border-radius:12px;min-height:46px;cursor:pointer}.primary{background:var(--gold);color:#171711;font-weight:800}.muted{color:var(--muted)}.label{text-transform:uppercase;letter-spacing:.16em;color:var(--muted);font-size:12px}.games{display:grid;gap:10px}.game{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px;background:var(--card);border:1px solid var(--line);border-radius:13px}.login{max-width:520px;margin:8vh auto}.form{display:grid;gap:12px}.form.inline{grid-template-columns:repeat(3,1fr) auto;align-items:end}.form label{display:grid;gap:5px;color:var(--muted);font-size:13px}.form input{width:100%;background:#0b1913;border:1px solid var(--line);color:var(--text);padding:12px;border-radius:10px;font-size:16px}.error{padding:12px;border-radius:10px;background:#3a1717;margin:10px 0}.live{max-width:1280px;margin:auto;padding:18px}.livegrid{display:grid;grid-template-columns:1.45fr .75fr;gap:16px}.center{text-align:center}.blinds{font-size:clamp(52px,9vw,100px);font-weight:900;color:var(--gold);line-height:1}.clock{font-variant-numeric:tabular-nums;font-size:clamp(72px,12vw,140px);font-weight:900;line-height:1;margin:20px 0}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.metric{background:var(--card);border:1px solid var(--line);padding:13px;border-radius:13px}.metric b{font-size:25px;display:block}.counter{display:grid;grid-template-columns:1fr 52px 52px;align-items:center;gap:8px;margin:8px 0}.payout{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line)}.controls{justify-content:center;margin:14px 0}.warning{color:var(--gold);font-weight:900;min-height:24px}.settings-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.tv .adminonly{display:none!important}.tv .live{max-width:none;padding:2vw}.tv .clock{font-size:13vw}.tv .blinds{font-size:8vw}.tv h1{font-size:3vw}.tv .metric b{font-size:2vw}@media(max-width:800px){.livegrid{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.settings-grid,.form.inline{grid-template-columns:1fr 1fr}.wrap,.live{padding:10px}.card{padding:14px}.controls .btn{flex:1;min-width:90px}}@media(max-width:430px){.settings-grid,.form.inline{grid-template-columns:1fr}.clock{font-size:22vw}.blinds{font-size:15vw}.game{align-items:flex-start;flex-direction:column}}
.structure-head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin:22px 0 10px}.structure-row{display:grid;grid-template-columns:110px repeat(3,minmax(100px,1fr)) 100px;gap:8px;align-items:end;padding:10px 0;border-bottom:1px solid var(--line)}.structure-row label{display:grid;gap:5px;color:var(--muted);font-size:13px}.structure-row input{width:100%;background:#0b1913;border:1px solid var(--line);color:var(--text);padding:10px;border-radius:10px;font-size:16px}.structure-type{font-weight:900;color:var(--gold);padding-bottom:12px}.breaktag{color:#d5a7ff}@media(max-width:700px){.structure-row{grid-template-columns:1fr 1fr}.structure-type{grid-column:1/-1;padding-bottom:0}.structure-row .remove{grid-column:1/-1}}

.btn.danger{border-color:#a94442;background:#6f2525;color:#fff}.btn.danger:hover{background:#843030}
.counter{grid-template-columns:minmax(120px,1fr) 48px 56px 48px}.counter>b{text-align:center;font-size:20px}.counter small{display:block;margin-top:2px}.settings-grid{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:800px){.settings-grid{grid-template-columns:1fr 1fr}}@media(max-width:430px){.settings-grid{grid-template-columns:1fr}}
.sound-status{margin-top:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;color:var(--muted);font-size:13px}.sound-status.good{color:#d9f4df;border-color:#416d50}audio#tournamentAudio{width:1px;height:1px;position:absolute;left:-9999px}
\n/* V2.4 TV scoreboard: fit common 16:9 TV/Android-box screens without scrolling. */
.tv{overflow:hidden}
.tv .live{height:100vh;max-height:100vh;padding:1.2vh 1.2vw;display:flex;flex-direction:column;overflow:hidden}
.tv .top{flex:0 0 auto;min-height:0;gap:.7vh}
.tv .top h1{font-size:clamp(20px,2.2vw,40px);line-height:1;margin:.2vh 0}
.tv .top .label{font-size:clamp(9px,.75vw,14px)}
.tv .top .row{gap:.5vw}
.tv .top .btn{min-height:34px;padding:.55vh .8vw;font-size:clamp(11px,.9vw,16px)}
.tv .livegrid{flex:1 1 auto;min-height:0;grid-template-columns:minmax(0,1.65fr) minmax(230px,.55fr);gap:1vw;align-items:stretch}
.tv .card{margin:.7vh 0;padding:1.1vh 1vw;border-radius:14px}
.tv .livegrid>section.card{height:calc(100% - 1.4vh);display:flex;flex-direction:column;justify-content:space-around;min-height:0}
.tv .blinds{font-size:clamp(42px,6.6vw,110px);line-height:.9}
.tv .clock{font-size:clamp(62px,9.4vw,155px);line-height:.88;margin:.5vh 0}
.tv .warning{min-height:1.2em;font-size:clamp(13px,1.15vw,22px)}
.tv .metrics{gap:.6vw}
.tv .metric{padding:.7vh .7vw;border-radius:10px;min-width:0}
.tv .metric .muted{font-size:clamp(10px,.78vw,14px)}
.tv .metric b{font-size:clamp(18px,1.7vw,31px);line-height:1.05;white-space:nowrap}
.tv aside{min-height:0;overflow:hidden;display:flex;flex-direction:column}
.tv aside .card{min-height:0}
.tv aside .card:last-child{display:none}
.tv .payout{padding:.7vh 0;font-size:clamp(12px,1vw,18px)}
.tv .muted{font-size:clamp(11px,.9vw,16px)}
@media(max-aspect-ratio:4/3){.tv{overflow:auto}.tv .live{height:auto;max-height:none;overflow:visible}.tv .livegrid{grid-template-columns:1fr}.tv aside .card:last-child{display:none}}

/* V2.5 TV mode: compact single-screen scoreboard plus JS safety-fit. */
.tv, .tv body{overflow:hidden}
.tv #app{height:100vh;overflow:hidden}
.tv .live{box-sizing:border-box;height:100vh;max-height:100vh;padding:.7vh .8vw;overflow:hidden;transform-origin:top left}
.tv .top{margin:0;gap:.4vh}
.tv .top h1{font-size:clamp(18px,1.8vw,34px);margin:0;line-height:1}
.tv .top .btn{min-height:30px;padding:.35vh .65vw;font-size:clamp(10px,.75vw,14px);border-radius:8px}
.tv .livegrid{gap:.6vw;min-height:0}
.tv .card{margin:.35vh 0;padding:.7vh .7vw;border-radius:10px}
.tv .livegrid>section.card{height:calc(100% - .7vh)}
.tv .blinds{font-size:clamp(38px,5.6vw,92px);line-height:.88}
.tv .clock{font-size:clamp(54px,8vw,128px);line-height:.84;margin:.15vh 0}
.tv .metrics{gap:.4vw}
.tv .metric{padding:.45vh .5vw}
.tv .metric b{font-size:clamp(16px,1.45vw,27px)}
.tv .payout{padding:.4vh 0}
.tv aside .card{margin:.35vh 0;padding:.7vh .7vw}
.tv aside .card:last-child{display:none!important}
@media(max-width:900px) and (orientation:landscape){.tv .livegrid{grid-template-columns:minmax(0,1.7fr) minmax(190px,.5fr)}.tv .clock{font-size:12vw}.tv .blinds{font-size:8vw}}

/* V2.6 TV safe-area: reserve left/right space for Android TV overscan. */
.tv #app{width:100%;overflow:hidden}
.tv .live{width:94vw;max-width:94vw;margin:0 auto;padding-left:1vw;padding-right:1vw}
@media(max-width:1000px) and (orientation:landscape){.tv .live{width:92vw;max-width:92vw}}

/* V2.10 broadcast-style TV scoreboard. Admin/control screens retain the proven layout. */
.tv{background:#050708;color:#f6f6f4}
.tv .live.tvboard{width:94vw;max-width:94vw;height:100vh;max-height:100vh;margin:0 auto;padding:.8vh .7vw;display:grid;grid-template-rows:auto 1fr auto;gap:.7vh;overflow:hidden;transform-origin:top center}
.tvboard .tv-head{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1vw;min-height:0}
.tvboard .tv-brand{text-align:center;font-weight:900;letter-spacing:.11em;font-size:clamp(20px,2.4vw,43px);white-space:nowrap}.tvboard .tv-brand .suit{font-size:1.15em;margin-right:.3em}.tvboard .tv-game{font-size:clamp(18px,1.8vw,32px);font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tvboard .tv-host{color:#9da3a7;font-size:clamp(10px,.85vw,15px);margin-top:.15vh}.tvboard .tv-now{text-align:right;font-variant-numeric:tabular-nums;font-size:clamp(13px,1.05vw,19px)}
.tvboard .tv-main{display:grid;grid-template-columns:minmax(180px,.72fr) minmax(0,2.75fr) minmax(210px,.82fr);gap:.75vw;min-height:0}.tvboard .tv-side,.tvboard .tv-center{min-height:0}.tvboard .tv-side{display:flex;flex-direction:column;gap:.7vh}.tvboard .tv-panel{background:linear-gradient(180deg,#101416,#090c0e);border:1px solid #333a3e;border-radius:8px;padding:1.25vh 1vw;min-height:0}.tvboard .tv-stat{padding:.85vh .25vw;border-bottom:1px solid #293034}.tvboard .tv-stat:last-child{border-bottom:0}.tvboard .tv-stat span,.tvboard .tv-panel-title{display:block;color:#aeb2b5;text-transform:uppercase;font-weight:800;letter-spacing:.04em;font-size:clamp(10px,.86vw,16px)}.tvboard .tv-stat b{display:block;font-size:clamp(21px,2vw,38px);line-height:1.08;margin-top:.18vh;font-variant-numeric:tabular-nums}.tvboard .tv-stat b.smallish{font-size:clamp(18px,1.55vw,30px)}
.tvboard .tv-center{background:radial-gradient(circle at 50% 45%,#43100d 0,#210807 48%,#100504 100%);border:2px solid #d52a24;border-radius:7px;padding:1vh 1.1vw;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;overflow:hidden}.tvboard .tv-level{font-weight:950;font-size:clamp(26px,3vw,54px);line-height:1}.tvboard .tv-type{color:#b8b8b8;text-transform:uppercase;font-weight:800;letter-spacing:.08em;font-size:clamp(13px,1.3vw,23px)}.tvboard .tv-blinds{font-size:clamp(46px,6.8vw,118px);font-weight:950;line-height:.9;white-space:nowrap}.tvboard .tv-ante{font-size:clamp(18px,2vw,36px);font-weight:800;min-height:1.2em}.tvboard .tv-clockbox{width:86%;background:rgba(0,0,0,.58);border:1px solid #3b3332;border-radius:16px;padding:.25vh .5vw}.tvboard .tv-clock{font-variant-numeric:tabular-nums;font-size:clamp(72px,10.5vw,180px);font-weight:950;line-height:.95;letter-spacing:-.045em}.tvboard .tv-next{width:82%;background:rgba(0,0,0,.48);border:1px solid #4b4645;border-radius:12px;padding:.6vh .8vw;font-size:clamp(12px,1.05vw,19px)}.tvboard .tv-next b{font-size:1.25em}.tvboard .tv-warning{min-height:1.1em;color:#ffcf62;font-weight:900;font-size:clamp(11px,.95vw,17px)}
.tvboard .tv-pool{text-align:center;color:#5ee26b;font-size:clamp(28px,3vw,54px);font-weight:950;line-height:1.1}.tvboard .tv-payout{display:flex;justify-content:space-between;gap:8px;padding:.45vh 0;border-bottom:1px solid #293034;font-size:clamp(11px,.95vw,17px)}.tvboard .tv-payout:last-child{border-bottom:0}.tvboard .tv-levels{flex:1;overflow:hidden}.tvboard .tv-level-row{display:grid;grid-template-columns:2.2em 1fr;gap:.45vw;padding:.45vh .35vw;border-bottom:1px solid #252b2f;font-size:clamp(10px,.82vw,15px);align-items:center}.tvboard .tv-level-row.current{background:#a91916;color:#fff;font-weight:900}.tvboard .tv-level-row.done{color:#7f898e}.tvboard .tv-level-row.breakrow{color:#d4b5ef}.tvboard .tv-footer{text-align:center;color:#6f777c;letter-spacing:.18em;font-size:clamp(9px,.7vw,13px);min-height:1em}.tvboard audio{position:absolute;left:-9999px;width:1px;height:1px}
@media(max-width:1000px) and (orientation:landscape){.tv .live.tvboard{width:92vw;max-width:92vw}.tvboard .tv-main{grid-template-columns:minmax(155px,.68fr) minmax(0,2.7fr) minmax(175px,.75fr)}.tvboard .tv-panel{padding:.8vh .75vw}.tvboard .tv-stat{padding:.55vh .15vw}.tvboard .tv-clock{font-size:12vw}.tvboard .tv-blinds{font-size:7.7vw}}

/* V2.11 TV polish: three full-height red felt panels, extra vertical safe area. */
.tv .live.tvboard{
  width:93vw;max-width:93vw;
  height:97vh;max-height:97vh;
  margin:1.1vh auto 0;
  padding:.35vh .55vw .45vh;
  grid-template-rows:auto minmax(0,1fr) auto;
  gap:.45vh;
}
.tvboard .tv-head{padding:0 .15vw;line-height:1;min-height:4.8vh}
.tvboard .tv-game{font-size:clamp(16px,1.55vw,29px);line-height:1.05}
.tvboard .tv-host{font-size:clamp(9px,.72vw,13px);line-height:1;margin-top:.1vh}
.tvboard .tv-brand{font-size:clamp(19px,2.15vw,39px);line-height:1}
.tvboard .tv-now{font-size:clamp(11px,.9vw,17px);line-height:1.15}
.tvboard .tv-main{gap:.7vw;min-height:0;align-items:stretch}
.tvboard .tv-side{display:block;min-height:0;height:100%}
.tvboard .tv-panel,
.tvboard .tv-center{
  background:
    radial-gradient(circle at 52% 42%,rgba(116,22,18,.48) 0,rgba(58,10,8,.34) 38%,rgba(18,4,4,.94) 100%),
    linear-gradient(135deg,rgba(130,20,17,.34),rgba(25,3,3,.9));
  border:2px solid #d52a24;
  box-shadow:inset 0 0 34px rgba(0,0,0,.46);
}
.tvboard .tv-panel{height:100%;margin:0;border-radius:7px;padding:.75vh .9vw;overflow:hidden}
.tvboard .tv-center{height:100%;padding:.7vh 1vw}
.tvboard .tv-stat{padding:.6vh .2vw}
.tvboard .tv-stat span,.tvboard .tv-panel-title{font-size:clamp(9px,.78vw,14px)}
.tvboard .tv-stat b{font-size:clamp(19px,1.75vw,33px)}
.tvboard .tv-stat b.smallish{font-size:clamp(16px,1.38vw,26px)}
.tvboard .tv-level{font-size:clamp(24px,2.65vw,48px)}
.tvboard .tv-type{font-size:clamp(11px,1.05vw,19px)}
.tvboard .tv-blinds{font-size:clamp(42px,6vw,106px)}
.tvboard .tv-ante{font-size:clamp(16px,1.65vw,30px)}
.tvboard .tv-clockbox{width:84%;padding:.1vh .45vw}
.tvboard .tv-clock{font-size:clamp(66px,9.25vw,160px);line-height:.92}
.tvboard .tv-next{width:78%;padding:.45vh .7vw;font-size:clamp(11px,.9vw,17px)}
.tvboard .tv-warning{font-size:clamp(10px,.82vw,15px);min-height:1em}
.tvboard .tv-right-panel{display:flex;flex-direction:column;min-height:0}
.tvboard .tv-section-title{margin-top:.65vh;padding-top:.55vh;border-top:1px solid rgba(213,42,36,.55)}
.tvboard .tv-pool{font-size:clamp(25px,2.65vw,48px)}
.tvboard .tv-payout{padding:.28vh 0;font-size:clamp(10px,.82vw,15px)}
.tvboard .tv-levels{flex:1;min-height:0;overflow:hidden}
.tvboard .tv-level-row{padding:.28vh .3vw;font-size:clamp(9px,.72vw,13px)}
.tvboard .tv-footer{font-size:clamp(8px,.64vw,12px);line-height:1;padding:.18vh 0 .05vh}
@media(max-width:1000px) and (orientation:landscape){
  .tv .live.tvboard{width:91vw;max-width:91vw;height:96vh;max-height:96vh;margin:1.4vh auto 0}
  .tvboard .tv-main{grid-template-columns:minmax(150px,.68fr) minmax(0,2.7fr) minmax(170px,.75fr)}
  .tvboard .tv-clock{font-size:10.7vw}
  .tvboard .tv-blinds{font-size:7vw}
}
#wake-lock-status{display:none!important}

/* V2.12 TV spacing polish: distribute side-panel content and add left dividers. */
.tvboard .tv-left-panel{
  display:flex;
  flex-direction:column;
  min-height:0;
}
.tvboard .tv-left-panel .tv-stat{
  flex:1 1 0;
  min-height:0;
  display:flex;
  flex-direction:column;
  justify-content:center;
  padding:.55vh .25vw;
  border-bottom:1px solid rgba(213,42,36,.58);
}
.tvboard .tv-left-panel .tv-stat:last-child{border-bottom:0}
.tvboard .tv-left-panel .tv-stat span{margin-bottom:.18vh}

.tvboard .tv-right-panel{
  display:grid;
  grid-template-rows:auto auto auto auto auto minmax(0,1fr);
  align-content:stretch;
}
.tvboard .tv-right-panel > .tv-panel-title:first-child{
  align-self:end;
}
.tvboard .tv-right-panel .tv-pool{
  padding:.35vh 0 .75vh;
  align-self:start;
}
.tvboard .tv-right-panel .tv-section-title{
  margin-top:0;
  padding-top:.75vh;
  padding-bottom:.35vh;
  border-top:1px solid rgba(213,42,36,.58);
}
.tvboard #tvPayouts{
  padding:.15vh 0 .65vh;
}
.tvboard .tv-levels{
  height:100%;
  min-height:0;
  display:flex;
  flex-direction:column;
  justify-content:space-evenly;
}
.tvboard .tv-level-row{
  flex:0 0 auto;
}

/* V2.14: V2.12 dimensions preserved exactly. Only future-level rows and panel paint change. */
.tvboard .tv-left-panel,
.tvboard .tv-right-panel{
  background-image:
    radial-gradient(ellipse at 50% 48%,rgba(118,22,18,.58) 0%,rgba(70,11,9,.48) 46%,rgba(20,4,4,.96) 100%),
    linear-gradient(180deg,rgba(116,18,15,.40) 0%,rgba(48,7,6,.72) 55%,rgba(19,3,3,.96) 100%);
  background-size:cover,cover;
  background-position:center,center;
  background-repeat:no-repeat,no-repeat;
}
.tvboard .tv-levels{
  justify-content:flex-start;
  overflow:hidden;
  padding-top:.18vh;
}
.tvboard .tv-level-row{
  flex:0 0 auto;
  padding:.30vh .35vw;
  min-height:0;
  font-size:clamp(9px,.72vw,13px);
  line-height:1.15;
  border-bottom:1px solid rgba(213,42,36,.34);
}
.tvboard .tv-level-row:last-child{border-bottom:0}
.tvboard .tv-level-row.upcoming{color:#e6e8e9}
.tvboard .tv-level-row.breakrow{color:#d9b8f1}
.tvboard .tv-level-row.finalrow{color:#8e969a}

/* V2.15: keep break status text fully visible without changing the V2.14 layout. */
.tvboard .tv-blinds.tv-break-message{
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  padding:0 .5vw;
  font-size:clamp(24px,3.35vw,58px);
  line-height:1;
  white-space:nowrap;
  overflow:visible;
  letter-spacing:.015em;
}
@media(max-width:1000px) and (orientation:landscape){
  .tvboard .tv-blinds.tv-break-message{font-size:4.2vw}
}

/* Membership Dev v0.2 */
.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mode-card{display:grid!important;grid-template-columns:auto 1fr;column-gap:10px;align-items:start;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--card);cursor:pointer}.mode-card input{width:auto!important;grid-row:1/3;margin-top:4px}.mode-card b{color:var(--text);font-size:18px}.mode-card span{color:var(--muted)}.roster-form{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.member-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:14px}.invite-box{display:grid;grid-template-columns:180px 1fr;gap:14px;align-items:end;margin:12px 0}.invite-box strong{font-size:28px;letter-spacing:.12em;display:block}.invite-link input,.grow-input,select{width:100%;background:#0b1913;border:1px solid var(--line);color:var(--text);padding:12px;border-radius:10px;font-size:16px}.invite-link{min-width:0}.invite-link .label{margin-bottom:5px}.grow-input{flex:1;min-width:180px}.form small{color:var(--muted)}@media(max-width:700px){.mode-grid,.member-grid,.invite-box,.roster-form{grid-template-columns:1fr}}

/* Membership Dev v0.3 - named rebuy/add-on transactions */
.tx-overlay{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.78);display:flex;align-items:center;justify-content:center;padding:18px}.tx-dialog{width:min(560px,100%);max-height:85vh;overflow:auto}.tx-player-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.tx-player{min-height:52px;font-size:17px}.tx-player.unassigned{grid-column:1/-1;border-style:dashed}.named-counter>span:nth-child(2){min-width:38px}@media(max-width:600px){.tx-player-list{grid-template-columns:1fr}.tx-player.unassigned{grid-column:auto}}

/* Membership Dev v0.7 */
.payout-settings,.theme-settings{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.payout-inputs{display:grid;grid-template-columns:repeat(5,minmax(100px,1fr));gap:10px;margin-top:12px}.payout-inputs label{display:grid;gap:5px}.payout-total{margin-top:10px;font-weight:800;color:var(--muted)}.payout-total.good{color:#77db8a}.payout-total.bad{color:#ff7a72}.theme-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.theme-choice{padding:8px;border:2px solid var(--line);border-radius:12px;background:#0b0f10;color:var(--text);cursor:pointer}.theme-choice.selected{border-color:#fff}.theme-choice span{display:block;height:42px;border-radius:8px;margin-bottom:6px}.theme-classic-red span{background:radial-gradient(circle,#741612,#210807 60%,#100504)}.theme-midnight-blue span{background:radial-gradient(circle,#173f74,#071b38 60%,#030a15)}.theme-poker-green span{background:radial-gradient(circle,#17623d,#09291d 60%,#03120d)}.theme-royal-purple span{background:radial-gradient(circle,#592276,#240d38 60%,#100518)}.theme-charcoal span{background:radial-gradient(circle,#4b5155,#1c2023 60%,#090b0c)}.theme-gold span{background:radial-gradient(circle,#80611b,#332407 60%,#130e03)}.structure-moves{justify-content:flex-end}.finish-badge{padding:9px 11px;border:1px solid var(--line);border-radius:10px;color:#f1cf70;white-space:nowrap}
@media(max-width:800px){.payout-inputs{grid-template-columns:repeat(2,1fr)}.theme-choices{grid-template-columns:repeat(2,1fr)}}
/* TV theme presets: layout dimensions intentionally unchanged. */
.tv.theme-midnight-blue .tvboard .tv-panel,.tv.theme-midnight-blue .tvboard .tv-center,.tv.theme-midnight-blue .tvboard .tv-left-panel,.tv.theme-midnight-blue .tvboard .tv-right-panel{background-image:radial-gradient(ellipse at 50% 48%,rgba(22,64,118,.62),rgba(7,27,56,.62) 48%,rgba(3,10,21,.97)),linear-gradient(180deg,rgba(20,57,110,.4),rgba(3,12,29,.9))}.tv.theme-midnight-blue .tvboard .tv-panel,.tv.theme-midnight-blue .tvboard .tv-center{border-color:#3984dc}
.tv.theme-poker-green .tvboard .tv-panel,.tv.theme-poker-green .tvboard .tv-center,.tv.theme-poker-green .tvboard .tv-left-panel,.tv.theme-poker-green .tvboard .tv-right-panel{background-image:radial-gradient(ellipse at 50% 48%,rgba(23,98,61,.62),rgba(9,41,29,.62) 48%,rgba(3,18,13,.97)),linear-gradient(180deg,rgba(20,92,56,.4),rgba(3,25,17,.9))}.tv.theme-poker-green .tvboard .tv-panel,.tv.theme-poker-green .tvboard .tv-center{border-color:#36b77a}
.tv.theme-royal-purple .tvboard .tv-panel,.tv.theme-royal-purple .tvboard .tv-center,.tv.theme-royal-purple .tvboard .tv-left-panel,.tv.theme-royal-purple .tvboard .tv-right-panel{background-image:radial-gradient(ellipse at 50% 48%,rgba(89,34,118,.62),rgba(36,13,56,.62) 48%,rgba(16,5,24,.97)),linear-gradient(180deg,rgba(86,29,116,.4),rgba(22,6,34,.9))}.tv.theme-royal-purple .tvboard .tv-panel,.tv.theme-royal-purple .tvboard .tv-center{border-color:#a45bd2}
.tv.theme-charcoal .tvboard .tv-panel,.tv.theme-charcoal .tvboard .tv-center,.tv.theme-charcoal .tvboard .tv-left-panel,.tv.theme-charcoal .tvboard .tv-right-panel{background-image:radial-gradient(ellipse at 50% 48%,rgba(75,81,85,.58),rgba(28,32,35,.66) 48%,rgba(9,11,12,.98)),linear-gradient(180deg,rgba(65,70,74,.38),rgba(10,12,13,.92))}.tv.theme-charcoal .tvboard .tv-panel,.tv.theme-charcoal .tvboard .tv-center{border-color:#7f898f}
.tv.theme-gold .tvboard .tv-panel,.tv.theme-gold .tvboard .tv-center,.tv.theme-gold .tvboard .tv-left-panel,.tv.theme-gold .tvboard .tv-right-panel{background-image:radial-gradient(ellipse at 50% 48%,rgba(128,97,27,.6),rgba(51,36,7,.65) 48%,rgba(19,14,3,.98)),linear-gradient(180deg,rgba(119,86,20,.4),rgba(25,17,3,.92))}.tv.theme-gold .tvboard .tv-panel,.tv.theme-gold .tvboard .tv-center{border-color:#c59a32}

/* Membership Dev v0.8 */
.tvboard .tv-center{justify-content:flex-start;gap:.35vh}.tvboard .tv-clockbox{margin-top:-.2vh;width:90%}.tvboard .tv-clock{font-size:clamp(82px,11.2vw,190px);line-height:.9}.tvboard .tv-next{width:88%;padding:.65vh .8vw;font-size:clamp(15px,1.28vw,24px)}.tvboard .tv-next b{font-size:1.35em}.tv-chips{display:flex;justify-content:center;align-items:center;gap:.55vw;min-height:5.8vh;flex-wrap:nowrap;width:96%}.casino-chip{--chip:#777;width:clamp(42px,4.2vw,72px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:repeating-conic-gradient(from 0deg,#eee 0 8deg,var(--chip) 8deg 37deg,#eee 37deg 45deg);border:2px solid rgba(255,255,255,.7);box-shadow:0 2px 7px #000,inset 0 0 0 5px var(--chip),inset 0 0 0 8px rgba(255,255,255,.75)}.casino-chip span{width:66%;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:var(--chip);border:2px solid rgba(255,255,255,.72);font-weight:950;font-size:clamp(9px,.75vw,14px);color:#fff;text-shadow:0 1px 2px #000}.casino-chip.chip-white span,.casino-chip.chip-yellow span{color:#111;text-shadow:none}.chip-settings{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.chip-inputs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.chip-inputs label{display:grid;grid-template-columns:24px 1fr;gap:7px;align-items:center}.chip-inputs input{grid-column:1/-1}.chip-swatch{width:22px;height:22px;border-radius:50%;border:2px solid #aaa}.chip-white{background:#eee}.chip-red{background:#b51e24}.chip-blue{background:#205bb8}.chip-green{background:#16804b}.chip-black{background:#111}.chip-purple{background:#6d3294}.chip-yellow{background:#e0b51e}.chip-orange{background:#d86d19}@media(max-width:800px){.chip-inputs{grid-template-columns:repeat(2,1fr)}}

/* Membership Dev v0.9 usability */
input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]),select,textarea,.app-input{width:100%;box-sizing:border-box;background:#0b1411;color:#f4f4f4;border:1px solid #46504c;border-radius:8px;padding:10px 11px;font:inherit;min-height:42px}
input:focus,select:focus,textarea:focus{outline:2px solid rgba(213,42,36,.45);border-color:#d52a24}
.payout-inputs,.chip-inputs{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:12px}.payout-inputs label,.chip-inputs label{display:flex;flex-direction:column;gap:6px;min-width:0}.chip-inputs label{position:relative;padding-left:30px}.chip-inputs .chip-swatch{position:absolute;left:0;top:2px}.chip-inputs input{grid-column:auto}
.app-modal{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.76);display:grid;place-items:center;padding:18px}.app-modal.hidden{display:none}.app-modal-card{width:min(560px,94vw);max-height:82vh;overflow:auto;background:#111a17;border:1px solid #48514d;border-radius:14px;padding:18px;box-shadow:0 20px 70px #000}.player-choice-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.player-choice{min-height:50px;font-size:1.05rem}
.settle-grid{display:grid;gap:10px;margin:16px 0}.settle-player{display:grid;grid-template-columns:minmax(130px,1fr) 110px 150px;gap:12px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:10px}.settle-player label{display:flex;flex-direction:column;gap:5px}
.results-table{display:grid;gap:2px}.results-head,.results-row{display:grid;grid-template-columns:2fr 1fr 1fr .8fr .8fr;gap:10px;align-items:center;padding:10px}.results-head{border-bottom:1px solid var(--line)}.results-row{background:rgba(255,255,255,.025);border-radius:6px}
.tvboard .tv-center{justify-content:flex-start!important;gap:.2vh!important;padding-top:.35vh!important}.tvboard .tv-clockbox{margin-top:-.8vh!important;width:94%!important;padding:.05vh .4vw!important}.tvboard .tv-clock{font-size:clamp(92px,12.3vw,205px)!important;line-height:.86!important}.tvboard .tv-next{width:92%!important;padding:.7vh .8vw!important;font-size:clamp(17px,1.48vw,27px)!important}.tvboard .tv-next b{font-size:1.45em!important}.tvboard .tv-right-panel .tv-panel-title{font-size:clamp(14px,1.15vw,21px)!important}.tvboard .tv-right-panel .tv-pool{font-size:clamp(28px,3.0vw,52px)!important}.tvboard #tvPayouts .tv-payout{font-size:clamp(13px,1.02vw,19px)!important}.tvboard .tv-level-row{font-size:clamp(11px,.88vw,16px)!important;padding:.38vh .35vw!important}
@media(max-width:700px){.settle-player{grid-template-columns:1fr 1fr}.settle-player>strong{grid-column:1/-1}.results-head,.results-row{grid-template-columns:1.6fr .7fr .9fr}.results-head>*:nth-child(n+4),.results-row>*:nth-child(n+4){display:none}}

/* v0.10 */
.settings-grid input,.settings-grid select,.settings-grid textarea,.card input[type="number"],.card input[type="text"],.card select{width:100%!important;box-sizing:border-box;background:#101916!important;color:#f7f7f7!important;border:1px solid #55605b!important;border-radius:9px!important;padding:10px 12px!important;min-height:44px!important;font:inherit!important}
.chip-inputs{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:12px!important}.chip-inputs label{display:flex!important;flex-direction:column!important;gap:6px!important;padding:0!important;min-width:0}.chip-inputs .chip-swatch{position:static!important}.chip-inputs input{grid-column:auto!important;width:100%!important}
.tvboard .tv-center{padding-top:0!important;justify-content:flex-start!important}.tvboard .tv-clockbox{transform:translateY(-1.8vh)!important;margin-bottom:-1.5vh!important}.tvboard .tv-clock{font-size:clamp(100px,13vw,220px)!important;line-height:.82!important}.tvboard .tv-next{font-size:clamp(20px,1.75vw,31px)!important;min-height:8vh!important}.tvboard .tv-next b{font-size:1.55em!important}.tvboard .tv-right-panel .tv-panel-title{font-size:clamp(17px,1.35vw,24px)!important}.tvboard .tv-right-panel .tv-pool{font-size:clamp(32px,3.4vw,58px)!important}.tvboard #tvPayouts .tv-payout,.tvboard .tv-level-row{font-size:clamp(14px,1.08vw,20px)!important}.tv-chips{justify-content:flex-start!important;padding-left:.8vw!important}.casino-chip{flex:0 0 auto!important;width:clamp(48px,4.7vw,78px)!important}
@media(max-width:800px){.chip-inputs{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* v0.11 TV layout */
body.tv-page{margin:0;overflow:hidden;background:#050a0e}
.tv11{width:100vw;height:100vh;overflow:hidden;background:var(--tv11-bg,#071019)!important;color:#fff}
.tv11-grid{width:100%;height:100%;box-sizing:border-box;padding:1vh .8vw;display:grid;grid-template-columns:27% 45% 28%;gap:.8vw}
.tv11-left,.tv11-center,.tv11-right{min-width:0;min-height:0;display:flex;flex-direction:column;gap:.8vh}
.tv11-box,.tv11-stat,.tv11-statblock,.tv11-title,.tv11-level,.tv11-clockbox,.tv11-current{box-sizing:border-box;border:2px solid #74808a;border-radius:12px;background:rgba(2,8,13,.88);box-shadow:inset 0 0 16px rgba(0,0,0,.4)}
.tv11-players{height:18vh;border-color:#e5c328;text-align:center;padding:.7vh .5vw}.tv11-label,.tv11-section-title{font-size:clamp(16px,1.55vw,29px);font-weight:900}.tv11-gold{font-size:clamp(55px,6.8vw,112px);line-height:1;font-weight:950;color:#ffd936}
.tv11-stat{height:8.5vh;padding:0 1.2vw;display:flex;align-items:center;justify-content:space-between;font-size:clamp(15px,1.4vw,26px);font-weight:900}.tv11-stat b{font-size:1.45em}
.tv11-levels{flex:1;border-color:#1597ea;overflow:hidden}.tv11-section-title{padding:.8vh .8vw;border-bottom:1px solid #52606a}.tv11-levelrow{min-height:5.1vh;padding:.3vh .7vw;display:grid;grid-template-columns:1fr 1.15fr .9fr;gap:.2vw;align-items:center;border-bottom:1px solid #35414a;font-size:clamp(11px,.98vw,18px)}.tv11-levelrow strong{color:#ffd52d}.tv11-breakrow{background:rgba(160,30,30,.18)}
.tv11-title{height:8.7vh;border-color:#e52c36;display:flex;align-items:center;justify-content:center;text-align:center;font-size:clamp(25px,2.45vw,45px);font-weight:950;background:linear-gradient(180deg,rgba(65,0,0,.9),rgba(24,0,0,.9))}
.tv11-level{height:9.2vh;border-color:#e52c36;display:flex;align-items:center;justify-content:center;font-size:clamp(31px,3.55vw,64px);font-weight:950;background:linear-gradient(180deg,#900909,#490000)}
.tv11-clockbox{height:27vh;border-color:#e52c36;display:flex;align-items:center;justify-content:center;position:relative;background:radial-gradient(circle,#790b0b,#260000 76%)}.tv11-clock{font-size:clamp(88px,10.1vw,180px);font-weight:950;line-height:.82;letter-spacing:-.05em;text-shadow:0 4px 4px #000}.tv11-warning{position:absolute;bottom:.55vh;color:#ffd52d;font-size:clamp(11px,.9vw,17px);font-weight:900}
.tv11-current{height:20.5vh;border-color:#1597ea;text-align:center;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(180deg,#0c4e8c,#052a4e)}.tv11-current-label{font-size:clamp(18px,1.7vw,31px);font-weight:950}.tv11-current-blinds{font-size:clamp(49px,5.55vw,99px);font-weight:950;line-height:.96}.tv11-current-ante{font-size:clamp(18px,1.8vw,32px);font-weight:950}.tv11-break-message{font-size:clamp(28px,3vw,52px)!important}
.tv11-chips{flex:1;min-height:10vh;display:flex;justify-content:center;align-items:center;gap:clamp(8px,.75vw,16px);overflow:hidden}.tv11-chipitem{flex:0 0 clamp(54px,5vw,86px);width:clamp(54px,5vw,86px);text-align:center}.tv11-chipitem b{display:block;margin-top:.15vh;font-size:clamp(11px,.95vw,18px)}
.tv11-chip{box-sizing:border-box;width:clamp(48px,4.45vw,76px)!important;height:clamp(48px,4.45vw,76px)!important;min-width:clamp(48px,4.45vw,76px)!important;min-height:clamp(48px,4.45vw,76px)!important;max-width:clamp(48px,4.45vw,76px)!important;max-height:clamp(48px,4.45vw,76px)!important;margin:0 auto;border-radius:50%!important;aspect-ratio:1/1!important;background:repeating-conic-gradient(from 0deg,#fff 0 8deg,var(--chip) 8deg 37deg,#fff 37deg 45deg)!important;border:2px solid #ddd;box-shadow:0 2px 6px #000,inset 0 0 0 5px var(--chip),inset 0 0 0 8px rgba(255,255,255,.78);position:relative}.tv11-chip:after{content:"";position:absolute;inset:26%;border-radius:50%;background:var(--chip);border:2px dashed rgba(255,255,255,.78)}
.tv11-next{height:20vh;border-color:#1597ea;text-align:center;padding:.6vh .4vw}.tv11-next-blinds{font-size:clamp(36px,4.05vw,72px);font-weight:950;line-height:1}.tv11-next-ante{font-size:clamp(18px,1.7vw,31px);font-weight:950}
.tv11-statblock{height:11.3vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.tv11-statblock span{font-size:clamp(14px,1.25vw,23px);font-weight:900}.tv11-statblock b{font-size:clamp(25px,2.5vw,45px);line-height:1.05}.tv11-money{color:#2cff45!important}
.tv11-payouts{flex:1;border-color:#e5c328;overflow:hidden}.tv11-pay{display:grid;grid-template-columns:.75fr 1fr .7fr;align-items:center;gap:.2vw;min-height:4.3vh;padding:.2vh .8vw;border-bottom:1px solid #35414a;font-size:clamp(11px,1vw,19px)}.tv11-pay strong{color:#ffd52d}.tv11-pay span{text-align:right}.tv11-empty{padding:1vh;color:#aeb7bc}
body[data-tv-theme="classic-red"] .tv11{--tv11-bg:#071019}body[data-tv-theme="blue"] .tv11{--tv11-bg:#07162b}body[data-tv-theme="green"] .tv11{--tv11-bg:#071c14}body[data-tv-theme="purple"] .tv11{--tv11-bg:#170d24}body[data-tv-theme="black"] .tv11{--tv11-bg:#050505}body[data-tv-theme="burgundy"] .tv11{--tv11-bg:#26090e}body[data-tv-theme="slate"] .tv11{--tv11-bg:#172027}
@media(max-width:1000px){.tv11-grid{grid-template-columns:26% 46% 28%;gap:.5vw;padding:.65vh .45vw}.tv11-left,.tv11-center,.tv11-right{gap:.55vh}.tv11-chipitem{flex-basis:48px;width:48px}.tv11-chip{width:43px!important;height:43px!important;min-width:43px!important;min-height:43px!important;max-width:43px!important;max-height:43px!important}}

/* v0.12: original TV design + newer casino-chip display */
.tvboard .tv-chips{
  display:flex!important;
  justify-content:center!important;
  align-items:center!important;
  gap:clamp(8px,.8vw,16px)!important;
  width:96%!important;
  min-height:7vh!important;
  padding-left:0!important;
  overflow:hidden!important;
}
.original-chip-item{
  flex:0 0 clamp(54px,5vw,86px);
  width:clamp(54px,5vw,86px);
  text-align:center;
}
.original-chip-item b{
  display:block;
  margin-top:3px;
  font-size:clamp(11px,.95vw,18px);
  line-height:1;
  color:#fff;
  white-space:nowrap;
}
.original-chip{
  box-sizing:border-box;
  width:clamp(48px,4.45vw,76px);
  height:clamp(48px,4.45vw,76px);
  margin:0 auto;
  border-radius:50%;
  background:repeating-conic-gradient(from 0deg,#fff 0 8deg,var(--chip) 8deg 37deg,#fff 37deg 45deg);
  border:2px solid #ddd;
  box-shadow:0 2px 6px #000,inset 0 0 0 5px var(--chip),inset 0 0 0 8px rgba(255,255,255,.78);
  position:relative;
}
.original-chip:after{
  content:"";
  position:absolute;
  inset:26%;
  border-radius:50%;
  background:var(--chip);
  border:2px dashed rgba(255,255,255,.78);
}
@media(max-width:800px){
  .original-chip-item{flex-basis:48px;width:48px}
  .original-chip{width:43px;height:43px}
  .original-chip-item b{font-size:10px}
}

/* v0.12.2 - proven TV chip visibility fix only */
.tvboard .tv-chips{
  display:flex!important;
  visibility:visible!important;
  opacity:1!important;
  position:relative!important;
  z-index:5!important;
  flex-wrap:nowrap!important;
  justify-content:center!important;
  align-items:center!important;
  gap:10px!important;
  min-height:74px!important;
  overflow:visible!important;
}
.tvboard .original-chip-item{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  flex:0 0 66px!important;
  width:66px!important;
}
.tvboard .original-chip{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:56px!important;
  height:56px!important;
  min-width:56px!important;
  min-height:56px!important;
  border-radius:50%!important;
}
.tvboard .original-chip-item b{
  display:block!important;
  color:#fff!important;
  font-size:13px!important;
  text-align:center!important;
}

/* v0.12.3 fullscreen fit correction only.
   Keep the v0.12.2 TV design; make the board fit inside the visible viewport. */
body.tv-page,
body:has(.tvboard){
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  height:100vh!important;
  height:100dvh!important;
}
.tvboard{
  box-sizing:border-box!important;
  height:100vh!important;
  height:100dvh!important;
  max-height:100vh!important;
  max-height:100dvh!important;
  min-height:0!important;
  padding-top:4px!important;
  padding-bottom:8px!important;
  overflow:hidden!important;
}
.tvboard .tv-side,
.tvboard .tv-main{
  min-height:0!important;
  max-height:100%!important;
  box-sizing:border-box!important;
}
.tvboard .tv-side > *,
.tvboard .tv-main > *{
  min-height:0;
}
/* Allow the flexible lower areas to give up a little height instead of being clipped. */
.tvboard .tv-nextlevels,
.tvboard .tv-payouts,
.tvboard .tv-chips{
  min-height:0!important;
}
@supports not (height: 100dvh){
  body.tv-page,
  body:has(.tvboard),
  .tvboard{
    height:100vh!important;
    max-height:100vh!important;
  }
}

/* v0.12.4 center-column polish only.
   Keep the v0.12.3 layout and make better use of the available middle-column height. */
.tvboard .tv-main{
  box-sizing:border-box!important;
  padding-top:1.2vh!important;
  padding-bottom:.7vh!important;
}

/* Add breathing room between the middle sections without increasing total board height. */
.tvboard .tv-main > *{
  margin-top:.35vh;
  margin-bottom:.35vh;
}
.tvboard .tv-main > *:first-child{
  margin-top:.8vh!important;
}

/* Keep the footer saying inside the center panel and visible in fullscreen. */
.tvboard .tv-footer,
.tvboard .tv-tagline,
.tvboard .tv-saying{
  position:static!important;
  box-sizing:border-box!important;
  width:96%!important;
  max-width:96%!important;
  margin:.7vh auto .2vh!important;
  padding:.45vh .5vw!important;
  flex:0 0 auto!important;
  text-align:center!important;
  line-height:1.15!important;
  overflow:hidden!important;
}

/* If the phrase is plain text at the end of the center panel, reserve bottom room for it. */
.tvboard .tv-main{
  justify-content:flex-start!important;
}

/* v0.12.5 - actual center-panel spacing fix.
   The phrase now lives INSIDE .tv-center in the generated markup. */
.tvboard .tv-center{
  box-sizing:border-box!important;
  padding-top:1.8vh!important;
  padding-bottom:.7vh!important;
  justify-content:flex-start!important;
  gap:0!important;
}
.tvboard .tv-center > div{
  flex-shrink:0;
}

/* More air after Level / Blinds heading and between each center item. */
.tvboard .tv-center > div:first-child{
  margin-top:.8vh!important;
  margin-bottom:1.1vh!important;
}
.tvboard .tv-blinds{
  margin-bottom:.8vh!important;
}
.tvboard .tv-ante{
  margin-bottom:1vh!important;
}
.tvboard .tv-clockbox{
  margin-bottom:1.1vh!important;
}
.tvboard .tv-next{
  margin-bottom:1vh!important;
}
.tvboard .tv-chips{
  margin-top:.4vh!important;
  margin-bottom:.7vh!important;
}

/* The requested phrase is now the final item INSIDE the middle box. */
.tvboard .tv-center-footer{
  width:94%!important;
  box-sizing:border-box!important;
  margin:auto auto .25vh!important;
  padding:.45vh .5vw!important;
  text-align:center!important;
  color:#6f777c!important;
  letter-spacing:.12em!important;
  font-size:clamp(9px,.78vw,14px)!important;
  line-height:1.1!important;
  white-space:nowrap!important;
  overflow:hidden!important;
}

/* Remove the obsolete page-level footer space from the old design. */
.tvboard > .tv-footer{
  display:none!important;
}

/* v0.12.6 small TV fit cleanup only */

/* Keep the side panels/boxes fully inside the fullscreen board. */
.tvboard{
  padding-bottom:14px!important;
}
.tvboard .tv-side{
  box-sizing:border-box!important;
  height:calc(100% - 6px)!important;
  max-height:calc(100% - 6px)!important;
  overflow:hidden!important;
}
.tvboard .tv-panel{
  box-sizing:border-box!important;
  max-height:100%!important;
  overflow:hidden!important;
}

/* Total Rebuys / Total Addons: slightly smaller so each stays on one line. */
.tvboard .tv-stat span{
  white-space:nowrap!important;
}
.tvboard .tv-stat:has(#tvTotalRebuys) span,
.tvboard .tv-stat:has(#tvTotalAddons) span{
  font-size:clamp(10px,.9vw,17px)!important;
  letter-spacing:0!important;
}
.tvboard #tvTotalRebuys,
.tvboard #tvTotalAddons{
  font-size:clamp(15px,1.3vw,24px)!important;
}

/* v0.13 phone-only TV fit: preserve desktop/TV design */
@media (max-width: 700px){
  .tvboard .tv-center{padding-top:.7vh!important;padding-bottom:.25vh!important}
  .tvboard .tv-center > div{margin-top:.12vh!important;margin-bottom:.12vh!important}
  .tvboard .tv-chips{margin-top:.1vh!important;margin-bottom:.15vh!important;min-height:0!important}
  .tvboard .original-chip{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important}
  .tvboard .original-chip-item{width:43px!important;flex-basis:43px!important}
  .tvboard .original-chip-item b{font-size:9px!important;line-height:1!important;margin-top:1px!important}
  .tvboard .tv-center-footer{margin-top:auto!important;padding:.15vh .3vw!important}
}

.table-move-popup{display:none;position:absolute;left:8%;right:8%;top:38%;z-index:50;padding:24px;border:4px solid #f3d36a;border-radius:18px;background:#090f14;color:#fff;text-align:center;font-size:clamp(24px,4vw,70px);font-weight:900;box-shadow:0 10px 40px #000}.table-move-popup.show{display:block}@media(max-width:700px){.table-move-popup{font-size:20px;padding:14px}}


/* v0.16 TV pregame welcome */
.pregame-tv{min-height:100vh;box-sizing:border-box;padding:4vh 5vw;text-align:center;display:flex;flex-direction:column;justify-content:center;background:radial-gradient(circle at center,rgba(24,92,55,.75),rgba(4,15,10,.98));overflow:hidden}.pregame-tv h1{font-size:clamp(42px,6vw,92px);margin:.15em 0}.pregame-suits{font-size:clamp(28px,4vw,60px);letter-spacing:.4em}.pregame-count{font-size:clamp(24px,3vw,46px);font-weight:800;margin-bottom:2vh}.pregame-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.2vh 1.2vw;max-width:1500px;width:100%;margin:0 auto}.pregame-player{padding:1.2vh 1vw;border:1px solid rgba(255,255,255,.2);border-radius:14px;background:rgba(0,0,0,.3)}.pregame-player b{display:block;font-size:clamp(20px,2.2vw,36px)}.pregame-player span{font-size:clamp(13px,1.2vw,20px);opacity:.8}.pregame-footer{margin-top:3vh;font-size:clamp(18px,1.8vw,30px);font-weight:700}.pregame-empty{grid-column:1/-1;font-size:clamp(22px,2.5vw,40px);padding:4vh}

/* v0.16.1 scrolling pregame roster */
.pregame-tv{height:100vh;min-height:0!important;justify-content:flex-start!important}
.pregame-list-window{flex:1;min-height:0;overflow:hidden;width:100%;max-width:1500px;margin:0 auto}
.pregame-list-window .pregame-grid{padding-bottom:3vh}

/* v0.16.2 */
.seating-simple{max-width:1000px;margin:22px auto}.seat-table-block{margin:22px 0 32px}.seat-table-block h3{font-size:1.6rem;margin:0 0 10px;padding-bottom:7px;border-bottom:2px solid currentColor}.seat-list{display:flex;flex-direction:column;gap:4px}.seat-line{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:8px 10px;border-bottom:1px solid rgba(255,255,255,.12);font-size:1.12rem}.seat-line em{font-style:normal;font-weight:700}.pregame-list-window{overflow:hidden!important}.pregame-list-window .pregame-grid{will-change:transform;transition:none!important}.tv-seating-screen{height:100vh;box-sizing:border-box;overflow:hidden;padding:2vh 3vw;display:flex;flex-direction:column;text-align:center}.tv-seating-screen>h1{margin:.3vh 0 1vh}.tv-seat-grid{flex:1;min-height:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.4vw;align-content:start;overflow:hidden}.tv-seat-table{border:2px solid rgba(255,255,255,.32);border-radius:14px;padding:10px 14px;text-align:left}.tv-seat-table h2{text-align:center;margin:0 0 8px;font-size:clamp(22px,2.2vw,38px)}.tv-seat-line{display:grid;grid-template-columns:minmax(72px,30%) 1fr;gap:8px;padding:4px 2px;border-bottom:1px solid rgba(255,255,255,.15);font-size:clamp(17px,1.55vw,28px)}.tv-seat-line em{font-style:normal;font-weight:700}

/* v0.16.2-scrollfix3: one-list scrolling with position preserved across live refreshes */
.pregame-list-window,.tv-seat-window{flex:1;min-height:0;width:100%;overflow:hidden!important}
.pregame-list-window .pregame-grid,.tv-seat-window .tv-seat-grid{
  height:max-content!important;
  max-height:none!important;
  overflow:visible!important;
  will-change:transform;
  transition:none!important;
}

/* v0.16.4 compact pregame TV roster */
.compact-pregame{height:100vh;min-height:0;overflow:hidden}
.pregame-columns{flex:1;min-height:0;width:100%;max-width:1500px;margin:0 auto;display:grid;grid-auto-flow:column;grid-template-rows:repeat(12,minmax(0,1fr));grid-auto-columns:minmax(210px,1fr);gap:3px 18px;align-content:stretch;overflow:hidden}
.pregame-name-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 8px;border-bottom:1px solid rgba(255,255,255,.14);font-size:clamp(15px,1.45vw,24px);white-space:nowrap}
.pregame-name-row b{overflow:hidden;text-overflow:ellipsis}.pregame-name-row span{font-size:.78em;opacity:.85}
.table-settings{margin-top:18px;padding-top:14px;border-top:1px solid rgba(255,255,255,.12)}

/* v0.16.5 tighter pregame roster */
.pregame-columns{
  grid-auto-columns:max-content!important;
  justify-content:center;
  column-gap:34px!important;
}
.pregame-name-row{
  justify-content:flex-start!important;
  gap:7px!important;
  padding:2px 4px!important;
  min-width:0!important;
}
.pregame-name-row b{overflow:visible!important;text-overflow:clip!important}
.pregame-name-row span{margin-left:0!important}

/* v0.16.6 pregame roster sized for up to 50 players */
.compact-pregame{
  height:100vh!important;
  min-height:0!important;
  box-sizing:border-box;
  overflow:hidden!important;
  padding-bottom:1vh!important;
}
.compact-pregame .pregame-suits{margin-bottom:.15vh!important}
.compact-pregame .label{margin-top:0!important;margin-bottom:.1vh!important}
.compact-pregame h1{margin:.15vh 0 .25vh!important}
.compact-pregame .pregame-count{margin:.1vh 0 .55vh!important}
.pregame-columns{
  flex:1!important;
  min-height:0!important;
  width:96%!important;
  max-width:none!important;
  margin:0 auto!important;
  display:grid!important;
  grid-auto-flow:column!important;
  grid-template-rows:repeat(10,minmax(0,1fr))!important;
  grid-auto-columns:minmax(0,1fr)!important;
  grid-template-columns:repeat(5,minmax(0,1fr))!important;
  gap:1px 12px!important;
  align-content:stretch!important;
  overflow:hidden!important;
}
.pregame-name-row{
  min-width:0!important;
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:3px!important;
  padding:0 3px!important;
  border-bottom:1px solid rgba(255,255,255,.12)!important;
  font-size:clamp(12px,1.12vw,18px)!important;
  line-height:1.05!important;
  white-space:nowrap!important;
}
.pregame-name-row b{
  min-width:0!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.pregame-name-row span{
  flex:0 0 auto!important;
  margin:0!important;
  font-size:.82em!important;
  opacity:.88!important;
}
.compact-pregame .pregame-footer{
  flex:0 0 auto!important;
  margin-top:.55vh!important;
  padding-top:.25vh!important;
  font-size:clamp(13px,1.2vw,20px)!important;
}

/* v0.17.1 live table testing + move notices */
.admin-live-tables{margin-top:14px}
.admin-table-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.admin-table-box{padding:10px;border:1px solid rgba(255,255,255,.16);border-radius:10px}
.admin-table-box>div{padding:3px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.admin-move-notice{display:none;position:fixed;z-index:99999;left:50%;top:50%;transform:translate(-50%,-50%);width:min(620px,92vw);max-height:82vh;overflow:auto;background:#111;border:2px solid #d8b34c;border-radius:14px;padding:22px;box-shadow:0 20px 70px #000}
.admin-move-notice.show{display:block}
.admin-move-notice h2{margin-top:0}
.admin-move-notice button{width:100%;padding:12px;font-weight:700}
.table-move-popup.show span{display:block;margin-top:8px}

/* v0.17.2 move notice below the clock */
.tv .table-move-popup.show{
  top:auto!important;
  bottom:2.5vh!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  max-height:26vh!important;
  overflow:auto!important;
  width:min(78vw,1050px)!important;
  padding:10px 18px!important;
  font-size:clamp(16px,1.65vw,27px)!important;
}

/* v0.17.3 low-memory TV notice placement */
body[data-mode="tv"] .table-move-popup.show{top:auto!important;bottom:2vh!important;left:50%!important;transform:translateX(-50%)!important;max-height:24vh!important;overflow:auto!important}

/* v0.17.5 compact pregame roster: keep at least ten names visible per column */
body[data-mode="tv"] .compact-pregame .pregame-list-window{height:min(58vh,430px)!important;overflow:hidden!important}
body[data-mode="tv"] .compact-pregame .pregame-name-row{
  min-height:0!important;height:auto!important;
  padding:2px 5px!important;margin:0!important;
  line-height:1.08!important;font-size:clamp(13px,1.45vw,22px)!important;
}
body[data-mode="tv"] .compact-pregame .pregame-grid{row-gap:0!important;column-gap:12px!important}

/* v0.17.6 clock vertical safety: preserve center positioning and reserve bottom border */
body[data-mode="tv"] .tv-layout{box-sizing:border-box!important;padding-bottom:10px!important}
body[data-mode="tv"] .tv-center{box-sizing:border-box!important;max-height:calc(100vh - 18px)!important}

/* v0.17.7 TV sound unlock */
.tv-sound-enable{position:fixed;z-index:100000;right:14px;bottom:14px;padding:10px 16px;border-radius:9px;font-weight:800;font-size:16px}

/* v0.18.1 TV center: move only clock and next-level blocks downward */
body[data-mode="tv"] .tv-center .tv-clockbox{position:relative!important;top:28px!important}
body[data-mode="tv"] .tv-center .tv-next{position:relative!important;top:34px!important}

.player-live{border:2px solid rgba(255,255,255,.18)}
.player-live-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.player-live-grid>div,.player-money span{padding:10px;border-radius:10px;background:rgba(255,255,255,.05)}
.player-live-grid span,.player-money span{display:block}.player-live-grid b{display:block;font-size:1.35rem;margin-top:4px}
.player-money{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.player-money span{min-width:115px}.player-money b{display:block}
@media(max-width:650px){.player-live-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.player-money{width:100%}}

/* v0.18.8 tournament-complete TV */
.tv-finish{height:100vh;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4vh 5vw;text-align:center}
.tv-finish-title{font-size:clamp(34px,5vw,78px);font-weight:1000;letter-spacing:.08em}
.tv-finish-name{font-size:clamp(22px,3vw,44px);margin:.3em 0 1em;opacity:.8}
.tv-winners{width:min(1000px,90vw);display:grid;gap:12px}
.tv-winner{display:grid;grid-template-columns:120px 1fr 180px;align-items:center;padding:14px 22px;border:1px solid rgba(255,255,255,.2);border-radius:14px;background:rgba(255,255,255,.06);font-size:clamp(22px,3vw,42px)}
.tv-winner span{text-align:left}.tv-winner strong{text-align:right}.tv-finish-meta{font-size:clamp(18px,2vw,30px);margin-top:1.2em}

.member-body{margin:0;background:radial-gradient(circle at 80% -10%,#1d2a25 0,#0b0e13 38%,#07090c 100%);color:#f7f7f4;min-height:100vh}.member-shell{max-width:760px;margin:auto;padding:28px 18px 105px}.member-header{display:flex;justify-content:space-between;align-items:center;padding:14px 4px 24px}.member-header h1{font-size:34px;margin:4px 0}.member-header p{margin:0;color:#939aa5}.member-eyebrow,.member-section-head span{font-size:11px;font-weight:900;letter-spacing:.18em;color:#c7a95b}.member-avatar{width:52px;height:52px;border-radius:18px;background:linear-gradient(145deg,#d8bb6b,#8d7135);display:grid;place-items:center;color:#0b0e13;font-size:23px;font-weight:1000}.member-card{background:linear-gradient(145deg,rgba(28,32,39,.96),rgba(16,19,24,.98));border:1px solid rgba(255,255,255,.08);border-radius:22px;padding:20px;margin:0 0 16px;box-shadow:0 14px 40px #0005}.member-card h2{margin:3px 0 14px}.member-live{border-color:rgba(199,169,91,.35)}.member-live-grid>div{background:#0d1116;border:1px solid #ffffff0d;border-radius:16px;padding:14px}.member-card .game{background:#0d1116;border:1px solid #ffffff0d;border-radius:16px;padding:15px}.player-money{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:14px}.player-money span{background:#11151b;padding:12px;border-radius:13px;color:#8f98a5;font-size:12px}.player-money b{display:block;color:#fff;font-size:18px;margin-top:4px}.member-primary{background:linear-gradient(135deg,#d5b763,#a7873e);color:#090b0e;border:0;font-weight:900;width:100%;padding:15px;border-radius:14px;font-size:15px}.member-bottom{position:fixed;z-index:50;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(520px,calc(100% - 28px));display:grid;grid-template-columns:repeat(4,1fr);background:rgba(13,16,21,.94);backdrop-filter:blur(18px);border:1px solid #ffffff12;border-radius:20px;padding:9px;box-shadow:0 14px 45px #000a}.member-bottom a{text-decoration:none;color:#8f98a5;text-align:center;font-size:10px;font-weight:800}.member-bottom b{display:block;color:#d0b260;font-size:18px}.member-connect{width:min(480px,calc(100% - 36px));box-sizing:border-box;margin:7vh auto;padding:30px;background:linear-gradient(145deg,#1b2027,#101319);border:1px solid #ffffff12;border-radius:26px;box-shadow:0 25px 70px #0009}.member-connect h1{font-size:38px;line-height:1.02;margin:8px 0 14px}.member-connect>p{color:#a0a7b2;line-height:1.55}.member-logo{font-size:42px;color:#c7a95b}.member-connect-game,.member-security{margin:18px 0;padding:14px;border-radius:14px;background:#0c1015;border:1px solid #ffffff0d}.member-security{font-size:12px;color:#8f98a5}.member-form{display:grid;gap:14px}.member-form label{font-weight:800;font-size:13px}.member-form label span{font-weight:500;color:#7e8793}.member-form input{width:100%;box-sizing:border-box;margin-top:7px;background:#090c10;color:#fff;border:1px solid #2c333d;border-radius:13px;padding:14px;font-size:16px}@media(max-width:560px){.member-shell{padding:20px 12px 100px}.member-header h1{font-size:29px}.member-card{padding:16px}.player-live-grid{grid-template-columns:repeat(2,1fr)!important}.member-connect{margin:3vh auto;padding:24px}}

/* v0.19.1 mockup-aligned upcoming + signup */
.member-events{display:grid;gap:12px}.member-event{display:grid;grid-template-columns:76px 1fr;gap:16px;background:#0d1116;border:1px solid #ffffff0d;border-radius:18px;padding:14px}.event-date{border-right:1px solid #ffffff12;text-align:center;padding-right:13px;display:flex;flex-direction:column;justify-content:center}.event-date b{font-size:11px;letter-spacing:.12em;color:#d2b45d}.event-date strong{font-size:32px;line-height:1.05}.event-date span{font-size:11px;color:#89929e;text-transform:uppercase}.event-main h3{margin:0 0 4px;font-size:18px}.event-time{font-size:13px;color:#98a1ad}.event-status{margin-top:8px;font-size:12px;color:#98a1ad}.event-status b{color:#fff}.member-rsvp,.signup-rsvp{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.rsvp-btn,.rsvp-choice{background:#151a21;color:#aab2bd;border:1px solid #303844;border-radius:11px;padding:9px 12px;text-decoration:none;font-weight:850;font-size:12px;cursor:pointer}.rsvp-btn.selected,.rsvp-choice.selected{background:linear-gradient(135deg,#d5b763,#a7873e);border-color:#d5b763;color:#090b0e;box-shadow:0 5px 16px #0005}.rsvp-btn.selected.danger{background:#442225;border-color:#b55b62;color:#fff}.member-signup .games .game{background:#0d1116;border:1px solid #ffffff10;border-radius:16px}.member-signup .form{display:grid;gap:14px}.member-signup .form input{width:100%;box-sizing:border-box;margin-top:7px;background:#090c10;color:#fff;border:1px solid #2c333d;border-radius:13px;padding:14px;font-size:16px}.member-signup .form>label{font-weight:800;font-size:13px}.member-signup .row .btn.primary{background:linear-gradient(135deg,#d5b763,#a7873e);color:#090b0e;border-color:#d5b763}@media(max-width:440px){.member-event{grid-template-columns:64px 1fr;gap:12px}.event-date strong{font-size:28px}.rsvp-btn{padding:8px 9px;font-size:11px}}

/* v0.19.3 member mockup polish */
.member-header{position:relative}.member-header:after{content:"PLAYER";position:absolute;right:66px;top:21px;font-size:9px;font-weight:950;letter-spacing:.14em;color:#d0b260;border:1px solid #d0b26055;border-radius:999px;padding:5px 8px}
.member-live:before{content:"● LIVE";display:inline-block;font-size:10px;font-weight:950;letter-spacing:.12em;color:#ff6767;background:#471d22;border:1px solid #8e333d;border-radius:999px;padding:5px 9px;margin-bottom:9px}
.member-live>.label{display:none}.member-card{overflow:hidden}.member-section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:4px}.member-section-head h2{letter-spacing:-.02em}
.member-event{position:relative;transition:transform .15s ease,border-color .15s ease}.member-event:active{transform:scale(.992)}.event-status b{display:inline-block;border-radius:999px;background:#203329;color:#82dda4;padding:3px 8px;margin-left:3px}
.member-app-row{display:flex;gap:14px;align-items:center;background:#0d1116;border:1px solid #ffffff0d;border-radius:16px;padding:14px;margin:12px 0}.member-app-icon{width:54px;height:54px;border-radius:15px;border:2px solid #cbaa55;display:flex;align-items:center;justify-content:center;gap:2px;font:900 24px Georgia,serif}.member-app-icon span{font-size:18px}.installed-badge{background:#15291f;border:1px solid #28543b;color:#84dfa7;border-radius:13px;padding:12px 14px;font-weight:850;margin-top:10px}.member-device-actions{margin-top:18px;padding-top:16px;border-top:1px solid #ffffff10}.member-disconnect{background:#191d23!important;border:1px solid #39414c!important;color:#b8c0ca!important}.member-disconnect:hover{background:#222831!important;color:#fff!important}
.member-bottom a:active,.member-bottom a:hover{color:#e2c46d}.member-bottom{padding-bottom:max(9px,env(safe-area-inset-bottom))}
body.member-body .success{background:#14291e;border-color:#2c6241;color:#9ce0b3}

/* v0.19.4 single polished install control */
.member-app-install{width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer}.member-app-install .member-app-copy{flex:1}.member-app-arrow{margin-left:auto;font-size:34px;line-height:1;color:#d0b260}.member-app-install:active{transform:scale(.992)}.member-app-install.is-installed{cursor:default;opacity:.9}.member-app-install.is-installed .member-app-arrow{display:none}

/* v0.19.6 host branding + owner promo */
.member-brand{display:flex;align-items:center;gap:10px;margin:0 4px 14px;padding-bottom:14px;border-bottom:1px solid #ffffff0d}.brand-spade{width:38px;height:38px;border:1px solid #cbaa55;border-radius:12px;display:grid;place-items:center;color:#d5b763;font-size:21px}.member-brand b{display:block;font-size:15px;letter-spacing:.01em}.member-brand small{display:block;color:#7f8995;font-size:8px;font-weight:900;letter-spacing:.18em;margin-top:2px}.member-promo{text-align:center;padding:24px 10px 10px;color:#707985;font-size:11px}.member-promo span,.member-promo small{display:block}.member-promo a{display:inline-block;margin:5px 0;color:#c9aa55;text-decoration:none;font-weight:950;font-size:14px;letter-spacing:.04em}.member-promo small{font-size:10px}

/* v0.19.7 service welcome, quick check-in, TV branding */
.signup-service{margin-bottom:4px!important}.signup-game-name{font-size:18px;font-weight:850;color:#d3b55f;margin:0 0 10px}.quick-checkin.attention{border-color:#c9aa55;box-shadow:0 0 0 2px #c9aa5522,0 15px 40px #0005}.checkin-count{font-size:12px;font-weight:900;color:#d4b65e;background:#211d13;border:1px solid #5b4c25;border-radius:999px;padding:6px 10px}.quick-checkin-list{display:grid;gap:8px}.quick-checkin-player{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#0e1411;border:1px solid #ffffff0d;border-radius:13px;padding:11px 13px}.quick-checkin-player form{margin:0}.tv-right-panel{position:relative;padding-bottom:44px!important}.tv-powered{position:absolute;right:14px;bottom:10px;font-size:10px;letter-spacing:.04em;opacity:.55;text-align:right}.tv-powered b{font-size:11px}@media(max-width:600px){.quick-checkin-player{align-items:flex-start;flex-direction:column}}

/* v0.19.8 pregame welcome: service name first, game name second */
.pregame-game-name{text-align:center;font-size:clamp(18px,2.1vw,30px);font-weight:850;color:#d1b35d;margin:-4px 0 8px;letter-spacing:.02em}

/* v0.19.9 TV center-box chips only: move chips down without moving clock, blinds, or box */
.tvboard .tv-main .tv-chips{transform:translateY(1.8vh)!important;}
@media(max-width:1000px){.tvboard .tv-main .tv-chips{transform:translateY(1.25vh)!important;}}

/* v0.20.0 TV middle-box chips only: requested ~1 inch lower */
.tvboard .tv-main .tv-chips{transform:translateY(96px)!important;}
@media(max-width:1000px){.tvboard .tv-main .tv-chips{transform:translateY(72px)!important;}}

/* v0.20.1 quick seating check-in */
.checkin-not-coming{background:#2a1719!important;border-color:#713238!important;color:#e8a5aa!important}

/* v0.20.2 blind-structure-complete flow */
.structure-round-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.structure-round-form label{font-size:12px;font-weight:850}.structure-round-form input{width:100%;box-sizing:border-box;margin-top:5px;background:#0b0f14;color:#fff;border:1px solid #333b46;border-radius:10px;padding:10px}.tv-waiting-host{height:100vh;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:#08130f;color:#fff}.tv-waiting-host h1{font-size:clamp(100px,18vw,250px);line-height:.9;margin:18px 0}.tv-waiting-host h2{font-size:clamp(28px,4vw,60px);color:#d1b35d;margin:8px}.tv-waiting-host p{font-size:clamp(16px,1.8vw,28px);opacity:.7}@media(max-width:600px){.structure-round-form{grid-template-columns:1fr 1fr}}

/* v0.20.3 TableAce branding */
.tv-powered a{color:inherit;text-decoration:none}.tv-powered a:hover{text-decoration:underline}

/* v0.20.4 game type badges */
.game-title-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.game-mode-badge{display:inline-block;border-radius:999px;padding:3px 8px;font-size:9px;font-weight:950;letter-spacing:.1em;text-transform:uppercase}.game-mode-badge.hosted{background:#193124;border:1px solid #326346;color:#8ce0aa}.game-mode-badge.quick{background:#18212b;border:1px solid #35495d;color:#9fc5e8}

/* v0.20.4 quick-game welcome count */
.quick-pregame-playerbox{margin:20px auto 8px;min-width:min(420px,75vw);padding:18px 30px;border:1px solid #d1b35d55;border-radius:18px;background:#0c1511;text-align:center}.quick-pregame-playerbox span,.quick-pregame-playerbox small{display:block}.quick-pregame-playerbox span{font-size:13px;font-weight:950;letter-spacing:.18em;color:#d1b35d}.quick-pregame-playerbox b{display:block;font-size:clamp(72px,12vw,150px);line-height:.95;margin:8px 0}.quick-pregame-playerbox small{color:#89958d}

/* v0.20.4 Android/Fire TV viewport guard.
   Preserve the approved internal clock/blind/chip positions; fit the whole board to the visible viewport. */
html.tv,body.tv{width:100%;height:100%;min-height:100%;overflow:hidden!important;margin:0!important;padding:0!important}
body.tv .tvboard{box-sizing:border-box!important;width:100vw!important;height:100vh!important;max-height:100vh!important;min-height:0!important;overflow:hidden!important}
@supports(height:100dvh){body.tv .tvboard{height:100dvh!important;max-height:100dvh!important}}
@media(max-height:700px) and (min-aspect-ratio:4/3){
 body.tv .tvboard{transform:scale(.94);transform-origin:top left;width:106.383vw!important;height:106.383vh!important}
}

/* v0.20.6 visible Host PWA install card */
.host-install-card{padding:10px!important}.host-install-button{width:100%;display:flex;align-items:center;gap:14px;text-align:left;background:#0d1511;border:1px solid #d1b35d55;color:#fff;border-radius:15px;padding:13px 15px;cursor:pointer;font:inherit}.host-install-button>span:nth-child(2){flex:1}.host-install-button b,.host-install-button small{display:block}.host-install-button small{color:#8e9991;font-size:11px;margin-top:3px}.host-install-button strong{color:#d1b35d}.host-install-icon{width:52px;height:52px;flex:0 0 52px;border:1px solid #d1b35d;border-radius:14px;display:flex!important;flex-direction:column;align-items:center;justify-content:center;color:#d1b35d;font:900 25px Georgia,serif}.host-install-icon small{font:900 7px system-ui!important;letter-spacing:.12em;color:#d1b35d!important;margin:0!important}



/* TV overscan test — centered width only; no font or vertical scaling yet */
.tv-overscan-fix body.tv {
  overflow:hidden !important;
  background:#050708 !important;
}
.tv-overscan-fix body.tv .tvboard {
  width:88vw !important;
  max-width:88vw !important;
  margin-left:auto !important;
  margin-right:auto !important;
  box-sizing:border-box !important;
  transform:none !important;
}
.tv-device-detected{
  position:fixed;
  top:10px;
  left:6vw;
  z-index:2147483647;
  padding:5px 8px;
  border:2px solid #000;
  border-radius:5px;
  background:#fff;
  color:#000;
  font:900 12px/1 system-ui,sans-serif;
}
