:root{--bg: #0e1726;--panel: #18233a;--panel2: #1f2c46;--line: #31405f;--text: #f3f6fc;--dim: #9fb0cc;--red: #d84b4b;--red-b: #ef7070;--blue: #3f7fd6;--blue-b: #6aa4f2;--green: #2fa96c;--green-b: #57cf90;--amber: #e6a63a;--cta: #f0a83a}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%}button{font-family:inherit;cursor:pointer}.dim{opacity:.6}.ok{color:#4bd88a}.bad{color:#ff7a7a}.center{display:flex;align-items:center;justify-content:center;height:100%}.center.col{flex-direction:column;gap:16px;text-align:center;padding:24px}.big{font-size:clamp(28px,6vw,56px);font-weight:800}.avatar{font-size:1.1em}.tv{height:100%}.tv-inner{display:flex;flex-direction:column;height:100%;padding:20px 28px}.tv-topbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.pill{background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 18px;font-size:clamp(15px,1.8vw,24px);font-weight:700;letter-spacing:1px}.pill.timer{background:#223}.pill.timer.urgent{background:#5a1f1f;color:#ffd0d0}.tv-footer{margin-top:auto;display:flex;justify-content:center;padding-top:14px}.host-row{display:flex;gap:14px;align-items:center}.host-btn{background:var(--cta);color:#14202e;border:none;border-radius:16px;font-size:clamp(20px,2.6vw,36px);font-weight:800;padding:16px 44px}.host-btn.ghost{background:var(--panel2);color:var(--text);border:1px solid var(--line);font-size:clamp(16px,2vw,26px);padding:14px 26px}.host-btn:disabled{background:#3a4258;color:#8892ad}.stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;text-align:center;min-height:0}.phase-tag{font-size:clamp(18px,2.6vw,34px);font-weight:800;letter-spacing:4px;color:var(--amber)}.question{font-size:clamp(30px,4.6vw,66px);font-weight:800;max-width:92%;line-height:1.1}.question.small{font-size:clamp(18px,2.4vw,34px);font-weight:700;opacity:.85}.counter{font-size:clamp(22px,2.8vw,42px);font-weight:800}.answer{font-size:clamp(64px,12vw,170px);font-weight:900;color:var(--amber);line-height:1}.lobby{flex:1;display:flex;gap:48px;align-items:center;justify-content:center}.lobby-left{text-align:center}.join-code{font-size:clamp(80px,13vw,190px);font-weight:900;letter-spacing:12px;color:var(--amber)}.join-sub{font-size:clamp(15px,1.8vw,24px);opacity:.8;margin-top:6px}.qr{margin-top:18px;border-radius:12px;background:#fff;padding:10px;width:min(38vh,400px)}.lobby-right h2{font-size:clamp(22px,2.6vw,40px)}.player-list{list-style:none;padding:0;font-size:clamp(20px,2.6vw,36px);font-weight:700}.player-list li{padding:5px 0}.board-stage{justify-content:center}.board{display:flex;gap:10px;align-items:stretch;justify-content:center;width:100%;max-width:100%;overflow-x:auto;padding:6px 2px}.col{flex:1 1 0;min-width:78px;max-width:190px;display:flex;flex-direction:column;border-radius:14px;overflow:hidden;border:3px solid var(--line);background:var(--panel)}.col-odds{font-size:clamp(16px,2vw,30px);font-weight:900;padding:6px 0;color:#fff}.col-body{flex:1;display:flex;flex-direction:column;justify-content:center;padding:10px 6px;background:#0000002e}.col-value{font-size:clamp(22px,3vw,46px);font-weight:900}.col-names{font-size:clamp(12px,1.4vw,20px);opacity:.9;margin-top:4px;word-break:break-word}.col-chips{display:flex;flex-direction:column;gap:3px;padding:6px 4px;min-height:8px}.chip-tag{font-size:clamp(12px,1.3vw,18px);font-weight:700;background:#ffffff1f;border-radius:8px;padding:2px 4px}.col.low{border-color:var(--red-b)}.col.low .col-odds{background:var(--red)}.col.high{border-color:var(--blue-b)}.col.high .col-odds{background:var(--blue)}.col.center{border-color:var(--green-b)}.col.center .col-odds{background:var(--green)}.col.smaller{border-color:var(--amber);border-style:dashed}.col.smaller .col-odds{background:var(--amber);color:#14202e}.col.lose{opacity:.32}.col.win{box-shadow:0 0 26px #57cf90cc;border-color:var(--green-b);transform:scale(1.04)}.bet-ticker{font-size:clamp(20px,2.6vw,38px);font-weight:800;min-height:1.4em}.scoreboard{width:min(920px,92%);display:flex;flex-direction:column;gap:7px}.score-row{display:grid;grid-template-columns:44px 52px 1fr auto auto;gap:14px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 18px;font-size:clamp(20px,2.4vw,36px);font-weight:800}.score-row .rank{color:var(--amber)}.score-row .big-av{font-size:1.4em}.score-row .delta.up{color:#4bd88a}.score-row .delta.down{color:#ff7a7a}.score-row .bank{min-width:92px;text-align:right}.scoreboard.final .score-row{grid-template-columns:44px 52px 1fr auto}.winner{font-size:clamp(34px,5.5vw,76px);font-weight:900;color:var(--amber)}@keyframes pop{0%{opacity:0;transform:translateY(26px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.drop-in .col{animation:pop .42s cubic-bezier(.2,.9,.3,1.2) both}@keyframes shakeit{0%,to{transform:translate(0) rotate(0)}15%{transform:translate(-10px) rotate(-1deg)}30%{transform:translate(9px) rotate(1deg)}45%{transform:translate(-7px)}60%{transform:translate(6px)}75%{transform:translate(-3px)}}.shake{animation:shakeit .6s ease-in-out 1}@keyframes shuffleIn{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}.shuffle-in{animation:shuffleIn .42s ease-out both}.phone{max-width:520px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding:12px 16px 28px}.phone-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:16px;font-weight:700;padding-bottom:10px;border-bottom:1px solid var(--line)}.phone.join{justify-content:center;gap:8px}.phone.join h1{font-size:30px}.phone label{font-size:15px;opacity:.7;margin-top:12px}.field{font-size:24px;padding:14px;border-radius:12px;border:2px solid var(--line);background:var(--panel);color:#fff;width:100%}.code-field{letter-spacing:8px;text-align:center;font-weight:800}.primary{margin-top:18px;background:var(--cta);color:#14202e;border:none;border-radius:14px;font-size:24px;font-weight:800;padding:18px;width:100%}.primary:disabled{background:#3a4258;color:#8892ad}.phone-timer{text-align:center;font-size:30px;font-weight:900;padding:6px}.phone-timer.urgent{color:#ff7a7a}.guess{display:flex;flex-direction:column;height:100%}.q-mini{font-size:20px;font-weight:700;margin:8px 0}.numdisplay{font-size:52px;font-weight:900;text-align:center;padding:16px;background:var(--panel);border-radius:14px;min-height:88px;word-break:break-all}.ok-note{color:#4bd88a;text-align:center;margin-top:10px;font-weight:700}.numpad{margin-top:auto;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.key{font-size:32px;font-weight:800;padding:22px 0;border-radius:14px;border:none;background:var(--panel2);color:#fff}.key-ok{background:var(--cta);color:#14202e;font-size:22px}.key-del{background:#3a2330}.bet{display:flex;flex-direction:column;gap:12px;padding-top:6px}.bet-head{display:flex;flex-direction:column;gap:4px;font-size:17px;font-weight:700}.bet-slots{display:flex;flex-direction:column;gap:10px}.bet-slot{background:var(--panel);border:2px solid var(--line);border-radius:12px;padding:12px;border-left-width:8px}.bet-slot.low{border-left-color:var(--red)}.bet-slot.high{border-left-color:var(--blue)}.bet-slot.center{border-left-color:var(--green)}.bet-slot.smaller{border-left-color:var(--amber)}.bet-slot-main{display:flex;align-items:center;gap:12px}.bet-odds{color:#cfe0ff;font-weight:900;font-size:22px;min-width:52px}.bet-label{font-weight:800;font-size:18px}.bet-controls{display:flex;align-items:center;gap:12px;margin-top:10px;flex-wrap:wrap}.chip-ctl{display:flex;align-items:center;gap:12px}.chip-ctl button{width:44px;height:44px;border-radius:10px;border:none;background:var(--panel2);color:#fff;font-size:26px;font-weight:800}.chip-ctl button:disabled{opacity:.35}.chip-count{font-size:18px;font-weight:700;min-width:60px}.wager-field{flex:1;min-width:110px;font-size:18px;padding:10px;border-radius:10px;border:2px solid var(--line);background:#0f1420;color:#fff}.result{font-size:72px;font-weight:900}.result.win{color:#4bd88a}.result.loss{color:#ff7a7a}.result.flat{color:var(--amber)}
