:root{--bg:#0d1117;--panel:#161b27;--panel2:#1c2333;--line:#2a3247;--text:#e8ecf4;--dim:#8b95ab;--gold:#f5b93c;--gold2:#ffd76e;--red:#ef4453;--red2:#ff6b77;--green:#2ecc80;--green2:#48e89c;--blue:#4c9aff;}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;min-height:100%;}
body{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);}
#app{max-width:520px;margin:0 auto;padding:14px 14px 40px;}
button{font-family:inherit;border:none;cursor:pointer;touch-action:manipulation;user-select:none;-webkit-user-select:none;}
button:disabled{opacity:.38;cursor:default;}
input,select{font-family:inherit;background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:13px 14px;font-size:17px;width:100%;outline:none;}
input:focus{border-color:var(--gold);}
.h-title{font-size:44px;font-weight:900;letter-spacing:6px;text-align:center;margin:18px 0 2px;color:var(--gold);text-shadow:0 0 30px rgba(245,185,60,.25);}
.h-sub{text-align:center;color:var(--dim);margin:0 0 22px;font-size:14px;}
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:14px;}
.card h3{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:1.5px;color:var(--dim);}
.row{display:flex;gap:10px;align-items:center;}
.row>*{flex:1;}
.btn{border-radius:14px;padding:15px;font-size:17px;font-weight:800;letter-spacing:.5px;transition:transform .06s;}
.btn:active:not(:disabled){transform:scale(.96);}
.btn-gold{background:linear-gradient(180deg,var(--gold2),var(--gold));color:#241a05;}
.btn-green{background:linear-gradient(180deg,var(--green2),var(--green));color:#052c17;}
.btn-dim{background:var(--panel2);color:var(--text);border:1px solid var(--line);}
.btn-red{background:linear-gradient(180deg,var(--red2),var(--red));color:#fff;}
.seg{display:flex;background:var(--panel2);border:1px solid var(--line);border-radius:12px;overflow:hidden;}
.seg button{flex:1;padding:12px;background:transparent;color:var(--dim);font-size:16px;font-weight:700;}
.seg button.on{background:var(--gold);color:#241a05;}
.check{display:flex;align-items:center;gap:10px;color:var(--dim);font-size:15px;margin-top:12px;user-select:none;}
.check input{width:22px;height:22px;flex:none;accent-color:var(--gold);}
.nearby-item{display:flex;align-items:center;justify-content:space-between;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:8px;}
.nearby-item .nm{font-weight:700;font-size:16px;}
.nearby-item .meta{color:var(--dim);font-size:12px;margin-top:2px;}
.nearby-item button{background:var(--gold);color:#241a05;border-radius:10px;padding:9px 18px;font-weight:800;font-size:14px;flex:none;}
.mut{color:var(--dim);font-size:13px;}
.linkbtn{background:none;color:var(--blue);font-size:13px;padding:4px;text-decoration:underline;}
/* game header */
.ghead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:8px;}
.ghead .code{font-weight:900;font-size:19px;letter-spacing:3px;color:var(--gold);background:var(--panel);border:1px solid var(--line);padding:7px 12px;border-radius:10px;}
.ghead .mid{color:var(--dim);font-size:13px;text-align:center;flex:1;}
.ghead .x{background:var(--panel);border:1px solid var(--line);color:var(--dim);border-radius:10px;padding:7px 11px;font-size:13px;}
.statusline{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:6px;flex-wrap:wrap;}
.pill{font-size:12px;font-weight:800;letter-spacing:1px;padding:4px 11px;border-radius:99px;}
.pill-safe{background:rgba(76,154,255,.14);color:var(--blue);border:1px solid rgba(76,154,255,.4);}
.pill-hot{background:rgba(239,68,83,.13);color:var(--red2);border:1px solid rgba(239,68,83,.45);animation:pulse 1.6s infinite;}
.pill-live{background:rgba(46,204,128,.13);color:var(--green2);border:1px solid rgba(46,204,128,.35);}
.pill-poll{background:rgba(245,185,60,.12);color:var(--gold2);border:1px solid rgba(245,185,60,.3);}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.55}}
.pot-wrap{text-align:center;margin:4px 0 10px;}
.pot-label{color:var(--dim);font-size:12px;letter-spacing:2px;text-transform:uppercase;}
.pot{font-size:76px;font-weight:900;line-height:1.05;color:var(--gold);text-shadow:0 0 40px rgba(245,185,60,.3);font-variant-numeric:tabular-nums;transition:transform .12s;}
.pot.bump{transform:scale(1.08);}
.pot.dead{color:var(--red);text-decoration:line-through;text-shadow:none;}
.rolls-strip{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;min-height:30px;margin-bottom:10px;}
.rchip{background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:14px;font-weight:700;color:var(--dim);}
.rchip.seven{background:rgba(239,68,83,.15);color:var(--red2);border-color:rgba(239,68,83,.5);}
.rchip.dbl{background:rgba(245,185,60,.15);color:var(--gold2);border-color:rgba(245,185,60,.5);}
.rchip.bonus{background:rgba(46,204,128,.13);color:var(--green2);border-color:rgba(46,204,128,.4);}
/* digital dice */
.dice-area{display:flex;gap:16px;justify-content:center;align-items:center;margin:2px 0 12px;min-height:66px;}
.die3d{width:60px;height:60px;background:linear-gradient(145deg,#ffffff,#dfe4ee);border-radius:14px;box-shadow:0 5px 16px rgba(0,0,0,.45),inset 0 -3px 6px rgba(0,0,0,.12),inset 0 2px 3px rgba(255,255,255,.9);display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);padding:9px;transition:transform .1s;}
.die3d .pipcell{display:flex;align-items:center;justify-content:center;}
.die3d .pip{width:10px;height:10px;border-radius:50%;background:#1a2030;box-shadow:inset 0 2px 2px rgba(0,0,0,.6);}
.die3d.tumble{animation:tumble .12s infinite linear;}
@keyframes tumble{0%{transform:translateY(0) rotate(-8deg) scale(1.02)}25%{transform:translateY(-7px) rotate(6deg)}50%{transform:translateY(2px) rotate(-5deg) scale(.98)}75%{transform:translateY(-4px) rotate(9deg)}100%{transform:translateY(0) rotate(-8deg) scale(1.02)}}
.die3d.land{animation:land .28s ease-out;}
@keyframes land{0%{transform:scale(1.28) rotate(5deg)}60%{transform:scale(.94) rotate(-2deg)}100%{transform:scale(1) rotate(0)}}
.rollbtn{width:100%;border-radius:18px;padding:19px 16px;font-size:23px;font-weight:900;letter-spacing:1.5px;background:linear-gradient(180deg,var(--gold2),var(--gold));color:#241a05;box-shadow:0 5px 24px rgba(245,185,60,.3);margin-bottom:10px;transition:transform .06s;}
.rollbtn:active:not(:disabled){transform:scale(.97);}
.rollbtn.secondary{padding:14px;font-size:17px;box-shadow:none;margin-top:2px;}
.padtoggle{text-align:center;margin-bottom:10px;}
/* dice pad */
.pad{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-bottom:10px;}
.pad .die{aspect-ratio:1;border-radius:16px;background:var(--panel2);border:1px solid var(--line);color:var(--text);font-size:27px;font-weight:900;transition:transform .05s,background .05s;}
.pad .die:active:not(:disabled){transform:scale(.92);background:#2a3348;}
.pad-wide{display:grid;grid-template-columns:2fr 1.4fr .9fr;gap:9px;margin-bottom:12px;}
.die7{border-radius:16px;padding:16px 0;background:linear-gradient(180deg,#ff5c69,var(--red));color:#fff;font-size:30px;font-weight:900;box-shadow:0 4px 18px rgba(239,68,83,.35);transition:transform .05s;}
.die7:active:not(:disabled){transform:scale(.94);}
.die7 small{display:block;font-size:11px;font-weight:700;letter-spacing:1px;opacity:.9;}
.dieD{border-radius:16px;background:linear-gradient(180deg,var(--gold2),var(--gold));color:#241a05;font-size:21px;font-weight:900;transition:transform .05s;}
.dieD:active:not(:disabled){transform:scale(.94);}
.dieD small{display:block;font-size:10px;font-weight:700;}
.dieU{border-radius:16px;background:var(--panel2);border:1px solid var(--line);color:var(--dim);font-size:14px;font-weight:800;}
.roundover{background:var(--panel);border:1px solid var(--line);border-radius:16px;text-align:center;padding:20px 16px;margin-bottom:12px;}
.roundover .big{font-size:24px;font-weight:900;margin-bottom:4px;}
.roundover .big.wipe{color:var(--red2);}
.roundover .big.ok{color:var(--green2);}
.roundover .sub{color:var(--dim);font-size:14px;margin-bottom:14px;}
/* players */
.prow{display:flex;align-items:center;gap:10px;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:8px;}
.prow.me{border-color:rgba(245,185,60,.55);}
.prow .pn{font-weight:700;font-size:16px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.prow .pn .dev{font-size:11px;color:var(--blue);margin-left:5px;}
.prow .ps{font-weight:900;font-size:18px;color:var(--gold);font-variant-numeric:tabular-nums;}
.prow .bk{background:var(--green);color:#052c17;border-radius:10px;padding:9px 15px;font-weight:900;font-size:14px;flex:none;}
.prow .bkd{color:var(--green2);font-weight:800;font-size:13px;flex:none;}
.prow .un{background:none;color:var(--dim);font-size:11px;text-decoration:underline;padding:2px;flex:none;}
.prow .rm{background:none;color:var(--dim);font-size:16px;padding:2px 6px;flex:none;}
.addrow{display:flex;gap:8px;margin-top:10px;}
.addrow input{flex:1;padding:11px 13px;font-size:15px;}
.addrow button{background:var(--panel2);border:1px solid var(--line);color:var(--text);border-radius:12px;padding:0 18px;font-weight:800;font-size:14px;flex:none;}
/* player view */
.bigbank{width:100%;border-radius:22px;padding:26px 16px;font-size:30px;font-weight:900;letter-spacing:1px;margin:10px 0 6px;transition:transform .06s;}
.bigbank:active:not(:disabled){transform:scale(.97);}
.bigbank.go{background:linear-gradient(180deg,var(--green2),var(--green));color:#052c17;box-shadow:0 6px 30px rgba(46,204,128,.35);}
.bigbank.wait{background:var(--panel2);color:var(--dim);border:1px solid var(--line);}
.bigbank.done{background:rgba(46,204,128,.14);color:var(--green2);border:1px solid rgba(46,204,128,.4);}
.bigbank.dead{background:rgba(239,68,83,.12);color:var(--red2);border:1px solid rgba(239,68,83,.4);}
.bigbank small{display:block;font-size:13px;font-weight:700;letter-spacing:.5px;margin-top:3px;opacity:.85;}
.qrpanel{text-align:center;padding-top:6px;}
.qrpanel img{border-radius:12px;background:#fff;padding:8px;margin-top:8px;}
.qrpanel .bigcode{font-size:34px;font-weight:900;letter-spacing:8px;color:var(--gold);}
.standings .prow .rank{font-weight:900;color:var(--dim);width:26px;flex:none;}
.standings .prow.win{border-color:var(--gold);background:rgba(245,185,60,.08);}
.winner-banner{text-align:center;margin:10px 0 16px;}
.winner-banner .crown{font-size:44px;}
.winner-banner .wname{font-size:28px;font-weight:900;color:var(--gold);}
.winner-banner .wscore{color:var(--dim);}
.toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(20px);background:#232b3e;color:var(--text);border:1px solid var(--line);border-radius:12px;padding:12px 18px;font-size:14px;font-weight:600;opacity:0;pointer-events:none;transition:all .25s;z-index:50;max-width:86vw;text-align:center;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.flash{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;font-size:64px;font-weight:900;pointer-events:none;opacity:0;z-index:40;}
.flash.show{animation:fl .9s ease-out;}
@keyframes fl{0%{opacity:0;transform:scale(.6)}25%{opacity:1;transform:scale(1.05)}70%{opacity:1}100%{opacity:0;transform:scale(1.15)}}
.flash.green{color:var(--green2);text-shadow:0 0 40px rgba(46,204,128,.6);}
.flash.red{color:var(--red2);text-shadow:0 0 40px rgba(239,68,83,.6);}
.flash.gold{color:var(--gold2);text-shadow:0 0 40px rgba(245,185,60,.65);}
.footlinks{text-align:center;margin-top:18px;}
.footlinks button{margin:0 8px;}
.acctrow{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:5px;font-size:12.5px;color:var(--dim);margin:-8px 0 12px;}
.acctrow b{color:var(--text);font-weight:700;}
.acct-dot{width:7px;height:7px;border-radius:50%;background:var(--dim);opacity:.55;flex:none;}
.acct-dot.on{background:var(--green,#3fb950);opacity:1;box-shadow:0 0 7px rgba(63,185,80,.6);}
.acct-link{color:var(--blue);text-decoration:underline;}
@media (max-height:780px){.acctrow{margin:-6px 0 9px;font-size:12px;}}
.signin-chip{display:block;text-align:center;margin:-4px 0 10px;}
.signin-chip a{color:var(--blue);font-size:13px;}
/* turn tracking + roller attribution */
.turnline{text-align:center;color:var(--dim);font-size:15px;margin:-2px 0 10px;}
.turnline b{color:var(--text);}
.turnline .tl-dev{display:block;font-size:12px;color:var(--blue);margin-top:2px;}
.rollby{text-align:center;font-size:13px;font-weight:700;color:var(--dim);margin:-6px 0 8px;}
.rollby.self{color:var(--blue);}
.rollbtn.forplayer{background:linear-gradient(180deg,#7db4ff,var(--blue));color:#08243f;box-shadow:0 5px 24px rgba(76,154,255,.35);}
.rollbtn.waitturn{background:var(--panel2);color:var(--dim);border:1px solid var(--line);box-shadow:none;}
.dice-area.selfglow .die3d{box-shadow:0 0 0 3px rgba(76,154,255,.55),0 5px 22px rgba(76,154,255,.5),inset 0 -3px 6px rgba(0,0,0,.12),inset 0 2px 3px rgba(255,255,255,.9);}
.dice-area .die3d{transition:box-shadow .3s;}
/* PWA install bar */
.installbar{position:fixed;left:0;right:0;bottom:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:rgba(13,17,23,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);z-index:30;}
.installbar .btn{width:100%;max-width:492px;margin:0 auto;display:block;}

/* start-screen dice logo */
.logo-wrap{text-align:center;margin:22px 0 0;}
.logo-dice{width:152px;height:auto;filter:drop-shadow(0 8px 26px rgba(245,185,60,.22));animation:logofloat 5s ease-in-out infinite;}
@keyframes logofloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.h-title.home-title{margin-top:0;font-size:40px;}
@media (prefers-reduced-motion: reduce){.logo-dice{animation:none;}}

/* compact brand bar — logo + wordmark on one line, no scroll */
.brandbar{display:flex;align-items:center;justify-content:center;gap:13px;margin:10px 0 14px;}
.brand-dice{width:62px;height:auto;filter:drop-shadow(0 5px 16px rgba(245,185,60,.28));animation:logofloat 5s ease-in-out infinite;}
.brand-name{font-size:33px;font-weight:900;letter-spacing:5px;color:var(--gold);text-shadow:0 0 24px rgba(245,185,60,.25);line-height:1;}
.brand-tag{color:var(--dim);font-size:12.5px;margin-top:4px;}
@media (prefers-reduced-motion: reduce){.brand-dice{animation:none;}}
/* tighter home layout */
#app{padding-top:8px;}
.card{padding:14px;margin-bottom:11px;}
.card h3{margin-bottom:8px;}
.check{margin-top:8px;font-size:14px;}
.seg button{padding:10px;}
input,select{padding:11px 13px;font-size:16px;}
.btn{padding:13px;}

/* ---------- solo mode + compact home ---------- */
.solo-row{display:flex;gap:10px;margin-bottom:11px;}
.solo-btn{flex:1.35;font-size:16px;padding:11px 8px;letter-spacing:.4px;}
.hs-chip{flex:1;background:var(--panel);border:1px solid rgba(245,185,60,.45);border-radius:14px;padding:6px 10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--text);min-width:0;}
.hs-chip:active{transform:scale(.97);}
.hs-lab{font-size:9.5px;letter-spacing:1.2px;color:var(--dim);font-weight:800;white-space:nowrap;}
.hs-val{font-size:15px;font-weight:900;color:var(--gold);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums;}
.nearbyslim{text-align:center;margin:0 0 11px;font-size:13px;}
.nearbyslim .linkbtn{padding:2px;}
#nearbywrap .card{margin-bottom:11px;}
/* keep the start screen on one viewport on shorter phones */
@media (max-height:780px){
  .brandbar{margin:4px 0 10px;gap:11px;}
  .brand-dice{width:52px;}
  .brand-name{font-size:28px;letter-spacing:4px;}
  .brand-tag{font-size:11.5px;margin-top:2px;}
  .card{padding:12px;margin-bottom:9px;border-radius:14px;}
  .card h3{margin-bottom:7px;font-size:12px;}
  .check{margin-top:6px;font-size:13.5px;}
  .check input{width:20px;height:20px;}
  input,select{padding:10px 12px;font-size:15px;border-radius:11px;}
  .btn{padding:11px;font-size:16px;}
  .seg button{padding:8px;font-size:15px;}
  #app{padding:6px 12px 30px;}
  .solo-row{margin-bottom:9px;}
  .nearbyslim{margin-bottom:9px;font-size:12.5px;}
  .mut{font-size:12.5px;}
}
@media (max-height:660px){
  .brand-dice{width:44px;}
  .brand-name{font-size:24px;}
  .brand-tag{display:none;}
  .card{padding:10px;margin-bottom:8px;}
  .check{font-size:13px;margin-top:5px;}
  .btn{padding:10px;font-size:15px;}
}

/* ---------- cheater award ---------- */
.cheatline{text-align:center;font-size:12px;color:var(--dim);margin:-3px 0 9px;}
.cheatline b{color:var(--red2);text-decoration:line-through;}
.cheatcard{border-color:rgba(239,68,83,.4);}
.cheatcard h3{color:var(--red2);}
.cheat-banner{text-align:center;margin:2px 0 8px;}
.cheat-banner .cname{font-size:22px;font-weight:900;color:var(--red2);}
.cheat-banner .cscore{font-size:15px;font-weight:800;color:var(--dim);text-decoration:line-through;font-variant-numeric:tabular-nums;}
.ps.cheat{color:var(--red2);text-decoration:line-through;}
@media (max-height:780px){.cheatline{margin-bottom:7px;font-size:11.5px;}}

/* ---------- almost-cheated (scripter) award ---------- */
.cheatline .bx{color:var(--blue);text-decoration:none;}
.botcard{border-color:rgba(76,154,255,.4);}
.botcard h3{color:var(--blue);}
.bot-banner{text-align:center;margin:2px 0 8px;}
.bot-banner .bname{font-size:22px;font-weight:900;color:var(--blue);}
.bot-banner .bscore{font-size:15px;font-weight:800;color:var(--dim);font-variant-numeric:tabular-nums;}
.ps.bot{color:var(--blue);}

/* ---------- solo rounds picker + rounds tags ---------- */
.solo-pick{flex:1.35;min-width:0;display:flex;flex-direction:column;gap:4px;}
.solo-lab{font-size:12px;font-weight:900;letter-spacing:.8px;color:var(--gold);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.solo-lab .solo-sub{font-weight:600;letter-spacing:0;color:var(--dim);font-size:10.5px;}
.solo-seg button{padding:8px 0;font-size:15px;}
.solo-seg button.on{background:linear-gradient(180deg,var(--gold2),var(--gold));color:#241a05;}
.rtag{font-size:10px;font-weight:800;color:var(--dim);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:1px 5px;margin-left:6px;vertical-align:1px;}
@media (max-height:780px){.solo-seg button{padding:7px 0;font-size:14px;}.solo-lab{font-size:11px;}}

/* ---------- keep-awake indicator ---------- */
.pill-wake{background:rgba(76,154,255,.12);color:var(--blue);border:1px solid rgba(76,154,255,.32);letter-spacing:0;padding:4px 8px;}

/* ---------- hybrid dice: host management ---------- */
.card h3.ph{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.mgbtn{background:var(--panel2);border:1px solid var(--line);color:var(--dim);border-radius:9px;padding:5px 10px;font-size:11px;font-weight:800;letter-spacing:1px;flex:none;}
.mgbtn.on{background:var(--gold);color:#241a05;border-color:var(--gold);}
.mrow{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-top:8px;}
.mrow.turn{border-color:rgba(245,185,60,.55);background:rgba(245,185,60,.07);}
.mrow .ord{display:flex;flex-direction:column;gap:3px;flex:none;}
.mrow .ob{background:var(--panel);border:1px solid var(--line);color:var(--text);border-radius:7px;width:32px;height:20px;font-size:9px;line-height:1;padding:0;}
.mrow .ob:disabled{opacity:.28;}
.mrow .ob:active:not(:disabled){background:#2a3348;}
.mrow .pn{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:none;color:var(--text);font-weight:700;font-size:15px;padding:4px 0;}
.mrow .pn:disabled{opacity:.55;}
.mrow .pn .dev{font-size:11px;color:var(--blue);margin-left:5px;}
.mrow .dg{flex:none;width:38px;height:32px;border-radius:10px;background:var(--panel);border:1px solid var(--line);font-size:15px;opacity:.32;display:inline-flex;align-items:center;justify-content:center;}
.mrow .dg.on{opacity:1;background:rgba(76,154,255,.16);border-color:rgba(76,154,255,.55);}
.mrow .dg.off{opacity:.13;}
.mrow .rm{background:none;color:var(--dim);font-size:16px;padding:2px 4px;flex:none;}
.prow .dgm{font-size:11px;margin-left:5px;opacity:.85;}

/* ---------- dice mode picker ---------- */
.dmrow{display:flex;align-items:center;gap:10px;margin-top:12px;}
.dmlab{font-size:11px;text-transform:uppercase;letter-spacing:1.5px;color:var(--dim);font-weight:800;flex:none;}
.seg.dmseg{flex:1;}
.seg.dmseg button{padding:9px 4px;font-size:11.5px;letter-spacing:.6px;}
.dmhint{margin-top:6px;line-height:1.45;}

/* ---------- hybrid turn cues ---------- */
.waitroll{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;background:rgba(76,154,255,.09);border:1px solid rgba(76,154,255,.35);border-radius:14px;padding:11px 13px;margin-bottom:10px;color:var(--dim);font-size:14px;}
.waitroll b{color:var(--text);}
.waitroll .wr-btn{background:var(--panel2);border:1px solid var(--line);color:var(--blue);border-radius:9px;padding:6px 11px;font-size:12px;font-weight:800;flex:none;}
.turnline .tl-phys{display:block;font-size:12px;color:var(--gold2);margin-top:2px;}
.yourturn{text-align:center;background:rgba(245,185,60,.1);border:1px solid rgba(245,185,60,.45);border-radius:14px;padding:13px;margin-top:4px;font-size:16px;font-weight:800;color:var(--gold2);}
.turnmini{text-align:center;color:var(--dim);font-size:14px;margin-top:8px;}
.undohint{display:block;font-size:12.5px;color:var(--gold2);margin-top:7px;line-height:1.4;}

/* ---------- clearer join form + name modal ---------- */
.joincard .join-hint{margin:0 0 12px;line-height:1.35;}
.joincard-ready{border-color:rgba(46,204,128,.45);box-shadow:0 0 0 1px rgba(46,204,128,.12);}
.join-banner{background:rgba(46,204,128,.12);border:1px solid rgba(46,204,128,.35);color:var(--green2);border-radius:12px;padding:10px 12px;font-size:13.5px;font-weight:650;margin:0 0 12px;line-height:1.35;}
.join-banner b{color:var(--gold);letter-spacing:2px;font-weight:900;}
.fld{display:block;margin-top:10px;}
.fld-lab{display:block;font-size:12px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;color:var(--dim);margin:0 0 6px;}
.code-input{text-transform:uppercase;letter-spacing:6px;text-align:center;font-weight:900;font-size:22px;}
.modal-back{position:fixed;inset:0;z-index:80;background:rgba(6,9,14,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:flex-end;justify-content:center;padding:16px;padding-bottom:max(16px,env(safe-area-inset-bottom));}
.modal-card{width:100%;max-width:420px;background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:18px 16px 16px;box-shadow:0 18px 50px rgba(0,0,0,.45);animation:modalUp .18s ease-out;}
@keyframes modalUp{from{transform:translateY(18px);opacity:.5}to{transform:translateY(0);opacity:1}}
.modal-kicker{font-size:11px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--green2);margin-bottom:6px;}
.modal-title{margin:0 0 8px;font-size:24px;font-weight:900;letter-spacing:.2px;}
.modal-code{display:inline-block;background:var(--panel2);border:1px solid var(--line);color:var(--gold);font-weight:900;letter-spacing:5px;font-size:22px;padding:8px 14px;border-radius:12px;margin-bottom:8px;}
.modal-help{margin:0 0 4px;line-height:1.35;}
@media (min-width:520px){
  .modal-back{align-items:center;}
}
@media (max-height:780px){
  .fld{margin-top:8px;}
  .fld-lab{font-size:11px;margin-bottom:5px;}
  .code-input{font-size:20px;letter-spacing:5px;}
  .join-banner{padding:8px 10px;font-size:12.5px;margin-bottom:10px;}
}
