:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--font-display:Georgia, "Palatino Linotype", "Book Antiqua", serif;--font-ui:system-ui, -apple-system, "Segoe UI", sans-serif;--bg:#101015;--panel:#ffffff0d;--panel-border:#ffffff1c;--text:#f1ede2;--muted:#f1ede2a6;--gold:#f0c56a;--felt:#1d6b45;--team-0:#5aa8ff;--team-1:#ff9a5a;--red-suit:#e0324a}html,body{background:var(--bg);height:100%;color:var(--text);font-family:var(--font-ui);margin:0;overflow:hidden}#app{width:100vw;height:100vh;position:relative}.hidden{display:none!important}.suit-red{color:var(--red-suit)}.suit-black{color:#e8e6ee}.team-text-0{color:var(--team-0)}.team-text-1{color:var(--team-1)}button{font:inherit;color:var(--text);cursor:pointer;background:linear-gradient(#3a3428,#262219);border:1px solid #f0c56a59;border-radius:6px;min-height:28px;padding:0 12px;font-size:13px;transition:background .15s,border-color .15s,transform 50ms}button:hover:not(:disabled){background:linear-gradient(#4a4232,#2f2a1f);border-color:#f0c56acc}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:default}input[type=text],select{font:inherit;color:inherit;background:#0006;border:1px solid #fff3;border-radius:5px;padding:5px 7px;font-size:13px}.screen{position:absolute;inset:0}.screen:not(#screen-game){background:radial-gradient(#1d6b4559,#0000 65%),#101015;justify-content:center;align-items:center;display:flex;overflow-y:auto}.screen-panel{border:1px solid var(--panel-border);box-sizing:border-box;text-align:center;background:#101214d9;border-radius:12px;width:90%;max-width:560px;max-height:92vh;padding:30px 34px;overflow-y:auto;box-shadow:0 20px 60px #00000080}.screen-panel h1{font-family:var(--font-display);color:var(--gold);letter-spacing:1px;margin:4px 0 10px;font-size:34px}.screen-panel h2{font-family:var(--font-display);color:#f4ecd8;margin:0 0 18px;font-size:21px}.screen-panel .welcome-logo{max-width:280px;margin:0 auto}.welcome-logo img{filter:drop-shadow(0 6px 14px #00000080);width:100%;height:auto;display:block}.welcome-brand{font-family:var(--font-display);color:var(--gold);letter-spacing:2px;margin:12px 0 10px;font-size:15px}.screen-hint{color:var(--muted);margin:0 0 20px;font-size:13px;line-height:1.5}.mode-card-grid{flex-direction:column;gap:12px;margin-bottom:22px;display:flex}.mode-card{box-sizing:border-box;background:linear-gradient(#245c3f,#173e2a);border-color:#f0c56a73;flex-direction:column;align-items:center;gap:4px;width:100%;min-height:44px;padding:12px 16px;font-size:15px;display:flex}.mode-card:hover:not(:disabled){background:linear-gradient(#2c7049,#1c4b33)}.mode-card strong{font-size:15px}.mode-card span{color:var(--muted);font-size:12px}.welcome-panel .mode-card{max-width:260px;margin:0 auto}.rules{text-align:left;color:var(--muted);margin-top:22px;font-size:13px;line-height:1.5}.rules summary{cursor:pointer;text-align:center;color:var(--gold)}.rules ul{padding-left:18px}.setup-row{text-align:left;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;font-size:13px;display:flex}.setup-row label{align-items:center;gap:6px;display:flex}.setup-label{min-width:110px;color:var(--muted)}.setup-label small{opacity:.8;font-size:10px;display:block}.seat-row input[type=text]{flex:1;min-width:100px}.seat-row.team-0 .setup-label{border-left:3px solid var(--team-0);padding-left:7px}.seat-row.team-1 .setup-label{border-left:3px solid var(--team-1);padding-left:7px}.setup-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.setup-actions .mode-card{flex:1;min-height:0;padding:9px 16px}.inline-status{color:#ffb066;min-height:1.2em;margin:0 0 8px;font-size:12px}.inline-note{color:var(--muted);font-size:11px;font-style:italic}.screen-panel.lobby-panel{text-align:left;max-width:960px}.lobby-header{align-items:center;gap:12px;margin-bottom:16px;display:flex}.lobby-header h2{margin:0}.lobby-you{color:var(--muted);flex:1;font-size:13px}.lobby-grid{grid-template-columns:minmax(0,3fr) minmax(0,2fr);gap:20px;display:grid}@media (width<=760px){.lobby-grid{grid-template-columns:minmax(0,1fr)}}.lobby-section{margin-bottom:18px}.lobby-section h3{font-family:var(--font-display);color:#f4ecd8;margin:0 0 8px;font-size:15px}.lobby-list,.lobby-tables{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.lobby-list li{background:#00000040;border:1px solid #ffffff14;border-radius:6px;align-items:center;gap:10px;padding:7px 10px;font-size:13px;display:flex}.lobby-list li.is-you{border-color:#5aa8ff80}.lobby-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.lobby-detail{color:var(--muted);font-size:12px}.lobby-badge{background:#ffffff1a;border-radius:999px;padding:1px 8px;font-size:11px}.lobby-badge.status-seated{color:#9ef0b8;background:#4ade8033}.lobby-badge.status-playing{color:#ffd08a;background:#f5a62333}.lobby-empty{color:var(--muted);margin:0;font-size:12px;font-style:italic}.lobby-table{background:#1d6b452e;border:1px solid #ffffff1a;border-radius:8px;padding:10px 12px}.lobby-table.is-mine{border-color:#f0c56a99}.lobby-table-title{margin-bottom:8px;font-size:13px;font-weight:600}.seat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}@media (width<=560px){.seat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.seat-cell{border-top:3px solid var(--team-0);background:#0000004d;border-radius:6px;flex-direction:column;align-items:flex-start;gap:4px;min-width:0;padding:6px 8px;font-size:12px;display:flex}.seat-cell.team-1{border-top-color:var(--team-1)}.seat-cell-label{text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-size:10px}.seat-cell-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.seat-cell button{min-height:22px;padding:0 8px;font-size:11px}.private-badge{margin-left:8px;font-weight:400}.invite-box{background:#00000040;border:1px dashed #f0c56a80;border-radius:6px;margin-bottom:8px;padding:8px 10px}.invite-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;font-size:13px;display:flex}.invite-code{letter-spacing:3px;color:var(--gold);-webkit-user-select:all;user-select:all;font-family:Consolas,Courier New,monospace;font-size:18px}.invite-banner{color:var(--gold);border:1px solid #f0c56a73;border-radius:6px;margin:0 0 16px;padding:8px 10px;font-size:13px}.code-input{text-transform:uppercase;letter-spacing:2px;width:11em}.lobby-table-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.chat-log{word-break:break-word;background:#0000004d;border:1px solid #ffffff14;border-radius:6px;height:150px;margin-bottom:6px;padding:6px 8px;font-size:12px;line-height:1.5;overflow-y:auto}.chat-who{color:#c9b896;font-weight:700}.chat-form{gap:4px;display:flex}.chat-form input{flex:1;min-width:0;font-size:12px}#screen-game{grid-template:"topbar topbar"38px"sidebar board"minmax(0,1fr)/270px minmax(0,1fr);display:grid}@media (width<=820px){#screen-game{grid-template:"topbar"38px"board"minmax(0,1fr)"sidebar"/minmax(0,1fr)}#sidebar{max-height:34vh}}#top-bar{font-family:var(--font-display);letter-spacing:2px;color:var(--gold);background:linear-gradient(#2a1d12,#1a120b);border-bottom:1px solid #f0c56a4d;grid-area:topbar;justify-content:space-between;align-items:center;padding:0 14px;font-size:15px;font-weight:700;display:flex}#mode-badge{font-family:var(--font-ui);letter-spacing:0;color:var(--muted);font-size:12px;font-weight:400}#sidebar{background:#17181c;border-right:1px solid #ffffff0f;flex-direction:column;grid-area:sidebar;gap:10px;padding:10px;font-size:13px;display:flex;overflow-y:auto}.skin-panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;padding:9px 11px}.panel-title{font-family:var(--font-display);color:var(--gold);justify-content:space-between;align-items:baseline;margin-bottom:6px;font-size:13px;font-weight:700;display:flex}summary.panel-title{cursor:pointer;margin-bottom:0}details[open] summary.panel-title{margin-bottom:6px}.panel-sub{font-family:var(--font-ui);color:var(--muted);font-size:11px;font-weight:400}.score-row{grid-template-columns:minmax(0,1fr) auto;gap:2px 8px;margin-bottom:7px;display:grid}.score-team{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.score-value{font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.score-row.team-0 .score-value{color:var(--team-0)}.score-row.team-1 .score-value{color:var(--team-1)}.score-bar{background:#ffffff14;border-radius:2px;grid-column:1/-1;height:4px;overflow:hidden}.score-bar span{height:100%;transition:width .6s;display:block}.score-row.team-0 .score-bar span{background:var(--team-0)}.score-row.team-1 .score-bar span{background:var(--team-1)}.score-note,.contract-note{color:var(--muted);font-size:11px}.contract-line{margin-bottom:4px}.contract-trump{align-items:center;gap:6px;font-size:22px;font-weight:700;display:flex}.contract-trump span{font-size:14px}.contract-tricks{margin-top:4px;font-size:12px}.mini-card{color:#16161c;background:#f6f2e8;border-radius:3px;margin-right:2px;padding:0 4px;font-size:12px;font-weight:700;line-height:18px;display:inline-block}.mini-card .suit-black{color:#16161c}.trick-winner .mini-card{box-shadow:0 0 0 2px var(--gold)}.last-trick-cards{margin-bottom:4px}.announce-list{margin:0;padding-left:16px;font-size:12px;line-height:1.6}.sheet{border-collapse:collapse;width:100%;font-size:11px}.sheet th,.sheet td{text-align:left;border-bottom:1px solid #ffffff0f;padding:2px 3px}.sheet th{color:var(--muted);font-weight:400}#chat-panel .chat-log{height:90px}#controls{flex-wrap:wrap;gap:6px;display:flex}#board-area{background:#111116;grid-area:board;position:relative;overflow:hidden}#scene,#scene2d{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#seat-plates{pointer-events:none;position:absolute;inset:0}.seat-plate{border:1px solid #ffffff1f;border-left:4px solid var(--team-0);background:#0a0c0eb8;border-radius:8px;flex-direction:column;align-items:flex-start;gap:3px;min-width:90px;max-width:180px;padding:6px 10px;font-size:13px;transition:box-shadow .2s,border-color .2s;display:flex;position:absolute}.seat-plate.team-1{border-left-color:var(--team-1)}.seat-plate.is-turn{border-color:var(--gold);animation:1.4s ease-in-out infinite plate-pulse;box-shadow:0 0 0 2px #f0c56a59,0 0 22px #f0c56a59}@keyframes plate-pulse{50%{box-shadow:0 0 0 2px #f0c56a99,0 0 30px #f0c56a8c}}.seat-plate[data-rel="0"]{bottom:14px;left:14px}.seat-plate[data-rel="1"]{top:16%;right:14px}.seat-plate[data-rel="2"]{top:12px;left:calc(50% + 150px)}.seat-plate[data-rel="3"]{top:16%;left:14px}.plate-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:700;overflow:hidden}.bot-mark{margin-right:4px}.plate-badges{flex-wrap:wrap;gap:4px;display:flex}.plate-badges:empty{display:none}.badge{background:#ffffff1f;border-radius:999px;padding:1px 6px;font-size:10px}.badge-dealer{background:#5aa8ff2e}.badge-taker{color:#ffe3a6;background:#f0c56a38}.plate-bubble{color:#16161c;white-space:nowrap;background:#f6f2e8;border-radius:12px;padding:3px 9px;font-size:12px;font-weight:700;animation:.25s ease-out pop;position:absolute;top:-12px;right:-10px;transform:translateY(-50%);box-shadow:0 4px 10px #0006}.plate-bubble .suit-black{color:#16161c}@keyframes pop{0%{opacity:0;transform:translateY(-50%)scale(.6)}}#toast{color:var(--text);pointer-events:none;white-space:nowrap;background:#0a0c0ed9;border:1px solid #f0c56a80;border-radius:20px;padding:8px 18px;font-size:15px;font-weight:600;animation:.25s ease-out toast-in;position:absolute;top:16px;left:50%;transform:translate(-50%)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-8px)}}#turn-hint{color:var(--gold);pointer-events:none;background:#0a0c0eb3;border-radius:10px;padding:3px 12px;font-size:12px;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}#bid-panel{text-align:center;background:#0c0e10e6;border:1px solid #f0c56a8c;border-radius:12px;padding:12px 16px;animation:.2s ease-out toast-in;position:absolute;top:46%;left:74%;transform:translate(-50%,-50%);box-shadow:0 12px 40px #0000008c}#bid-prompt{margin:0 0 10px;font-size:15px}#bid-buttons{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.bid-btn{min-height:36px;padding:0 16px;font-size:14px}.bid-btn.bid-take{color:#16161c;background:linear-gradient(#f6f2e8,#ddd6c6);font-weight:700}.bid-btn.bid-take:hover:not(:disabled){background:linear-gradient(#fff,#ebe5d6)}.bid-btn.bid-take .suit-black{color:#16161c}.dialog{background:#00000073;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.dialog-box{text-align:center;background:#17181c;border:1px solid #f0c56a80;border-radius:12px;width:90%;max-width:460px;padding:20px 24px;box-shadow:0 20px 60px #0009}.dialog-box h3{font-family:var(--font-display);color:var(--gold);margin:0 0 4px;font-size:20px}.dialog-box p{color:var(--muted);margin:0 0 12px;font-size:13px}#result-table{border-collapse:collapse;width:100%;margin-bottom:14px;font-size:13px}#result-table th,#result-table td{border-bottom:1px solid #ffffff12;padding:5px 6px}#result-table td:first-child{text-align:left;color:var(--muted)}#result-table th{font-size:12px;font-weight:600}#result-table td:not(:first-child){font-variant-numeric:tabular-nums;font-weight:600}.dialog-actions{justify-content:center;gap:10px;display:flex}.dialog-actions .mode-card{width:auto;min-width:180px}#curtain{z-index:10;background:radial-gradient(#1d6b4580,#0000 70%),#0c0d10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.curtain-box{text-align:center;max-width:420px;padding:24px}.curtain-box h2{font-family:var(--font-display);color:var(--gold)}.curtain-box p{color:var(--muted);margin-bottom:20px}#loading{background:#0a0a0e99;border-radius:6px;padding:6px 10px;font-size:13px;position:absolute;bottom:16px;right:16px}.lang-select{min-height:26px;font-family:var(--font-ui);color:var(--gold);cursor:pointer;border-color:#f0c56a59;padding:2px 6px;font-size:12px}.lang-select option{color:#f4ecd8;background:#16181a}.global-controls{z-index:5;align-items:center;gap:10px;display:flex;position:absolute;top:14px;right:16px}#app:has(#screen-game:not(.hidden)) .global-controls{display:none}.top-bar-right{align-items:center;gap:12px;display:flex}.fullscreen-btn{width:26px;height:26px;color:var(--gold);letter-spacing:0;cursor:pointer;background:0 0;border:1px solid #f0c56a59;border-radius:5px;flex:none;place-items:center;padding:0;font-size:15px;line-height:1;display:grid}.fullscreen-btn[hidden]{display:none}.fullscreen-btn:hover{background:#f0c56a1f}.account-notice{color:var(--gold);border:1px solid #f0c56a73;border-radius:6px;margin:0 0 16px;padding:8px 10px;font-size:13px}.account-notice.hidden{display:none}.account-notice a{color:inherit;font-weight:600;text-decoration:underline}
