:root{--bg: #0f1620;--panel: #1a2330;--panel-2: #243042;--accent: #7ad97a;--accent-2: #ffd054;--text: #e8edf3;--text-dim: #8a98aa;--danger: #e76060;--red: #d63a3a;--black: #1a2330;--card-bg: #f3f0e7;--card-border: #2a3344;--table-felt: #1e5f3d;--shadow: 0 4px 18px rgba(0, 0, 0, .45);--radius: 8px;--card-scale: 1;--card-w: calc(56px * var(--card-scale));--card-h: calc(80px * var(--card-scale))}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}button{font:inherit;cursor:pointer;border:1px solid var(--card-border);background:var(--panel-2);color:var(--text);padding:8px 14px;border-radius:var(--radius)}button:hover:not(:disabled){background:#2e3c52}button:disabled{opacity:.4;cursor:not-allowed}input,select{font:inherit;padding:6px 10px;border-radius:6px;border:1px solid var(--card-border);background:var(--panel);color:var(--text)}.screen{min-height:100vh;padding:24px}.onboarding{display:flex;flex-direction:column;align-items:center;gap:16px;padding-top:15vh}.onboarding input{font-size:1.2em;width:260px;text-align:center}.onboarding .error{color:var(--danger);font-size:.9em;margin:0}.net-status{display:inline-flex;align-items:center;gap:6px;background:var(--panel-2);padding:4px 10px;border-radius:999px;font-size:.82em}.net-status .dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim)}.net-status.net-ok .dot{background:var(--accent)}.net-status.net-busy .dot,.net-status.net-connecting .dot{background:var(--accent-2);animation:pulse 1s infinite}.net-status.net-down .dot{background:var(--danger)}.net-status.net-down{color:var(--danger)}.net-status.net-busy .label{color:var(--accent-2)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.busy-overlay{position:fixed;bottom:16px;right:16px;background:#141e2df2;border:1px solid var(--accent-2);padding:10px 14px;border-radius:var(--radius);display:flex;align-items:center;gap:10px;z-index:100;box-shadow:var(--shadow);font-size:.9em;max-width:320px}.busy-overlay .spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.15);border-top-color:var(--accent-2);border-radius:50%;animation:spin .8s linear infinite}.busy-overlay .busy-text{color:var(--text)}@keyframes spin{to{transform:rotate(360deg)}}.lobby header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:16px}.lobby .toolbar{display:flex;gap:8px;margin-bottom:16px}.lobby .create-form{background:var(--panel);padding:16px;border-radius:var(--radius);display:grid;gap:10px;grid-template-columns:1fr 1fr;max-width:600px;margin-bottom:16px}.lobby .create-form label{display:flex;align-items:center;gap:6px}.lobby .rooms{list-style:none;padding:0}.lobby .room-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;padding:12px 16px;background:var(--panel);border-radius:var(--radius);margin-bottom:8px;align-items:center}.lobby .room-row .meta{color:var(--text-dim);font-size:.9em}.lobby .empty{color:var(--text-dim);padding:24px;text-align:center}.room header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:24px}.room .meta{color:var(--text-dim);font-size:.9em}.room .seats{display:grid;grid-template-areas:". top ." "left . right" ". bottom .";grid-template-columns:1fr 1.5fr 1fr;gap:24px;max-width:700px;margin:0 auto 24px}.room .seat{background:var(--panel);padding:20px;border-radius:var(--radius);text-align:center;min-height:110px}.room .seat.mine{outline:2px solid var(--accent)}.room .seat-TOP{grid-area:top}.room .seat-RIGHT{grid-area:right}.room .seat-BOTTOM{grid-area:bottom}.room .seat-LEFT{grid-area:left}.room .seat .label{color:var(--text-dim);font-size:.85em;margin-bottom:6px}.room .seat .status.ready{color:var(--accent)}.room .seat .status.waiting{color:var(--text-dim)}.room .occupant{display:flex;flex-direction:column;align-items:center;gap:4px}.room .stand-up{font-size:.78em;padding:3px 10px;margin-top:4px;background:var(--panel-2)}.room .actions{display:flex;gap:12px;justify-content:center;margin:24px 0}.last-match-banner{background:var(--panel);border:1px solid var(--accent-2);border-radius:var(--radius);padding:12px 16px;margin:0 auto 16px;max-width:700px;display:flex;flex-wrap:wrap;gap:10px;align-items:center}.last-match-banner .vs{color:var(--text-dim);margin:0 4px}.last-match-banner .hint{color:var(--text-dim);font-size:.88em;margin-left:auto}.room .spectators{margin-top:24px}.room .spectators ul{list-style:none;padding:0;color:var(--text-dim)}.game{display:grid;grid-template-columns:1fr 320px;grid-template-rows:auto 1fr auto;grid-template-areas:"header header" "main sidebar" "footer sidebar";height:100vh;gap:12px;padding:12px}.game-header{grid-area:header;display:flex;align-items:center;gap:24px;background:var(--panel);padding:8px 16px;border-radius:var(--radius)}.game-header .room-name{font-weight:700}.game-header .header-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.game-main{grid-area:main;position:relative;min-height:0;min-width:0}.game-footer{grid-area:footer;min-height:0}.game .sidebar{grid-area:sidebar;display:flex;flex-direction:column;gap:12px;min-height:0}.table{position:relative;height:100%;min-height:300px;background:var(--table-felt);border-radius:16px;display:grid;grid-template-areas:". north ." "west center east" ". south .";grid-template-columns:1fr 2fr 1fr;grid-template-rows:1fr 2fr 1fr;box-shadow:var(--shadow);overflow:hidden}.seat-area{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px;gap:8px;min-width:0}.seat-area.pos-north{grid-area:north}.seat-area.pos-south{grid-area:south}.seat-area.pos-west{grid-area:west}.seat-area.pos-east{grid-area:east}.seat-area .player-info{background:#0006;padding:6px 10px;border-radius:6px;color:#fff;text-align:center;min-width:100px;max-width:100%}.seat-area.active .player-info{outline:2px solid var(--accent);box-shadow:0 0 12px #7ad97a8c}.seat-area .seat-name{font-size:.8em;color:var(--text-dim)}.seat-area .caller-badge{background:var(--accent-2);color:#000;font-size:.7em;font-weight:700;padding:1px 6px;border-radius:3px;margin-top:3px;display:inline-block}.seat-area .turn-badge{color:var(--accent);font-size:.72em;font-weight:700;margin-top:3px}.seat-area .dc-badge,.seat-area .bot-badge{background:var(--danger);color:#fff;font-size:.7em;padding:1px 5px;border-radius:3px}.opponent-cards{display:flex}.opponent-cards .card{width:40px;height:60px;pointer-events:none}.opponent-cards.stack-north{flex-direction:row}.opponent-cards.stack-north .card{margin-left:-28px}.opponent-cards.stack-north .card:first-child{margin-left:0}.opponent-cards.stack-east{flex-direction:column}.opponent-cards.stack-east .card{margin-top:-44px}.opponent-cards.stack-east .card:first-child{margin-top:0}.opponent-cards.stack-west{flex-direction:column}.opponent-cards.stack-west .card{margin-top:-44px}.opponent-cards.stack-west .card:first-child{margin-top:0}.table-center{grid-area:center;position:relative}.center-slot{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}.center-slot.center-south{transform:translate(-50%,10%)}.center-slot.center-north{transform:translate(-50%,-110%)}.center-slot.center-east{transform:translate(10%,-50%)}.center-slot.center-west{transform:translate(-110%,-50%)}.center-slot .card{box-shadow:0 4px 14px #0000008c}.trump-indicator{position:absolute;top:12px;left:12px;background:#000000b8;padding:8px 16px;border-radius:10px;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid var(--accent-2)}.trump-indicator .trump-label{font-size:.8em;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px}.trump-indicator .trump-suit{font-size:1.9em;font-weight:700;line-height:1;color:var(--text)}.trump-indicator .trump-suit.suit-hearts,.trump-indicator .trump-suit.suit-diamonds{color:#ff6b6b}.card{width:var(--card-w);height:var(--card-h);background:var(--card-bg);border:1px solid var(--card-border);border-radius:6px;position:relative;display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;padding:calc(3px * var(--card-scale)) calc(5px * var(--card-scale));font-weight:700;box-shadow:0 1px 4px #0000004d;color:var(--black);font-size:calc(1em * var(--card-scale));transition:transform .15s,box-shadow .15s}.card.red{color:var(--red)}.card.black{color:var(--black)}.card.facedown{background:repeating-linear-gradient(45deg,#25406b,#25406b 6px,#1c3257 6px,#1c3257 12px)}.card .corner{display:flex;align-items:center;gap:2px;line-height:1}.card .corner.top-left{align-self:flex-start}.card .corner.bottom-right{align-self:flex-end;transform:rotate(180deg)}.card .corner .rank{font-size:.9em}.card .corner .suit{font-size:1em}.card .center-suit{flex:1;display:flex;align-items:center;justify-content:center;font-size:1.8em}.card.disabled{opacity:.55;filter:grayscale(.4);cursor:not-allowed}.card:not(.disabled):not(.facedown):hover{transform:translateY(-4px);box-shadow:0 4px 10px #00000073}.card.dragging{opacity:.5}.card.drag-over{box-shadow:0 0 0 3px var(--accent),0 4px 10px #0006;transform:translateY(-2px)}.card.face-card{padding:calc(2px * var(--card-scale)) calc(4px * var(--card-scale));overflow:hidden}.card.face-card .corner{position:absolute;z-index:2;background:#f3f0e7d9;padding:0 2px;border-radius:3px}.card.face-card .corner.top-left{top:3%;left:4%}.card.face-card .corner.bottom-right{bottom:3%;right:4%}.card.face-card .portrait{position:absolute;top:14%;right:8%;bottom:10%;left:8%;background-size:cover;background-position:center top;background-repeat:no-repeat;border-radius:4px;z-index:1;box-shadow:inset 0 -8px 16px #00000040}.hand-wrap{background:var(--panel);border-radius:var(--radius);padding:6px 8px}.hand-controls{display:flex;gap:6px;align-items:center;padding:0 4px 6px;font-size:.85em;color:var(--text-dim);flex-wrap:wrap}.hand-controls .label{margin-right:4px}.hand-controls .spacer{flex:1;min-width:12px}.hand-controls button{padding:3px 10px;font-size:.88em}.hand-controls button.active{background:var(--accent);color:#000;border-color:var(--accent)}.hand-controls .reset-order{background:var(--accent-2);color:#000;border-color:var(--accent-2)}.hand-controls .card-scale{min-width:40px;text-align:center;color:var(--text);font-weight:700}.hand{display:flex;gap:calc(8px * var(--card-scale));justify-content:center;padding:4px;min-height:var(--card-h)}.opponent-cards .card,.opponent-cards .card.facedown{width:calc(40px * var(--card-scale));height:calc(60px * var(--card-scale))}.scoreboard{display:flex;align-items:center;gap:16px}.scoreboard .team{text-align:center}.scoreboard .team .label{font-size:.75em;color:var(--text-dim)}.scoreboard .team .score{font-size:1.6em;font-weight:700}.scoreboard .separator{color:var(--text-dim)}.scoreboard .target{color:var(--text-dim);font-size:.85em;margin-left:6px}.bidding.panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--panel);padding:16px 20px;border-radius:var(--radius);box-shadow:var(--shadow);z-index:5}.bidding .prompt{margin-bottom:12px}.bidding .suits{display:flex;gap:8px;justify-content:center;margin-bottom:10px}.bidding .suit-btn{font-size:1.8em;width:56px;height:56px;padding:0}.bidding .suit-btn.hearts,.bidding .suit-btn.diamonds{color:var(--red)}.bidding .passes{display:flex;gap:8px;flex-wrap:wrap;align-items:center;font-size:.9em}.bidding.banner{position:absolute;left:50%;top:14px;transform:translate(-50%);background:#00000080;padding:6px 14px;border-radius:6px;color:var(--text-dim);z-index:4}.move-timer{font-size:1.4em;font-weight:700;min-width:60px;text-align:center;padding:4px 12px;background:var(--panel-2);border-radius:var(--radius)}.move-timer.urgent{background:var(--danger)}.move-timer.paused{background:var(--accent-2);color:#000}.chat{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--panel);border-radius:var(--radius);padding:8px}.chat .tabs{display:flex;gap:4px;margin-bottom:6px}.chat .tabs button.active{background:var(--accent);color:#000}.chat ul{list-style:none;margin:0;padding:0;flex:1;overflow-y:auto}.chat ul li{padding:4px 6px;border-bottom:1px solid rgba(255,255,255,.05);font-size:.92em;word-break:break-word}.chat ul li.log-line{color:var(--text-dim);font-style:italic;font-size:.88em}.chat .composer{display:flex;gap:4px;margin-top:6px}.chat .composer input{flex:1}.voice-panel{background:var(--panel);border-radius:var(--radius);padding:8px 10px}.voice-panel .mic-on{background:var(--accent);color:#000}.voice-panel .mic-off{background:var(--panel-2)}.voice-peers{list-style:none;padding:0;margin:6px 0 0;font-size:.88em;color:var(--text-dim)}.voice-peers li{display:flex;align-items:center;gap:6px;padding:2px 0}.voice-peers .indicator{width:8px;height:8px;border-radius:50%;background:var(--text-dim)}.voice-peers .indicator.on{background:var(--accent)}.round-modal,.match-modal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--panel);padding:24px 32px;border-radius:var(--radius);text-align:center;box-shadow:var(--shadow);z-index:6}.round-modal .hint,.match-modal .hint{color:var(--text-dim);margin-top:8px;font-size:.9em}.last-trick-btn{background:var(--panel-2)}.leave-game{background:var(--danger);color:#fff;border-color:var(--danger)}.leave-game:hover:not(:disabled){background:#c84040}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border-radius:var(--radius);padding:20px 24px;box-shadow:var(--shadow);min-width:320px;max-width:90vw}.modal h3{margin:0 0 12px}.modal .close{margin-top:16px}.last-trick-modal .empty{color:var(--text-dim)}.last-trick-modal .trick-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,auto);gap:16px;justify-content:center}.last-trick-modal .trick-list li{display:flex;flex-direction:column;align-items:center;gap:6px}.last-trick-modal .who{text-align:center;font-size:.85em}.last-trick-modal .who .seat-label{display:block;color:var(--text-dim);font-size:.78em}.last-trick-modal .who .player-name{font-weight:600}.round-summary-modal{max-width:760px}.round-summary-modal .callout{margin-bottom:14px;color:var(--text-dim)}.round-summary-modal .callout strong{color:var(--accent-2)}.round-summary-modal .dim{color:var(--text-dim)}.round-summary-modal .totals{display:flex;align-items:center;justify-content:center;gap:20px;margin:12px 0 20px}.round-summary-modal .team-total{background:var(--panel-2);padding:10px 16px;border-radius:var(--radius);text-align:center;min-width:150px;border:2px solid transparent}.round-summary-modal .team-total.caller{border-color:var(--accent-2)}.round-summary-modal .team-total .team-label{font-size:.85em;color:var(--text-dim)}.round-summary-modal .team-total .points{font-size:1.7em;font-weight:700;margin:4px 0}.round-summary-modal .team-total .balls{color:var(--accent);font-weight:600}.round-summary-modal .team-total .tricks-count{font-size:.8em;color:var(--text-dim);margin-top:4px}.round-summary-modal .totals .vs{color:var(--text-dim)}.round-summary-modal .tricks-section{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;max-height:50vh;overflow-y:auto}.round-summary-modal .tricks-section h4{margin:0 0 8px;font-size:.95em;color:var(--text-dim)}.round-summary-modal .trick-list-vertical{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.round-summary-modal .trick-list-vertical>li{background:var(--panel-2);border-radius:6px;padding:8px}.round-summary-modal .trick-meta{font-size:.82em;color:var(--text-dim);margin-bottom:6px}.round-summary-modal .trick-cards{display:flex;gap:4px;flex-wrap:wrap}.round-summary-modal .mini-played{display:flex;flex-direction:column;align-items:center;gap:2px}.round-summary-modal .mini-played .card{width:38px;height:54px;font-size:.7em;pointer-events:none}.round-summary-modal .mini-played .mini-name{font-size:.65em;color:var(--text-dim);max-width:50px;text-align:center;line-height:1}.round-summary-modal .empty{color:var(--text-dim);padding:8px}.round-summary-modal .match-line{text-align:center;padding:10px 0;border-top:1px solid rgba(255,255,255,.07)}.round-summary-modal .close.primary{display:block;margin:12px auto 0;background:var(--accent);color:#000;padding:8px 24px;border-color:var(--accent)}.card.trick-won{box-shadow:0 0 0 3px var(--accent-2),0 0 16px #ffd054bf;z-index:3}.center-slot.won{position:relative}.center-slot .won-label{position:absolute;left:50%;bottom:-14px;transform:translate(-50%);font-size:.95em;font-weight:700;color:#000;background:var(--accent-2);padding:2px 11px;border-radius:11px;white-space:nowrap;z-index:5;box-shadow:0 2px 8px #0000008c}.leader-badge{margin-left:6px;font-size:.7em;color:#6db3ff;font-weight:700}.spectators-ingame{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:4px 10px;margin:0 0 6px;background:#00000059;border-radius:6px;font-size:.82em;color:var(--text-dim)}.spectators-ingame .label{font-weight:700}.spectators-ingame .spec{background:var(--panel-2);padding:1px 7px;border-radius:10px}.spectators-ingame .spec.offline{opacity:.5}.last-trick-modal .trick-took{text-align:center;margin-bottom:8px}.last-trick-modal .trick-list li.won{background:#ffffff0f;border-radius:6px}@media (max-width: 820px){.screen{padding:10px}.game{grid-template-columns:1fr;grid-template-rows:auto auto auto auto;grid-template-areas:"header" "main" "footer" "sidebar";height:auto;min-height:100vh;gap:8px;padding:8px}.game-header{flex-wrap:wrap;gap:6px 10px;padding:6px 10px}.game-header .room-name{width:100%}.game-header .header-actions{margin-left:0;width:100%;flex-wrap:wrap;gap:6px}.game-header .header-actions button,.game-header .header-actions select{padding:6px 10px;font-size:.9em}.game-main{min-height:58vh}.table{min-height:58vh;border-radius:12px}.game .sidebar{flex-direction:column}.chat{max-height:38vh}.hand{justify-content:flex-start;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}.hand-controls{font-size:.8em}.opponent-cards .card,.opponent-cards .card.facedown{width:24px;height:36px}.opponent-cards.stack-north .card{margin-left:-16px}.opponent-cards.stack-east .card,.opponent-cards.stack-west .card{margin-top:-26px}.center-slot .card{width:46px;height:66px;font-size:.8em}.seat-area{padding:4px}.seat-area .player-info{min-width:0;padding:4px 7px;font-size:.85em}.bidding.panel{width:92vw;max-width:360px;padding:14px}.bidding .suit-btn{width:48px;height:48px;font-size:1.5em}.lobby header{flex-direction:column;align-items:flex-start;gap:8px}.lobby .create-form{grid-template-columns:1fr;max-width:100%}.lobby .room-row{grid-template-columns:1fr auto;gap:6px 10px}.lobby .room-row .name{grid-column:1 / -1;font-weight:600}.room header{flex-direction:column;align-items:flex-start;gap:8px}.room .seats{grid-template-columns:1fr;grid-template-areas:"top" "right" "bottom" "left";gap:10px;max-width:100%}.room .seat{min-height:auto;padding:12px}.room .actions{flex-wrap:wrap}.last-match-banner{max-width:100%}.modal{min-width:0;width:92vw;padding:16px}.round-summary-modal{max-width:96vw}.round-summary-modal .totals{gap:10px}.round-summary-modal .team-total{min-width:0;flex:1;padding:8px}.round-summary-modal .tricks-section{grid-template-columns:1fr}.last-trick-modal .trick-list{grid-template-columns:repeat(2,auto);gap:12px}.spectators-ingame{font-size:.78em}}@media (max-width: 400px){.game-header .scoreboard{gap:8px}.scoreboard .team .score{font-size:1.3em}.move-timer{font-size:1.1em;min-width:44px;padding:3px 8px}.center-slot .card{width:40px;height:58px}}@media (max-width: 820px){.trump-indicator{top:6px;left:6px;padding:5px 10px}.trump-indicator .trump-suit{font-size:1.4em}.seat-area .turn-badge,.seat-area .caller-badge{font-size:.66em}}.center-slot .played-by{position:absolute;top:-24px;left:50%;transform:translate(-50%);white-space:nowrap;font-size:1em;font-weight:600;color:#fff;background:#000000ad;padding:2px 10px 2px 3px;border-radius:12px;display:flex;align-items:center;gap:5px;pointer-events:none}.center-slot .played-by .order{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;background:var(--accent-2);color:#000;border-radius:50%;font-weight:700;font-size:.8em}.center-slot.newest .played-by .order{background:var(--accent)}.center-slot.newest .card{box-shadow:0 0 0 2px var(--accent),0 4px 14px #0009}@media (max-width: 820px){.center-slot .played-by{font-size:.8em;top:-19px}.center-slot .played-by .order{width:16px;height:16px;line-height:16px}}.bidding-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#000000b8;border:1px solid var(--accent-2);padding:18px 32px;border-radius:var(--radius);text-align:center;z-index:4;box-shadow:var(--shadow);min-width:220px}.bidding-status .who-bids{font-size:1.1em;color:var(--text-dim);text-transform:uppercase;letter-spacing:1px}.bidding-status .who-bids-name{font-size:2.2em;font-weight:700;color:var(--accent-2);line-height:1.1;margin-top:2px}.bid-note{margin-top:10px;font-size:1.05em;color:var(--accent);font-weight:600}.bidding.panel .bid-note{margin:0 0 10px}@media (max-width: 820px){.bidding-status{padding:14px 22px;min-width:0}.bidding-status .who-bids-name{font-size:1.7em}}.rules-btn{background:var(--panel-2)}.rules-modal{max-width:640px;max-height:85vh;overflow-y:auto;text-align:left}.rules-modal h2{margin:0 0 12px}.rules-modal h4{margin:16px 0 4px;color:var(--accent-2)}.rules-modal p{margin:4px 0;line-height:1.45}.rules-modal ul{margin:4px 0;padding-left:20px;line-height:1.5}.rules-modal li{margin:2px 0}.rules-modal .close.primary{position:sticky;bottom:0}.round-summary-modal .tricks-chrono{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto;margin-bottom:14px}.round-summary-modal .trick-row{background:var(--panel-2);border-radius:6px;padding:8px 10px}.round-summary-modal .trick-head{font-size:.85em;color:var(--text-dim);margin-bottom:6px}.round-summary-modal .trick-head .trick-no{display:inline-block;background:var(--accent-2);color:#000;font-weight:700;border-radius:4px;padding:0 7px;margin-right:8px}.round-summary-modal .trick-cards{display:flex;gap:10px;flex-wrap:wrap}.round-summary-modal .mini-played{position:relative}.round-summary-modal .mini-played .play-order{position:absolute;top:-7px;left:-7px;z-index:3;width:18px;height:18px;line-height:18px;text-align:center;background:var(--accent-2);color:#000;border-radius:50%;font-size:.72em;font-weight:700}.round-summary-modal .mini-played.won .play-order{background:var(--accent)}.seat-area .take-bot-seat{margin-top:5px;font-size:.72em;padding:3px 9px;background:var(--accent);color:#000;border-color:var(--accent);font-weight:700}.seat-area .take-bot-seat:hover:not(:disabled){background:#6bc96b}.seat-area .team-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:middle}.seat-area.team-blue .team-dot{background:#5b8ced}.seat-area.team-red .team-dot{background:#e8606b}.seat-area.team-blue .player-info{border-left:4px solid #5b8ced}.seat-area.team-red .player-info{border-left:4px solid #e8606b}.seat-area .you-badge{margin-left:6px;font-size:.66em;background:var(--accent);color:#000;border-radius:3px;padding:0 5px;font-weight:700;vertical-align:middle}.seat-area .partner-badge{margin-left:6px;font-size:.66em;background:var(--panel-2);color:var(--text);border-radius:3px;padding:0 5px;vertical-align:middle}.card.team-blue{border:2px solid #5b8ced}.card.team-red{border:2px solid #e8606b}.center-slot .played-by.team-blue{background:#284a8c}.center-slot .played-by.team-red{background:#7d2e36}.center-slot .best-label{position:absolute;left:50%;bottom:-16px;transform:translate(-50%);font-size:.72em;color:#000;background:var(--accent-2);font-weight:700;padding:0 8px;border-radius:8px;white-space:nowrap}.scoreboard .team .team-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.scoreboard .team.team-blue .team-dot{background:#5b8ced}.scoreboard .team.team-red .team-dot{background:#e8606b}.scoreboard .team.team-blue .score{color:#7ea8ff}.scoreboard .team.team-red .score{color:#ff8a92}.seat-area .caller-badge .suit-hearts,.seat-area .caller-badge .suit-diamonds{color:var(--red)}.turn-center{position:absolute;left:50%;top:30%;transform:translate(-50%,-50%);background:#0000009e;color:#fff;padding:5px 14px;border-radius:14px;font-size:.95em;z-index:3;white-space:nowrap;pointer-events:none;border:1px solid var(--accent)}.turn-center strong{color:var(--accent)}.turn-center .dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle;animation:pulse 1.2s infinite}.center-slot .card.trick-won{transform:scale(1.08)}@media (max-width: 820px){.turn-center{top:28%;font-size:.82em;padding:4px 10px}}
