*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--green:#1a6b3c;--green-dark:#124d2b;--green-felt:#2d8653;--team-a:#2980b9;--team-b:#c0392b;--gold:#f39c12;--text:#f0f0f0;--card-w:clamp(40px, 8.5vw, 62px);--card-h:clamp(58px, 12.5vw, 90px);--card-w-sm:clamp(30px, 6.5vw, 48px);--card-h-sm:clamp(44px, 9.5vw, 68px);--card-w-mini:clamp(22px, 4.7vw, 34px);--card-h-mini:clamp(32px, 6.6vw, 48px);--radius:8px;--screen-bg:radial-gradient(ellipse at center, #1a6b3c 0%, #0d3d22 100%);--screen-bg-dark:radial-gradient(ellipse at center, #0d3d22 0%, #071f11 100%);--card-back-1:#1a237e;--card-back-2:#283593}[data-theme=night]{--green-felt:#1c1c42;--green-dark:#0a0a20;--screen-bg:radial-gradient(ellipse at center, #1c1c42 0%, #0a0a20 100%);--screen-bg-dark:radial-gradient(ellipse at center, #0a0a20 0%, #050510 100%);--card-back-1:#4a148c;--card-back-2:#6a1b9a}[data-theme=desert]{--green-felt:#7a5c1e;--green-dark:#4a3510;--screen-bg:radial-gradient(ellipse at center, #7a5c1e 0%, #3d2a08 100%);--screen-bg-dark:radial-gradient(ellipse at center, #4a3510 0%, #251a05 100%);--card-back-1:#7b1900;--card-back-2:#9c2200}html,body,#root{height:100%}body{background:var(--green-dark);color:var(--text);font-family:Segoe UI,system-ui,sans-serif;overflow:hidden}.screen{justify-content:center;align-items:center;min-height:100dvh;padding:16px 20px;display:flex;overflow-y:auto}.start-screen{background:var(--screen-bg)}.start-card{text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#00000073;border:1px solid #ffffff26;border-radius:16px;width:100%;max-width:480px;padding:40px}.start-card-2col{text-align:left;flex-direction:row;align-items:center;gap:28px;max-width:860px;padding:28px 36px;display:flex}.start-col-left{flex:none;width:230px}.start-col-right{flex-direction:column;flex:1;gap:12px;display:flex}.login-card{text-align:left;align-items:center;gap:28px;max-width:720px;flex-direction:row!important;padding:28px 36px!important;display:flex!important}.login-col-left{flex-direction:column;flex:none;width:190px;display:flex}.login-col-right{flex-direction:column;flex:1;gap:12px;display:flex}.login-form{margin:0}.login-back-btn{align-self:flex-start;margin-top:4px}.start-card-2col .game-title,.login-card .game-title{letter-spacing:1px;margin-bottom:4px;font-size:2.2rem}.start-card-2col .game-subtitle,.login-card .game-subtitle{margin-bottom:12px;font-size:.82rem}.start-card-2col .teams-info{justify-content:flex-start;gap:10px;margin-bottom:0}.start-card-2col .team-badge{padding:7px 12px}.start-card-2col .vs{font-size:.9rem}.start-card-2col .rules-summary{margin-bottom:0;padding:10px 14px}.start-card-2col .rules-summary p{margin-bottom:4px;font-size:.8rem}.start-card-2col .theme-selector{margin-bottom:0}@media (width<=520px){.start-card-2col,.login-card{text-align:center;gap:0;max-width:480px;flex-direction:column!important;padding:28px!important}.start-col-left,.start-col-right,.login-col-left,.login-col-right{width:100%}.start-card-2col .teams-info{justify-content:center}.start-card-2col .game-title,.login-card .game-title{font-size:2.6rem}.login-col-left{align-items:center}.login-back-btn{align-self:center}}.game-title{letter-spacing:2px;margin-bottom:8px;font-size:3rem;font-weight:800}.game-subtitle{color:#fff9;margin-bottom:28px}.teams-info{justify-content:center;align-items:center;gap:16px;margin-bottom:24px;display:flex}.team-badge{border-radius:10px;flex-direction:column;padding:10px 18px;font-weight:600;display:flex}.team-badge.team-a{border:1px solid var(--team-a);background:#2980b94d}.team-badge.team-b{border:1px solid var(--team-b);background:#c0392b4d}.team-badge .players{opacity:.7;margin-top:2px;font-size:.75rem;font-weight:400}.vs{opacity:.5;font-size:1.1rem;font-weight:800}.rules-summary{text-align:left;background:#ffffff12;border-radius:10px;margin-bottom:28px;padding:16px}.rules-summary p{margin-bottom:6px;font-size:.9rem;line-height:1.5}.pass-device-screen{background:var(--screen-bg-dark)}.pass-card{text-align:center;background:#00000080;border:1px solid #ffffff26;border-radius:16px;width:100%;max-width:420px;padding:36px}.player-badge{border-radius:12px;flex-direction:column;margin-bottom:20px;padding:12px 24px;display:inline-flex}.player-badge.team-a{border:2px solid var(--team-a);background:#2980b940}.player-badge.team-b{border:2px solid var(--team-b);background:#c0392b40}.player-badge .player-num{font-size:1.3rem;font-weight:700}.player-badge .team-label{opacity:.7;font-size:.75rem}.pass-title{margin-bottom:8px;font-size:1.6rem;font-weight:700}.pass-subtitle{opacity:.6;margin-bottom:24px;font-size:.9rem}.score-preview{justify-content:center;align-items:center;gap:16px;margin-bottom:16px;display:flex}.score-item{flex-direction:column;font-size:.85rem;display:flex}.score-item.team-a strong{color:#5dade2;font-size:1.4rem}.score-item.team-b strong{color:#ec7063;font-size:1.4rem}.score-divider{opacity:.3;font-size:1.5rem}.deck-info{opacity:.7;justify-content:center;gap:16px;margin-bottom:28px;font-size:.82rem;display:flex}.score-screen{background:radial-gradient(#1a3a5c 0%,#0a1c2e 100%);align-items:flex-start;height:100dvh;padding:20px;overflow-y:auto}.score-card{text-align:center;background:#00000080;border:1px solid #ffffff26;border-radius:16px;width:100%;max-width:560px;padding:36px}.trophy{margin-bottom:12px;font-size:4rem}.winner-title{color:var(--gold);margin-bottom:24px;font-size:2rem;font-weight:800}.round-title{margin-bottom:24px;font-size:1.6rem;font-weight:700}.score-table{margin-bottom:28px}.score-row{background:#ffffff0d;border-radius:8px;grid-template-columns:1fr 80px 100px;align-items:center;margin-bottom:8px;padding:12px 16px;display:grid}.winner-row{border:1px solid var(--gold);background:#f39c1226}.score-team{text-align:left;font-weight:600}.score-team.team-a{color:#5dade2}.score-team.team-b{color:#ec7063}.score-round{color:#2ecc71;font-size:1.1rem;font-weight:600}.score-total{text-align:right;font-size:1.3rem;font-weight:700}.trump-info-row{text-align:center;opacity:.7;margin-top:-8px;margin-bottom:16px;font-size:.85rem}.trump-info-row strong{color:var(--gold)}.hands-penalty-section{text-align:left;margin-bottom:20px}.section-label{opacity:.55;margin-bottom:10px;font-size:.82rem}.penalty-team{margin-bottom:12px}.penalty-team-name{margin-bottom:4px;font-size:.78rem;font-weight:600;display:block}.penalty-team-a .penalty-team-name{color:#5dade2}.penalty-team-b .penalty-team-name{color:#ec7063}.penalty-total{color:#e74c3c;margin-left:6px;font-weight:700}.penalty-player{border-bottom:1px solid #ffffff0d;flex-wrap:wrap;align-items:center;gap:8px;padding:4px 0;font-size:.75rem;display:flex}.penalty-name{opacity:.55;min-width:64px}.penalty-hand-cards{flex-wrap:wrap;flex:1;gap:2px;display:flex}.penalty-cards{opacity:.8;word-break:break-all;flex:1;font-family:monospace;font-size:.7rem}.penalty-none{opacity:.35;font-style:italic}.penalty-value{color:#e74c3c;white-space:nowrap;margin-left:auto;font-weight:600}.melds-summary{text-align:left;margin-bottom:20px}.team-melds-summary{margin-bottom:16px}.team-melds-summary h4{opacity:.6;margin-bottom:8px;font-size:.85rem}.meld-row{border-bottom:1px solid #ffffff0f;padding:5px 0}.meld-row-cards{flex-wrap:wrap;gap:2px;margin-bottom:3px;display:flex}.meld-row-meta{justify-content:space-between;align-items:center;font-size:.72rem;display:flex}.meld-count{opacity:.65}.meld-pts{color:var(--gold);font-weight:600}.meld-cards{opacity:.8;word-break:break-all;flex:1;font-family:monospace}.no-melds{opacity:.4;font-size:.8rem}.score-actions{margin-bottom:20px}.round-ready-container{flex-direction:column;align-items:center;gap:8px;display:flex}.round-ready-countdown{opacity:.6;margin:0;font-size:.82rem}.score-divider{border:none;border-top:1px solid #ffffff1a;margin:0 0 20px}.melds-two-col{grid-template-columns:1fr 1fr;gap:16px;display:grid}.game-table{background-color:var(--green-felt);background-image:radial-gradient(at 50% 30%,#ffffff14 0%,#0000 55%),radial-gradient(at 80% 80%,#00000026 0%,#0000 40%),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.09'/%3E%3C/svg%3E");flex-direction:column;height:100dvh;display:flex;overflow:hidden}.game-arena{flex:1;min-height:0;position:relative;overflow:hidden}.hud-stats{z-index:20;pointer-events:none;background:#00000073;border-radius:8px;align-items:center;gap:5px;padding:4px 9px;font-size:.72rem;display:flex;position:absolute;top:6px;left:6px}.hud-scores{z-index:20;pointer-events:none;background:#00000073;border-radius:8px;align-items:center;gap:4px;padding:4px 10px;font-size:.9rem;font-weight:700;display:flex;position:absolute;top:6px;right:6px}.hud-stat{opacity:.78;white-space:nowrap;align-items:center;gap:2px;display:flex}.hud-stat strong{opacity:1;color:#fff}.hud-sep{background:#ffffff26;width:1px;height:12px}.hud-score-a{color:#5dade2}.hud-score-b{color:#ec7063}.hud-score-sep{opacity:.4;margin:0 1px}.hud-admin-restart{z-index:20;color:#fff;cursor:pointer;white-space:nowrap;background:#c0392bb3;border:1px solid #c0392be6;border-radius:8px;padding:3px 10px;font-size:.7rem;font-weight:600;transition:background .15s;position:absolute;top:6px;left:50%;transform:translate(-50%)}.hud-admin-restart:hover{background:#c0392b}.hud-message{z-index:20;white-space:nowrap;text-align:center;pointer-events:none;border-radius:6px;max-width:88vw;padding:4px 14px;font-size:.78rem;position:absolute;top:38px;left:50%;transform:translate(-50%)}.hud-msg-error{border:1px solid var(--team-b);color:#f1948a;background:#c0392b8c;animation:5s ease-in-out forwards hud-error-persist}.hud-msg-info{color:#82e0aa;background:#27ae604d;border:1px solid #27ae60}@keyframes hud-error-persist{0%{opacity:1}80%{opacity:1}to{opacity:0}}.opponent-slot{z-index:15;background:#00000061;border:1px solid #0000;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:6px 10px;transition:border-color .2s;display:flex;position:absolute}.opponent-slot.team-a{border-color:#2980b959}.opponent-slot.team-b{border-color:#c0392b59}.opponent-slot.active-slot{box-shadow:0 0 0 2px #2ecc71,0 0 16px #2ecc718c;border-color:#2ecc71!important}.opponent-slot.active-slot .opponent-name:after{content:" ▶";color:#2ecc71;font-size:.6rem}.opponent-slot.opponent-top{white-space:nowrap;flex-direction:row;gap:8px;padding:5px 14px;top:4px;left:50%;transform:translate(-50%)}.opponent-slot.opponent-left{width:72px;top:50%;left:4px;transform:translateY(-50%)}.opponent-slot.opponent-right{width:72px;top:50%;right:4px;transform:translateY(-50%)}.opponent-info{flex-direction:column;align-items:center;gap:1px;display:flex}.opponent-name{font-size:.75rem;font-weight:600}.opponent-team{opacity:.5;font-size:.62rem}.opponent-count{opacity:.8;background:#ffffff1f;border-radius:8px;margin-top:1px;padding:1px 5px;font-size:.68rem}.opponent-hand-compact{align-items:center;gap:5px;display:flex}.opponent-timer{color:#e0e0e0;white-space:nowrap;background:#00000073;border-radius:4px;margin-top:1px;padding:1px 5px;font-size:.6rem}.timer-urgent{font-weight:700;color:#e74c3c!important}.arena-center{flex-direction:column;gap:4px;padding:80px 80px 20px;display:flex;position:absolute;inset:0}.arena-opp-melds,.arena-own-melds{flex:1 1 0;min-height:0;overflow:visible}.arena-piles{flex:none;justify-content:center;align-items:center;display:flex}.hand-timer{color:#e0e0e0;background:#00000059;border-radius:6px;padding:2px 7px;font-size:.72rem}.table-center{width:100%}.pile-area{justify-content:center;align-items:center;gap:20px;padding:8px;display:flex}.deck-pile,.discard-pile,.trump-area{flex-direction:column;align-items:center;gap:6px;display:flex}.deck-stack{position:relative}.deck-count,.discard-count{white-space:nowrap;background:#000000b3;border-radius:10px;padding:1px 6px;font-size:.7rem;position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}.deck-empty,.discard-empty{width:var(--card-w);height:var(--card-h);border-radius:var(--radius);opacity:.5;text-align:center;border:2px dashed #fff3;justify-content:center;align-items:center;font-size:.7rem;display:flex}.trump-label,.melds-label{opacity:.6;text-align:center;margin-bottom:2px;font-size:.7rem}.discard-fan{flex-direction:row;align-items:center;gap:8px;display:flex}.discard-under{height:calc(var(--card-h-mini) + 4px);position:relative}.discard-under-card{position:absolute;top:0}.discard-top{position:relative}.discard-top .discard-count{white-space:nowrap;background:#000000b3;border-radius:10px;padding:1px 6px;font-size:.7rem;position:absolute;bottom:-10px;left:50%;transform:translate(-50%)}.discard-hidden-count{color:#ffffffb3;background:#000000bf;border-radius:4px;padding:1px 4px;font-size:.6rem;position:absolute;top:2px;left:2px}.discard-overlay{z-index:500;pointer-events:auto;background:#0c121cf7;border:1px solid #ffffff38;border-radius:14px;width:min(820px,92vw);padding:12px 16px 10px;position:fixed;top:32%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 60px #000000d9}.discard-overlay-header{opacity:.55;text-align:center;letter-spacing:.3px;margin-bottom:10px;font-size:.72rem}.discard-overlay-scroll,.opponent-overlay-scroll{padding-bottom:6px;overflow:auto hidden}.discard-overlay-scroll::-webkit-scrollbar{height:4px}.opponent-overlay-scroll::-webkit-scrollbar{height:4px}.discard-overlay-scroll::-webkit-scrollbar-track{background:#ffffff0d}.opponent-overlay-scroll::-webkit-scrollbar-track{background:#ffffff0d}.discard-overlay-scroll::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.opponent-overlay-scroll::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.team-melds{background:#0003;border:1px solid #ffffff14;border-radius:8px;width:100%;padding:6px 8px}.arena-opp-melds .team-melds{background:#00000040;border-left:none;border-right:none;border-radius:0}.melds-team-a{border-color:#2980b94d}.melds-team-b{border-color:#c0392b4d}.melds-list{flex-wrap:wrap;gap:8px;margin-top:6px;display:flex}.meld-group{cursor:default;background:#00000040;border:2px solid #0000;border-radius:8px;padding:6px;transition:border-color .15s,transform .1s}.meld-group.kanasta{border-color:var(--gold);background:#f39c121a}.meld-group.meld-selectable{cursor:pointer}.meld-group.meld-selectable:hover{border-color:#fff6;transform:translateY(-2px)}.meld-group.meld-selected{background:#2ecc7126;border-color:#2ecc71}.meld-group.meld-direct{cursor:pointer}.meld-group.meld-direct:hover{background:#3498db26;border-color:#3498db;transform:translateY(-2px)}.meld-add-hint{color:#3498db;font-weight:700}.meld-group{position:relative}.meld-cards-fan{flex-shrink:0;position:relative;overflow:visible}.meld-hover-popup{z-index:200;pointer-events:auto;white-space:nowrap;background:#0c121cf7;border:1px solid #ffffff38;border-radius:10px;padding:8px 10px 6px;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #000000bf}.melds-top .meld-hover-popup{top:calc(100% + 6px)}.melds-bottom .meld-hover-popup{bottom:calc(100% + 6px)}.meld-hover-info{text-align:center;opacity:.5;margin-top:4px;font-size:.65rem}.opponent-overlay{z-index:500;pointer-events:auto;background:#0c121cf7;border:1px solid #ffffff38;border-radius:14px;width:min(720px,92vw);padding:12px 16px 10px;position:fixed;top:32%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 60px #000000d9}.opponent-overlay-header{opacity:.55;text-align:center;letter-spacing:.3px;margin-bottom:10px;font-size:.72rem}.opponent-overlay-cards{flex-wrap:wrap;justify-content:center;gap:4px;display:flex}.meld-cards{flex-wrap:wrap;gap:2px;display:flex}.meld-meta{opacity:.5;text-align:center;margin-top:4px;font-size:.65rem}.player-hand-area{background:#00000059;border-top:1px solid #ffffff1a;padding:10px 12px 8px;position:relative}.hand-body{flex-direction:column;display:flex}.hand-controls{flex-wrap:wrap;order:-1;align-items:center;gap:8px;margin-bottom:8px;display:flex}.hand-header,.hand-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.hand-cards-section{overflow-x:auto}.hand-title{font-size:.85rem;font-weight:600}.hand-count{opacity:.5;font-weight:400}.pending-badge{border:1px solid var(--gold);color:var(--gold);background:#f39c1240;border-radius:10px;padding:2px 8px;font-size:.72rem}.hand-cards{flex-shrink:0;padding-top:4px;padding-bottom:20px;display:flex;overflow-x:auto}.hand-cards::-webkit-scrollbar{height:4px}.hand-cards::-webkit-scrollbar-track{background:#ffffff0d}.hand-cards::-webkit-scrollbar-thumb{background:#fff3;border-radius:2px}.selection-hint{opacity:.5;margin-top:6px;font-size:.75rem}.new-cards-badge{border:1px solid var(--gold);color:var(--gold);text-overflow:ellipsis;white-space:nowrap;background:#f39c1240;border-radius:10px;max-width:300px;padding:2px 8px;font-family:monospace;font-size:.72rem;overflow:hidden}.card-slot{flex-direction:column;align-items:center;margin-left:-22px;display:inline-flex;position:relative}.card-slot:first-child{margin-left:0}.card-slot:hover,.card-slot-selected{z-index:10}.card-slot-new .card{box-shadow:0 0 0 2px var(--gold), 0 2px 6px #0006!important}.new-label{color:var(--gold);letter-spacing:.5px;background:#f39c1233;border-radius:3px;margin-bottom:2px;padding:1px 4px;font-size:.55rem;font-weight:700}.dev-mode-row{justify-content:center;align-items:center;gap:10px;margin-bottom:12px;display:flex}.dev-hint{opacity:.5;font-size:.75rem}.dev-toggle{border-radius:6px;padding:5px 12px;font-size:.75rem}.dev-on{border:1px solid var(--gold);color:var(--gold);background:#f39c1240}.dev-off{color:#ffffff80;background:#ffffff14;border:1px solid #ffffff26}.action-bar{background:#0006;border-top:1px solid #ffffff14;flex-direction:column;gap:6px;padding:8px 12px;display:flex}.action-buttons,.pending-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.action-hint{opacity:.4;font-size:.8rem}.link-mode{border-top-color:#2ecc71}.card{width:var(--card-w);height:var(--card-h);border-radius:var(--radius);-webkit-user-select:none;user-select:none;cursor:default;flex-shrink:0;transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden;box-shadow:0 2px 6px #0006}.card.clickable{cursor:pointer}.card.clickable:hover{transform:translateY(-6px);box-shadow:0 8px 20px #00000080}.card.selected{transform:translateY(-10px);box-shadow:0 10px 24px #2ecc7180,0 0 0 2px #2ecc71}.card-svg-img{width:100%;height:100%;display:block}.card-selected-overlay{border-radius:calc(var(--radius) - 1px);pointer-events:none;background:#2ecc712e;position:absolute;inset:0}.card-small{width:var(--card-w-sm);height:var(--card-h-sm)}.card-mini{width:var(--card-w-mini);height:var(--card-h-mini)}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:8px 16px;font-size:.85rem;font-weight:600;transition:opacity .15s,transform .1s}.btn:hover{opacity:.85;transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{color:#fff;background:#27ae60}.btn-large{border-radius:10px;width:100%;margin-top:4px;padding:14px 32px;font-size:1rem}.btn-secondary{color:#fff;background:#ffffff26;border:1px solid #fff3}.btn-open{color:#fff;background:#2980b9}.btn-link{color:#fff;background:#8e44ad}.btn-discard{color:#fff;background:#c0392bb3}.btn-confirm{color:#fff;background:#27ae60}.btn-cancel{color:#fff;background:#c0392b99}.btn-deck{color:#fff;background:#ffffff26;margin-top:4px;padding:4px 10px;font-size:.75rem}.btn-pile{color:#fff;background:#27ae60;margin-top:4px;padding:4px 10px;font-size:.75rem}.btn-sort{color:#ffffffb3;background:#ffffff1a;border:1px solid #ffffff26;border-radius:6px;padding:3px 8px;font-size:.72rem}.btn-discard-overlay{color:#fff;cursor:pointer;letter-spacing:.5px;text-align:center;background:#c0392be6;border:none;border-radius:0 0 5px 5px;width:100%;padding:2px 0;font-size:.65rem;font-weight:700;transition:background .15s;display:block}.btn-discard-overlay:hover{background:#c0392b}.card-slot[draggable=true]{cursor:grab}.card-slot[draggable=true]:active{cursor:grabbing}.card-slot.drag-over .card{box-shadow:0 0 0 2px #f39c12,0 2px 6px #0006!important}.pending-groups-panel{z-index:10;background:#000000bf;border:1px solid #f39c1266;border-radius:8px 0 0;min-width:140px;max-width:300px;padding:8px 10px;position:absolute;bottom:0;right:0}.pending-groups-title{color:var(--gold);text-align:center;margin-bottom:6px;font-size:.68rem;font-weight:600}.pending-group-row{align-items:center;gap:4px;margin-bottom:4px;display:flex}.pending-group-idx{opacity:.5;min-width:14px;font-size:.65rem}.pending-group-cards{flex-wrap:wrap;gap:2px;display:flex}.overlay-close-btn{color:#ffffff73;cursor:pointer;touch-action:manipulation;background:0 0;border:none;padding:4px 8px;font-size:1rem;line-height:1;position:absolute;top:6px;right:8px}.overlay-close-btn:hover{color:#fff}.popup-close-btn{color:#ffffff59;cursor:pointer;touch-action:manipulation;background:0 0;border:none;padding:2px 5px;font-size:.75rem;line-height:1;position:absolute;top:3px;right:5px}.popup-close-btn:hover{color:#fffc}.theme-selector{flex-direction:column;align-items:center;gap:8px;margin-bottom:20px;display:flex}.theme-selector-label{opacity:.55;font-size:.75rem}.theme-options{gap:8px;display:flex}.theme-btn{color:var(--text);cursor:pointer;touch-action:manipulation;background:#ffffff0f;border:1px solid #fff3;border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-size:.8rem;transition:border-color .15s,background .15s;display:flex}.theme-btn:hover{background:#ffffff1f}.theme-btn-active{background:#ffffff26;border-color:#ffffff8c;font-weight:600}.theme-swatch{border:1px solid #ffffff40;border-radius:50%;flex-shrink:0;width:14px;height:14px}.theme-swatch[data-theme-id=classic]{background:#2d8653}.theme-swatch[data-theme-id=night]{background:#1c1c42}.theme-swatch[data-theme-id=desert]{background:#7a5c1e}@media (width<=500px){.opponent-slot.opponent-left,.opponent-slot.opponent-right{width:58px}.opponent-name{font-size:.6rem}.opponent-team{font-size:.5rem}.opponent-count{font-size:.65rem}.hud-stats{gap:4px;padding:3px 6px;font-size:.62rem}.hud-scores{padding:3px 8px;font-size:.8rem}.arena-center{flex-direction:row;align-items:stretch;gap:4px;padding:58px 65px 4px}.arena-own-melds,.arena-opp-melds{flex-direction:column;flex:1 1 0;min-height:0;display:flex;overflow:hidden auto}.arena-opp-melds .team-melds{background:#0003;border-left:1px solid #ffffff14;border-right:1px solid #ffffff14;border-radius:8px}.arena-piles{flex-direction:column;flex:none;justify-content:center;align-items:center;gap:4px}.pile-area{flex-direction:column;gap:6px;padding:4px 2px}.melds-list{flex-flow:column;gap:4px;margin-top:2px}.team-melds{padding:4px 3px}.team-melds .melds-label{display:none}.meld-group{padding:4px}.meld-meta{font-size:.58rem}.discard-under{display:none}.player-hand-area{padding:4px 6px 4px 8px}.hand-body{flex-direction:row;align-items:flex-start;gap:6px}.hand-cards-section{min-width:0;height:calc(var(--card-h) * .62 + 16px);flex:1;order:1;padding-top:14px;overflow:auto hidden}.hand-cards{padding-top:0;padding-bottom:0;overflow:visible}.hand-controls{flex-direction:column;flex:0 0 80px;order:2;align-items:flex-start;gap:4px;margin-bottom:0;overflow:hidden}.hand-header{flex-flow:column;align-items:flex-start;gap:2px}.hand-actions{flex-flow:column;align-items:flex-start;gap:3px;width:100%}.hand-controls .btn,.hand-controls .btn-sm,.hand-controls .btn-sort{white-space:normal;text-align:center;width:100%;line-height:1.2;min-height:28px!important;padding:4px 8px!important;font-size:.68rem!important}.hand-controls .selection-hint{font-size:.62rem;line-height:1.3}.hand-controls .new-cards-badge{max-width:78px;font-size:.6rem}.hand-controls .pending-badge{padding:1px 5px;font-size:.6rem}.hand-controls .hand-timer{font-size:.65rem}.hand-controls .hand-title{font-size:.72rem}.card-slot{margin-left:-14px}.btn{min-height:40px;padding:9px 14px;font-size:.82rem}.btn-sm,.btn-sort{min-height:36px;padding:7px 10px;font-size:.78rem}.btn-deck,.btn-pile{min-height:40px;padding:7px 12px;font-size:.78rem}.btn-discard-overlay{padding:5px 0;font-size:.72rem}.btn-large{min-height:48px;padding:14px 24px;font-size:.95rem}.melds-two-col{grid-template-columns:1fr}}@media (orientation:landscape) and (height<=520px){.arena-center{flex-direction:row;align-items:stretch;gap:6px;padding:68px 80px 4px}.arena-own-melds,.arena-opp-melds{flex-direction:column;flex:1 1 0;min-height:0;display:flex;overflow:visible}.arena-opp-melds .team-melds{background:#0003;border-left:1px solid #ffffff14;border-right:1px solid #ffffff14;border-radius:8px}.arena-piles{max-width:calc(var(--card-w-sm) + 24px);flex:none;justify-content:flex-start;align-items:center;padding-top:2px;overflow:visible auto}.pile-area{flex-direction:column;align-items:center;gap:0;padding:2px}.trump-area,.deck-pile,.discard-pile{align-items:center;gap:2px}.trump-area{margin-bottom:0}.pile-area .card{width:var(--card-w-sm);height:var(--card-h-sm)}.trump-label{display:none}.trump-area{max-height:calc(var(--card-h-sm) * .5);gap:0;overflow:hidden}.deck-count,.discard-top .discard-count{bottom:2px}.deck-pile,.discard-pile{position:relative}.btn-deck,.btn-pile{z-index:5;white-space:nowrap;width:auto!important;min-height:22px!important;padding:2px 8px!important;font-size:.62rem!important;position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}.melds-list{flex-flow:column wrap;align-content:flex-start;gap:2px;width:max-content;max-height:208px;margin-top:2px;overflow:visible}.team-melds{padding:2px;overflow:auto visible}.team-melds .melds-label{display:none}.meld-group{padding:2px}.meld-meta{font-size:.55rem}.discard-under{display:none}.meld-hover-popup,.melds-top .meld-hover-popup,.melds-bottom .meld-hover-popup{position:fixed;top:50%;bottom:auto;left:50%;transform:translate(-50%,-50%)}.player-hand-area{padding:4px 8px 4px 10px}.hand-body{flex-direction:row;align-items:flex-start;gap:6px}.hand-cards-section{min-width:0;height:calc(var(--card-h) * .62 + 16px);flex:1;order:1;padding-top:14px;overflow:auto hidden}.hand-cards{padding-top:0;padding-bottom:0;overflow:visible}.hand-controls{flex-direction:column;flex:0 0 84px;order:2;align-items:flex-start;gap:4px;margin-bottom:0;overflow:hidden}.hand-header{flex-flow:column;align-items:flex-start;gap:2px}.hand-actions{flex-flow:column;align-items:flex-start;gap:3px;width:100%}.hand-controls .btn,.hand-controls .btn-sm,.hand-controls .btn-sort{white-space:normal;text-align:center;width:100%;line-height:1.2;min-height:26px!important;padding:3px 8px!important;font-size:.68rem!important}.hand-controls .selection-hint{font-size:.6rem;line-height:1.3}.hand-controls .new-cards-badge{max-width:82px;font-size:.6rem}.hand-controls .pending-badge{padding:1px 4px;font-size:.6rem}.hand-controls .hand-timer{font-size:.65rem}.hand-controls .hand-title{font-size:.72rem}.arena-opp-melds{order:3}.arena-piles{order:2}.arena-own-melds{order:1}.pending-groups-panel{z-index:60;border-radius:0 0 0 8px;max-width:160px;max-height:180px;position:fixed;top:44px;bottom:auto;right:0;overflow-y:auto}.hand-controls{max-height:calc(var(--card-h) * .62 + 16px);overflow-y:hidden}.hand-controls .btn,.hand-controls .btn-sm,.hand-controls .btn-sort{text-overflow:ellipsis;overflow:hidden;white-space:nowrap!important}.btn-discard-overlay{z-index:20;border-radius:5px 5px 0 0;padding:3px 0;font-size:.6rem;position:absolute;inset:0 0 auto}.pending-groups-panel{bottom:calc(var(--card-h) * .62 + 26px);z-index:60;border-radius:8px 0 0 8px;max-width:170px;max-height:180px;position:fixed;top:auto;right:0;overflow-y:auto}}.start-actions{flex-direction:column;gap:.75rem;width:100%;display:flex}.lobby-join-form{flex-direction:column;gap:1rem;width:100%;margin:1rem 0;display:flex}.lobby-field{text-align:left;flex-direction:column;gap:.3rem;display:flex}.lobby-label{opacity:.7;letter-spacing:.04em;text-transform:uppercase;font-size:.8rem;font-weight:600}.lobby-input{color:#fff;background:#ffffff1f;border:1px solid #ffffff40;border-radius:8px;outline:none;padding:.6rem .9rem;font-size:1rem;transition:border-color .2s}.lobby-input:focus{border-color:#fff9}.lobby-input::placeholder{opacity:.4}.lobby-input-code{letter-spacing:.25em;text-transform:uppercase;font-size:1.15rem;font-weight:700}.lobby-hint-text{opacity:.45;font-size:.72rem}.lobby-error{color:#ff8a80;text-align:center;font-size:.85rem}.lobby-waiting{flex-direction:column;align-items:center;gap:.75rem;width:100%;margin:.5rem 0;display:flex}.lobby-room-code{opacity:.7;font-size:.9rem}.lobby-code-value{letter-spacing:.2em;color:var(--gold);font-size:1.4rem}.lobby-player-count{opacity:.8;font-size:.95rem}.lobby-players-list{flex-direction:column;gap:.4rem;width:100%;display:flex}.lobby-player-slot{background:#ffffff14;border-radius:8px;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.9rem;display:flex}.lobby-slot-me{background:#ffffff2e;font-weight:600}.lobby-slot-empty{opacity:.4;font-style:italic}.lobby-slot-num{opacity:.5;min-width:1.5rem}.lobby-slot-name{flex:1}.lobby-slot-waiting{flex:1;font-size:.85rem}.lobby-you-tag{background:var(--gold);color:#000;border-radius:99px;padding:1px 7px;font-size:.7rem;font-weight:700}.lobby-auto-start{opacity:.5;text-align:center;font-size:.78rem}.lobby-starting{flex-direction:column;align-items:center;gap:6px;animation:.4s fadeInUp;display:flex}.lobby-starting-icon{font-size:2.2rem;animation:.6s infinite alternate bounce}.lobby-starting-text{color:var(--accent);letter-spacing:.04em;font-size:1rem;font-weight:700}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-6px)}}.lobby-teams{gap:10px;margin:8px 0;display:flex}.lobby-team{background:#ffffff0d;border:1px solid #ffffff14;border-radius:10px;flex:1;padding:8px}.lobby-team-a{border-color:#d4af3759}.lobby-team-b{border-color:#64a0dc59}.lobby-team-label{opacity:.8;text-align:center;margin-bottom:6px;font-size:.72rem;font-weight:700}.lobby-ready-tag{color:#111;background:#50c864cc;border-radius:99px;margin-left:auto;padding:1px 6px;font-size:.65rem;font-weight:700}.lobby-ready-btn{margin-top:12px;animation:1.2s infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 #50c86466}50%{box-shadow:0 0 0 6px #50c86400}}.lobby-ready-waiting{color:#50c864e6;justify-content:center;align-items:center;gap:6px;margin-top:10px;font-size:.82rem;display:flex}.lobby-ready-check{font-size:1.2rem}.lobby-admin-tag{color:#fff;background:#c0392bcc;border-radius:99px;margin-left:8px;padding:1px 7px;font-size:.7rem;font-weight:700}.lobby-reconnect-banner{background:rgba(var(--accent-rgb,212,175,55), .12);border:1px solid rgba(var(--accent-rgb,212,175,55), .35);border-radius:10px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 12px;font-size:.82rem;display:flex}.lobby-reconnect-icon{flex-shrink:0;font-size:1.1rem}.lobby-reconnect-info{flex-direction:column;flex:1;gap:1px;display:flex}.lobby-reconnect-name{opacity:.65;font-size:.75rem}.lobby-reconnect-dismiss{cursor:pointer;color:var(--text-muted,#aaa);background:0 0;border:none;padding:2px 4px;font-size:.85rem}.lobby-reconnect-dismiss:hover{color:#fff}.lobby-room-grid{grid-template-columns:repeat(3,1fr);gap:6px;margin-top:4px;display:grid}.room-slot{cursor:pointer;background:#ffffff0f;border:1.5px solid #0000;border-radius:8px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;font-size:.72rem;transition:border-color .15s,background .15s;display:flex}.room-slot:hover{background:#ffffff1f}.room-slot-selected{border-color:var(--accent,#d4af37)!important;background:#d4af372e!important}.room-slot-num{opacity:.9;font-size:.78rem;font-weight:600}.room-slot-label{font-size:.7rem;font-weight:500}.room-slot-sub{opacity:.55;text-overflow:ellipsis;white-space:nowrap;max-width:90px;font-size:.62rem;overflow:hidden}.room-empty .room-slot-label{opacity:.45}.room-waiting .room-slot-label{color:#7ec8e3}.room-active .room-slot-label{color:#e87c6a}.room-full .room-slot-label{color:#a3e88a}.lobby-custom-toggle{cursor:pointer;color:var(--text-muted,#aaa);text-align:left;background:0 0;border:none;padding:4px 0;font-size:.76rem;transition:color .15s}.lobby-custom-toggle:hover{color:var(--accent,#d4af37)}.btn-sm{border-radius:8px;padding:5px 12px;font-size:.78rem}.btn-accent{background:rgba(var(--accent-rgb,212,175,55), .75);color:#1a1a1a;cursor:pointer;border:none;border-radius:8px;font-weight:700}.btn-accent:hover{background:var(--accent,#d4af37)}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.pwa-banner{bottom:max(env(safe-area-inset-bottom,0px), 12px);color:#fff;white-space:nowrap;z-index:8888;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#143c23f5;border:1px solid #fff3;border-radius:12px;align-items:center;gap:10px;padding:10px 16px;font-size:.78rem;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.pwa-banner-icon{flex-shrink:0;font-size:1.2rem}.pwa-banner-text{white-space:normal;max-width:220px;line-height:1.4}.pwa-banner-close{color:#ffffff80;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:2px 4px;font-size:1rem}.rotate-prompt{display:none}@media (width<=768px) and (orientation:portrait){.rotate-prompt{z-index:9999;background:var(--screen-bg);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:20px;padding:40px;display:flex;position:fixed;inset:0}.rotate-prompt .rotate-icon{font-size:3.5rem;animation:1.5s ease-in-out infinite alternate rotate-hint}@keyframes rotate-hint{0%{transform:rotate(0)}to{transform:rotate(90deg)}}.rotate-prompt p{opacity:.9;font-size:1.1rem;line-height:1.5}}.login-card{max-width:400px}.login-logo{margin-bottom:4px;font-size:3.5rem}.login-form{flex-direction:column;gap:12px;margin:20px 0 8px;display:flex}.login-back-btn{margin-top:12px}.lobby-screen{background:var(--screen-bg);flex-direction:column;display:flex;position:fixed;inset:0}.lobby-header{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#00000073;border-bottom:1px solid #ffffff1f;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.lobby-header-title{font-size:1.05rem;font-weight:700}.lobby-header-user{align-items:center;gap:8px;display:flex}.lobby-user-avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.68rem;font-weight:700;display:flex}.lobby-user-name{text-overflow:ellipsis;white-space:nowrap;max-width:90px;font-size:.82rem;font-weight:600;overflow:hidden}.lobby-logout-btn{cursor:pointer;color:#ffffff73;background:0 0;border:none;border-radius:6px;padding:2px 6px;font-size:1rem;transition:color .15s}.lobby-logout-btn:hover{color:#fff;background:#ffffff1a}.lobby-scroll{flex:1;width:100%;max-width:560px;margin:0 auto;padding-bottom:8px;overflow-y:auto}.lobby-section-label{letter-spacing:1px;text-transform:uppercase;opacity:.4;padding:14px 14px 6px;font-size:.68rem;font-weight:700}.lobby-table-list{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;padding:0 10px 4px;display:grid}.lobby-loading{opacity:.5;align-items:center;gap:8px;padding:32px 14px;font-size:.85rem;display:flex}.lobby-conn-error{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:32px 14px;display:flex}.lobby-conn-icon{font-size:1.8rem}.lobby-conn-error p{color:#ffffffa6;margin:0;font-size:.85rem}.lobby-loading-dots{gap:4px;display:flex}.lobby-loading-dots span{background:#fff9;border-radius:50%;width:6px;height:6px;animation:1.2s infinite dotpulse}.lobby-loading-dots span:nth-child(2){animation-delay:.2s}.lobby-loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotpulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}}.table-card{-webkit-user-select:none;user-select:none;background:#00000059;border:2px solid #ffffff1a;border-radius:12px;min-width:0;padding:6px 8px;transition:border-color .15s,background .15s,transform .1s}.table-card-joinable{cursor:pointer}.table-card-joinable:hover{background:#ffffff0d;border-color:#ffffff4d}.table-card-joinable:active{transform:scale(.985)}.tc-grid{grid-template:".top.""left felt right"".bot."/auto 1fr auto;place-items:center;gap:6px;display:grid}.tc-top{grid-area:top}.tc-left{grid-area:left;justify-self:end}.tc-felt{grid-area:felt;width:100%}.tc-right{grid-area:right;justify-self:start}.tc-bot{grid-area:bot}.tc-felt{aspect-ratio:1;cursor:pointer;background:linear-gradient(145deg,#1a5c32 0%,#2d9455 55%,#1a5c32 100%);border:1px solid #ffffff1f;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex;box-shadow:inset 0 2px 6px #00000059}.tc-felt-num{color:#ffffffe6;text-shadow:0 2px 4px #00000080;font-size:1.4rem;font-weight:900;line-height:1}.tc-status{letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;border-radius:20px;padding:2px 8px;font-size:.6rem;font-weight:700}.tc-empty{color:#ffffff80;background:#ffffff1f}.tc-waiting{color:#7ec8e3;background:#7ec8e338}.tc-full{color:#a3e88a;background:#a3e88a38}.tc-active{color:#e87c6a;background:#e87c6a38}.tc-seat-v{flex-direction:column;align-items:center;gap:3px;display:flex}.tc-seat-h{flex-direction:row;align-items:center;gap:5px;display:flex}.tc-avatar{color:#fff;background:#ffffff1f;border:1.5px solid #0000;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.58rem;font-weight:700;display:flex}.tc-seat-a{border-color:#d4af37b3!important}.tc-seat-b{border-color:#64a0dcb3!important}.tc-plus{opacity:.35;font-size:.8rem}.tc-name{opacity:.8;text-overflow:ellipsis;white-space:nowrap;text-align:center;max-width:44px;font-size:.52rem;overflow:hidden}.tc-seat-h .tc-name{text-align:left;max-width:36px}.tc-grid{gap:4px}.tc-seat-clickable{cursor:pointer}.tc-seat-clickable:hover .tc-avatar{background:#ffffff2e!important;border-color:#fff9!important}.tc-seat-clickable:hover .tc-name{color:#fff;opacity:1}.tc-avatar-empty{opacity:.55;transition:opacity .15s,border-color .15s,background .15s}.tc-seat-clickable:hover .tc-avatar-empty{opacity:1}.waiting-turn-banner{color:#ffffffa6;text-align:center;background:#00000059;border-bottom:1px solid #ffffff1a;border-radius:6px 6px 0 0;padding:6px 12px;font-size:.82rem}.auth-loading{background:var(--screen-bg);justify-content:center;align-items:center;min-height:100dvh;display:flex}.auth-spinner{border:4px solid #fff3;border-top-color:var(--gold);border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.auth-screen{background:var(--screen-bg);justify-content:center;align-items:center;min-height:100dvh;padding:16px;display:flex;overflow-y:auto}.auth-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#00000080;border:1px solid #ffffff26;border-radius:16px;width:100%;max-width:440px;padding:28px 32px}.auth-logo-area{text-align:center;margin-bottom:16px}.auth-logo{margin-bottom:2px;font-size:2.4rem}.auth-title{letter-spacing:2px;font-size:1.7rem;font-weight:800}.auth-subtitle{color:#ffffff8c;margin-top:4px;font-size:.82rem;line-height:1.5}@media (height<=700px){.auth-logo{font-size:1.8rem}.auth-title{font-size:1.4rem}.auth-logo-area{margin-bottom:10px}.auth-card{padding:20px 24px}}.auth-tabs{background:#ffffff14;border-radius:10px;gap:4px;margin-bottom:20px;padding:4px;display:flex}.auth-tab{color:#fff9;cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:8px;font-size:.9rem;transition:all .2s}.auth-tab-active{color:#fff;background:#ffffff26;font-weight:600}.auth-form{flex-direction:column;gap:14px;display:flex}.auth-field{flex-direction:column;gap:5px;display:flex}.auth-field-row{grid-template-columns:1fr 1fr;gap:10px;min-width:0;display:grid}.auth-field-row .auth-field{min-width:0}.auth-field-row .auth-input{width:100%;min-width:0}.auth-label{color:#ffffffb3;font-size:.82rem;font-weight:500}.auth-input{color:#fff;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;outline:none;padding:11px 14px;font-size:.95rem;transition:border-color .2s}.auth-input:focus{border-color:var(--gold);background:#ffffff24}.auth-input::placeholder{color:#ffffff59}.auth-error{color:#ff8a8a;text-align:center;font-size:.85rem}.auth-submit{margin-top:6px}.auth-hint{color:#ffffff73;text-align:center;font-size:.78rem;line-height:1.5}.auth-test-section{border-top:1px solid #ffffff1a;margin-top:4px;padding-top:14px}.auth-test-toggle{color:#ffffff73;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;gap:6px;width:100%;padding:4px;font-size:.8rem;transition:color .2s;display:flex}.auth-test-toggle:hover{color:#ffffffb3}.auth-test-badge{color:var(--gold);background:#f39c124d;border-radius:4px;padding:1px 6px;font-size:.68rem;font-weight:700;display:inline-block}.auth-test-form{flex-direction:column;gap:8px;margin-top:10px;display:flex}.auth-select{cursor:pointer}.auth-select option{color:#fff;background:#1a3a28}.otp-boxes{justify-content:center;gap:10px;margin:8px 0;display:flex}.otp-box{text-align:center;color:#fff;width:52px;height:64px;caret-color:var(--gold);-webkit-appearance:none;background:#ffffff1f;border:2px solid #ffffff59;border-radius:10px;outline:none;font-size:1.8rem;font-weight:800;transition:border-color .15s,background .15s,box-shadow .15s}.otp-box:focus{border-color:var(--gold);background:#fff3;box-shadow:0 0 0 3px #f39c1240}.otp-box-filled{background:#ffffff2e;border-color:#fff9}.otp-footer{flex-direction:column;align-items:center;gap:6px;margin-top:4px;display:flex}.otp-resend-btn{color:var(--gold);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;font-size:.85rem;text-decoration:underline;transition:opacity .2s}.otp-resend-btn:disabled{opacity:.5;cursor:default;text-decoration:none}.otp-back-btn{color:#fff6;cursor:pointer;background:0 0;border:none;font-size:.78rem;transition:color .2s}.otp-back-btn:hover{color:#ffffffb3}@media (width<=400px){.otp-box{width:42px;height:52px;font-size:1.3rem}.otp-boxes{gap:7px}}[data-theme=night] .card.card-back .card-svg-img{filter:hue-rotate(200deg)saturate(1.2)brightness(.85)}.home-screen{background:var(--screen-bg);justify-content:center;align-items:center;min-height:100dvh;padding:16px;display:flex;overflow-y:auto}.home-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-align:center;background:#0000007a;border:1px solid #ffffff26;border-radius:20px;flex-direction:column;align-items:center;gap:8px;width:100%;max-width:400px;padding:28px;display:flex}@media (height<=650px){.home-card{gap:6px;padding:18px 20px}.home-title{font-size:2rem}.home-logo{font-size:1.5rem}.btn-xl{padding:12px 24px;font-size:1rem}.home-action-btn{padding:10px 8px}.home-action-icon{font-size:1.2rem}}.home-top{align-items:center;gap:10px;width:100%;margin-bottom:8px;display:flex}.home-logo{font-size:2rem}.home-user-area{flex-direction:column;flex:1;align-items:flex-start;display:flex}.home-welcome{color:#ffffff80;font-size:.7rem}.home-username{color:#fff;font-size:.95rem;font-weight:700}.home-test-badge{color:var(--gold);background:#f39c124d;border-radius:4px;margin-top:2px;padding:1px 6px;font-size:.65rem;font-weight:700}.home-logout-btn{color:#ffffffa6;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff26;border-radius:6px;padding:5px 12px;font-size:.78rem;transition:all .2s}.home-logout-btn:hover{color:#fff;background:#fff3}.home-title{letter-spacing:2px;font-size:2.8rem;font-weight:800}.home-subtitle{color:#ffffff80;margin-bottom:8px;font-size:.82rem}.btn-xl{border-radius:12px;width:100%;padding:16px 36px;font-size:1.1rem}.home-lobby-btn{margin-bottom:4px}.home-actions{gap:10px;width:100%;margin-top:4px;display:flex}.home-action-btn{cursor:pointer;color:#fffc;font-size:inherit;background:#ffffff14;border:1px solid #ffffff24;border-radius:12px;flex-direction:column;flex:1;align-items:center;gap:4px;padding:14px 10px;transition:all .2s;display:flex}.home-action-btn:hover{color:#fff;background:#ffffff24}.home-action-icon{font-size:1.5rem}.home-action-label{font-size:.8rem;font-weight:600}.home-theme-panel{cursor:default}.theme-switch-row{align-items:center;gap:8px;margin-top:6px;display:flex}.theme-switch-label{color:#ffffff73;font-size:.72rem;transition:color .2s}.theme-switch-label.active{color:#fff;font-weight:600}.theme-switch{cursor:pointer;background:#fff3;border:none;border-radius:12px;width:44px;height:24px;padding:0;transition:background .25s;position:relative}.theme-switch-on{background:#4a148c}.theme-switch-thumb{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .25s;display:block;position:absolute;top:3px;left:3px}.theme-switch-on .theme-switch-thumb{transform:translate(20px)}.rules-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;background:#000000bf;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.rules-modal{background:#0f2d1c;border:1px solid #ffffff26;border-radius:16px;flex-direction:column;width:100%;max-width:680px;max-height:90dvh;display:flex;overflow:hidden;box-shadow:0 24px 64px #0009}.rules-header{border-bottom:1px solid #ffffff1a;flex-shrink:0;justify-content:space-between;align-items:flex-start;padding:24px 28px 16px;display:flex}.rules-title{margin-bottom:4px;font-size:1.3rem;font-weight:800}.rules-lead{color:#fff9;font-size:.85rem}.rules-close-btn{color:#ffffffb3;cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;margin-left:12px;font-size:1rem;transition:all .2s;display:flex}.rules-close-btn:hover{color:#fff;background:#fff3}.rules-body{flex-direction:column;flex:1;gap:24px;padding:20px 28px;display:flex;overflow-y:auto}.rules-footer{border-top:1px solid #ffffff1a;flex-shrink:0;justify-content:center;padding:16px 28px;display:flex}.rules-section{flex-direction:column;gap:12px;display:flex}.rules-section-title{color:var(--gold);font-size:1rem;font-weight:700}.rules-section-highlight{background:#f39c1212;border-radius:12px;padding:16px}.rules-tips-section{background:#ffffff0a;border-radius:12px;padding:16px}.rules-teams{align-items:center;gap:12px;display:flex}.rules-team{text-align:center;border-radius:10px;flex:1;padding:14px}.rules-team-a{background:#2980b933;border:1px solid #2980b966}.rules-team-b{background:#c0392b33;border:1px solid #c0392b66}.rules-team-name{margin-bottom:4px;font-size:1rem;font-weight:700}.rules-team-seats{color:#ffffffb3;font-size:.82rem;line-height:1.5}.rules-vs{color:#fff6;font-size:1rem;font-weight:900}.rules-cards-row{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.rules-info-card{text-align:center;background:#ffffff12;border:1px solid #ffffff1a;border-radius:10px;padding:14px}.rules-info-icon{margin-bottom:4px;font-size:1.6rem}.rules-info-label{color:#ffffff8c;margin-bottom:4px;font-size:.72rem}.rules-info-value{color:var(--gold);font-size:1.6rem;font-weight:800}.rules-info-sub{color:#ffffff73;margin-top:2px;font-size:.7rem}.rules-steps{flex-direction:column;gap:10px;display:flex}.rules-step{align-items:flex-start;gap:14px;display:flex}.rules-step-num{background:var(--gold);color:#000;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;margin-top:2px;font-size:.85rem;font-weight:800;display:flex}.rules-step-title{margin-bottom:3px;font-weight:700}.rules-step-desc{color:#ffffffbf;flex-direction:column;gap:4px;font-size:.87rem;display:flex}.rules-tip{color:#ffffff80;background:#ffffff0d;border-radius:6px;margin-top:2px;padding:5px 8px;font-size:.78rem;display:block}.rules-meld-types{grid-template-columns:1fr 1fr;gap:12px;display:grid}.rules-meld-card{background:#ffffff12;border:1px solid #ffffff1f;border-radius:10px;flex-direction:column;gap:5px;padding:14px;display:flex}.rules-meld-icon{font-size:1.5rem}.rules-meld-name{font-size:.95rem;font-weight:700}.rules-meld-desc{color:#ffffffbf;font-size:.82rem}.rules-meld-example{color:var(--gold);font-family:monospace;font-size:.82rem}.rules-meld-rule{color:#ffffff73;font-size:.75rem}.rules-kanasta-intro{color:#fffc;font-size:.87rem;line-height:1.6}.rules-kanasta-types{grid-template-columns:1fr 1fr;gap:12px;margin-top:4px;display:grid}.rules-kanasta-card{text-align:center;border:1px solid #ffffff1a;border-radius:10px;padding:16px}.rules-kanasta-pure{background:#f39c1226;border-color:#f39c124d}.rules-kanasta-mixed{background:#ffffff0f}.rules-kanasta-badge{margin-bottom:6px;font-size:1.3rem}.rules-kanasta-name{margin-bottom:4px;font-weight:700}.rules-kanasta-desc{color:#ffffffb3;margin-bottom:8px;font-size:.82rem}.rules-kanasta-points{color:var(--gold);font-size:.85rem;font-weight:700}.rules-fi-box{background:#ffffff0f;border-radius:10px;gap:16px;padding:16px;display:flex}.rules-fi-icon{flex-shrink:0;font-size:2rem}.rules-fi-content{color:#fffc;flex-direction:column;gap:8px;font-size:.87rem;line-height:1.5;display:flex}.rules-fi-tip{color:#ffffff80;font-size:.8rem}.rules-points-grid{flex-direction:column;gap:6px;display:flex}.rules-point-row{border-radius:8px;grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:10px 14px;display:grid}.rules-point-high{background:#f39c1226;border:1px solid #f39c1240}.rules-point-mid{background:#ffffff12}.rules-point-low{background:#ffffff0a}.rules-point-special{background:#e74c3c1f;border:1px solid #e74c3c33}.rules-point-block{background:#ffffff0d}.rules-point-cards{color:#ffffffd9;font-size:.85rem}.rules-point-val{color:var(--gold);white-space:nowrap;font-size:.9rem;font-weight:700}.rules-point-note{color:#ffffff73;white-space:nowrap;font-size:.72rem}.rules-threshold-intro{color:#ffffffbf;font-size:.87rem;line-height:1.5}.rules-threshold-table{flex-direction:column;gap:4px;display:flex}.rules-threshold-row{border-radius:7px;grid-template-columns:1fr 1fr;gap:12px;padding:9px 14px;font-size:.87rem;display:grid}.rules-threshold-header{color:#ffffffb3;background:#ffffff1a;font-size:.8rem;font-weight:700}.rules-threshold-row:not(.rules-threshold-header){background:#ffffff0d}.rules-endgame-steps{flex-direction:column;gap:10px;display:flex}.rules-endgame-step{color:#fffc;align-items:center;gap:12px;font-size:.87rem;display:flex}.rules-endgame-icon{text-align:center;flex-shrink:0;width:32px;font-size:1.2rem}.rules-tips-list{color:#fffc;flex-direction:column;gap:8px;padding:0;font-size:.87rem;list-style:none;display:flex}.rules-tips-list li:before{content:"✓ ";color:var(--gold);font-weight:700}@media (width<=480px){.auth-card{padding:28px 24px}.auth-field-row{grid-template-columns:1fr}.home-card{padding:28px 20px}.rules-modal{border-radius:12px;max-height:95dvh}.rules-header,.rules-body,.rules-footer{padding-left:16px;padding-right:16px}.rules-cards-row{grid-template-columns:repeat(3,1fr)}.rules-meld-types,.rules-kanasta-types{grid-template-columns:1fr}.rules-point-row{grid-template-columns:1fr auto}.rules-point-note{display:none}}
