.card{width:80px;height:112px;background:#fff;border:2px solid #333;border-radius:8px;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer;transition:all .2s;box-shadow:0 2px 4px #0003;margin:2px;-webkit-user-select:none;user-select:none;touch-action:manipulation;overflow:hidden;container-type:inline-size}.card-draggable{cursor:grab}.card-draggable:active{cursor:grabbing}.card:hover{transform:translateY(-5px);box-shadow:0 4px 8px #0000004d}.card.playable{cursor:pointer;border-color:#667eea}.card.playable:hover{border-color:#5568d3;transform:translateY(-8px)}.card.selected{border-color:#f59e0b;background:#fef3c7;transform:translateY(-10px);box-shadow:0 6px 12px #f59e0b66}.card-special{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-radius:6px;font-weight:700;font-size:.9em;text-align:center;padding:.5em}.card-special .card-name{white-space:nowrap;overflow:hidden;text-align:center}.card-standard{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700}.card-rank{font-size:1.5em;line-height:1}.card-suit{font-size:2em;line-height:1}.card:not([style*=font-size]) .card-rank{font-size:1.5rem}.card:not([style*=font-size]) .card-suit{font-size:2rem}.card:not([style*=font-size]) .card-special{font-size:.72rem;padding:4px 3px}.card.red{color:#dc2626}.card.black{color:#1f2937}@media (hover: none) and (pointer: coarse){.card:hover{transform:none;box-shadow:0 2px 4px #0003}.card.playable:hover{transform:none;border-color:#667eea}.card.selected,.card.selected.playable:hover{transform:translateY(-10px);box-shadow:0 6px 12px #f59e0b66}}.trick{background:#ffffffe6;border-radius:12px;padding:1rem;margin:1rem 0;box-shadow:0 4px 6px #0000001a;display:flex;flex-direction:column;min-height:0}.trick.empty{text-align:center;color:#999;font-style:italic;padding:2rem}.trick h3{margin:0 0 1rem;color:#333;font-size:1.2rem}.trick-plays{display:flex;flex-direction:column;gap:.75rem;max-height:calc(var(--mat-h, 400px) * .55);min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:4px}.trick-plays::-webkit-scrollbar{width:6px}.trick-plays::-webkit-scrollbar-track{background:transparent;border-radius:3px}.trick-plays::-webkit-scrollbar-thumb{background:transparent;border-radius:3px}.trick-plays:hover::-webkit-scrollbar-thumb{background:#00000040}.trick-plays::-webkit-scrollbar-thumb:hover{background:#00000059}@supports (scrollbar-width: thin){.trick-plays{scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.25) transparent}}.trick-play{display:flex;align-items:center;gap:1rem;padding:.5rem;background:#f5f5f5;border-radius:8px}.play-player{font-weight:700;min-width:120px;color:#667eea}.play-cards{display:flex;gap:4px;flex-wrap:wrap;align-items:center}.trick-play-omitted{font-size:.85rem;color:#666;margin-left:4px}@media (max-width: 640px){.trick{padding:6px;margin:2px 0}.trick h3{font-size:.75rem;margin-bottom:4px}.trick-plays{gap:4px}.trick-play{flex-direction:column;align-items:flex-start;gap:2px;padding:3px 4px}.play-player{min-width:0;max-width:100%;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#ffffffbf;font-weight:600}.play-cards{gap:2px}}.trick .play-cards .card.special .card-special{font-size:.72rem;padding:6px}@media (max-width: 480px){.trick .play-cards .card.special .card-special{font-size:.6rem;padding:2px;line-height:1.1;overflow-wrap:anywhere}.trick .play-cards .card.special .card-name{overflow-wrap:anywhere;word-break:break-word}}.card-back{flex-shrink:0;border-radius:6px;border:1px solid rgba(0,0,0,.25);box-shadow:inset 0 1px #ffffff26,0 2px 4px #0003;overflow:hidden;position:relative}.card-back-pattern{width:100%;height:100%;background:linear-gradient(135deg,#1a0a0a,#2d1515,#1a0a0a);background-size:100% 100%;position:relative}.card-back-pattern:before{content:"";position:absolute;top:12%;right:12%;bottom:12%;left:12%;border:2px solid rgba(180,80,80,.5);border-radius:4px;pointer-events:none}.card-back-pattern:after{content:"";position:absolute;top:18%;right:18%;bottom:18%;left:18%;background:repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(180,80,80,.12) 4px,rgba(180,80,80,.12) 8px);border-radius:2px;pointer-events:none}.card-back--small{width:36px;height:50px}.card-back--stack{width:56px;height:80px}.card-back--normal{width:80px;height:112px}.card-back--neutral .card-back-pattern{background:linear-gradient(135deg,#1a1a1a,#2a2a2a,#1a1a1a)}.card-back--neutral .card-back-pattern:before{border:2px solid rgba(255,255,255,.1)!important}.card-back--neutral .card-back-pattern:after{background:repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(255,255,255,.04) 4px,rgba(255,255,255,.04) 8px)!important}.card-back--neutral{border-color:#0006;box-shadow:0 2px 4px #00000040}.sidebar-column{width:var(--sidebar-w);min-width:0;background:#00000059;border-left:1px solid rgba(255,255,255,.12);display:flex;flex-direction:column;min-height:0}.sidebar-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;background:#0000008c;opacity:0;pointer-events:none;transition:opacity .22s ease}.sidebar-scrim--visible{opacity:1;pointer-events:auto}.sidebar-column.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;width:min(92vw,360px);max-width:360px;z-index:var(--z-modals);border-left:1px solid rgba(255,255,255,.16);box-shadow:-8px 0 28px #00000073;transition:transform .22s ease,opacity .22s ease}.sidebar-column.sidebar-overlay.is-closed{transform:translate(100%);opacity:0;pointer-events:none}.sidebar-column.sidebar-overlay.is-open{transform:translate(0);opacity:1;pointer-events:auto;background:#0c101cf7}.drawer-content{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;padding:var(--s16)}.drawer-back-to-lobby{flex-shrink:0;padding:5px 10px;font-size:11px;font-weight:600;line-height:1.2;white-space:nowrap;color:#ffffffe0;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-panel);cursor:pointer;transition:background .15s,border-color .15s}.drawer-back-to-lobby:hover{background:#ffffff1a;border-color:#ffffff38}.sidebar-top-meta{display:flex;align-items:center;justify-content:space-between;gap:var(--s8);margin-bottom:var(--s12);flex-shrink:0;min-width:0}.sidebar-top-meta-left{display:flex;align-items:center;gap:var(--s8);min-width:0;flex-wrap:wrap}.sidebar-status{font-size:10px;padding:2px 6px;border-radius:var(--radius-pill);text-transform:uppercase;letter-spacing:.02em}.sidebar-status.connected{background:#22c55e33;color:#86efac}.sidebar-status.disconnected{background:#ef444433;color:#fca5a5}.sidebar-party-code{font-size:12px;color:#ffffffb3;font-family:ui-monospace,monospace}.sidebar-resync{margin-left:auto;font-size:11px;padding:2px 8px;background:#ffffff1a;color:#fffc;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-pill);cursor:pointer}.sidebar-resync:hover{background:#ffffff26}.sidebar-scores{display:flex;gap:var(--s16);margin-bottom:var(--s16);flex-shrink:0}.sidebar-score-chip{flex:1;min-width:0;height:48px;background:#00000073;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-panel);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--s8) var(--s12);box-sizing:border-box}.sidebar-score-value{font-size:18px;font-weight:700;color:#fff;line-height:1.2}.sidebar-score-label{font-size:11px;color:#fff9;margin-top:2px;line-height:1.2}.drawer-tabs{display:flex;gap:2px;margin-bottom:var(--s12)}.drawer-tab{padding:6px 12px;font-size:12px;background:transparent;border:none;border-radius:var(--radius-panel);color:#ffffff8c;cursor:pointer;transition:background .15s,color .15s}.drawer-tab:hover{color:#ffffffe6;background:#ffffff0f}.drawer-tab.active{background:#ffffff1a;color:#fff}.drawer-panel{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.drawer-tab-panel{flex:1;min-height:0;min-width:0;overflow:hidden;display:none;flex-direction:column}.drawer-tab-panel.drawer-tab-panel--active{display:flex}.drawer-panel-inner{flex:1;min-height:0;overflow:auto;font-size:14px;color:#ffffffbf;scrollbar-width:none}.drawer-panel-inner::-webkit-scrollbar{width:0;height:0}.drawer-chat-panel{display:flex;flex-direction:column;min-height:0;height:100%}.drawer-chat-messages{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:var(--s12);background:#0003;border-radius:var(--radius-panel);margin-bottom:var(--s12);scrollbar-width:none}.drawer-chat-messages::-webkit-scrollbar{width:0;height:0}.drawer-chat-messages-inner{min-height:100%}.drawer-chat-empty{margin:0;font-size:13px;color:#fff6;font-style:italic;padding:var(--s8) 0}.drawer-chat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s8)}.drawer-chat-anchor{height:0;overflow:hidden;margin:0;padding:0;list-style:none}.drawer-chat-bubble{max-width:100%;padding:var(--s8) var(--s12);border-radius:var(--radius-panel);font-size:14px;line-height:1.4;word-break:break-word}.drawer-chat-bubble-sender{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:#ffffff8c;margin-bottom:4px}.drawer-chat-bubble-own .drawer-chat-bubble-sender{color:#ffffffb3}.drawer-chat-bubble-own{align-self:flex-end;background:#ffffff1f;border:1px solid rgba(255,255,255,.1);color:#fff}.drawer-chat-bubble-other{align-self:flex-start;background:#00000059;border:1px solid rgba(255,255,255,.08);color:#ffffffe6}.drawer-chat-bubble-text{display:block;white-space:pre-wrap}.drawer-chat-input-wrap{flex-shrink:0;display:flex;gap:var(--s8);align-items:center;padding-top:var(--s12);border-top:1px solid rgba(255,255,255,.08)}.drawer-chat-input{flex:1;min-width:0;height:40px;padding:0 var(--s12);font-size:16px;color:#fff;background:#0006;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-panel);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.drawer-chat-input::placeholder{color:#ffffff59}.drawer-chat-input:hover{border-color:#ffffff2e}.drawer-chat-input:focus{border-color:#ffffff40;box-shadow:0 0 0 2px #ffffff14}.drawer-chat-send{flex-shrink:0;height:40px;padding:0 var(--s16);font-size:13px;font-weight:600;color:#ffffffe6;background:#ffffff1f;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-panel);cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.drawer-chat-send:hover:not(:disabled){background:#ffffff2e;border-color:#ffffff38;color:#fff}.drawer-chat-send:active:not(:disabled){background:#ffffff1a}.drawer-chat-send:disabled{opacity:.5;cursor:not-allowed}.drawer-placeholder{margin:0;font-style:italic}.drawer-panel-inner--log{display:flex;flex-direction:column;min-height:0;overflow:hidden}.drawer-log-panel{flex:1;min-height:0;overflow-y:auto;padding-right:2px;scrollbar-width:none}.drawer-log-panel::-webkit-scrollbar{width:0;height:0}.drawer-log-heading{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#ffffff80;margin-bottom:var(--s8)}.drawer-log-rounds{display:flex;flex-direction:column;gap:14px}.drawer-log-round{margin:0}.drawer-log-round-title{display:flex;align-items:center;gap:6px;margin:0 0 6px;font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:#ffffffe0}.drawer-log-round-title-accent{width:2px;height:11px;border-radius:2px;background:linear-gradient(180deg,#93c5fdf2,#60a5fa80);flex-shrink:0}.drawer-log-player-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}.drawer-log-player-list li{background:linear-gradient(145deg,#0f172a8c,#0f172a59);border:1px solid rgba(255,255,255,.07);border-radius:8px;padding:6px 8px;box-shadow:0 1px #ffffff0a inset}.drawer-log-player-list li.drawer-log-player--you{border-color:#93c5fd59;background:linear-gradient(145deg,#1e3a5f73,#0f172a66);box-shadow:0 0 0 1px #93c5fd14}.drawer-log-player-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:5px}.drawer-log-player-ident{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;min-width:0}.drawer-log-player-name{font-size:12px;font-weight:600;color:#fffffff0;line-height:1.25}.drawer-log-team-pill{font-size:9px;font-weight:600;letter-spacing:.03em;padding:1px 5px;border-radius:999px;border:1px solid transparent}.drawer-log-team-pill--t1{color:#bfdbfef2;background:#3b82f626;border-color:#60a5fa47}.drawer-log-team-pill--t2{color:#fecacaf2;background:#ef44441f;border-color:#f8717147}.drawer-log-player-score{font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:#fff;flex-shrink:0}.drawer-log-player-breakdown{display:flex;flex-wrap:wrap;gap:3px 6px;font-size:10px;line-height:1.4;color:#ffffffad}.drawer-log-breakdown-item{white-space:nowrap}.drawer-log-breakdown-item--muted{color:#fff6;font-style:italic}.drawer-log-breakdown-item--tichu{color:#fde047f2}.drawer-log-breakdown-item--grand{color:#fb923cf2}.drawer-log-standings{margin-top:7px;padding:6px 7px 7px;border-radius:9px;border:1px solid rgba(255,255,255,.08);background:linear-gradient(160deg,#ffffff0d,#0000001a);box-shadow:0 2px 8px #00000024}.drawer-log-standings-caption{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#ffffff6b;margin-bottom:5px}.drawer-log-standings-chips{display:grid;grid-template-columns:1fr 1fr;gap:6px}.drawer-log-standings-chip{display:flex;flex-direction:column;gap:0;min-width:0;padding:5px 7px;border-radius:8px;border:1px solid rgba(255,255,255,.09)}.drawer-log-standings-chip--t1{background:linear-gradient(160deg,#3b82f62e,#0f172a59);border-color:#60a5fa38}.drawer-log-standings-chip--t2{background:linear-gradient(160deg,#f8717124,#0f172a59);border-color:#f8717133}.drawer-log-standings-chip-label{font-size:9px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#ffffff85;line-height:1.2}.drawer-log-standings-chip-value{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;color:#fff;line-height:1.15;margin-top:1px}.drawer-log-standings-chip-round{font-size:9px;font-weight:500;font-variant-numeric:tabular-nums;color:#fff6;line-height:1.2;margin-top:2px}.drawer-log-empty{margin:0;font-size:13px;color:#ffffff73;font-style:italic}.drawer-players{list-style:none;margin:0;padding:0}.drawer-players li{display:flex;align-items:center;justify-content:space-between;padding:var(--s8) 0;border-bottom:1px solid rgba(255,255,255,.06)}.drawer-players li.you .drawer-player-name{font-weight:600;color:#fff}.drawer-player-name{color:#ffffffe6;font-size:14px}.drawer-player-team{font-size:12px;color:#ffffff80}.drawer-settings-section{margin:0}.drawer-settings-heading{margin:0 0 var(--s12) 0;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#fff9}.drawer-theme-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:var(--s8)}.drawer-theme-btn{display:flex;align-items:center;gap:8px;padding:10px 14px;font-size:13px;background:#00000059;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-panel);color:#ffffffd9;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease;text-align:left}.drawer-theme-btn:hover{background:#ffffff14;border-color:#ffffff2e;color:#fff}.drawer-theme-btn.active{background:#ffffff1f;border-color:#ffffff47;color:#fff;box-shadow:0 0 0 1px #ffffff1a}.drawer-theme-swatch{display:flex;border-radius:4px;overflow:hidden;flex-shrink:0;width:24px;height:18px;border:1px solid rgba(255,255,255,.15)}.drawer-theme-swatch span{flex:1;display:block}.drawer-setting-toggle{display:flex;align-items:center;gap:10px;font-size:13px;color:#ffffffe0}.drawer-setting-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:8px}.drawer-setting-toggle input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:rgba(96,165,250,.95)}.drawer-setting-toggle-label{-webkit-user-select:none;user-select:none}.drawer-setting-help{margin:0;font-size:12px;line-height:1.35;color:#ffffff94}.hand-dock{width:100%;max-width:100%;min-width:0;margin:0 auto;height:100%;min-height:180px;background:#00000073;border-radius:var(--radius-dock) var(--radius-dock) 0 0;border:1px solid rgba(255,255,255,.06);border-bottom:none;display:grid;grid-template-rows:auto 1fr;padding:0 var(--s8);gap:0;align-content:stretch;z-index:var(--z-dock);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 -2px 8px #00000026;overflow:visible}@keyframes dockTurnPulse{0%,to{box-shadow:0 -2px 8px #00000026;border-color:#ffffff1a}50%{box-shadow:0 -2px 10px 2px #60a5facc,0 -4px 30px 4px #60a5fa66;border-color:#60a5fab3}}.hand-dock.hand-dock--turn-alert{animation:dockTurnPulse 1.35s ease-in-out infinite}.hand-dock.hand-dock--turn-alert-1{animation-name:dockTurnPulseLevel1}.hand-dock.hand-dock--turn-alert-2{animation-name:dockTurnPulseLevel2;animation-duration:.9s}@keyframes dockTurnPulseLevel1{0%,to{box-shadow:0 -2px 16px #f59e0b61;border-color:#f59e0b66}50%{box-shadow:0 -2px 10px 2px #f59e0bd9,0 -4px 32px 4px #f59e0b73;border-color:#f59e0be6}}@keyframes dockTurnPulseLevel2{0%,to{box-shadow:0 -2px 20px #ef444473;border-color:#ef444480}50%{box-shadow:0 -2px 10px 2px #ef4444e6,0 -4px 36px 6px #ef444480;border-color:#ef4444}}@keyframes dockTurnButtonPulse{0%,to{box-shadow:none}50%{box-shadow:0 0 0 2px #60a5fae6,0 0 12px 4px #60a5fa73}}.dock-btn--turn-alert:not(:disabled){animation:dockTurnButtonPulse 1.1s ease-in-out infinite}.dock-btn--turn-alert-1:not(:disabled){box-shadow:0 0 0 1px #f59e0b73}.dock-btn--turn-alert-2:not(:disabled){animation-duration:.78s;box-shadow:0 0 0 1px #ef444499}.dock-body{display:grid;grid-template-columns:1fr auto;gap:var(--s12);min-height:0;align-items:stretch;overflow:visible}.dock-main{min-height:0;display:flex;flex-direction:column;gap:0;overflow:visible}.dock-won{min-width:0;width:0;flex-shrink:0;overflow:hidden}.dock-actions-box{width:clamp(132px,18vw,182px);min-width:110px;flex-shrink:0;border-left:1px solid rgba(255,255,255,.08);padding-left:var(--s12);display:flex;flex-direction:column;justify-content:center;align-items:stretch}.hand-dock.hand-dock--compact .dock-body{gap:6px}.hand-dock.hand-dock--compact .dock-actions-box{width:clamp(88px,26vw,116px);min-width:84px;padding-left:6px}.hand-dock.hand-dock--compact .dock-hint{display:none}@media (max-width: 1280px){.dock-body{gap:var(--s8)}.dock-actions-box{width:clamp(112px,24vw,158px);padding-left:var(--s8)}.dock-sort button{padding:4px 8px;font-size:11px}}@media (max-width: 980px){.dock-actions-box{width:clamp(96px,27vw,132px);padding-left:6px}.dock-btn{min-width:0;padding:0 10px}.dock-btn-secondary{min-width:0;padding:0 8px}}@media (max-width: 860px){.dock-body{grid-template-columns:1fr;gap:6px}.dock-actions-box{width:100%;min-width:0;border-left:none;border-top:1px solid rgba(255,255,255,.08);padding-left:0;padding-top:8px}.dock-actions{flex-direction:row;flex-wrap:wrap;justify-content:flex-end;gap:6px}.dock-btn,.dock-btn-secondary{min-width:0}}.dock-header{display:flex;align-items:center;justify-content:flex-start;gap:10px;flex-wrap:nowrap;padding:6px var(--s8);min-height:40px;border-bottom:1px solid rgba(255,255,255,.06)}.dock-header .dock-sort{margin-left:auto}.dock-title{flex-shrink:0;font-size:14px;font-weight:600;color:#fff;margin:0}.dock-exchange-recap{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:0 4px}.dock-exchange-recap-inner{flex:1;min-width:0}.dock-exchange-recap-pill{min-width:0;display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:4px 8px;border-radius:999px;background:#0c122494;border:1px solid rgba(255,255,255,.12);box-shadow:inset 0 0 0 1px #94a3b814}.dock-exchange-recap-label{flex-shrink:0;font-size:11px;font-weight:700;line-height:1;letter-spacing:.02em;color:#ffffffeb}.dock-exchange-recap-chips{min-width:0;display:inline-flex;align-items:center;gap:4px;overflow:hidden}.dock-exchange-recap-chip{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:26px;padding:2px 6px;border-radius:999px;border:1px solid rgba(255,255,255,.2);background:#ffffff14;font-size:11px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums;color:#fffffff5}.dock-exchange-recap-chip--partner{border-color:#60a5fa99;box-shadow:inset 0 0 0 1px #60a5fa33}.dock-exchange-recap-chip--opponent{border-color:#f871718c;box-shadow:inset 0 0 0 1px #f8717129}.dock-exchange-recap-chip--red{color:#fca5a5fa;background:#7f1d1d47}.dock-exchange-recap-sources{min-width:0;font-size:11px;font-weight:600;line-height:1;color:#bfdbfedb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dock-exchange-recap-notice{min-width:0;font-size:11px;font-weight:600;line-height:1.2;color:#ffffffe6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dock-exchange-recap-card{font-weight:700;font-variant-numeric:tabular-nums;color:#fff}.dock-exchange-recap-meta,.dock-exchange-recap-from{font-weight:500;color:#ffffffb8}.dock-exchange-recap-name{font-weight:600;color:#ffffffeb}.dock-exchange-recap-role{font-weight:600;font-size:11px;color:#bfdbfee0}.dock-exchange-recap-dismiss{flex-shrink:0;padding:3px 8px;font-size:11px;font-weight:600;color:#fffc;background:#ffffff14;border:1px solid rgba(255,255,255,.14);border-radius:6px;cursor:pointer;white-space:nowrap}.dock-exchange-recap-dismiss:hover{background:#ffffff24}.hand-dock.hand-dock--compact .dock-exchange-recap-label{font-size:10px}.hand-dock.hand-dock--compact .dock-exchange-recap-inner{font-size:11px}.hand-dock.hand-dock--compact .dock-exchange-recap-pill{gap:5px;padding:3px 6px}.hand-dock.hand-dock--compact .dock-exchange-recap-sources{display:none}.dock-sort{display:flex;gap:4px}.dock-sort button{padding:4px 10px;font-size:12px;white-space:nowrap;background:#ffffff14;border:1px solid transparent;border-radius:6px;color:#fffc;cursor:pointer;transition:background .15s,border-color .15s}.dock-sort button:hover{background:#ffffff1f}.dock-sort button.active{background:#ffffff29;border-color:#ffffff26;color:#fff}.dock-rail{position:relative;overflow:visible;flex:1;min-height:100px;display:flex;align-items:flex-end;justify-content:center;padding:28px 0 var(--s12)}.dock-rail-inner{position:relative;width:100%;height:100%;display:flex;align-items:flex-end;justify-content:center}.dock-rail--two-row{min-height:130px}.dock-card-wrap{position:absolute;bottom:0;will-change:transform;transition:transform .28s cubic-bezier(.33,.1,.2,1),z-index .15s ease}.dock-card-wrap.selected{z-index:10}.dock-card-wrap.disabled{opacity:1;pointer-events:none}.dock-card-wrap--reorder-dragging,.dock-card-wrap--exchange-dragging{opacity:0;pointer-events:none}.dock-card-wrap .card{margin:0;cursor:pointer}.dock-overflow{position:absolute;right:0;bottom:0;display:flex;align-items:flex-end;margin-right:var(--s8)}.dock-overflow .card-back{margin-left:-24px}.dock-overflow .card-back:first-child{margin-left:0}.dock-overflow-badge{align-self:center;font-size:12px;color:#ffffffbf;margin-left:4px;font-weight:600}.dock-drag-preview.dock-drag-preview--reorder{position:fixed;left:0;top:0;z-index:9999;pointer-events:none;will-change:transform;transform-origin:center center;box-shadow:0 12px 32px #0006;border-radius:8px;max-width:120px;max-height:180px}.dock-actions{display:flex;flex-direction:column;align-items:stretch;gap:var(--s8);padding:0;min-height:0}.auto-pass-ui{display:flex;align-items:center;justify-content:flex-start;gap:8px;padding:0 2px}.dock-pass-row{display:flex;align-items:center;justify-content:space-between;gap:4px;width:100%}.dock-pass-row .dock-pass-btn{min-width:clamp(64px,6.2vw,72px);padding:0 clamp(8px,1.2vw,10px)}.auto-pass-ui--compact{padding:0;flex:1;display:flex;justify-content:flex-end}.auto-pass-ui-label{display:flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.auto-pass-ui-label input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:rgba(99,102,241,.95)}.auto-pass-ui-text{font-size:11px;line-height:1.1;color:#ffffffbf;font-weight:600;white-space:nowrap}.dock-auto-pass-btn.dock-btn-secondary{min-width:0;padding:0 clamp(5px,.9vw,9px);height:clamp(26px,3vw,32px);font-size:clamp(8.5px,.95vw,10.5px);display:flex;align-items:center;justify-content:center;white-space:nowrap;letter-spacing:-.2px}.dock-auto-pass-btn--on{background:#6366f159;border-color:#6366f199;box-shadow:0 0 10px 2px #6366f159;color:#fffffff2}.dock-btn{padding:0 16px;min-width:100px;height:38px;font-size:14px;font-weight:600;border:none;border-radius:var(--radius-panel);cursor:pointer;transition:border-color .15s,box-shadow .15s,opacity .15s;white-space:nowrap}.dock-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.dock-btn-primary{background:#6366f1e6;color:#fff;border:1px solid rgba(255,255,255,.1)}.dock-btn-primary:hover:not(:disabled){box-shadow:0 2px 12px #6366f159}.dock-btn-primary:disabled{background:#6366f159;color:#fff9}.dock-btn-secondary{min-width:88px;height:34px;padding:0 12px;font-size:12px;background:#ffffff14;color:#ffffffe6;border:1px solid rgba(255,255,255,.1)}.dock-btn-secondary:hover:not(:disabled){background:#ffffff1f;border-color:#ffffff26}.dock-btn-secondary:disabled{background:#ffffff0a;color:#ffffff73}.dock-btn-rail{min-width:0;font-size:12px}.dock-btn-bomb{background:#dc2626e6;color:#fff;border:1px solid rgba(255,255,255,.1)}.dock-btn-bomb:hover:not(:disabled){box-shadow:0 2px 12px #dc262659}.dock-btn-bomb:disabled{background:#dc262666;color:#fff9}.dock-btn-grand-hold{position:relative;overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none}.dock-btn-grand-hold__fill{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:left center;transform:scaleX(var(--grand-hold-progress, 0));background:linear-gradient(90deg,#facc1580,#fde04759);pointer-events:none;will-change:transform}.dock-btn-grand-hold__label{position:relative;z-index:1;pointer-events:none}.dock-btn--declared{box-shadow:0 0 12px 2px #facc1599,0 0 24px 4px #facc1540;border-color:#facc1580}.dock-btn-primary.dock-btn--declared{box-shadow:0 0 12px 2px #facc1599,0 0 24px 4px #facc1540}.dock-btn-secondary.dock-btn--declared{box-shadow:0 0 10px 2px #facc1580,0 0 20px 4px #facc1533;border-color:#facc1573}.dock-hint{font-size:12px;line-height:1.35;color:#ffffff80;padding:var(--s4) 0 var(--s8);min-height:18px;flex-shrink:0}.dock-hint.error{color:#fca5a5}.dock-hint.success{color:#86efac}@media (max-width: 480px){.hand-dock{height:auto;min-height:0;grid-template-rows:auto auto}.dock-rail{padding:12px 0 6px;min-height:68px}.dock-rail--two-row{min-height:120px}.dock-body{display:flex;flex-direction:column;gap:4px}.dock-main{flex:1;min-height:0}.dock-actions-box{flex-shrink:0;width:100%;min-width:0;border-left:none;border-top:1px solid rgba(255,255,255,.08);padding-left:0;padding-top:4px;padding-bottom:max(14px,env(safe-area-inset-bottom,14px));overflow:hidden}.dock-actions{flex-direction:row;flex-wrap:nowrap;justify-content:flex-start;align-items:center;gap:4px}.dock-pass-row{display:contents}.dock-btn{flex:1;height:36px;min-width:0;font-size:12px;overflow:hidden}.dock-btn-secondary{flex:1;height:36px;font-size:11px;overflow:hidden}.dock-auto-pass-btn.dock-btn-secondary{flex:1;height:36px;font-size:9px;padding:0 4px;letter-spacing:0}.hand-dock.hand-dock--compact .dock-actions-box{width:100%;min-width:0;padding-left:0}.dock-hint{font-size:11px;padding:2px 0 4px;min-height:14px}.dock-header{padding:4px var(--s8);min-height:30px;overflow:hidden;flex-wrap:wrap;gap:6px}.dock-sort{order:2}.dock-exchange-recap{order:3;width:100%;flex:none}.dock-sort button{padding:3px 6px;font-size:10px}.dock-rail .card{margin:0 1px}}@media (pointer: coarse){.hand-dock{-webkit-backdrop-filter:none;backdrop-filter:none}.dock-card-wrap--exchange-pending{outline:2px solid rgba(96,165,250,.8);border-radius:8px}}:root{--s4: 4px;--s8: 8px;--s12: 12px;--s16: 16px;--s20: 20px;--s24: 24px;--s32: 32px;--radius-panel: 12px;--radius-dock: 16px;--radius-pill: 999px;--seat-w: 200px;--seat-h: 52px;--drawer-open: 320px;--drawer-collapsed: 56px;--dock-h: 200px;--sidebar-w: 320px;--z-table: 0;--z-mat: 1;--z-seats: 2;--z-dock: 3;--z-preview: 4;--z-tooltips: 5;--z-modals: 6}.game-layout{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:1fr minmax(0,var(--sidebar-w));grid-template-rows:1fr;height:100vh;height:100dvh;min-height:100vh;min-height:100dvh;overflow:hidden;background:var(--layout-bg, #1a1a2e);color:#fff}.game-layout.sidebar-overlay-closed,.game-layout.sidebar-overlay-open{grid-template-columns:1fr 0}.game-layout .game-left{grid-column:1;min-width:0;min-height:0;height:100%;display:flex;flex-direction:column}.game-layout .game-main{flex:1;min-height:0;overflow:hidden}.game-layout .table-column{min-width:0;min-height:0;position:relative;width:100%;height:100%}.game-layout .sidebar-column{grid-column:2;grid-row:1;min-height:0}.game-layout .hand-dock-wrapper{flex-shrink:0;min-height:180px;height:var(--dock-h);display:flex;align-items:stretch;justify-content:center;padding:0 var(--s16);padding-bottom:0;min-width:0}@media (max-width: 480px){.game-layout .hand-dock-wrapper{height:auto;min-height:0;padding:0 var(--s8);overflow-x:clip}}@media (max-height: 480px) and (orientation: landscape){.game-layout .hand-dock-wrapper{min-height:100px;height:100px}.game-hud{padding:4px var(--s16);min-height:36px}.hud-inner{min-height:32px}}.table-surface{position:relative;width:100%;height:100%;min-height:0;background:var(--table-bg, #0a4a24);z-index:var(--z-table)}.table-surface:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--table-glow, radial-gradient(ellipse 100% 80% at 50% 50%, rgba(20, 80, 45, .4) 0%, transparent 60%));pointer-events:none}.table-surface:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.035'/%3E%3C/svg%3E");pointer-events:none;opacity:var(--noise-scale, 1)}.table-header{position:absolute;top:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s8);padding:var(--s8) var(--s16);z-index:var(--z-seats);pointer-events:none}.table-title{margin:0;font-size:1.25rem;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3)}.table-current-action-box{display:flex;align-items:center;gap:var(--s8);background:#0006;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-panel);padding:var(--s8) var(--s16);font-size:13px;color:#fffffff2;box-shadow:0 2px 6px #0003;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}@keyframes headerTurnPulse{0%,to{box-shadow:0 2px 6px #0003;border-color:#ffffff1f}50%{box-shadow:0 0 0 1px #60a5fa40,0 0 16px #60a5fa73;border-color:#60a5fa8c}}.table-current-action-box--turn-alert{animation:headerTurnPulse 1.35s ease-in-out infinite}@keyframes headerTurnPulseLevel1{0%,to{box-shadow:0 2px 6px #0003,0 0 0 1px #f59e0b26;border-color:#f59e0b73}50%{box-shadow:0 0 0 1px #f59e0b59,0 0 18px #f59e0b6b;border-color:#f59e0bc7}}.table-current-action-box--turn-alert-1{animation-name:headerTurnPulseLevel1}@keyframes headerTurnPulseLevel2{0%,to{box-shadow:0 2px 8px #00000038,0 0 0 1px #ef444433;border-color:#ef444485}50%{box-shadow:0 0 0 1px #ef444466,0 0 22px #ef444480;border-color:#ef4444eb}}.table-current-action-box--turn-alert-2{animation-name:headerTurnPulseLevel2;animation-duration:.9s}.table-header-declaration-pill{flex-shrink:0;font-size:10px;font-weight:700;letter-spacing:.02em;padding:3px 8px;border-radius:var(--radius-pill);background:#facc1540;color:#fde047;border:1px solid rgba(250,204,21,.45)}.table-header-declaration-pill--grand{background:#fb923c4d;color:#fdba74;border-color:#fb923c80}.wished-card-panel{position:absolute;bottom:auto;transform:none;display:flex;flex-direction:column;align-items:center;gap:var(--s8);padding:var(--s12);background:#0006;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-panel);z-index:1;pointer-events:none}.wished-card-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#ffffffb3}@media (max-width: 480px){.wished-card-panel{padding:var(--s8);gap:var(--s4)}.wished-card-label{font-size:9px;letter-spacing:.02em}.wished-card-panel .card{width:30px!important;height:44px!important;font-size:7.9px!important}}.wished-card-display{line-height:0;border-radius:6px;overflow:hidden;box-shadow:0 2px 8px #0000004d}.seat-panel{position:absolute;background:var(--seat-bg, linear-gradient(145deg, rgba(10, 50, 28, .85) 0%, rgba(5, 28, 18, .9) 100%));border:1px solid var(--seat-border, rgba(255, 255, 255, .1));border-radius:var(--radius-dock);padding:6px var(--s12);display:flex;align-items:center;gap:var(--s8);z-index:var(--z-seats);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-sizing:border-box;box-shadow:0 2px 12px #00000040,inset 0 1px #ffffff0f}.seat-panel.seat--acting{border-color:#fcd34d59;box-shadow:0 0 0 1px #fcd34d33,0 2px 12px #00000040}.seat-panel.seat--acting:before{content:"";position:absolute;left:0;top:20%;bottom:20%;width:3px;background:linear-gradient(180deg,#fcd34de6,#fcb43299);border-radius:0 2px 2px 0}.seat-avatar{width:30px;height:30px;min-width:30px;border-radius:50%;background:linear-gradient(145deg,#fff3,#ffffff14);border:1px solid rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:10px;letter-spacing:.02em;color:#fff;flex-shrink:0;text-shadow:0 1px 1px rgba(0,0,0,.3)}.seat-panel.seat--acting .seat-avatar{box-shadow:0 0 0 2px #fcd34d99}.seat-panel.seat--team-1 .seat-avatar{border-color:#78b4ff59}.seat-panel.seat--team-2 .seat-avatar{border-color:#ff8c7859}.seat-panel.seat--exchange-drop{cursor:default;transition:border-color .15s,box-shadow .15s}.seat-panel.seat--exchange-drag-over{border-color:#ffffff59;box-shadow:0 0 0 2px #fff3,0 2px 12px #00000040}.seat-disconnected-overlay{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:#000000bf;display:flex;align-items:center;justify-content:center;pointer-events:none}.seat-disconnected-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#fff9}.won-cards-pile.won-cards-pile--disconnected{opacity:.5}.seat-exchange-card{flex-shrink:0;cursor:pointer;border-radius:6px;overflow:hidden;box-shadow:0 1px 4px #0000004d}.seat-exchange-card:hover{outline:2px solid rgba(255,255,255,.4)}.seat-exchange-card .card{margin:0;pointer-events:none}.seat-declaration-float{position:absolute;top:-18px;left:50%;transform:translate(-50%);z-index:2;pointer-events:none;display:flex;justify-content:center}.seat-declaration-float .seat-declaration-pill{display:inline-block;border-radius:6px 6px 0 0;box-shadow:0 -1px 3px #00000040}.seat-badges{position:absolute;top:4px;right:6px;display:flex;flex-direction:column;align-items:flex-end;gap:3px;z-index:1}.seat-acting-chip{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#fcd34df2;background:#fcd34d26;padding:2px 5px;border-radius:var(--radius-pill);white-space:nowrap}.seat-body{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:1px}.seat-name-row{display:flex;align-items:center;gap:6px;min-width:0}.seat-name{font-weight:600;font-size:13px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}.seat-declaration-pill{flex-shrink:0;font-size:9px;font-weight:700;letter-spacing:.02em;padding:2px 6px;border-radius:var(--radius-pill);background:#facc1540;color:#fde047;border:1px solid rgba(250,204,21,.45);white-space:nowrap;animation:seatPillBounceIn .45s cubic-bezier(.34,1.56,.64,1) both;transform-origin:center bottom}.seat-declaration-pill--grand{background:#fb923c4d;color:#fdba74;border-color:#fb923c80}@keyframes seatPillBounceIn{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.15)}80%{transform:scale(.9)}to{transform:scale(1)}}@keyframes avatarDeclarationPulse{0%{box-shadow:0 0 #ffffffe6}13%{box-shadow:0 0 0 8px #fff0}33%{box-shadow:0 0 #ffffffb3}46%{box-shadow:0 0 0 8px #fff0}66%{box-shadow:0 0 #ffffff80}79%{box-shadow:0 0 0 8px #fff0}to{box-shadow:0 0 #fff0}}.seat-avatar--tichu-pulse,.seat-avatar--grand-tichu-pulse{animation:avatarDeclarationPulse 3s ease-out forwards}@keyframes seatTichuGlow{0%{box-shadow:0 0 0 2px #fcd34db3,0 0 22px 6px #fcd34d80,0 2px 12px #00000040}to{box-shadow:0 0 #fcd34d00,0 0 #fcd34d00,0 2px 12px #00000040}}@keyframes seatGrandTichuGlow{0%{box-shadow:0 0 0 2px #fb923cbf,0 0 26px 8px #fb923c8c,0 2px 12px #00000040}to{box-shadow:0 0 #fb923c00,0 0 #fb923c00,0 2px 12px #00000040}}.seat-panel.seat--tichu-pulse{animation:seatTichuGlow 1.2s ease-out forwards}.seat-panel.seat--grand-tichu-pulse{animation:seatGrandTichuGlow 1.2s ease-out forwards}.seat-meta{display:flex;align-items:center;gap:6px;font-size:10px;color:#fff9}.seat-team-pill{display:inline-block;font-size:9px;font-weight:600;padding:1px 5px;border-radius:var(--radius-pill);background:#ffffff1f;color:#ffffffd9}.seat-card-count{font-weight:600;color:#ffffffe6}.won-cards-pile{position:absolute;z-index:var(--z-seats);pointer-events:none;display:flex;align-items:center;justify-content:center;outline:none;box-shadow:none}.won-cards-pile:focus{outline:none}.won-cards-pile--empty{border:2px dashed rgba(255,255,255,.2);border-radius:8px;background:#00000026}.won-cards-pile-card{position:absolute;left:0;top:0;box-shadow:0 2px 6px #00000040}.won-cards-pile .won-cards-pile-card .card-back{display:block;outline:none!important;border:1px solid rgba(0,0,0,.5)!important;box-shadow:0 2px 6px #0000004d!important;background:#252525!important}.won-cards-pile .won-cards-pile-card .card-back .card-back-pattern{background:#252525!important}.won-cards-pile .won-cards-pile-card .card-back .card-back-pattern:before,.won-cards-pile .won-cards-pile-card .card-back .card-back-pattern:after{display:none!important}.won-cards-pile .won-cards-pile-card .card-back:focus,.won-cards-pile .won-cards-pile-card .card-back:focus-visible{outline:none!important}.play-mat{position:absolute;background:#00000040;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-panel);z-index:var(--z-mat);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--s8);box-shadow:0 2px 8px #0003;box-sizing:border-box}.play-mat-zone{width:98%;height:98%;margin:auto;flex:none;min-height:140px;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:var(--s8);box-sizing:border-box;overflow:hidden}.play-mat-zone.empty{color:#ffffffb3;font-size:14px;align-items:center;justify-content:center}.play-mat-zone.empty .play-mat-empty-msg{background:#0003;padding:var(--s12) var(--s20);border-radius:var(--radius-panel);text-align:center;line-height:1.3}.play-mat-zone.empty .play-mat-empty-msg--instruction{max-width:320px;text-align:center;line-height:1.25}.play-mat-zone .trick{width:100%;height:100%;min-height:0;max-width:none;background:#ffffff0a;border-radius:var(--radius-panel);padding:var(--s12);margin:0;box-shadow:none;display:flex;flex-direction:column}.play-mat-zone .trick .trick-plays{flex:1;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;padding-right:6px}.play-mat-zone .trick.empty{background:transparent}.play-mat-zone .trick h3{font-size:13px;font-weight:600;color:#ffffffb3;margin:0 0 var(--s8) 0;padding:0;line-height:1.3;flex-shrink:0}.play-mat-zone .trick-play{background:#ffffff0a;padding:var(--s8) var(--s12);border-radius:8px}.play-mat-zone .play-player{color:#ffffffe6;font-size:13px;font-weight:600;line-height:1.3}@media (max-width: 480px){.seat-panel{padding:3px 8px;gap:6px}.seat-avatar{width:20px;height:20px;min-width:20px;font-size:7px}.seat-name{font-size:10px}.seat-meta{font-size:8px;gap:3px}.seat--top .seat-meta{flex-direction:column;gap:1px;align-items:flex-start}.seat-team-pill{font-size:7px;padding:1px 3px}.play-mat{padding:4px}.play-mat-zone{min-height:80px;padding:4px}.play-mat-zone .trick{padding:6px}.play-mat-zone .trick h3{font-size:11px;margin-bottom:4px}.play-mat-zone .play-player{font-size:11px}.play-mat-zone .trick-play{padding:4px 6px}}.prompt-strip{position:fixed;bottom:calc(var(--dock-h) + var(--s12));left:50%;transform:translate(-50%);padding:var(--s12) var(--s20);background:#000000bf;border-radius:var(--radius-panel);border:1px solid rgba(255,255,255,.08);font-size:14px;color:#fff;z-index:var(--z-preview);max-width:90vw;text-align:center;pointer-events:auto}.prompt-strip p{margin:0}.prompt-strip .prompt-actions{display:flex;flex-wrap:wrap;gap:var(--s12);justify-content:center;margin-top:var(--s12)}@media (max-width: 480px){.prompt-strip{padding:var(--s8) var(--s12);font-size:13px;width:calc(100vw - var(--s32));max-width:none}.prompt-strip .prompt-actions{gap:var(--s8);margin-top:var(--s8)}.prompt-strip .dock-btn,.prompt-strip .dock-btn-secondary{flex:1;min-width:0;height:40px;font-size:13px}}.game-layout[data-theme=parchment]{--layout-bg: #1e1408;--table-bg: #b09050;--table-glow: radial-gradient(ellipse 72% 60% at 50% 50%, rgba(255, 245, 195, .22) 0%, transparent 48%, rgba(0, 0, 0, .12) 72%, rgba(0, 0, 0, .26) 100%);--seat-bg: linear-gradient(145deg, rgba(22, 13, 4, .92) 0%, rgba(14, 8, 2, .96) 100%);--seat-border: rgba(175, 125, 40, .45);--noise-scale: 2.5}.game-layout[data-theme=parchment] .table-surface{background:radial-gradient(ellipse 38% 32% at 6% 10%,rgba(72,40,5,.1) 0%,transparent 70%),radial-gradient(ellipse 30% 25% at 94% 8%,rgba(72,40,5,.08) 0%,transparent 70%),radial-gradient(ellipse 26% 22% at 90% 92%,rgba(72,40,5,.09) 0%,transparent 70%),radial-gradient(ellipse 34% 28% at 4% 90%,rgba(72,40,5,.1) 0%,transparent 70%),repeating-radial-gradient(ellipse at 32% 28%,transparent 0px,transparent 36px,rgba(58,32,4,.05) 37px,transparent 38px),repeating-radial-gradient(ellipse at 70% 72%,transparent 0px,transparent 52px,rgba(58,32,4,.04) 53px,transparent 54px),var(--table-bg)}.game-layout[data-theme=parchment] .table-title{color:#261405e0;text-shadow:0 1px 3px rgba(255,220,140,.35)}@keyframes parchmentShimmer{0%,to{opacity:.88}50%{opacity:1}}.game-layout[data-theme=parchment] .table-surface:before{animation:parchmentShimmer 9s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.game-layout[data-theme=parchment] .table-surface:before{animation:none}}.game-layout[data-theme=nordic]{--layout-bg: #10181f;--table-bg: #446882;--table-glow: radial-gradient(ellipse 75% 62% at 50% 50%, rgba(210, 232, 255, .18) 0%, transparent 46%, rgba(0, 0, 0, .1) 70%, rgba(0, 0, 0, .22) 100%);--seat-bg: linear-gradient(145deg, rgba(10, 18, 28, .92) 0%, rgba(6, 12, 20, .96) 100%);--seat-border: rgba(110, 170, 220, .38);--noise-scale: 1.5}.game-layout[data-theme=nordic] .table-surface{background:repeating-radial-gradient(ellipse 200% 100% at 50% 300%,transparent 0px,transparent 30px,rgba(170,210,245,.07) 31px,transparent 32px),repeating-radial-gradient(ellipse 200% 100% at 50% -200%,transparent 0px,transparent 44px,rgba(140,195,238,.05) 45px,transparent 46px),repeating-linear-gradient(180deg,transparent 0px,transparent 7px,rgba(190,222,252,.04) 8px,transparent 9px),var(--table-bg)}.game-layout[data-theme=nordic] .table-title{text-shadow:0 1px 4px rgba(0,0,0,.55),0 2px 8px rgba(0,0,0,.25)}.game-layout[data-theme=deepspace]{--layout-bg: #050508;--table-bg: #08091a;--table-glow: radial-gradient(ellipse 80% 65% at 52% 48%, rgba(110, 60, 220, .55) 0%, rgba(50, 90, 210, .32) 22%, rgba(20, 40, 130, .18) 48%, transparent 68%), radial-gradient(ellipse 60% 45% at 38% 58%, rgba(30, 80, 180, .2) 0%, transparent 55%);--seat-bg: linear-gradient(145deg, rgba(14, 16, 48, .93) 0%, rgba(8, 9, 30, .97) 100%);--seat-border: rgba(90, 100, 220, .2);--noise-scale: 1.5}.game-layout[data-theme=deepspace] .table-surface{background:radial-gradient(circle,rgba(255,255,255,.82) 1px,transparent 1px) 15px 22px / 67px 67px,radial-gradient(circle,rgba(200,215,255,.55) 1px,transparent 1px) 38px 5px / 43px 43px,radial-gradient(circle,rgba(180,200,255,.38) 1px,transparent 1px) 8px 55px / 89px 89px,radial-gradient(circle,rgba(255,255,255,.42) 1px,transparent 1px) 55px 31px / 53px 53px,radial-gradient(circle,rgba(220,225,255,.22) 1px,transparent 1px) 28px 40px / 31px 31px,var(--table-bg)}@keyframes deepSpaceNebula{0%,to{opacity:.82;transform:scale(1)}50%{opacity:1;transform:scale(1.07)}}.game-layout[data-theme=deepspace] .table-surface:before{animation:deepSpaceNebula 11s ease-in-out infinite;transform-origin:52% 48%}@media (prefers-reduced-motion: reduce){.game-layout[data-theme=deepspace] .table-surface:before{animation:none}}.game-layout[data-theme=crimson]{--layout-bg: #0e0204;--table-bg: #1c0608;--table-glow: radial-gradient(ellipse 85% 70% at 50% 50%, rgba(220, 150, 40, .42) 0%, rgba(200, 80, 30, .26) 28%, rgba(140, 30, 20, .14) 55%, transparent 72%), radial-gradient(ellipse 50% 40% at 55% 45%, rgba(240, 190, 70, .16) 0%, transparent 50%);--seat-bg: linear-gradient(145deg, rgba(45, 8, 12, .93) 0%, rgba(28, 4, 8, .97) 100%);--seat-border: rgba(200, 150, 50, .22);--noise-scale: 1}.game-layout[data-theme=crimson] .table-surface{background:linear-gradient(rgba(210,165,55,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(210,165,55,.07) 1px,transparent 1px),linear-gradient(45deg,rgba(210,165,55,.04) 1px,transparent 1px),linear-gradient(-45deg,rgba(210,165,55,.04) 1px,transparent 1px),var(--table-bg);background-size:28px 28px,28px 28px,40px 40px,40px 40px}@keyframes lanternFlicker{0%{opacity:.8;transform:scale(1)}25%{opacity:.9;transform:scale(1.04)}45%{opacity:.76;transform:scale(1.01)}65%{opacity:.94;transform:scale(1.06)}85%{opacity:.82;transform:scale(1.02)}to{opacity:.8;transform:scale(1)}}.game-layout[data-theme=crimson] .table-surface:before{animation:lanternFlicker 7s ease-in-out infinite;transform-origin:50% 50%}@media (prefers-reduced-motion: reduce){.game-layout[data-theme=crimson] .table-surface:before{animation:none}}.game-layout[data-theme=arcane]{--layout-bg: #080510;--table-bg: #0d0818;--table-glow: radial-gradient(ellipse 75% 62% at 50% 50%, rgba(165, 55, 255, .62) 0%, rgba(120, 35, 210, .38) 20%, rgba(75, 18, 165, .2) 45%, transparent 65%), radial-gradient(ellipse 50% 42% at 54% 52%, rgba(210, 90, 255, .22) 0%, transparent 48%), radial-gradient(ellipse 35% 28% at 46% 47%, rgba(110, 180, 255, .1) 0%, transparent 40%);--seat-bg: linear-gradient(145deg, rgba(28, 10, 55, .93) 0%, rgba(16, 5, 35, .97) 100%);--seat-border: rgba(155, 70, 230, .24);--noise-scale: 1}.game-layout[data-theme=arcane] .table-surface{background:repeating-radial-gradient(circle at 50% 50%,transparent 0px,transparent 44px,rgba(145,55,215,.06) 45px,transparent 46px),var(--table-bg)}@keyframes arcaneSurge{0%{opacity:.75;transform:scale(.96)}40%{opacity:1;transform:scale(1.07)}70%{opacity:.88;transform:scale(1.03)}to{opacity:.75;transform:scale(.96)}}.game-layout[data-theme=arcane] .table-surface:before{animation:arcaneSurge 15s ease-in-out infinite;transform-origin:50% 50%}@media (prefers-reduced-motion: reduce){.game-layout[data-theme=arcane] .table-surface:before{animation:none}}.game-layout[data-theme=brickyard]{--layout-bg: #111111;--table-bg: #141414;--table-glow: radial-gradient(ellipse 65% 55% at 50% 50%, rgba(255, 242, 190, .14) 0%, rgba(200, 180, 120, .06) 45%, transparent 65%);--seat-bg: linear-gradient(145deg, rgba(20, 20, 24, .93) 0%, rgba(12, 12, 16, .97) 100%);--seat-border: rgba(240, 200, 30, .38);--noise-scale: 0}.game-layout[data-theme=brickyard] .table-surface{background:radial-gradient(ellipse 52% 46% at 34% 27%,rgba(255,255,255,.28) 0%,transparent 100%) 0 0 / 32px 32px,radial-gradient(circle,transparent 42%,rgba(0,0,0,.5) 43%,rgba(0,0,0,.5) 52%,transparent 53%) 0 0 / 32px 32px,radial-gradient(circle,#2e2e2e 42%,transparent 43%) 0 0 / 32px 32px,var(--table-bg)}@keyframes brickHueShift{0%{filter:hue-rotate(0deg);opacity:.8}30%{filter:hue-rotate(24deg);opacity:.95}65%{filter:hue-rotate(-20deg);opacity:.86}to{filter:hue-rotate(0deg);opacity:.8}}.game-layout[data-theme=brickyard] .table-surface:before{animation:brickHueShift 13s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.game-layout[data-theme=brickyard] .table-surface:before{animation:none;filter:none}}.game-layout[data-theme=neongrid]{--layout-bg: #030508;--table-bg: #04090c;--table-glow: radial-gradient(ellipse 72% 62% at 50% 50%, rgba(0, 235, 205, .55) 0%, rgba(0, 175, 185, .3) 26%, rgba(25, 55, 185, .18) 52%, transparent 68%), radial-gradient(ellipse 42% 36% at 54% 52%, rgba(0, 255, 225, .22) 0%, transparent 46%);--seat-bg: linear-gradient(145deg, rgba(0, 18, 24, .93) 0%, rgba(0, 10, 16, .97) 100%);--seat-border: rgba(0, 210, 190, .28);--noise-scale: 0}.game-layout[data-theme=neongrid] .table-surface{background:repeating-linear-gradient(180deg,transparent 0px,transparent 3px,rgba(0,205,185,.012) 4px,transparent 5px),repeating-linear-gradient(0deg,transparent 0px,transparent 27px,rgba(0,210,190,.07) 28px,transparent 29px),repeating-linear-gradient(60deg,transparent 0px,transparent 27px,rgba(0,210,190,.07) 28px,transparent 29px),repeating-linear-gradient(120deg,transparent 0px,transparent 27px,rgba(0,210,190,.07) 28px,transparent 29px),var(--table-bg)}.game-layout[data-theme=neongrid] .table-surface:before{mix-blend-mode:screen;animation:neonPulse 12s ease-in-out infinite;transform-origin:50% 50%}@keyframes neonPulse{0%{opacity:.62;transform:scale(.96)}45%{opacity:1;transform:scale(1.06)}75%{opacity:.78;transform:scale(1.02)}to{opacity:.62;transform:scale(.96)}}@media (prefers-reduced-motion: reduce){.game-layout[data-theme=neongrid] .table-surface:before{animation:none}}@media (pointer: coarse){.seat-panel{-webkit-backdrop-filter:none;backdrop-filter:none}.seat-panel.seat--exchange-drop{cursor:pointer}.seat-panel.seat--exchange-touch-target{border-color:#60a5fa8c;box-shadow:0 0 0 2px #60a5fa40,0 2px 12px #00000040}}@media (max-width: 480px){.seat--mobile-side{flex-direction:column;align-items:center;justify-content:center;padding:4px 2px;gap:2px}.seat--mobile-side .seat-avatar{width:22px;height:22px;min-width:22px;font-size:8px;flex-shrink:0}.seat--mobile-side .seat-body{align-items:stretch;width:100%;gap:2px}.seat--mobile-side .seat-name-row{justify-content:center;overflow:hidden}.seat--mobile-side .seat-name{font-size:8px;text-align:center;max-width:100%}.seat--mobile-side .seat-meta{font-size:7px;flex-direction:column;align-items:center;gap:1px}.seat--mobile-side .seat-declaration-pill{font-size:8px;padding:1px 5px}.seat--mobile-side .seat-badges,.seat-panel .seat-badges{display:none}}@media (prefers-reduced-motion: reduce){.seat-declaration-pill,.seat-panel.seat--tichu-pulse,.seat-panel.seat--grand-tichu-pulse{animation:none}.seat-avatar--tichu-pulse,.seat-avatar--grand-tichu-pulse{animation:none!important}}.game-board-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#1a1a2e;color:#fffc}.prompt-strip .prompt-select{padding:6px 12px;font-size:14px;background:#ffffff1a;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-panel);color:#fff;margin:0 var(--s8)}.wish-rank-grid{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:var(--s12) 0 0}.wish-rank-btn{min-width:36px;height:36px;padding:0 6px;font-size:14px;font-weight:600;color:#ffffffe6;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;cursor:pointer;transition:background .15s,border-color .15s,transform .1s}.wish-rank-btn:hover{background:#ffffff2e;border-color:#ffffff59}.wish-rank-btn--selected{background:#ffffff40;border-color:#ffffff80;box-shadow:0 0 0 2px #fff3}.wish-rank-btn--selected:hover{background:#ffffff4d}.exchange-slots-inline{display:flex;flex-wrap:wrap;gap:var(--s12);justify-content:center;margin:var(--s8) 0}.exchange-slot-inline{display:flex;flex-direction:column;align-items:center;gap:var(--s4);font-size:12px;color:#fffc}.exchange-slot-inline .exchange-slot-card{cursor:pointer;border-radius:8px}.exchange-slot-inline .exchange-slot-card:hover{outline:2px solid rgba(255,255,255,.3)}.exchange-slot-inline .exchange-slot-empty{width:48px;height:64px;border:2px dashed rgba(255,255,255,.25);border-radius:var(--radius-panel);display:flex;align-items:center;justify-content:center;color:#ffffff73}.exchange-slot-drop{cursor:default;transition:border-color .15s,background .15s}.exchange-slot-drop-over{border-color:#ffffff80;background:#ffffff14;color:#ffffffb3}.geom-debug-overlay{position:fixed;top:8px;left:8px;z-index:99999;background:#000000a6;border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:11px;color:#ffffffe6;white-space:pre;max-width:360px;pointer-events:none}.sidebar-toggle-btn{position:fixed;top:10px;right:10px;z-index:calc(var(--z-modals) + 1);height:34px;padding:0 12px;border-radius:var(--radius-panel);border:1px solid rgba(255,255,255,.18);background:#00000094;color:#fffffff2;font-size:12px;font-weight:600;cursor:pointer}.sidebar-toggle-btn:hover{background:#000000b3}.game-layout.sidebar-overlay-open .sidebar-toggle-btn{display:none}.exchange-flight-overlay{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:200}.exchange-flight-card-wrap{position:fixed;pointer-events:none;filter:drop-shadow(0 12px 28px rgba(0,0,0,.55));will-change:transform}.dragon-pass-flight-card-wrap{filter:drop-shadow(0 10px 24px rgba(251,146,60,.34))}.stats-popup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#00000080;display:flex;align-items:center;justify-content:center;padding:1rem;animation:stats-popup-fade-in .2s ease}@keyframes stats-popup-fade-in{0%{opacity:0}to{opacity:1}}.stats-popup{background:linear-gradient(160deg,#122d1cfa,#081c12fc);border:1px solid rgba(255,255,255,.12);border-radius:16px;box-shadow:0 20px 60px #0006,inset 0 1px #ffffff0f;max-width:820px;width:100%;max-height:90vh;overflow:hidden;animation:stats-popup-scale-in .2s ease}@keyframes stats-popup-scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.stats-popup-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid rgba(255,255,255,.08)}.stats-popup-title{margin:0;font-size:1.35rem;font-weight:700;color:#fff}.stats-popup-close{width:36px;height:36px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.5rem;line-height:1;color:#ffffffb3;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:color .15s,background .15s}.stats-popup-close:hover{color:#fff;background:#ffffff1a}.stats-popup-body{padding:1.5rem;overflow:auto}.stats-popup-table{width:100%;border-collapse:collapse;font-size:1rem}.stats-popup-th{text-align:center;padding:.75rem .85rem;font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:#fff9;border-bottom:1px solid rgba(255,255,255,.1)}.stats-popup-tr{border-bottom:1px solid rgba(255,255,255,.06)}.stats-popup-tr:last-child{border-bottom:none}.stats-popup-td{text-align:center;padding:.85rem;color:#ffffffe6}.stats-popup-td:first-child{font-weight:600;color:#fff}*{margin:0;padding:0;box-sizing:border-box}@keyframes gameFadeIn{0%{opacity:0}to{opacity:1}}.game-fade-in{animation:gameFadeIn .4s ease-out forwards;min-height:100vh}.toast-stack{position:fixed;right:26px;bottom:96px;z-index:12000;display:flex;flex-direction:column;gap:6px;width:min(84vw,300px);pointer-events:none}@media (max-width: 480px){.toast-stack{right:12px;bottom:calc(140px + env(safe-area-inset-bottom));width:min(80vw,280px)}.lobby-player{padding:.45rem .6rem;gap:.4rem;flex-wrap:wrap}.lobby-player-right{gap:.3rem}.lobby-player-role{font-size:.72rem}.lobby-team-btn{padding:.2rem .4rem;font-size:.72rem;min-height:24px}}.toast{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem;padding:.55rem .65rem;border-radius:12px;border:1px solid rgba(255,255,255,.2);color:#fff;box-shadow:0 6px 18px #0000003d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);pointer-events:auto;animation:toastIn .16s ease-out}.toast--error{background:#882222d1}.toast--warning{background:#825c1ce0}.toast-message{font-size:.84rem;line-height:1.35}.toast-close{border:0;background:transparent;color:#ffffffe0;cursor:pointer;font-size:.95rem;line-height:1;padding:.1rem}.toast-close:hover{color:#fff}@keyframes toastIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;color:#333}.landing{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem;background:linear-gradient(165deg,#252542,#222238,#1e2438);color:#ffffffe6}.landing:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 90% 70% at 50% 35%,rgba(20,80,45,.15) 0%,transparent 55%);pointer-events:none}.landing-content{position:relative;z-index:1;width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;text-align:center}.landing-header{margin-bottom:2rem}.landing-header h1{font-size:2rem;font-weight:700;color:#fff;margin-bottom:.35rem}.landing-subtitle{font-size:.95rem;color:#ffffffa6;font-weight:400}.landing-actions{width:100%;display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.landing-input{width:100%;padding:.7rem 1rem;font-size:1rem;border:1px solid rgba(255,255,255,.2);border-radius:8px;background:#ffffff14;color:#fff}.landing-input::placeholder{color:#ffffff73}.landing-input:focus{outline:none;border-color:#ffffff59;background:#ffffff1a}.landing-buttons{display:flex;gap:.75rem;margin-top:.25rem}.landing-btn{flex:1;padding:.85rem 1.5rem;font-size:1rem;font-weight:600;letter-spacing:.02em;color:#fff;background:linear-gradient(180deg,#ffffff2e,#ffffff14);border:1px solid rgba(255,255,255,.28);border-radius:10px;cursor:pointer;transition:border-color .2s,background .2s,box-shadow .2s,transform .15s ease;box-shadow:0 1px 2px #0003}.landing-btn:hover{border-color:#fff6;background:linear-gradient(180deg,#ffffff38,#ffffff1f);box-shadow:0 4px 12px #00000040;transform:translateY(-1px)}.landing-btn:active{transform:translateY(0);box-shadow:0 1px 2px #0003}.landing-btn:focus-visible{outline:none;border-color:#ffffff80;box-shadow:0 0 0 3px #ffffff26}.landing-btn-small{align-self:center;padding:.45rem 1.1rem;font-size:.85rem;font-weight:500;color:#fffc;background:#ffffff0f;border:1px solid rgba(255,255,255,.2);border-radius:8px;cursor:pointer;transition:background .2s,border-color .2s,color .2s}.landing-btn-small:hover{background:#ffffff1f;border-color:#ffffff52;color:#fff}.landing-btn-small:focus-visible{outline:none;border-color:#ffffff80;box-shadow:0 0 0 3px #ffffff26}.landing-back{margin-top:1rem;padding:.5rem;font-size:.9rem;color:#fff9;background:none;border:none;cursor:pointer;transition:color .2s}.landing-back:hover{color:#ffffffe6}.landing-join-menu{width:100%;max-width:280px;display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.landing-join-label{display:block;font-size:.875rem;font-weight:500;color:#ffffffbf;text-align:left}.landing-join-input{width:100%;padding:.75rem 1rem;font-size:1rem;border-radius:10px;background:#ffffff1f;border:1px solid rgba(255,255,255,.2);color:#fff}.landing-join-input::placeholder{color:#fff6}.landing-join-input:focus{outline:none;border-color:#60a5fae6;background:#ffffff24}.landing-join-buttons{display:flex;gap:.5rem;margin-top:.25rem}.landing-join-back,.landing-join-submit{flex:1;padding:.65rem 1rem;font-size:.95rem;font-weight:500;border-radius:10px;cursor:pointer;transition:background .2s,border-color .2s;border:1px solid rgba(255,255,255,.2)}.landing-join-back{color:#ffffffe6;background:#ffffff1a}.landing-join-back:hover{background:#ffffff26;border-color:#ffffff47}.landing-join-submit{color:#ffffffd9;background:#ffffff1f}.landing-join-submit:hover{background:#ffffff2e;border-color:#ffffff4d}.landing-secondary{display:flex;flex-direction:column;gap:.5rem;width:100%}.landing-link{padding:.5rem;font-size:.9rem;color:#fff9;background:none;border:none;cursor:pointer;text-decoration:none;transition:color .2s}.landing-link:hover{color:#ffffffd9}.landing-footer{margin-top:1.25rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.15);display:flex;flex-direction:column;gap:.5rem}.landing-footer-link{font-size:.9rem;color:#a5b4fc;text-decoration:none;background:none;border:none;cursor:pointer;padding:0;font-family:inherit}.landing-footer-link:hover{text-decoration:underline;color:#c7d2fe}.landing-footer-btn{align-self:center}.landing-credit{margin-top:.75rem;font-size:.85rem;color:#ffffff73}.landing-updates-trigger{margin-top:.5rem;padding:.35rem .5rem;font-size:.8rem;color:#ffffff80;background:none;border:none;border-radius:6px;cursor:pointer;font-family:inherit;text-decoration:underline;text-decoration-color:#ffffff40;text-underline-offset:3px;transition:color .2s,text-decoration-color .2s,background .2s}.landing-updates-trigger:hover{color:#ffffffd9;text-decoration-color:#ffffff73;background:#ffffff0f}.landing-updates-trigger:focus-visible{outline:none;box-shadow:0 0 0 2px #ffffff40}.landing-updates-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#0000008c;display:flex;align-items:center;justify-content:center;padding:1rem;animation:landing-updates-fade-in .2s ease}@keyframes landing-updates-fade-in{0%{opacity:0}to{opacity:1}}.landing-updates-dialog{width:100%;max-width:400px;max-height:min(70vh,520px,calc(100vh - 2rem));min-height:0;display:flex;flex-direction:column;background:linear-gradient(165deg,#1e2034fa,#121424fc);border:1px solid rgba(255,255,255,.12);border-radius:14px;box-shadow:0 20px 50px #00000073,inset 0 1px #ffffff0f;animation:landing-updates-scale-in .2s ease}@keyframes landing-updates-scale-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}.landing-updates-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.1rem;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.landing-updates-title{margin:0;font-size:1.15rem;font-weight:700;color:#fff}.landing-updates-close{width:34px;height:34px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.4rem;line-height:1;color:#ffffffa6;background:transparent;border:none;border-radius:8px;cursor:pointer;transition:color .15s,background .15s}.landing-updates-close:hover{color:#fff;background:#ffffff1a}.landing-updates-body{flex:1 1 auto;min-height:0;padding:.85rem 1.1rem 1.15rem;overflow-y:auto;-webkit-overflow-scrolling:touch;text-align:left}.landing-updates-day+.landing-updates-day{margin-top:1.1rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.08)}.landing-updates-day-title{margin:0 0 .5rem;font-size:.8rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#a5b4fcf2}.landing-updates-list{margin:0;padding:0;list-style:none}.landing-updates-item{display:flex;flex-wrap:wrap;align-items:baseline;gap:.45rem .6rem;font-size:.9rem;color:#ffffffe0;line-height:1.45}.landing-updates-item+.landing-updates-item{margin-top:.45rem}.landing-updates-kind{flex-shrink:0;padding:.12rem .45rem;font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-radius:6px;border:1px solid rgba(255,255,255,.12);background:#ffffff14;color:#ffffffd9}.landing-updates-kind--feature{border-color:#34d39959;background:#10b98126;color:#a7f3d0f2}.landing-updates-kind--bugfix{border-color:#fbbf2459;background:#f59e0b1f;color:#fde68af2}.landing-updates-kind--improvement{border-color:#818cf866;background:#6366f124;color:#c7d2fef5}.landing-updates-kind--other{border-color:#ffffff24;background:#ffffff0f;color:#ffffffb3}.landing-updates-item-text{flex:1;min-width:0;overflow-wrap:break-word}.lobby{max-width:420px;width:100%}.lobby-header{text-align:center;margin-bottom:1.5rem}.lobby-title{font-size:1.75rem;font-weight:700;color:#fff;margin-bottom:.25rem}.lobby-code{font-size:1.25rem;font-weight:600;color:#fffffff2;letter-spacing:.08em;margin-bottom:.5rem}.lobby-invite-btn{background:none;border:1px solid rgba(255,255,255,.35);color:#fffc;border-radius:6px;padding:4px 12px;font-size:.8rem;cursor:pointer;transition:background .15s,color .15s;display:inline-block;margin-bottom:.15rem}.lobby-invite-btn:hover{background:#ffffff1f;color:#fff}.lobby-card{background:#ffffff14;border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:1rem 1.25rem;margin-bottom:1rem}.lobby-card-title{font-size:.95rem;font-weight:600;color:#ffffffe6;margin:0 0 .75rem;display:flex;align-items:center;gap:.5rem}.lobby-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 .35rem;font-size:.75rem;font-weight:600;color:#fffc;background:#ffffff26;border-radius:999px}.lobby-btn{padding:.6rem 1rem;font-size:.9rem;font-weight:500;border-radius:10px;cursor:pointer;transition:background .2s,border-color .2s;border:1px solid rgba(255,255,255,.2);color:#ffffffe6;background:#ffffff1a}.lobby-btn:hover{background:#ffffff29;border-color:#ffffff47}.lobby-btn-copy{width:100%}.lobby-players-card .lobby-card-title{margin-bottom:.75rem}.lobby-players{display:flex;flex-direction:column;gap:.5rem}.lobby-player{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 1rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:10px;font-size:.95rem}.lobby-player-host{border-color:#ef444480;background:#ef444414}.lobby-player-left{display:flex;align-items:center;gap:.5rem;min-width:0;flex:1 1 auto}.lobby-player-name{font-weight:600;color:#fff}.lobby-player-reconnecting{margin-left:.5rem;font-size:.85rem;font-weight:400;color:#ffffffa6}.lobby-player-edit{display:inline-flex;align-items:center;justify-content:center;padding:.25rem;color:#ffffff80;background:none;border:none;border-radius:4px;cursor:pointer;transition:color .2s,background .2s}.lobby-player-edit:hover{color:#ffffffe6;background:#ffffff1a}.lobby-player-edit-row{display:flex;align-items:center;gap:.5rem;width:100%}.lobby-player-name-input{flex:1;min-width:0;padding:.35rem .5rem;font-size:1rem;font-weight:600;color:#fff;background:#ffffff1f;border:1px solid rgba(255,255,255,.25);border-radius:6px}.lobby-player-name-input:focus{outline:none;border-color:#fff6}.lobby-player-save,.lobby-player-cancel{padding:.35rem .6rem;font-size:.8rem;font-weight:600;border-radius:6px;cursor:pointer;transition:background .2s,border-color .2s;flex-shrink:0}.lobby-player-save{color:#fff;background:#22c55e99;border:1px solid rgba(34,197,94,.8)}.lobby-player-save:hover{background:#22c55ecc}.lobby-player-cancel{color:#ffffffe6;background:#ffffff1a;border:1px solid rgba(255,255,255,.2)}.lobby-player-cancel:hover{background:#ffffff26}.lobby-player-right{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;flex-shrink:0}.lobby-player-role{flex-shrink:0;font-size:.8rem;color:#fff9}.lobby-player-team-badge{font-size:.8rem;color:#ffffffb3;padding:.2rem .5rem;background:#ffffff1a;border-radius:6px}.lobby-team-picker{display:flex;gap:.25rem}.lobby-team-btn{padding:.35rem .6rem;min-height:28px;font-size:.8rem;font-weight:500;color:#ffffffb3;background:#ffffff14;border:1px solid rgba(255,255,255,.2);border-radius:6px;cursor:pointer;pointer-events:auto;transition:background .2s,border-color .2s,color .2s}.lobby-team-btn:hover{background:#ffffff1f;color:#ffffffe6}.lobby-team-btn-active{background:#fff3;border-color:#ffffff59;color:#fff}.lobby-custom-score{width:100%;margin-bottom:.65rem;text-align:center}.lobby-custom-score-trigger{padding:.25rem .5rem;font-size:.82rem;font-weight:500;font-family:inherit;color:#ffffff6b;background:none;border:none;border-radius:6px;cursor:pointer;text-decoration:underline;text-decoration-color:#fff3;text-underline-offset:3px;transition:color .2s,text-decoration-color .2s,background .2s}.lobby-custom-score-trigger:hover{color:#ffffffbf;text-decoration-color:#fff6;background:#ffffff0a}.lobby-custom-score-trigger:focus-visible{outline:none;box-shadow:0 0 0 2px #fff3}.lobby-custom-score-panel{text-align:left;padding:.5rem .6rem .55rem;border-radius:10px;background:#ffffff0a;border:1px solid rgba(255,255,255,.07);box-shadow:inset 0 1px #ffffff0a}.lobby-custom-score-panel-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}.lobby-custom-score-panel-title{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#ffffff73}.lobby-custom-score-close{flex-shrink:0;width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.25rem;line-height:1;color:#ffffff73;background:transparent;border:none;border-radius:6px;cursor:pointer;transition:color .15s,background .15s}.lobby-custom-score-close:hover{color:#ffffffe6;background:#ffffff14}.lobby-custom-score-lead{margin:0 0 .5rem;font-size:.72rem;line-height:1.35;color:#fff6}.lobby-custom-score-dismiss{margin-top:.5rem;padding:.2rem 0;width:100%;font-size:.72rem;font-family:inherit;color:#ffffff61;background:none;border:none;cursor:pointer;text-align:center;transition:color .15s}.lobby-custom-score-dismiss:hover{color:#a5b4fcf2}.lobby-starting-score-row{display:flex;gap:.75rem;justify-content:stretch}.lobby-starting-score-label{flex:1;display:flex;flex-direction:column;gap:.35rem;text-align:left}.lobby-starting-score-label-text{font-size:.75rem;font-weight:500;color:#ffffff8c}.lobby-custom-score-panel .lobby-starting-score-input{padding:.45rem .55rem;font-size:.92rem}.lobby-starting-score-input{width:100%;padding:.55rem .65rem;font-size:1rem;border-radius:8px;border:1px solid rgba(255,255,255,.18);background:#00000026;color:#fff}.lobby-starting-score-input::placeholder{color:#ffffff59}.lobby-starting-score-input:focus{outline:none;border-color:#818cf8a6;background:#ffffff1a}.lobby-starting-score-input::-webkit-outer-spin-button,.lobby-starting-score-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.lobby-starting-score-input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.lobby-start-wrap{width:100%;margin-top:.25rem;text-align:center}.lobby-randomize{width:100%;margin-bottom:.5rem;padding:.5rem 1rem;font-size:.9rem;font-weight:500;color:#ffffffd9;background:#ffffff14;border:1px solid rgba(255,255,255,.2);border-radius:10px;cursor:pointer;transition:background .2s,border-color .2s}.lobby-randomize:hover{background:#ffffff1f;border-color:#ffffff4d}.lobby-start{width:100%;padding:.75rem 1rem;font-size:1rem;font-weight:600;color:#fff;background:linear-gradient(180deg,#fff3,#ffffff1a);border:1px solid rgba(255,255,255,.3);border-radius:10px;cursor:pointer;transition:background .2s,border-color .2s,opacity .2s}.lobby-start:hover:not(:disabled){background:linear-gradient(180deg,#ffffff42,#ffffff24);border-color:#fff6}.lobby-start:disabled{opacity:.5;cursor:not-allowed}.lobby-start-hint{margin:.35rem 0 0;font-size:.85rem;color:#ffffff80}.lobby-leave{width:100%;margin-top:.5rem;padding:.7rem 1rem;font-size:.95rem;font-weight:500;color:#ffffffd9;background:#ffffff14;border:1px solid rgba(255,255,255,.18);border-radius:10px;cursor:pointer;transition:background .2s,border-color .2s}.lobby-leave:hover{background:#ffffff1f;border-color:#ffffff40}.end-game-test-wrap{position:relative;width:100%;min-height:100vh}.end-game-test-back{position:fixed;top:12px;left:12px;z-index:9999;padding:.5rem 1rem;font-size:.9rem;background:#000000bf;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:8px;cursor:pointer;transition:background .2s}.end-game-test-back:hover{background:#000000e6}.end-game-test-stats{position:fixed;top:58px;left:12px;z-index:9999;padding:.5rem 1rem;font-size:.9rem;background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:8px;cursor:pointer;transition:background .2s}.end-game-test-stats:hover{background:#fff3}.btn-test-endgame{background:linear-gradient(135deg,#f59e0b,#d97706);min-width:250px}.btn-test-endgame:hover{box-shadow:0 4px 8px #f59e0b4d}.how-to-play{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem 2rem;background:linear-gradient(165deg,#1a1a2e,#16213e,#1a1a2e)}.how-to-play-page .how-to-play-panel{flex:1;max-width:1100px;min-height:0}.how-to-play-panel{position:relative;width:100%;display:flex;flex-direction:column;background:linear-gradient(165deg,#2a2a48,#252538);border:1px solid rgba(255,255,255,.12);border-radius:14px;box-shadow:0 12px 40px #0006;overflow:hidden}.how-to-play-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.05rem 1.25rem .95rem;border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0}.how-to-play-title{margin:0;font-size:1.35rem;font-weight:800;color:#fff;letter-spacing:.2px}.htp-subtitle{margin:.35rem 0 0;font-size:.9rem;line-height:1.35;color:#ffffffb8;max-width:55ch}.how-to-play-close{width:40px;height:40px;margin-top:2px;display:flex;align-items:center;justify-content:center;font-size:1.6rem;line-height:1;color:#ffffffbf;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:10px;cursor:pointer;transition:background .18s,border-color .18s,color .18s,transform .18s}.how-to-play-close:hover{color:#fff;background:#ffffff1a;border-color:#ffffff2e;transform:translateY(-1px)}.how-to-play-body{padding:1.1rem 1.25rem 1.35rem;flex:1;overflow-y:auto;color:#ffffffe6;font-size:.96rem;line-height:1.6}.htp-layout{display:grid;grid-template-columns:240px minmax(0,1fr) 290px;gap:1.2rem;align-items:start}.htp-toc{position:sticky;top:0;align-self:start;padding:.85rem;background:#00000029;border:1px solid rgba(255,255,255,.1);border-radius:12px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.htp-toc-head{margin-bottom:.75rem}.htp-toc-title{font-weight:800;letter-spacing:.2px;color:#fffffff2;margin-bottom:.25rem}.htp-toc-hint{font-size:.85rem;color:#ffffffa6}.htp-toc-list{margin:0;padding-left:1.05rem}.htp-toc-item{margin:.2rem 0}.htp-toc-link{color:#ffffffd9;text-decoration:none;font-size:.92rem}.htp-toc-link:hover{color:#fff;text-decoration:underline;text-underline-offset:3px}.htp-content{min-width:0}.htp-section{padding:1rem 1rem 1.05rem;margin-bottom:.95rem;background:#00000024;border:1px solid rgba(255,255,255,.1);border-radius:14px}.htp-section:last-child{margin-bottom:0}.htp-section-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.35rem}.htp-h2{margin:0 0 .4rem;font-size:1.02rem;font-weight:850;color:#fffffff5;letter-spacing:.2px}.htp-h3{margin:0 0 .35rem;font-size:.98rem;font-weight:850;color:#fffffff2}.htp-muted{color:#ffffffbf}.htp-chip{font-size:.78rem;font-weight:800;padding:.25rem .5rem;border-radius:999px;border:1px solid rgba(255,255,255,.14);background:#ffffff0f;color:#ffffffd1;white-space:nowrap}.htp-bullets{margin:.4rem 0 0;padding-left:1.15rem}.htp-bullets li{margin:.25rem 0}.htp-steps{margin:.5rem 0 0;padding-left:1.2rem}.htp-steps li{margin:.35rem 0}.htp-split{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:.65rem 0 .85rem}.htp-split-card{padding:.85rem .9rem;border-radius:14px;background:radial-gradient(1200px 200px at 20% 0%,rgba(255,255,255,.08),transparent 55%),#ffffff0a;border:1px solid rgba(255,255,255,.1)}.htp-split-kicker{font-size:.78rem;font-weight:900;letter-spacing:.35px;text-transform:uppercase;color:#ffffffa8;margin-bottom:.4rem}.htp-callout{margin-top:.9rem;padding:.85rem .9rem;border-radius:12px;background:#ffffff0f;border:1px solid rgba(255,255,255,.12)}.htp-callout-warn{background:#ffc80014;border-color:#ffc8002e}.htp-callout-title{font-weight:850;margin-bottom:.25rem;color:#fffffff2}.htp-callout-text{margin:0;color:#fffc}.htp-flow{display:grid;gap:.65rem;margin-top:.55rem}.htp-flow-step{display:grid;grid-template-columns:30px minmax(0,1fr);gap:.65rem;align-items:start;padding:.7rem .75rem;border-radius:12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.09)}.htp-flow-num{width:28px;height:28px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-weight:900;color:#ffffffeb;background:#ffffff14;border:1px solid rgba(255,255,255,.14)}.htp-flow-title{font-weight:850;margin-bottom:.15rem;color:#fffffff2}.htp-rulegrid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:.55rem}.htp-rulebox{padding:.85rem .9rem;border-radius:12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.09)}.htp-cardgrid{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin-top:.65rem}.htp-card{padding:.9rem .95rem;border-radius:14px;background:radial-gradient(1200px 200px at 20% 0%,rgba(255,255,255,.08),transparent 55%),#ffffff0a;border:1px solid rgba(255,255,255,.1)}.htp-combolist{margin-top:.6rem;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#0000001f;overflow:hidden}.htp-combolist-header,.htp-combolist-row{display:grid;grid-template-columns:18% 22% 1fr;gap:.5rem;padding:.7rem .75rem;border-bottom:1px solid rgba(255,255,255,.08);align-items:start}.htp-combolist-row:last-child{border-bottom:none}.htp-combolist-header{font-size:.85rem;letter-spacing:.25px;color:#ffffffd9;background:#ffffff0d}.htp-combolist-row{color:#ffffffdb}.htp-combolist-notes{overflow-wrap:break-word;word-break:break-word;min-width:0}.htp-combo-details{margin-top:.5rem;margin-bottom:0}.htp-combo-details .htp-details-summary{padding:.45rem .6rem}.htp-combo-details>*:not(summary){padding:.5rem .6rem .6rem}@media (max-width: 820px){.htp-combolist-header,.htp-combolist-row{grid-template-columns:minmax(0,18%) minmax(0,22%) minmax(0,1fr);padding:.6rem .5rem}}.htp-tablewrap{margin-top:.6rem;overflow:auto;border-radius:12px;border:1px solid rgba(255,255,255,.1)}.htp-tablewrap-scoring{overflow:visible}.htp-tablewrap-scoring .htp-table{min-width:0}.htp-table{width:100%;border-collapse:collapse;min-width:520px;background:#0000001f}.htp-table th,.htp-table td{padding:.7rem .75rem;vertical-align:top;border-bottom:1px solid rgba(255,255,255,.08)}.htp-table th{text-align:left;font-size:.85rem;letter-spacing:.25px;color:#ffffffd9;background:#ffffff0d}.htp-table td{color:#ffffffdb}.htp-table tr:last-child td{border-bottom:none}.htp-details{margin-top:.7rem;border-radius:12px;border:1px solid rgba(255,255,255,.1);background:#ffffff0a;overflow:hidden}.htp-details-summary{cursor:pointer;padding:.7rem .85rem;font-weight:800;color:#ffffffe6;list-style:none}.htp-details-summary::-webkit-details-marker{display:none}.htp-details[open] .htp-details-summary{border-bottom:1px solid rgba(255,255,255,.08);background:#ffffff08}.htp-details>*:not(summary){padding:.75rem .85rem .85rem}.htp-faq{display:grid;gap:.6rem}.htp-cheatsheet{position:sticky;top:0;align-self:start}.htp-cheatsheet-card{padding:.95rem;border-radius:12px;background:#00000029;border:1px solid rgba(255,255,255,.1);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.htp-cheatsheet-title{font-weight:900;color:#fffffff2;margin-bottom:.65rem}.htp-cheat-block+.htp-cheat-block{margin-top:.85rem;padding-top:.85rem;border-top:1px solid rgba(255,255,255,.08)}.htp-cheat-title{font-weight:850;margin-bottom:.25rem;color:#ffffffe6}.htp-mobile-top{display:none;margin-bottom:.9rem}.htp-cheat-inner{display:grid;gap:.75rem}.how-to-play-footer{padding:1rem 1.25rem;border-top:1px solid rgba(255,255,255,.1);flex-shrink:0}.how-to-play-back-btn{padding:.55rem 1rem;font-size:.95rem;color:#ffffffeb;background:#ffffff14;border:1px solid rgba(255,255,255,.16);border-radius:10px;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}.how-to-play-back-btn:hover{background:#ffffff1f;border-color:#ffffff38;transform:translateY(-1px)}@media (max-width: 980px){.htp-layout{grid-template-columns:220px minmax(0,1fr)}.htp-cheatsheet{display:none}}@media (max-width: 820px){.how-to-play-page .how-to-play-panel{max-width:720px}.htp-layout{grid-template-columns:1fr}.htp-toc{display:none}.htp-mobile-top{display:block}.htp-rulegrid,.htp-cardgrid,.htp-split{grid-template-columns:1fr}.htp-table{min-width:480px}}html{overflow:hidden}body{margin:0;background:#0c2d1a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}
