:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,sans-serif;color-scheme:dark;--bg: #0E0E10;--surface-1: #1C1C1E;--surface-2: #2C2C2E;--surface-3: #3A3A3C;--surface-glass: rgba(20, 20, 22, .9);--accent: #C8102E;--accent-hover: #A50D26;--accent-glow: rgba(200, 16, 46, .2);--gold: #C9A84C;--gold-dim: rgba(201, 168, 76, .15);--text: #F2EDE8;--text-soft: rgba(242, 237, 232, .58);--text-faint: rgba(242, 237, 232, .55);--separator: rgba(255, 255, 255, .07);--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .13);--danger: #FF453A;--sidebar-w: 220px;--bottomtab-h: 62px;--z-banner: 600;--z-toast: 500;--z-modal: 550;--z-nav: 200;--z-trick-banner: 20;--radius-xl: 20px;--radius-lg: 16px;--radius-md: 12px;--radius-sm: 8px;--shadow-sm: 0 1px 4px rgba(0,0,0,.5);--shadow-md: 0 4px 18px rgba(0,0,0,.55);--shadow-lg: 0 10px 36px rgba(0,0,0,.65);line-height:1.5;font-weight:400;color:var(--text)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0;overflow:hidden;background:var(--bg)}body{color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,select{font:inherit}button{border:0;cursor:pointer}.app-shell{display:flex;flex-direction:row;height:100dvh;width:100vw;overflow:hidden;background:var(--bg)}.app-main{flex:1;min-width:0;height:100dvh;overflow:hidden;display:flex;flex-direction:column;position:relative}.sidebar{width:var(--sidebar-w);flex-shrink:0;height:100dvh;display:flex;flex-direction:column;background:#111113;border-right:1px solid var(--separator);padding:18px 10px 16px;overflow:hidden}.sidebar-logo{font-size:1.25rem;font-weight:900;letter-spacing:-.05em;color:var(--accent);padding:4px 10px 16px;border-bottom:1px solid var(--separator);margin-bottom:10px;flex-shrink:0;-webkit-user-select:none;user-select:none}.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:2px;overflow:auto}.sidebar-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-md);color:var(--text-soft);font-size:.9rem;font-weight:500;cursor:pointer;border:none;background:transparent;width:100%;text-align:left;transition:background .13s,color .13s;white-space:nowrap}@media(hover:hover){.sidebar-item:hover{background:#ffffff0d;color:var(--text)}}.sidebar-item.active{background:#c8102e1f;color:var(--accent);font-weight:600}.sidebar-item-icon{font-size:1rem;width:18px;text-align:center;flex-shrink:0;opacity:.75}.sidebar-item.active .sidebar-item-icon{opacity:1}.sidebar-divider{height:1px;background:var(--separator);margin:8px 10px;flex-shrink:0}.sidebar-footer{flex-shrink:0;display:flex;flex-direction:column;gap:4px;padding-top:10px;border-top:1px solid var(--separator)}.sidebar-user{padding:8px 12px 4px;display:flex;flex-direction:column;gap:2px}.sidebar-username{font-size:.88rem;font-weight:700;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-balance{font-size:.8rem;color:var(--gold);font-weight:600}.bottom-tabs{display:none}.reconnect-banner{position:fixed;top:0;left:0;right:0;z-index:var(--z-banner);padding:10px 16px;background:#1e0a0af7;border-bottom:1px solid rgba(200,16,46,.45);color:var(--accent);font-size:.85rem;font-weight:600;text-align:center;animation:fade-in .2s ease-out}.auth-shell{display:flex;align-items:center;justify-content:center;height:100dvh;width:100vw;flex-direction:column;gap:20px;padding:24px 16px;overflow:auto}.auth-brand{text-align:center}.auth-logo{font-size:clamp(2.4rem,8vw,3.2rem);font-weight:900;letter-spacing:-.05em;color:var(--accent);margin:0 0 6px;line-height:1}.auth-tagline{color:var(--text-soft);font-size:.9rem;margin:0}.auth-form{width:100%;max-width:380px}.auth-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center}.toast{position:fixed;right:16px;top:16px;z-index:var(--z-toast);max-width:min(380px,calc(100vw - 32px));padding:12px 16px;border-radius:var(--radius-lg);background:var(--surface-glass);border:1px solid var(--border-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow-lg);animation:fade-up .2s ease-out;color:var(--text);font-size:.9rem}.panel{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-xl);padding:18px;box-shadow:var(--shadow-sm);animation:fade-up .2s ease-out}.eyebrow{margin:0 0 4px;color:var(--accent);text-transform:uppercase;letter-spacing:.1em;font-size:.7rem;font-weight:700}h1{margin:0;font-size:clamp(1.6rem,3.5vw,2.8rem);line-height:1.05;letter-spacing:-.04em;font-weight:800}.section-title{font-size:.95rem;font-weight:700;letter-spacing:-.02em;margin-bottom:12px;color:var(--text)}.caption{color:var(--text-soft);font-size:.84rem}.empty{color:var(--text-faint);font-size:.88rem;padding:4px 0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}button:focus-visible,[role=button]:focus-visible{outline-offset:3px}:focus:not(:focus-visible){outline:none}.button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:9px 16px;border-radius:var(--radius-lg);background:var(--accent);color:#fff;font-weight:700;font-size:.9rem;letter-spacing:-.01em;border:none;cursor:pointer;transition:filter .13s ease,transform .1s ease,opacity .13s ease;box-shadow:0 3px 12px var(--accent-glow);white-space:nowrap;-webkit-user-select:none;user-select:none}.button:hover:not(:disabled){filter:brightness(1.13)}.button:active:not(:disabled){transform:scale(.97);filter:brightness(.96)}.button:disabled{opacity:.38;cursor:not-allowed;box-shadow:none}.button.ghost{background:transparent;color:var(--text-soft);border:1px solid var(--border-strong);box-shadow:none}.button.ghost:hover:not(:disabled){color:var(--text);background:#ffffff0d}.button.secondary{background:var(--surface-2);color:var(--text);box-shadow:none}.button.secondary:hover:not(:disabled){filter:brightness(1.15)}.button.small{min-height:34px;padding:6px 12px;font-size:.84rem;border-radius:var(--radius-md)}.button.small-inline{min-height:32px;padding:5px 11px;font-size:.82rem;border-radius:var(--radius-md)}.field{display:grid;gap:6px;margin-bottom:13px}.field.compact{margin-bottom:0}.field span{color:var(--text-soft);font-size:.84rem;font-weight:500}.field input,.field select{width:100%;border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--surface-2);padding:10px 13px;color:var(--text);outline:none;transition:border-color .13s,background .13s;font-size:.92rem}.field input::placeholder{color:var(--text-faint)}.field input:focus,.field select:focus{border-color:#c8102e73;background:var(--surface-3)}.field select option{background:var(--surface-2);color:var(--text)}.lobby-view{flex:1;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;padding:clamp(14px,2vh,24px) clamp(14px,2vw,24px);gap:clamp(10px,1.5vh,18px)}.lobby-header{flex-shrink:0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.lobby-title-block{display:flex;flex-direction:column;gap:4px}.lobby-user-bar{flex-shrink:0;display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg)}.lobby-user-name{font-weight:700;font-size:.92rem}.lobby-balance{font-size:.88rem;font-weight:600;color:var(--gold)}.lobby-streak{font-size:.82rem;color:var(--text-soft)}.lobby-body{flex:1;min-height:0;display:grid;grid-template-columns:clamp(280px,30%,360px) minmax(0,1fr);gap:clamp(10px,1.5vw,18px);overflow:hidden}.lobby-create-panel{display:flex;flex-direction:column;height:100%;min-height:0;overflow:auto}.lobby-tables-panel{display:flex;flex-direction:column;height:100%;min-height:0}.join-code-row{display:flex;gap:8px;margin-bottom:10px}.join-code-input{flex:1;font-family:monospace;font-size:1rem;letter-spacing:.18em;text-transform:uppercase;text-align:center}.invite-code-pill{background:#c9a84c1f!important;border-color:#c9a84c66!important;color:var(--gold)!important}.invite-code-pill:hover{background:#c9a84c38!important}.invite-code-pill.copied{background:#4cc9822e!important;border-color:#4cc98280!important;color:#4cc982!important;transition:background .2s,color .2s}.table-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:0;padding-right:2px}.table-card{flex-shrink:0;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 14px;border-radius:var(--radius-lg);background:var(--surface-2);border:1px solid var(--border);transition:border-color .13s,background .13s}.table-card:hover{border-color:var(--border-strong);background:var(--surface-3)}.table-card-stacked{flex-direction:column;align-items:stretch}.table-card-main{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.table-name{font-weight:700;font-size:.95rem;letter-spacing:-.02em}.cosmetic-description{font-size:.78rem;margin-top:4px;line-height:1.4;max-width:280px}.cosmetic-description.unlocked{color:var(--text-muted);font-style:italic}.cosmetic-description.locked{color:var(--border-strong);letter-spacing:.08em;font-style:normal;opacity:.6}.table-actions,.mode-switch,.round-meta,.hero-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.meta-pill{display:inline-flex;align-items:center;min-height:26px;padding:4px 9px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-soft);font-size:.78rem;font-weight:500}.round-meta-pills{gap:5px}.bid-total-pill{font-weight:600}.bid-exact{background:#34c75926;border-color:#34c75966;color:#34c759}.bid-over{background:#c8102e26;border-color:#c8102e66;color:#ff453a}.bid-under{background:#ff9f0a26;border-color:#ff9f0a66;color:#ff9f0a}.phase-pill{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.phase-bidding{color:#64d2ff}.phase-playing{color:var(--text-soft)}.phase-scoring{color:var(--gold)}.phase-finished{color:#34c759}.hand-panel{position:relative;z-index:5}.game-finished-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#0e0e10d1;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:inherit;z-index:30;padding:32px 24px;text-align:center}.game-finished-title{font-size:clamp(1.1rem,2.5vw,1.5rem);font-weight:700;color:var(--gold);letter-spacing:.02em}.game-finished-names{font-size:clamp(.9rem,1.8vw,1.1rem);color:var(--text-soft);margin-bottom:8px}.game-finished-scores{display:flex;flex-direction:column;gap:6px;width:100%;max-width:380px;background:#ffffff0a;border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 14px;margin-bottom:4px}.game-finished-row{display:flex;align-items:center;gap:8px;font-size:.85rem}.game-finished-row.self{font-weight:700;color:var(--text)}.game-finished-player{flex:1;text-align:left;color:var(--text-soft)}.game-finished-row.self .game-finished-player{color:var(--text)}.game-finished-delta{font-weight:700;font-size:.82rem;min-width:52px;text-align:right}.game-finished-delta.positive{color:#34c759}.game-finished-delta.negative{color:#ff453a}.game-finished-accuracy{color:var(--text-faint);font-size:.78rem;min-width:36px;text-align:right}.game-finished-actions{display:flex;gap:10px;margin-top:4px}.friends-page{display:flex;flex-direction:column;gap:1.5rem}.friends-section{display:flex;flex-direction:column;gap:.5rem}.friends-section-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);margin-bottom:.25rem}.friend-card{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.5rem .75rem;border-radius:var(--radius);background:var(--surface-2)}.friend-info{display:flex;align-items:center;gap:.5rem;min-width:0}.friend-name{font-weight:600;font-size:.9rem}.friend-actions{display:flex;gap:.4rem;flex-shrink:0}.presence-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.presence-dot.online{background:#22c55e}.presence-dot.offline{background:var(--text-faint);opacity:.5}.search-input{width:100%;padding:.45rem .7rem;border-radius:var(--radius);border:1px solid var(--separator);background:var(--surface-2);color:var(--text);font-size:.9rem;outline:none}.search-input:focus{border-color:var(--accent)}.nav-badge{position:absolute;top:6px;right:8px;background:#ef4444;color:#fff;font-size:.65rem;font-weight:700;border-radius:999px;padding:1px 5px;min-width:16px;text-align:center}.invite-toast{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.lobby-options-panel{margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--separator);display:flex;flex-direction:column;gap:.5rem}.vote-option-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.vote-option-badge{font-size:.72rem;font-weight:700;color:var(--accent);letter-spacing:.04em}.vote-banner{background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:var(--radius);padding:.6rem .75rem;display:flex;flex-direction:column;gap:.4rem}.vote-actions{display:flex;gap:.5rem;margin-top:.25rem}.season-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.25rem}.season-badge{font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:linear-gradient(135deg,var(--accent),#7c3aed);color:#fff;padding:.2rem .6rem;border-radius:999px}.matchmaking-cta{display:flex;align-items:center;gap:14px;padding:12px 0 4px}.matchmaking-find-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 22px;border-radius:var(--radius-md);background:linear-gradient(135deg,#c8102e,#8b0b20);color:#fff;font-weight:700;font-size:.92rem;border:none;cursor:pointer;transition:opacity .15s ease}.matchmaking-find-btn:hover{opacity:.88}.matchmaking-find-btn:disabled{opacity:.45;cursor:not-allowed}.matchmaking-banner{display:flex;align-items:center;gap:14px;padding:14px 20px;margin:8px 0;background:#c8102e14;border:1px solid rgba(200,16,46,.25);border-radius:var(--radius-md)}.matchmaking-spinner{width:20px;height:20px;border:2px solid rgba(200,16,46,.3);border-top-color:#c8102e;border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.matchmaking-text{display:flex;flex-direction:column;gap:2px;flex:1}.matchmaking-label{font-weight:600;font-size:.9rem;color:var(--text)}.matchmaking-timer{font-size:.78rem;color:var(--text-faint);font-variant-numeric:tabular-nums}.matchmaking-cancel{padding:6px 14px;border-radius:var(--radius-sm);background:transparent;border:1px solid var(--border-strong);color:var(--text-soft);font-size:.82rem;cursor:pointer;transition:background .15s}.matchmaking-cancel:hover{background:var(--surface-2)}.achievement-card{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--separator)}.achievement-card:last-child{border-bottom:none}.achievement-icon{font-size:1.4rem;width:36px;text-align:center;flex-shrink:0}.achievement-info{flex:1;min-width:0}.achievement-name{font-weight:600;font-size:.9rem;color:var(--text)}.achievement-reward{font-weight:700;font-size:.85rem;color:#34c759;flex-shrink:0}.achievement-card.locked{opacity:.6}.achievement-reward.locked{color:var(--text-faint)}.achievement-progress{position:relative;height:6px;background:var(--border);border-radius:3px;margin-top:6px;overflow:hidden}.achievement-progress-bar{height:100%;background:var(--accent);border-radius:3px;transition:width .4s ease}.achievement-progress-label{display:block;font-size:.7rem;color:var(--text-muted);margin-top:2px}.create-table-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}.create-table-footer{display:flex;flex-direction:column;gap:8px}.options-toggle{background:none;border:none;cursor:pointer;color:var(--text-faint);padding:3px 0;text-align:left;font-size:.82rem;margin-top:4px;transition:color .13s}.options-toggle:hover{color:var(--text-soft)}.table-options-panel{display:flex;flex-direction:column;gap:7px;padding:9px 0 3px;border-top:1px solid var(--separator);animation:options-slide-in .22s cubic-bezier(.22,1,.36,1)}.options-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.structure-toggle{display:flex;gap:3px}.structure-btn{background:var(--surface-2);border:1px solid var(--border);color:var(--text-soft);border-radius:var(--radius-sm);padding:3px 9px;font-size:.78rem;cursor:pointer;transition:background .13s,color .13s,border-color .13s}.structure-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.option-toggle-row{display:flex;align-items:center;gap:7px;cursor:pointer;color:var(--text-soft);font-size:.85rem}.option-toggle-row input[type=checkbox]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}.options-hint{color:var(--text-faint);font-size:.79rem;margin-top:1px}.skeleton-card{height:76px;border-radius:var(--radius-lg);flex-shrink:0;background:linear-gradient(90deg,var(--surface-1) 25%,rgba(255,255,255,.04) 50%,var(--surface-1) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.timer-warning{color:var(--accent)!important;animation:timer-pulse .9s ease-in-out infinite}@keyframes timer-pulse{0%,to{opacity:1}50%{opacity:.65}}.players-lobby-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.seat-card{width:100%;min-height:80px;padding:12px;border-radius:var(--radius-lg);background:var(--surface-2);border:1px solid transparent;text-align:left;cursor:pointer;transition:border-color .3s ease,background .3s ease,box-shadow .3s ease;color:var(--text);position:relative}.seat-card:hover{border-color:var(--border-strong)}.seat-card.active{border-color:#8c0a1cbf;background:#5a07126b;box-shadow:0 0 0 1px #8c0a1c40,inset 0 0 20px #78081626}.seat-card.active:after{content:"";position:absolute;top:10px;right:10px;width:8px;height:8px;border-radius:50%;background:var(--gold);box-shadow:0 0 6px var(--gold),0 0 12px #c9a84c66;animation:gold-pulse 1.4s ease-in-out infinite}.seat-card.trick-winner{border-color:#c9a84c8c;background:#c9a84c12;animation:trick-winner-pulse 1.6s ease}.seat-name{font-weight:700;font-size:.9rem;letter-spacing:-.02em}.emote-bubble{position:absolute;top:-36px;left:50%;transform:translate(-50%);background:var(--surface-raised);border:1px solid var(--border);border-radius:12px;padding:4px 10px;font-size:.82rem;font-weight:600;white-space:nowrap;pointer-events:none;z-index:10;animation:emote-pop .25s ease}@keyframes emote-pop{0%{opacity:0;transform:translate(-50%) scale(.7)}to{opacity:1;transform:translate(-50%) scale(1)}}.emote-trigger-btn{margin-top:4px;background:none;border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:1rem;padding:2px 7px;opacity:.65;transition:opacity .15s}.emote-trigger-btn:hover{opacity:1;border-color:var(--border-strong)}.identity-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;color:inherit;display:grid;gap:3px;padding:0;text-align:left;cursor:pointer;border:none}.inline-link{color:var(--gold);cursor:pointer;padding:0;border:none;background:transparent;text-decoration:none;font-size:inherit;width:fit-content}.inline-link:hover{color:#e0bf6b}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:12px 0 16px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;display:grid;place-items:center;padding:20px;z-index:var(--z-modal);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:fade-in .15s ease-out}.modal-card{width:min(500px,100%)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:grid;place-items:center;padding:20px;z-index:var(--z-modal);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:fade-in .2s ease-out}.modal{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px;width:min(440px,100%);display:flex;flex-direction:column;gap:12px;animation:fade-up .22s ease-out}.tutorial-icon{font-size:2.5rem;text-align:center}.tutorial-step{font-size:.75rem;color:var(--text-muted);text-align:center}.tutorial-title{font-size:1.2rem;font-weight:700;text-align:center}.tutorial-body{font-size:.9rem;color:var(--text-muted);line-height:1.6;text-align:center}.tutorial-dots{display:flex;justify-content:center;gap:8px;margin:4px 0}.tutorial-dot{width:8px;height:8px;border-radius:50%;background:var(--border-strong);border:none;cursor:pointer;padding:0;transition:background .2s}.tutorial-dot.active{background:var(--accent)}.tutorial-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.profile-avatar-large{border-radius:var(--radius-lg);padding:14px;margin:7px 0;background:var(--surface-2);font-weight:700}.view-scroll{flex:1;overflow-y:auto;padding:clamp(14px,2vh,24px) clamp(14px,2vw,24px)}.screen{width:100%;padding:clamp(14px,2vh,24px) clamp(14px,2vw,24px)}.game-view{flex:1;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}.game-topbar{flex-shrink:0;display:flex;align-items:center;gap:10px;padding:clamp(8px,1vh,14px) clamp(12px,1.5vw,20px);border-bottom:1px solid var(--separator);background:#111113}.game-topbar-title{font-weight:800;font-size:clamp(.9rem,1.4vw,1.1rem);letter-spacing:-.03em;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-topbar-meta,.game-topbar-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.game-scene{flex:1;min-height:0;display:grid;grid-template-rows:auto 1fr auto;gap:clamp(6px,1vh,12px);padding:clamp(8px,1vh,14px) clamp(10px,1.5vw,18px);overflow:hidden}.table-header{flex-shrink:0;display:flex;flex-direction:column;gap:6px;padding:10px 14px;background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius-lg)}.turn-banner{display:flex;align-items:center;justify-content:center;min-height:36px;padding:7px 12px;border-radius:var(--radius-md);background:var(--surface-2);border:1px solid var(--border);color:var(--text-soft);font-size:clamp(.82rem,1.1vw,.95rem);font-weight:600;letter-spacing:-.01em;line-height:1.25;text-align:center;transition:background .15s,border-color .15s,box-shadow .15s,color .15s}.turn-banner.active{background:#c8102e14;border-color:#c8102e59;color:#ff6b7a;box-shadow:0 0 0 1px var(--accent-glow),0 6px 20px #c8102e1a}.table-board{display:grid;gap:clamp(8px,1.2vw,14px);padding:clamp(10px,1.5vw,18px);border-radius:clamp(28px,4vw,56px);min-height:0;height:100%;overflow:hidden;position:relative;background:radial-gradient(ellipse at 35% 30%,rgba(160,24,40,.55) 0%,transparent 55%),radial-gradient(ellipse at 72% 70%,rgba(110,12,25,.45) 0%,transparent 50%),linear-gradient(145deg,#6b0f1a,#500b14 35%,#3d0910 60%,#500b14);border:clamp(5px,.7vw,9px) solid #1A1A1C;box-shadow:0 0 0 1px #ffffff0a,0 clamp(20px,4vh,50px) clamp(40px,8vh,90px) #000000bf,inset 0 1px #ffffff0d,inset 0 -1px #0006}.board-center{display:grid;place-items:center;gap:clamp(6px,1vh,12px);min-height:clamp(120px,18vh,200px);padding:clamp(10px,1.5vw,18px);border-radius:999px;background:radial-gradient(ellipse at center,rgba(0,0,0,.2) 0%,transparent 70%);border:1px dashed rgba(255,255,255,.07)}.board-center-ring{display:none}.board-center-label{font-size:clamp(.65rem,.9vw,.75rem);letter-spacing:.12em;text-transform:uppercase;color:#f2ede847}.trick-winner-banner{display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:5px 12px;border-radius:999px;background:#c9a84c1f;border:1px solid rgba(201,168,76,.3);color:#e0bf6b;font-size:clamp(.78rem,1vw,.88rem);font-weight:700;position:relative;z-index:var(--z-trick-banner);animation:fade-up .2s ease-out,trick-winner-pulse 1.6s ease}.trick-stack{display:flex;gap:clamp(6px,1vw,12px);flex-wrap:wrap;justify-content:center;min-height:clamp(80px,12vh,110px)}.trick-play{width:clamp(52px,7vw,72px);height:clamp(76px,10vh,104px);border-radius:clamp(10px,1.2vw,16px);border:1px solid rgba(18,19,22,.15);background:linear-gradient(180deg,#fafaf6,#efece4);color:#1a1008;display:grid;place-items:center;font-weight:700;box-shadow:0 6px 18px #00000059;animation:card-flip-in .3s cubic-bezier(.22,1,.36,1);will-change:transform,opacity}.trick-play.facedown{background:repeating-linear-gradient(45deg,#c8102e2e,#c8102e2e 3px,#141418f2 3px,#141418f2 9px),linear-gradient(160deg,#1a1a22,#12121a);border-color:#c8102e40;box-shadow:0 6px 18px #00000073,inset 0 0 0 1px #c8102e33}.trick-play.flying{animation:trick-fly .56s cubic-bezier(.42,0,1,1) forwards;pointer-events:none}.center-status{color:var(--text-soft);text-align:center;font-size:clamp(.8rem,1vw,.9rem)}.game-dock{display:grid;grid-template-columns:clamp(200px,28%,320px) minmax(0,1fr);gap:clamp(8px,1vw,14px);align-items:end;flex-shrink:0}.dock-panel{padding:clamp(10px,1.2vw,16px);transition:background .4s ease,border-color .4s ease,box-shadow .4s ease}.active-turn-panel{background:#50061073!important;border-color:#8c0a1ca6!important;box-shadow:0 0 0 1px #8c0a1c33,0 6px 24px #00000059;transition:background .4s ease,border-color .4s ease,box-shadow .4s ease}.card{width:clamp(52px,6.5vw,76px);height:clamp(74px,9.5vh,108px);border-radius:clamp(10px,1.2vw,16px);border:1px solid rgba(0,0,0,.12);background:linear-gradient(180deg,#fafaf6,#efece4);color:#1a1008;display:grid;place-items:center;font-weight:700;box-shadow:0 4px 14px #00000059,0 1px 3px #0003}.card-face{font-size:clamp(.85rem,1.1vw,1.1rem);letter-spacing:.01em}.card-face.red{color:#c0252e}.card-face.black{color:#1a1008}.hand{display:flex;gap:0;flex-wrap:nowrap;align-items:flex-end;min-height:clamp(80px,12vh,124px);overflow:visible;padding:5px 6px 10px;--hand-card-count: 1}.hand-fixed{justify-content:center}.card{flex:0 0 auto;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;transform-origin:center bottom}.hand .card{width:clamp(44px,calc((100% - 12px) / var(--hand-card-count) + 16px),clamp(52px,6.5vw,76px));margin-left:clamp(-22px,calc((var(--hand-card-count) - 1) * -2px),-6px)}.hand .card:first-child{margin-left:0}.card.dragging{opacity:.4;transform:scale(.95)}.card:nth-child(2n){transform:rotate(-1deg)}.card:nth-child(3n){transform:rotate(1deg)}.card.playable:hover:not(:disabled){transform:translateY(-10px) scale(1.03);box-shadow:0 18px 28px #0006;z-index:2}.card:disabled{opacity:.85;cursor:default}.card.locked{cursor:grab}.card.locked:active,.card.playable:active{cursor:grabbing}.hand-header{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}.bid-grid{display:flex;flex-wrap:wrap;gap:6px}.trump-badge{display:inline-flex;align-items:center;gap:5px;font-size:clamp(.75rem,.9vw,.84rem);padding:3px 9px;background:#ffffff0a;border-radius:var(--radius-sm);border:1px solid var(--border)}.trump-badge.no-trump{color:var(--text-faint)}.trump-suit-hearts,.trump-suit-diamonds{color:#e84040}.trump-suit-clubs,.trump-suit-spades{color:#c8c8c8}@media(min-width:768px){.table-board{grid-template-columns:clamp(180px,22%,260px) minmax(0,1fr) clamp(180px,22%,260px);grid-template-rows:auto minmax(clamp(130px,18vh,220px),1fr);grid-template-areas:"top-left top top-right" "left center right";align-items:center}.seats-4{grid-template-areas:". top ." "left center right"}.seats-5{grid-template-areas:"left top-left top-right" ". center right"}.seats-6{grid-template-areas:"left-high top right-high" "left-low center right-low"}.seat-card.board-seat{align-self:center}.seat-wrapper{position:relative;display:flex;flex-direction:column;align-items:center}.slot-top{grid-area:top;justify-self:center;max-width:clamp(180px,24%,260px)}.slot-top-left{grid-area:top-left;justify-self:start}.slot-top-right{grid-area:top-right;justify-self:end}.slot-left{grid-area:left;justify-self:start}.slot-right{grid-area:right;justify-self:end}.slot-left-high{grid-area:left-high;justify-self:start;align-self:start}.slot-left-low{grid-area:left-low;justify-self:start;align-self:end}.slot-right-high{grid-area:right-high;justify-self:end;align-self:start}.slot-right-low{grid-area:right-low;justify-self:end;align-self:end}.slot-self{display:none}.board-center{grid-area:center;align-self:center;justify-self:stretch}}.waiting-view{flex:1;display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden;padding:clamp(14px,2vh,24px) clamp(14px,2vw,24px);gap:clamp(10px,1.5vh,18px)}.waiting-grid{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,1.5vw,18px);overflow:hidden}.waiting-panel{overflow-y:auto}@keyframes fade-up{0%{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes trick-winner-pulse{0%{transform:scale(.98)}28%{transform:scale(1.02)}to{transform:scale(1)}}@keyframes trick-fly{0%{transform:translate(0) scale(1) rotate(0);opacity:1}to{transform:translate(var(--fly-x, 0px),var(--fly-y, -200px)) scale(.12) rotate(var(--fly-rot, -8deg));opacity:0}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes card-flip-in{0%{transform:perspective(600px) rotateY(90deg) scale(.85);opacity:0}60%{transform:perspective(600px) rotateY(-6deg) scale(1.02);opacity:1}to{transform:perspective(600px) rotateY(0) scale(1);opacity:1}}@keyframes options-slide-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes gold-pulse{0%,to{opacity:1;box-shadow:0 0 5px var(--gold),0 0 10px #c9a84c59}50%{opacity:.5;box-shadow:0 0 2px var(--gold),0 0 4px #c9a84c26}}@media(max-width:767px){.sidebar{width:100vw;height:var(--bottomtab-h);flex-direction:row;align-items:center;justify-content:space-around;border-right:none;border-top:1px solid var(--separator);position:fixed;bottom:0;left:0;right:0;z-index:var(--z-nav);padding:0 8px;background:var(--surface-glass);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}.sidebar-logo,.sidebar-footer,.sidebar-divider{display:none}.sidebar-nav{flex-direction:row;width:100%;justify-content:space-around;overflow:visible}.sidebar-item{flex-direction:column;gap:2px;padding:6px 10px;font-size:.68rem;align-items:center;justify-content:center;min-width:56px;border-radius:var(--radius-md)}.sidebar-item-icon{font-size:1.2rem;width:auto}.app-main{padding-bottom:var(--bottomtab-h)}.app-shell{flex-direction:column-reverse}.table-board{grid-template-columns:1fr;border-radius:24px;border-width:4px}.game-dock{grid-template-columns:1fr;padding-bottom:calc(var(--bottomtab-h) + 8px)}.lobby-body{grid-template-columns:1fr;overflow-y:auto}.lobby-header{flex-direction:column;gap:10px}.lobby-user-bar{width:100%;justify-content:space-between}.waiting-grid,.create-table-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
