*{box-sizing:border-box}:root{font-family:Arial,sans-serif;color:#f2f7f4;background:#10241e;color-scheme:dark}body{margin:0}main{max-width:860px;margin:auto;padding:14px}button,select{font:inherit;min-height:44px;border:1px solid #648276;border-radius:10px;background:#244438;color:inherit;padding:8px 12px}button{cursor:pointer}button:disabled{opacity:.5;cursor:default}button:focus-visible,select:focus-visible{outline:3px solid #e3fa8b;outline-offset:3px}header,.signals{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}h1{font-size:28px;margin:8px 0}.muted{color:#bed3c6;font-size:14px}.scores{display:flex;gap:6px;margin:12px 0}.score{flex:1;text-align:center;padding:8px 3px;background:#203e32;border-radius:8px;font-size:13px}.score.mine{background:#dff68c;color:#172719}.score b{font-size:18px;display:block}.arena{height:480px;position:relative;border-radius:32px;background:radial-gradient(ellipse,#37634b,#19392c);border:2px solid #638065}.seat{position:absolute;transform:translate(-50%,-50%);width:94px;padding:7px 3px;text-align:center;border:2px solid transparent;border-radius:12px;background:#173328}.seat.partner{border-color:#def58b}.seat.active{background:#657b36;border-color:#edffab}.seat .name{font-size:14px;display:block}.seat small{font-size:12px;color:#bfd0c3}.reaction{position:absolute;right:-6px;top:-14px;font-size:25px}.backs{display:flex;justify-content:center;gap:3px;margin-top:5px}.back{width:12px;height:18px;border:1px solid #d3e5d0;border-radius:3px;background:#6689ad}.center{position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);width:190px;text-align:center}.center p{font-size:14px;margin:0 0 9px}.center small{display:block;margin-top:12px;color:#d0dfd0;font-size:12px}.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.card{background:#fbfaf0;color:#202b25;border:2px solid transparent;border-radius:9px;min-height:82px;padding:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:Georgia,serif;font-size:26px;font-weight:bold;box-shadow:0 3px 3px #0004}.card.red{color:#b43842}.card.selected{outline:3px solid #e2fb8a}.card span{font-size:24px}.card:disabled{opacity:1}.self{position:absolute;bottom:14px;width:100%;text-align:center;font-size:14px}.hand{grid-template-columns:repeat(4,1fr)}.hand .card{min-height:96px}.hand-title{display:flex;justify-content:space-between;gap:8px;font-size:14px;margin:14px 0 9px}.actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px}.primary{background:#def58b;color:#152919;border:0;font-weight:bold}.danger{background:#5e3935;color:#ffe1d8}.signals{margin:12px 0;font-size:14px}.signals button{padding:8px 10px}.signals #signals button{font-size:22px}#status{min-height:38px;font-size:14px;line-height:1.5;color:#e3f7af}#events{min-height:70px;padding:10px;border-radius:10px;background:#19392c;font-size:14px;line-height:1.6}details{margin-top:16px;font-size:14px;line-height:1.6;color:#c5d6ca}summary{font-size:16px;cursor:pointer;color:white}.flying{position:fixed;z-index:100;pointer-events:none;min-height:0;width:46px;height:62px;font-size:20px;box-shadow:0 6px 18px #0006}dialog{max-width:460px;width:92%;background:#1d392c;color:white;border:1px solid #94ad81;border-radius:20px;padding:24px}dialog::backdrop{background:#071b15dc}dialog p{line-height:1.5}dialog button{width:100%;margin-top:12px}#reveal{font-size:20px;line-height:1.8}@media(max-width:420px){main{padding:8px}.arena{height:440px}.seat{width:76px}.seat .name{font-size:13px}.center{width:146px}.card{min-height:72px;font-size:23px}.hand .card{min-height:84px}button,select{padding:8px}}

.center #refresh{width:100%;margin-top:10px;font-size:14px;padding:8px 4px}

.vote-row{padding:7px 0;border-bottom:1px solid #486052;font-size:14px}#voteDialog{max-height:90dvh;overflow:auto}
[hidden]{display:none!important}.score{border-top:3px solid var(--pair,#dff68c)}.score.mine{background:#243e28;color:#efffd4}.badge{color:var(--pair,#dff68c);font-weight:bold}.seat{border-color:var(--pair);border-width:2px}.seat.partner{box-shadow:0 0 0 3px #dff68c22}.seat.active{background:#637b39;box-shadow:0 0 0 5px #edffab44}.card.exchanging{outline:4px solid #efffa8;box-shadow:0 0 20px #e9ff9677}.vote-state{font-size:12px;font-weight:bold;line-height:1.4;margin-top:4px;min-height:17px}.vote-yes{color:#dff68c}.vote-no{color:#ffb9aa}.vote-wait{color:#d6ddd5}#myVote{font-size:12px;margin-top:3px}#voteInfo{font-size:12px;line-height:1.4;margin-top:6px}#voteCancel{font-size:12px;padding:4px;width:100%;margin-top:5px;min-height:34px}.center{top:49%;width:190px}.arena{height:520px}.self{bottom:12px}.signals{align-items:flex-start}.signals #signals{display:flex;gap:5px}.signals #secretHint{margin:0;font-size:14px;max-width:220px}.signals #secretHint summary{font-size:14px;min-height:44px;padding-top:12px}.signals #secretHint p{margin:3px 0}.field{display:flex;flex-direction:column;gap:7px;font-size:14px;margin-top:16px}.field select{width:100%}.sequence-fields{display:flex;gap:14px}.sequence-fields .field{flex:1}.signal-preview{font-size:26px;text-align:center}.reveal-player{border:1px solid #56725f;border-radius:12px;padding:12px;margin-top:12px}.reveal-player h3{font-size:16px;margin:0 0 10px}.reveal-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.reveal-cards .card{min-height:65px;font-size:21px}.reveal-explanation{font-size:14px;margin:9px 0 0;line-height:1.5}.score-change{background:#2a4936;padding:12px;border-radius:10px;font-weight:bold}dialog{max-height:92dvh;overflow:auto}#pairs button{border-left:5px solid var(--pair)}@media(max-width:420px){.arena{height:485px}.center{width:142px}.seat{width:77px;padding:6px 2px}.seat .name{font-size:13px}.vote-state{font-size:12px}.center #refresh{font-size:13px}.hand-title{font-size:13px}}

.preferences{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 12px}.preferences button{font-size:13px}.hand .card{touch-action:none;user-select:none;-webkit-user-select:none;transition:transform .15s}.hand .card.selected{transform:translateY(-7px)}.card.locked{opacity:.65!important;cursor:progress}.card.drop-target{outline:4px solid #edff8b;transform:scale(1.04)}.drag-ghost{pointer-events:none;position:fixed;z-index:120;width:64px;height:86px;min-height:0;transform:rotate(-5deg);opacity:.94}#tutorialPanel{position:sticky;top:6px;z-index:40;background:#e3f49b;color:#193023;border:1px solid #f5ffcb;border-radius:14px;padding:12px;margin-bottom:12px;display:flex;gap:10px;align-items:center;box-shadow:0 4px 16px #0003}#tutorialPanel strong{font-size:15px}#tutorialPanel p{font-size:14px;line-height:1.4;margin:5px 0 0}#tutorialPanel button{font-size:12px;max-width:115px;flex-shrink:0}.tutorial-choice{display:flex;gap:10px;align-items:center;margin-top:18px;font-size:14px}.tutorial-choice input{width:20px;height:20px}.tutorial-focus{outline:3px dashed #f2ffb7;outline-offset:5px}@media(prefers-reduced-motion:reduce){.hand .card{transition:none}}
/* Mobile table and screens from the current game specification. */
main{padding-bottom:max(14px,env(safe-area-inset-bottom))}.menu-card{padding:24px;background:#203e32;border-radius:20px;margin:20px 0}.menu-card h2{margin:10px 0}.menu-buttons{display:grid;gap:10px}.menu-buttons button{font-size:17px;min-height:52px}.arena{height:540px;border-radius:42% / 22%;overflow:visible}.seat{width:76px;min-height:66px;padding:6px 2px;z-index:2}.seat .name{font-size:13px}.seat small{font-size:12px}.seat .backs{margin:3px 0}.seat.suspected{box-shadow:0 0 0 4px #fff5b8,0 0 22px #f1cf7266;z-index:5}.seat.spectator{opacity:.55}.suspicion{display:block;color:#fff4a1!important}.center{top:50%;width:176px;z-index:1}.center .cards{gap:7px}.center .card{min-height:82px}.center #refresh{font-size:12px;min-height:42px}.actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;position:sticky;bottom:max(6px,env(safe-area-inset-bottom));z-index:10;background:#10241ee8;padding:6px 0}.actions button{font-size:14px;padding:10px 3px;min-height:48px;white-space:nowrap}.hand .card{min-height:94px}.reaction{left:50%;right:auto;top:-12px;transform:translate(-50%,-100%);z-index:20;pointer-events:none}.reaction:empty{display:none}.reaction.emoji{font-size:40px;line-height:1.1;filter:drop-shadow(0 2px 3px #000)}.reaction.phrase{font-size:15px;line-height:1.25;padding:8px 10px;max-width:128px;min-width:100px;background:#f2f5e8;color:#17362b;border-radius:12px;box-shadow:0 3px 12px #0006;white-space:normal;overflow-wrap:anywhere}.seat.suspected .reaction{outline:3px solid #ffdf72;border-radius:12px}.emoji-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.emoji-grid button{font-size:29px;min-height:52px;padding:4px}.phrase-grid{display:grid;gap:6px}.phrase-grid button{font-size:16px;text-align:left}.signal-tabs{display:flex;gap:8px;margin-bottom:12px}.signal-tabs button{flex:1}.chat-messages{max-height:130px;overflow:auto;background:#132e23;border-radius:8px;padding:8px;margin-top:12px;font-size:14px;line-height:1.4}.chat-messages:empty{display:none}form{display:flex;gap:6px;margin-top:10px}form input{width:100%;min-width:0;font:inherit;color:inherit;background:#102b20;border:1px solid #618372;border-radius:8px;padding:10px;font-size:16px}dialog form button{width:auto;margin:0;font-size:13px}#infoContent{font-size:16px;line-height:1.6}.standing{padding:12px;margin-top:10px;border-left:4px solid var(--pair);background:#163325;border-radius:6px}.standing p{margin:8px 0;font-size:14px}#ratingResult{line-height:1.5;margin-top:16px}#connection{background:#554323;color:#fff1be;padding:10px;border-radius:8px;font-size:14px}#voteActions{display:flex;gap:5px;margin-top:5px}#voteActions button{flex:1;min-height:36px;padding:4px;font-size:13px}.quiet{background:transparent;font-size:13px}#dealOverlay{position:absolute;inset:0;background:#163b2cf5;border-radius:inherit;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:30}#dealOverlay strong{font-size:26px}.deal-stack{font-size:48px;letter-spacing:-15px;animation:deal 1s infinite alternate}@keyframes deal{from{transform:translateY(0) rotate(-8deg);letter-spacing:-15px}to{transform:translateY(-16px) rotate(8deg);letter-spacing:2px}}@media(max-width:420px){.arena{height:490px}.seat{width:65px;min-height:60px;padding:4px 1px}.seat .name{font-size:12px}.seat small{font-size:12px;letter-spacing:-.3px}.center{width:132px}.center .card{min-height:72px}.center #refresh{font-size:11px;white-space:normal}.center p{font-size:12px}.center small{font-size:11px}.reaction.phrase{font-size:14px;min-width:86px;max-width:105px}.actions button{font-size:12px}.hand .card{min-height:84px}.reaction.emoji{font-size:36px}}@media(prefers-reduced-motion:reduce){.deal-stack{animation:none}}@media(max-height:700px){.arena{height:440px}}
.scores{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.score{display:grid;grid-template-columns:1fr auto;align-items:center;gap:3px 6px;text-align:left;padding:8px;min-width:0}.score-team{font-size:12px;grid-column:1}.score-names{display:block;font-size:13px;line-height:1.3;grid-column:1;overflow-wrap:anywhere;color:#e1ede2}.score b{grid-column:2;grid-row:1/3;font-size:23px}.phrase-row{display:grid;grid-template-columns:minmax(0,1fr) 46px;gap:6px}.phrase-row button{margin:0}.phrase-row .favorite-star{text-align:center;font-size:25px;padding:4px;color:#e6f392}.signal-tabs{display:grid;grid-template-columns:1fr 1fr 1.25fr}.signal-tabs button{padding:7px 3px;font-size:13px;min-width:0}.round-table{width:100%;border-collapse:collapse;font-size:14px}.round-table th,.round-table td{padding:8px 6px;border-bottom:1px solid #45634e;text-align:left}.round-table th{font-size:12px;color:#c3d8c5}.round-table td:last-child{text-align:right;font-size:19px;font-weight:bold}.round-table td span,.round-table td small{display:block;margin-top:3px}.round-table td small{color:#bfcdc1}.round-table .own-row{background:#365135}.emoji-grid button,.reaction.emoji{font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif}@media(max-width:380px){.scores{grid-template-columns:repeat(2,minmax(0,1fr))}.score-names{font-size:13px}}@media(min-width:700px){.scores{grid-template-columns:repeat(5,minmax(0,1fr))}}

.emoji-option{display:grid;grid-template-rows:56px 44px;gap:3px}.emoji-option button{margin:0;min-height:44px}.emoji-option .favorite-star{font-family:Arial,sans-serif;font-size:23px;color:#e6f392;padding:2px}.phrase-row .emoji-send{font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;font-size:30px;text-align:center}
.signal-panel{background:#193c2c;border:1px solid #607d65;border-radius:14px;padding:12px;margin:8px 0;max-height:300px;overflow:auto}.signal-panel h3{margin:0 0 8px;font-size:15px}.signal-panel .field{margin-top:8px}.signal-panel .emoji-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.signal-panel .emoji-option{grid-template-rows:46px 34px}.signal-panel .favorite-star{min-height:34px}.signal-panel .signal-tabs button{margin:0}.signal-panel #signalCooldown{margin:6px 0;font-size:13px}.quick-favorites{display:flex;gap:7px;overflow-x:auto;padding:8px 0;align-items:center;min-height:48px}.quick-favorites button{flex-shrink:0;min-height:44px;margin:0}.quick-emoji{font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif;font-size:26px;padding:4px 10px}.quick-phrase{font-size:14px;max-width:170px;white-space:normal}.quick-favorites .muted{font-size:13px}#roundDetails{margin:14px 0}#roundDetails summary{font-size:14px}#result #scoreChange{margin-top:8px}#result h3{font-size:16px;margin:12px 0 6px}

/* One reusable squad row in the temporary network proof. */
.squad-card { display:flex; align-items:center; gap:10px; min-height:56px; padding:8px 12px; }
.squad-card .team-mark { width:40px; height:40px; object-fit:contain; flex:0 0 40px; margin:0; }
.squad-card__label { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left; }
.foundation-panel { padding:16px; }
.foundation-panel input, .foundation-panel button { margin:4px; max-width:100%; }
.foundation-room-id { overflow-wrap:anywhere; user-select:text; }
.rank-grid-placeholder{display:none}
.match-final-row-right{display:flex;align-items:center;gap:.75rem;flex-shrink:0}
.ranked-player-results{display:grid;gap:.15rem;margin-top:.35rem}
.ranked-player-result{display:block;opacity:.86}
.ranked-delta{font-weight:800;min-width:3.5rem;text-align:right}
.ranked-delta.positive{color:#d6b24a}.ranked-delta.negative{color:#e59a85}
.ranked-my-result{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:center;margin:.75rem 0;padding:.8rem 1rem;border:1px solid rgba(218,178,74,.45);border-radius:14px;background:rgba(255,255,255,.035)}
.ranked-my-result small{width:100%;opacity:.82}

/* Tournament foundation */
.tournament-stage-banner{margin:10px 0;padding:10px 12px;border:1px solid rgba(244,194,93,.55);border-radius:12px;background:rgba(26,75,58,.72);font-weight:700;}
.tournament-spectators{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0;padding:10px 12px;border:1px solid rgba(244,194,93,.28);border-radius:12px;background:rgba(7,42,32,.72);}
.tournament-spectators strong{width:100%;}
.tournament-spectators span{padding:4px 8px;border:1px solid rgba(244,194,93,.25);border-radius:999px;font-size:.85rem;}
.score.eliminated{opacity:.58;filter:saturate(.7);}
.score.safe-observer{opacity:.78;}
.score-status{display:inline-block;margin-left:6px;font-size:.65rem;letter-spacing:.04em;}
