*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #1a1a2e;--surface: #16213e;--surface-light: #0f3460;--primary: #e94560;--primary-hover: #ff6b81;--secondary: #533483;--text: #eee;--text-muted: #999;--success: #2ecc71;--warning: #f39c12;--team-a: #3498db;--team-b: #e74c3c;--card-bg: #fff;--card-text: #333}body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;min-height:100vh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app{min-height:100vh;display:flex;align-items:center;justify-content:center}.reconnecting-screen{text-align:center;color:var(--text-muted);font-size:1rem;letter-spacing:.02em;animation:pulse 1.5s ease-in-out infinite}.input{width:100%;padding:.75rem 1rem;background:var(--surface);border:1px solid var(--surface-light);border-radius:8px;color:var(--text);font-size:1rem;outline:none;transition:border-color .2s}.input:focus{border-color:var(--primary)}.btn{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .2s,transform .1s}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:var(--secondary);color:#fff}.btn-small{padding:.4rem .8rem;font-size:.85rem;background:var(--surface-light);color:var(--text)}.btn-tichu{background:var(--warning);color:#333}.confirm-label{font-size:.85rem;font-weight:600;color:var(--warning);align-self:center}.btn-group{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center;align-items:center}.play-pass-group{display:flex;gap:2.5rem;align-items:center;justify-content:center}.btn-play{background:var(--success);color:#fff;padding:.85rem 2.5rem;font-size:1.05rem;letter-spacing:.04em;font-weight:700;border-radius:10px;transition:background .15s,transform .1s,box-shadow .15s;box-shadow:0 2px 12px #2ecc7140}.btn-play:hover:not(:disabled){background:#27ae60;box-shadow:0 4px 20px #2ecc7159;transform:translateY(-1px)}.btn-pass{background:transparent;border:2px solid var(--text-muted);color:var(--text-muted);padding:.5rem 1.2rem;font-size:.85rem;border-radius:8px;transition:border-color .15s,color .15s,background .15s}.btn-pass:hover:not(:disabled){border-color:var(--text);color:var(--text);background:#ffffff0a}.lobby-fullscreen{position:relative;width:100vw;min-height:100vh;display:flex;align-items:center;justify-content:flex-end;overflow:hidden}.lobby-bg-clouds{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 20% 20%,rgba(60,80,120,.4) 0%,transparent 50%),radial-gradient(ellipse at 80% 30%,rgba(40,60,100,.3) 0%,transparent 50%),radial-gradient(ellipse at 50% 80%,rgba(20,30,60,.5) 0%,transparent 60%),linear-gradient(180deg,#0d1520,#1a2540 40%,#0f1a2e);z-index:0}.lobby-bg-zeus{position:absolute;top:0;right:0;bottom:0;left:0;background-image:url(/zeus.png);background-size:contain;background-position:25% center;background-repeat:no-repeat;opacity:.35;z-index:1;animation:bg-lightning 6s ease-in-out infinite}.lobby-bg-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,#0d152033,#0d152080 40%,#0d1520d9 70%),linear-gradient(180deg,rgba(13,21,32,.3) 0%,transparent 30%,transparent 60%,rgba(13,21,32,.8) 100%);z-index:2}.lobby-column{position:absolute;top:0;bottom:0;width:50px;z-index:3;display:flex;flex-direction:column;pointer-events:none}.lobby-column-left{left:20px}.lobby-column-right{right:20px}.column-ornament{flex-shrink:0}.column-svg{width:100%;height:auto}.column-body{flex:1;display:flex;justify-content:center}.column-flutes{width:36px;display:flex;gap:2px;overflow:hidden}.column-flute-line{flex:1;background:linear-gradient(90deg,#c9a84c14,#c9a84c2e,#c9a84c14)}.lobby-content{position:relative;z-index:4;text-align:center;width:100%;max-width:400px;padding:2rem 4rem 2rem 1.5rem}.lobby-header{margin-bottom:2rem}.title-greek{font-size:4rem;font-weight:900;letter-spacing:.22em;text-transform:uppercase;background:linear-gradient(180deg,#fff4c4,gold 25%,#c9a84c 60%,#8b6914);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:.3rem;font-family:Cinzel,Georgia,Times New Roman,serif;filter:drop-shadow(0 2px 12px rgba(255,215,0,.4));animation:title-entrance .8s ease-out both}@keyframes title-entrance{0%{opacity:0;transform:translateY(-16px) scale(.95);filter:drop-shadow(0 2px 12px rgba(255,215,0,0))}to{opacity:1;transform:translateY(0) scale(1);filter:drop-shadow(0 2px 12px rgba(255,215,0,.4))}}.subtitle-greek{color:#c9a84c;font-size:.85rem;letter-spacing:.35em;text-transform:uppercase;font-family:Cinzel,Georgia,Times New Roman,serif;margin-bottom:.75rem;opacity:.7;font-weight:600;animation:subtitle-entrance .8s ease-out .15s both}@keyframes subtitle-entrance{0%{opacity:0;transform:translateY(-8px)}to{opacity:.7;transform:translateY(0)}}.meander-border{margin:.5rem auto 0;max-width:320px;overflow:hidden}.meander-svg{width:100%;height:12px}.lobby-form-card{background:#0d1520bf;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(201,168,76,.15);border-radius:20px;padding:2rem;box-shadow:0 12px 40px #00000080,0 0 80px #c9a84c0d,inset 0 1px #c9a84c1a;animation:form-entrance .6s ease-out .25s both}@keyframes form-entrance{0%{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.reconnect-banner{background:#c9a84c1f;border:1px solid rgba(201,168,76,.3);border-radius:12px;padding:.75rem 1rem;margin-bottom:1rem;text-align:center}.reconnect-banner p{margin:0 0 .5rem;color:var(--gold);font-size:.9rem}.reconnect-actions{display:flex;gap:.75rem;justify-content:center;align-items:center}.btn-reconnect{font-size:.85rem;padding:.4rem 1.2rem}.reconnect-dismiss{color:var(--text-muted);font-size:.8rem}.input-greek{background:#16213e99;border:1px solid rgba(201,168,76,.2);color:var(--text);font-family:Inter,system-ui,sans-serif;letter-spacing:.02em;border-radius:10px;padding:.85rem 1.1rem;transition:border-color .25s,box-shadow .25s,background .25s}.input-greek:focus{border-color:#c9a84c99;box-shadow:0 0 0 3px #c9a84c1a;background:#16213ecc}.input-greek::placeholder{color:#c9a84c59;font-style:normal;font-weight:400}.btn-olympus{padding:.8rem 1.5rem;border:none;border-radius:10px;font-size:.9rem;font-weight:700;cursor:pointer;transition:all .2s ease;letter-spacing:.08em;text-transform:uppercase;font-family:Inter,system-ui,sans-serif;position:relative;overflow:hidden}.btn-olympus:active{transform:scale(.96);transition:transform .08s}.btn-skip{position:absolute;bottom:1.5rem;right:1.5rem;z-index:20;padding:.5rem 1.5rem;font-size:.9rem;opacity:.85}.btn-skip:hover{opacity:1}.btn-create{background:linear-gradient(135deg,#d4b044,#a08020);color:#1a1a2e;box-shadow:0 4px 16px #c9a84c4d}.btn-create:hover{background:linear-gradient(135deg,#e0c050,#b89030);box-shadow:0 6px 28px #c9a84c73;transform:translateY(-2px)}.btn-join{background:#c9a84c14;color:#c9a84c;border:1px solid rgba(201,168,76,.3)}.btn-join:hover{background:#c9a84c2e;border-color:#c9a84cb3;transform:translateY(-2px)}.btn-solo-greek{background:linear-gradient(135deg,#5a3d8e,#7c6cf0);color:#ede8f5;box-shadow:0 4px 16px #6c5ce740}.btn-solo-greek:hover{background:linear-gradient(135deg,#7c6cf0,#5a3d8e);box-shadow:0 6px 28px #6c5ce766;transform:translateY(-2px)}.divider-greek{color:#c9a84c59;font-family:Inter,system-ui,sans-serif;font-style:normal;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase}.divider-greek:before,.divider-greek:after{background:linear-gradient(90deg,transparent,rgba(201,168,76,.25),transparent)}.lobby-form{display:flex;flex-direction:column;gap:.85rem}.target-score-row{display:flex;align-items:center;gap:.5rem;justify-content:center;color:#c9a84c80;font-size:.85rem;font-family:Inter,system-ui,sans-serif;font-weight:500}.input-score{width:90px;text-align:center;padding:.5rem}.lobby-room-row{display:flex;gap:.5rem;align-items:stretch}.lobby-room-row .btn-create{flex:1;font-size:.85rem;padding:.6rem .5rem}.lobby-join-group{display:flex;flex:1;gap:.35rem}.input-room-code{width:70px;flex:0 0 70px;text-align:center;padding:.5rem;font-size:.95rem;text-transform:uppercase}.lobby-join-group .btn-join{flex:1;font-size:.85rem;padding:.6rem .5rem}.lobby-solo-row{display:flex;gap:.5rem;align-items:stretch}.lobby-solo-row .input-select{flex:1;padding:.6rem .75rem;font-size:.85rem}.lobby-solo-row .btn-solo-greek{flex:1;font-size:.85rem;padding:.6rem .5rem}.lobby-links{display:flex;justify-content:center;align-items:center;gap:.75rem;margin-top:.25rem}.lobby-link{color:#c9a84c99;font-size:.85rem;font-family:Inter,system-ui,sans-serif;background:none;border:none;cursor:pointer;padding:0;text-decoration:none}.lobby-link:hover{color:#c9a84c;text-decoration:underline}.lobby-link-sep{color:#c9a84c40;font-size:.8rem}.lobby-subview{display:flex;flex-direction:column;gap:.85rem;align-items:center}.lobby-subview-title{color:var(--gold);font-family:Cinzel,serif;font-size:1.1rem;margin:0}.lobby-subview .btn-create,.lobby-subview .btn-solo-greek,.lobby-subview .input-select{width:100%}.lobby-back{color:#c9a84c80;font-size:.85rem;background:none;border:none;cursor:pointer;padding:0}.lobby-back:hover{color:#c9a84c}.solo-section{display:flex;flex-direction:column;gap:.75rem}.input-select{width:100%;padding:.85rem 1.1rem;background:#16213e99;border:1px solid rgba(201,168,76,.2);border-radius:10px;color:var(--text);font-size:.95rem;font-family:Inter,system-ui,sans-serif;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23c9a84c' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;transition:border-color .25s,box-shadow .25s}.input-select:focus{border-color:#c9a84c99;box-shadow:0 0 0 3px #c9a84c1a}.lobby-footer{margin-top:1.5rem;animation:form-entrance .6s ease-out .4s both}.lobby-updated{text-align:center;font-size:.75rem;color:#c9a84c73;margin-top:.5rem}.auth-forms{display:flex;flex-direction:column;gap:.5rem}.auth-form{display:flex;flex-direction:column;gap:.75rem}.auth-switch{text-align:center}.btn-link{background:none;border:none;color:#c9a84cb3;cursor:pointer;font-size:.85rem;text-decoration:underline;padding:.25rem}.btn-link:hover{color:#c9a84c}.btn-guest{opacity:.7}.btn-guest:hover{opacity:1}.auth-title{color:#c9a84c;font-size:1.1rem;text-align:center;margin-bottom:.25rem}.auth-success{color:var(--success);font-size:.9rem;text-align:center;padding:.5rem}.auth-forgot-link{display:block;text-align:right;font-size:.8rem;margin-top:-.25rem}.google-signin-btn{display:flex;justify-content:center;margin:.25rem 0}.auth-loading{text-align:center;color:var(--text-muted);padding:2rem 0}.auth-back-link{display:block;margin:.5rem auto 0;font-size:.8rem}.user-badge{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;margin-bottom:.75rem;background:#c9a84c14;border:1px solid rgba(201,168,76,.15);border-radius:10px;font-size:.85rem}.user-badge-name{color:#c9a84c;font-weight:600}.user-badge-stats{color:var(--text-muted);font-size:.8rem}.user-badge-settings{margin-left:auto;background:#c9a84c14;border:1px solid rgba(201,168,76,.25);border-radius:8px;cursor:pointer;padding:.35rem;display:flex;align-items:center;transition:background .2s,border-color .2s}.user-badge-settings:hover{background:#c9a84c2e;border-color:#c9a84c73}.btn-play-online{background:linear-gradient(135deg,#2e7d32,#43a047);color:#e8f5e9;box-shadow:0 4px 16px #2e7d324d}.btn-play-online:hover{background:linear-gradient(135deg,#43a047,#2e7d32);box-shadow:0 6px 28px #2e7d3273;transform:translateY(-2px)}.queue-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 30%,#1a1a3e,#0d0d1a);overflow:hidden}.queue-bg-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at 50% 40%,rgba(201,168,76,.06) 0%,transparent 60%);pointer-events:none}.queue-content{position:relative;z-index:2;display:flex;align-items:center;justify-content:center}.queue-card{background:#1a1a3ee6;border:1px solid rgba(201,168,76,.25);border-radius:16px;padding:2.5rem 3rem;text-align:center;min-width:320px;box-shadow:0 8px 40px #00000080}.queue-title{font-family:Inter,system-ui,sans-serif;font-size:1.3rem;font-weight:700;color:#c9a84c;letter-spacing:.06em;text-transform:uppercase;margin:0 0 2rem}.queue-spinner{display:flex;align-items:center;justify-content:center;margin:1.5rem 0}.queue-spinner-ring{width:56px;height:56px;border:3px solid rgba(201,168,76,.15);border-top-color:#c9a84c;border-radius:50%;animation:queue-spin 1s linear infinite}@keyframes queue-spin{to{transform:rotate(360deg)}}.queue-info{margin:1.5rem 0 2rem}.queue-players{font-size:1.1rem;color:#e0d6c0;margin:0 0 .5rem;font-weight:600}.queue-timer{font-size:.85rem;color:#c9a84c99;margin:0}.btn-cancel{background:#c9a84c14;color:#c9a84c;border:1px solid rgba(201,168,76,.3);margin-top:.5rem}.btn-cancel:hover{background:#c9a84c2e;border-color:#c9a84cb3;transform:translateY(-2px)}.divider{display:flex;align-items:center;gap:1rem;color:var(--text-muted);margin:.25rem 0}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--surface-light)}@keyframes bg-lightning{0%,to{opacity:.35}48%{opacity:.35}50%{opacity:.5}52%{opacity:.35}78%{opacity:.35}80%{opacity:.42}81%{opacity:.35}}.waiting-room{padding:2rem;max-width:500px;width:100%;animation:form-entrance .4s ease-out both}.room-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.room-header h2{font-size:1.4rem;font-weight:700;letter-spacing:.02em}.btn-copy{background:none;border:1px solid var(--surface-light);color:var(--text-muted);font-size:1rem;cursor:pointer;padding:.15rem .4rem;margin-left:.5rem;border-radius:4px;vertical-align:middle;transition:color .2s,border-color .2s}.btn-copy:hover{color:var(--text);border-color:var(--text-muted)}.room-code-hint{color:var(--text-muted);margin-bottom:1.5rem;font-size:.85rem}.seats-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;margin-bottom:1.5rem}.seat{background:var(--surface);border:2px solid var(--surface-light);border-radius:14px;padding:1.1rem 1rem;text-align:center;transition:border-color .2s,background .2s,transform .15s,box-shadow .2s}.seat:nth-child(1),.seat:nth-child(3){border-color:var(--team-a)}.seat:nth-child(2),.seat:nth-child(4){border-color:var(--team-b)}.seat-empty{cursor:pointer}.seat-empty:hover{background:var(--surface-light);transform:translateY(-2px);box-shadow:0 4px 16px #0003}.seat-me{box-shadow:0 0 0 2px var(--primary),0 4px 16px #e9456026;background:#e945600d}.seat-label{font-weight:600;font-size:.85rem;text-transform:uppercase;color:var(--text-muted);margin-bottom:.5rem}.seat-player{font-size:1.1rem}.player-name{font-weight:600}.empty-seat{color:var(--text-muted);font-style:italic}.disconnected{color:var(--warning);font-size:.8rem}.waiting-actions{text-align:center}.btn-tutorial{background:transparent;border:1px solid rgba(201,168,76,.4);color:#c9a84c;font-size:.85rem;margin-top:.5rem}.btn-tutorial:hover{background:#c9a84c1a;border-color:#c9a84c}.btn-leaderboard{background:transparent;border:1px solid rgba(201,168,76,.4);color:#c9a84c;font-size:.85rem;margin-top:.3rem}.btn-leaderboard:hover{background:#c9a84c1a;border-color:#c9a84c}.leaderboard-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0a0a1a;overflow-y:auto}.leaderboard-content{position:relative;z-index:2;width:100%;max-width:800px;padding:2rem 1.5rem;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.leaderboard-header{text-align:center}.leaderboard-header .title-greek{font-size:2rem;margin-bottom:.25rem}.leaderboard-header .subtitle-greek{font-size:.9rem;opacity:.7}.leaderboard-my-stats{background:#c9a84c14;border:1px solid rgba(201,168,76,.3);border-radius:12px;padding:1rem 1.5rem;width:100%}.leaderboard-my-stats h3{color:#c9a84c;font-size:.9rem;margin-bottom:.75rem;text-transform:uppercase;letter-spacing:1px}.my-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem}@media (min-width: 600px){.my-stats-grid{grid-template-columns:repeat(6,1fr)}}.stat-item{text-align:center}.stat-value{display:block;font-size:1.2rem;font-weight:700;color:#fff}.stat-label{display:block;font-size:.7rem;color:#ffffff80;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.game-history-row{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:.75rem;grid-column:1 / -1}.game-history-dots{display:flex;gap:.4rem}.game-dot{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:4px;font-size:.75rem;font-weight:700;letter-spacing:.5px;cursor:default}.game-dot-win{background:#4caf5040;color:#4caf50;border:1px solid rgba(76,175,80,.4)}.game-dot-loss{background:#f4433640;color:#f44336;border:1px solid rgba(244,67,54,.4)}.lobby-game-history{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:.5rem}.lobby-history-label{font-size:.7rem;color:#ffffff80;text-transform:uppercase;letter-spacing:.5px}.profile-fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-start;justify-content:center;background:#0a0a1a;overflow-y:auto;padding:2rem 1rem}.profile-container{width:100%;max-width:520px;display:flex;flex-direction:column;gap:1.25rem}.profile-header{display:flex;align-items:center;gap:1rem}.profile-back{font-size:1rem;color:#c9a84c}.profile-title{font-family:Cinzel,serif;color:#c9a84c;font-size:1.5rem;margin:0;letter-spacing:1px}.profile-section{background:#c9a84c0f;border:1px solid rgba(201,168,76,.15);border-radius:12px;padding:1rem 1.25rem}.profile-section-title{font-family:Cinzel,serif;color:#c9a84c;font-size:.95rem;margin:0 0 .75rem;letter-spacing:.5px}.profile-avatar-section{text-align:center}.profile-current-avatar{margin-bottom:.75rem}.profile-avatar-large{font-size:3.5rem;display:inline-block}.profile-avatar-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:.5rem}.profile-avatar-option{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.4rem .2rem;background:#c9a84c14;border:2px solid transparent;border-radius:8px;cursor:pointer;transition:border-color .2s,background .2s}.profile-avatar-option:hover{background:#c9a84c26;border-color:#c9a84c4d}.profile-avatar-option.selected{border-color:#c9a84c;background:#c9a84c2e}.profile-avatar-emoji{font-size:1.5rem}.profile-avatar-label{font-size:.6rem;color:#ffffff80;text-transform:capitalize}.profile-info-row{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid rgba(201,168,76,.08);min-height:2.25rem}.profile-info-row:last-child{border-bottom:none}.profile-info-label{color:#ffffff80;font-size:.85rem}.profile-info-value{color:#e8e0d0;font-size:.9rem;display:flex;align-items:center;gap:.5rem}.profile-info-hint{font-size:.7rem;color:#ffffff59}.profile-edit-btn{font-size:.75rem;color:#c9a84c}.profile-success-inline{font-size:.75rem;color:#4caf50}.profile-google-linked{color:#4caf50}.profile-google-unlinked{color:#fff6}.profile-check{font-size:.85rem}.profile-edit-inline{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.input-profile{width:140px;padding:.3rem .5rem;font-size:.85rem}.profile-inline-error{width:100%;margin:.25rem 0 0;font-size:.75rem}.profile-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;text-align:center}.profile-stat{display:flex;flex-direction:column;gap:.15rem}.profile-stat-value{font-family:Cinzel,serif;font-size:1.5rem;color:#c9a84c;font-weight:700}.profile-stat-label{font-size:.7rem;color:#ffffff73;text-transform:uppercase;letter-spacing:.5px}.btn-profile-action{width:100%;font-size:.85rem;padding:.6rem}.btn-profile-save{font-size:.8rem;padding:.35rem .75rem}.profile-password-form{display:flex;flex-direction:column;gap:.6rem}.profile-form-actions{display:flex;align-items:center;gap:.75rem}.profile-signout-confirm{justify-content:center}.profile-confirm-text{color:#fff9;font-size:.85rem}.profile-delete-zone{text-align:center;padding:.75rem 0}.profile-delete-trigger{font-size:.75rem;color:#dc354580}.profile-delete-trigger:hover{color:#dc3545cc}.profile-delete-confirm-btn{color:#dc3545}.profile-delete-confirm{display:flex;flex-direction:column;align-items:center;gap:.5rem}.profile-delete-warning{color:#dc354599;font-size:.75rem;margin:0}.lang-toggle{display:flex;gap:0;border:1px solid rgba(201,168,76,.3);border-radius:6px;overflow:hidden;margin-bottom:.5rem;align-self:center}.lang-btn{background:transparent;border:none;color:#c9a84c99;padding:.3rem .75rem;font-size:.8rem;cursor:pointer;transition:background .2s,color .2s}.lang-btn:hover{background:#c9a84c1a}.lang-btn-active{background:#c9a84c33;color:#c9a84c;font-weight:600}.lang-btn+.lang-btn{border-left:1px solid rgba(201,168,76,.3)}.friends-panel{width:100%;margin-bottom:.5rem}.friends-toggle{width:100%;background:#ffffff0d;border:1px solid rgba(201,168,76,.2);border-radius:6px;color:var(--text);padding:.5rem .75rem;font-size:.85rem;cursor:pointer;display:flex;align-items:center;gap:.4rem;transition:background .2s}.friends-toggle:hover{background:#ffffff1a}.friends-badge{background:var(--primary);color:#fff;font-size:.65rem;font-weight:700;padding:1px 6px;border-radius:10px;min-width:18px;text-align:center}.friends-chevron{margin-left:auto;font-size:.7rem;transition:transform .2s}.friends-chevron-up{transform:rotate(180deg)}.friends-content{border:1px solid rgba(201,168,76,.15);border-top:none;border-radius:0 0 6px 6px;padding:.5rem;background:#0003;max-height:250px;overflow-y:auto}.friends-search-input{width:100%;padding:.35rem .5rem!important;font-size:.8rem!important;margin-bottom:.4rem}.friends-section{margin-bottom:.4rem}.friends-section-title{font-size:.7rem;color:#fff6;text-transform:uppercase;letter-spacing:.5px;margin:.3rem 0 .2rem}.friends-list{list-style:none;padding:0;margin:0}.friend-item{display:flex;align-items:center;gap:.4rem;padding:.25rem .3rem;border-radius:4px;font-size:.8rem}.friend-item:hover{background:#ffffff0d}.friend-online-dot{width:8px;height:8px;border-radius:50%;background:#4caf50;flex-shrink:0}.friend-offline-dot{width:8px;height:8px;border-radius:50%;background:#fff3;flex-shrink:0}.friend-name{color:var(--text);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.friend-name-offline{color:#fff6}.friend-actions{display:flex;gap:.3rem}.btn-friend{border:none;border-radius:4px;padding:2px 8px;font-size:.7rem;font-weight:600;cursor:pointer;transition:opacity .2s}.btn-friend:hover{opacity:.85}.btn-friend-add{background:#c9a84c4d;color:#c9a84c}.btn-friend-accept{background:#4caf504d;color:#4caf50}.btn-friend-reject{background:#f4433640;color:#f44336}.btn-friend-remove{background:none;color:#ffffff40;font-size:.75rem;padding:0 4px;margin-left:auto}.btn-friend-remove:hover{color:#f44336}.friend-status-label{font-size:.7rem;color:#ffffff59}.friend-action-feedback{font-size:.7rem;color:#c9a84c}.friends-empty{color:#ffffff59;font-size:.75rem;text-align:center;padding:.5rem}.btn-friend-ingame{background:#c9a84c4d;color:#c9a84c;border:none;border-radius:50%;width:18px;height:18px;font-size:.75rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:opacity .2s;flex-shrink:0}.btn-friend-ingame:hover{opacity:.8;background:#c9a84c80}.friend-status-label-small{font-size:.6rem;color:#ffffff59}.leaderboard-loading,.leaderboard-empty{color:#ffffff80;text-align:center;padding:2rem}.leaderboard-table-wrapper{width:100%;overflow-x:auto}.leaderboard-table{width:100%;border-collapse:collapse;font-size:.85rem}.leaderboard-table th{color:#c9a84c;text-transform:uppercase;font-size:.7rem;letter-spacing:.5px;padding:.5rem .4rem;border-bottom:1px solid rgba(201,168,76,.3);text-align:center;white-space:nowrap}.leaderboard-table td{padding:.5rem .4rem;text-align:center;color:#fffc;border-bottom:1px solid rgba(255,255,255,.05)}.leaderboard-table .rank-cell{font-weight:700;font-size:1rem}.leaderboard-table .name-cell{text-align:left;font-weight:600;color:#fff}.leaderboard-table .rating-cell{color:#c9a84c;font-weight:700}.leaderboard-row-me{background:#c9a84c1a}.leaderboard-row-me td{color:#c9a84c}.leaderboard-row-bot td{color:#9fb4c9;font-style:italic}.btn-back-lobby{background:transparent;border:1px solid rgba(201,168,76,.4);color:#c9a84c;font-size:.85rem;margin-top:1rem}.btn-back-lobby:hover{background:#c9a84c1a;border-color:#c9a84c}.btn-back{margin-top:auto;padding-top:1rem;width:100%;flex-shrink:0;background:transparent;border:1px solid rgba(201,168,76,.4);color:#c9a84c;font-size:.85rem}.btn-back:hover{background:#c9a84c1a}.tutorial-fullscreen{width:100vw;height:100vh;display:flex;background:var(--bg);color:var(--text)}.tutorial-sidebar{width:240px;min-width:240px;background:#0000004d;border-right:1px solid rgba(201,168,76,.2);padding:1.5rem .75rem;display:flex;flex-direction:column;overflow-y:auto}.tutorial-sidebar-title{font-family:Georgia,Times New Roman,serif;color:#c9a84c;font-size:1.3rem;margin-bottom:1rem;padding-bottom:.75rem;padding-left:.5rem;border-bottom:1px solid rgba(201,168,76,.3)}.tutorial-progress{margin-bottom:1rem}.tutorial-progress-bar{height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden}.tutorial-progress-fill{height:100%;background:var(--success);border-radius:3px;transition:width .3s ease}.tutorial-progress-label{font-size:.7rem;color:var(--text-muted);margin-top:.3rem;display:block}.tutorial-nav{display:flex;flex-direction:column;gap:.15rem;flex:1}.tutorial-nav-item{background:none;border:none;color:var(--text-muted);text-align:left;padding:.35rem .6rem;border-radius:6px;cursor:pointer;font-size:.78rem;transition:all .15s;display:flex;align-items:center;gap:.5rem}.tutorial-nav-num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:#ffffff14;font-size:.65rem;font-weight:600;flex-shrink:0}.tutorial-nav-item:hover{background:#c9a84c1a;color:var(--text)}.tutorial-nav-active{background:#c9a84c26;color:#c9a84c;font-weight:600}.tutorial-nav-active .tutorial-nav-num{background:#c9a84c4d;color:#c9a84c}.tutorial-nav-solved .tutorial-nav-num{background:#2ecc7140;color:var(--success)}.tutorial-main{flex:1;padding:2rem 3rem;overflow-y:auto;max-width:750px}.tutorial-step-counter{font-size:.75rem;color:var(--text-muted);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:1px}.tutorial-section-title{font-family:Georgia,Times New Roman,serif;color:#c9a84c;font-size:1.6rem;margin-bottom:1.5rem;padding-bottom:.5rem;border-bottom:1px solid rgba(201,168,76,.2)}.tutorial-content{display:flex;flex-direction:column;gap:.75rem}.tutorial-paragraph{line-height:1.7;color:var(--text);font-size:.95rem}.tutorial-paragraph:first-child{font-size:1rem}.tutorial-cards{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.25rem;padding:1rem;background:#0003;border-radius:10px;border:1px solid rgba(255,255,255,.06)}.tutorial-cards .card{cursor:pointer;transition:transform .15s}.tutorial-cards .card:hover{transform:translateY(-4px)}.tutorial-hint{margin-top:.75rem;color:var(--text-muted);font-size:.85rem;font-style:italic}.tutorial-wrong{margin-top:.75rem;color:#e74c3c;font-size:.85rem}.tutorial-success{margin-top:.75rem;color:var(--success);font-size:.9rem;font-weight:500}.tutorial-page-nav{display:flex;justify-content:space-between;margin-top:2rem;padding-top:1rem;border-top:1px solid rgba(255,255,255,.1)}.btn-tutorial-prev,.btn-tutorial-next{background:transparent;border:1px solid rgba(201,168,76,.4);color:#c9a84c;padding:.4rem 1.2rem;font-size:.85rem}.btn-tutorial-prev:hover,.btn-tutorial-next:hover{background:#c9a84c1a}.btn-tutorial-next:disabled{opacity:.4;cursor:not-allowed}.game-board{width:100%;max-width:900px;padding:1rem;min-height:100vh;display:flex;flex-direction:column}.game-info{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:var(--surface);border-radius:10px;margin-bottom:1rem;font-size:.9rem;border:1px solid rgba(255,255,255,.04)}.bot-difficulty-label{text-align:center;font-size:.75rem;color:#fff6;margin-top:-.7rem;margin-bottom:.5rem}.sound-toggle{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:.2rem .4rem;border-radius:4px;opacity:.7;transition:opacity .15s;line-height:1}.sound-toggle:hover{opacity:1}.phase-label{color:var(--text-muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;display:flex;align-items:center;gap:.4rem}.room-code-badge{background:var(--surface-light);color:var(--text-muted);padding:.1rem .4rem;border-radius:4px;font-size:.7rem;font-weight:600;letter-spacing:.1em;font-family:monospace}.phase-view{flex:1;display:flex;flex-direction:column;align-items:center;gap:1rem;justify-content:center}.card{width:60px;height:84px;background:var(--card-bg);border-radius:7px;border:2px solid #ddd;display:flex;flex-direction:column;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s ease,border-color .15s;font-weight:700}.card:hover{transform:translateY(-8px);box-shadow:0 8px 20px #00000059}.card-selected{transform:translateY(-14px)!important;border-color:var(--primary)!important;box-shadow:0 10px 24px #e9456066,0 0 0 1px #e9456033!important}.card-sm{width:42px;height:58px;font-size:.7rem}.card-sm:hover{transform:none}.card-corner{position:absolute;top:3px;left:5px;display:flex;flex-direction:column;align-items:center;line-height:1}.card-rank{font-size:.9rem}.card-sm .card-rank{font-size:.65rem}.card-suit{font-size:.75rem}.card-sm .card-suit{font-size:.55rem}.card-center{flex:1;display:flex;align-items:center;justify-content:center}.card-suit-lg{font-size:1.5rem}.card-sm .card-suit-lg{font-size:1rem}.card-back{background:linear-gradient(135deg,#b83329,#7d3ba0);border-color:#7f1d2c;cursor:default;box-shadow:inset 0 0 8px #0003}.card-back:hover{transform:none;box-shadow:none}.special-card{overflow:hidden}.special-corner{font-size:.7rem;font-weight:700;z-index:1}.card-sm .special-corner{font-size:.55rem}.special-dragon{background:linear-gradient(160deg,#1a1a2e,#2c3e50,#1a1a2e)!important}.special-phoenix{background:linear-gradient(160deg,#fff3cd,#ffeaa7,#ffd93d)!important}.special-mahjong{background:linear-gradient(160deg,#faf0e0,beige,#efe0c0)!important}.special-dog{background:linear-gradient(160deg,#e0d0b8,#d4c4a8,#c8b898)!important}.player-hand{display:flex;justify-content:center;padding:.5rem 1rem;min-height:100px}.hand-card-wrapper{margin-left:-12px;transition:transform .18s cubic-bezier(.34,1.56,.64,1);animation:card-deal-in .35s ease-out both;animation-delay:calc(var(--card-index) * .04s);position:relative}.received-dot{position:absolute;top:-6px;left:50%;transform:translate(-50%);width:9px;height:9px;border-radius:50%;z-index:10;border:1px solid rgba(0,0,0,.3);animation:dot-fade-in .3s ease-out;pointer-events:none}.received-teammate{background:var(--success);box-shadow:0 0 4px #2ecc7180}.received-opponent{background:var(--team-b);box-shadow:0 0 4px #e74c3c80}@keyframes dot-fade-in{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}.hand-card-wrapper:first-child{margin-left:0}@keyframes card-deal-in{0%{opacity:0;transform:translateY(30px) rotate(calc(var(--fan-offset) + 5deg)) scale(.8)}to{opacity:1;transform:translateY(0) rotate(var(--fan-offset)) scale(1)}}.playing-layout{flex:1;display:flex;flex-direction:column;gap:.75rem;align-items:center}.layout-top{display:flex;justify-content:center}.layout-middle{display:flex;align-items:center;gap:1rem;width:100%;justify-content:center}.opponent-panel{background:var(--surface);border-radius:12px;padding:.75rem 1rem;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:90px;border:2px solid transparent;transition:border-color .25s,box-shadow .25s,background .2s}.opponent-active{border-color:var(--warning);box-shadow:0 0 16px #f39c1226}.opponent-disconnected{opacity:.5;border-color:#ffffff1a}.avatar-disconnected{filter:grayscale(1)}.disconnect-badge{background:#ff3c3c4d;color:#ff6b6b;padding:.1rem .35rem;border-radius:4px;font-size:.55rem;font-weight:700;text-transform:uppercase;animation:badge-pop .2s ease-out}.disconnect-countdown{color:#ff9b6b;font-size:.6rem;font-weight:600;font-variant-numeric:tabular-nums}.opponent-info{display:flex;align-items:center;gap:.4rem}.player-avatar{width:62px;height:62px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,255,255,.3)}span.player-avatar{display:inline-flex;align-items:center;justify-content:center;font-size:38px;line-height:1;background:#ffffff14}.opponent-name{font-weight:600;font-size:.9rem}.name-teammate{color:var(--success)}.name-opponent{color:var(--primary)}.opponent-card-count{display:flex;flex-direction:column;align-items:center}.revealed-hand{display:flex;gap:2px;flex-wrap:wrap;justify-content:center;max-width:180px}.card-count-num{font-size:1.4rem;font-weight:700}.card-count-label{font-size:.7rem;color:var(--text-muted)}.out-text{font-size:.85rem;color:var(--success);font-weight:600}.tichu-badge{background:linear-gradient(135deg,#d42828,#b01e1e);color:#fff;padding:.2rem .55rem;border-radius:5px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;animation:badge-pop .25s cubic-bezier(.34,1.56,.64,1)}.tichu-badge-grand{background:linear-gradient(135deg,#8b0000,#600)}.tichu-call-list{display:flex;gap:1rem;justify-content:center;margin-bottom:.75rem}.tichu-call-entry{display:flex;align-items:center;gap:.4rem}.tichu-call-name{font-size:.8rem;color:var(--text-muted);font-weight:500}.out-badge{background:var(--success);color:#333;padding:.1rem .4rem;border-radius:4px;font-size:.65rem;font-weight:700}.pass-badge{background:#ffffff26;color:var(--text-muted);padding:.1rem .4rem;border-radius:4px;font-size:.65rem;font-weight:700;text-transform:uppercase;animation:badge-pop .2s ease-out}@keyframes badge-pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.collected-pile{margin-top:.3rem}.collected-card{position:relative;display:flex;align-items:center;justify-content:center;cursor:default}.collected-card:hover{transform:none;box-shadow:none}.collected-count{font-size:.85rem;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.5)}.my-hand-row{display:flex;align-items:flex-end;justify-content:center;gap:.75rem}.my-collected{margin-top:0;flex-shrink:0}.my-player-info{display:flex;flex-direction:column;align-items:center;gap:.25rem;flex-shrink:0;margin-bottom:.3rem}.my-name{font-weight:600;font-size:.85rem;color:var(--success);max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trick-area{background:var(--surface);border:1px solid rgba(255,255,255,.06);border-radius:14px;padding:1.25rem;min-height:120px;min-width:300px;max-width:500px;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;transition:border-color .2s}.last-trick-label{font-size:1.1rem;font-weight:600;color:var(--accent);margin-bottom:.25rem}.trick-cards{display:flex;flex-direction:column;gap:.5rem;align-items:center}.trick-play{display:flex;align-items:center;gap:.5rem;animation:trick-slide-in .25s ease-out}@keyframes trick-slide-in{0%{opacity:0;transform:translateY(20px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.trick-player{font-size:.8rem;min-width:60px;text-align:right}.trick-combo{display:flex;gap:2px}.trick-combo-long{gap:0}.trick-combo-long .card-sm{margin-left:-14px}.trick-combo-long .card-sm:first-child{margin-left:0}.no-trick{color:var(--text-muted);font-style:italic}.trick-bomb-shake{animation:bomb-shake .5s ease-out}@keyframes bomb-shake{0%,to{transform:translate(0)}10%{transform:translate(-8px) rotate(-2deg)}20%{transform:translate(8px) rotate(2deg)}30%{transform:translate(-6px) rotate(-1deg)}40%{transform:translate(6px) rotate(1deg)}50%{transform:translate(-4px)}60%{transform:translate(4px)}70%{transform:translate(-2px)}80%{transform:translate(2px)}}.trick-collecting .trick-cards{animation:trick-collect .4s ease-in forwards}@keyframes trick-collect{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.5)}}.turn-indicator{text-align:center;font-size:.9rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.your-turn{color:var(--success);font-weight:700;animation:your-turn-pulse 2s ease-in-out infinite}@keyframes your-turn-pulse{0%,to{opacity:1}50%{opacity:.7}}.turn-timer{font-size:.85rem;font-weight:700;color:var(--text);background:var(--surface);padding:.15rem .5rem;border-radius:6px;min-width:2.5rem;text-align:center}.turn-timer-urgent{color:var(--primary);background:#e9456026}.scores{background:var(--surface);padding:1rem 2rem;border-radius:8px;display:flex;flex-direction:column;gap:.5rem}.score-row{display:flex;gap:1.5rem;align-items:center}.score-team{font-weight:600;min-width:70px}.score-round{color:var(--text-muted)}.score-total{font-size:1.2rem;font-weight:700}.breakdown{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem;padding:.75rem;background:var(--surface);border-radius:8px;font-size:.85rem}.breakdown-item{padding:.3rem .5rem;border-radius:4px}.breakdown-highlight{background:#2ecc711a;font-size:.95rem}.breakdown-success{color:var(--success)}.breakdown-fail{color:var(--primary)}.winner{font-size:2rem;font-weight:700;color:var(--success);animation:winner-entrance .6s cubic-bezier(.34,1.56,.64,1);text-shadow:0 0 20px rgba(46,204,113,.4)}.loser{font-size:1.8rem;font-weight:700;color:var(--primary);animation:badge-pop .4s ease-out}@keyframes winner-entrance{0%{opacity:0;transform:scale(.3) rotate(-5deg)}60%{transform:scale(1.15) rotate(2deg)}to{opacity:1;transform:scale(1) rotate(0)}}.game-over-view{padding:1.5rem;gap:1.25rem}.game-over-win{background:radial-gradient(ellipse at center,rgba(46,204,113,.06) 0%,transparent 70%)}.game-over-loss{background:radial-gradient(ellipse at center,rgba(233,69,96,.04) 0%,transparent 70%)}.game-over-banner{text-align:center}.game-over-subtitle{color:var(--text-muted);font-size:.9rem;margin-top:.25rem}.game-over-finish{background:var(--surface);border-radius:10px;padding:.75rem 1.25rem;width:100%;max-width:320px}.game-over-finish h4{font-size:.75rem;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);margin-bottom:.5rem}.finish-list{display:flex;flex-direction:column;gap:.3rem}.finish-entry{display:flex;align-items:center;gap:.5rem;font-size:.9rem;font-weight:500}.finish-order{font-weight:700;font-size:1rem;min-width:24px}.game-over-tichu{display:flex;gap:.75rem;flex-wrap:wrap;justify-content:center}.tichu-result-entry{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--text-muted)}.btn-play-again{margin-top:.5rem;font-size:1rem;padding:.6rem 2rem}.trick-winner-icon{color:var(--warning);margin-left:.25rem;font-size:.7rem}.trick-play-older{opacity:.5;transform:scale(.85);transform-origin:center}.trick-play-latest{animation:trick-slide-in .25s ease-out}.my-finish-badge{background:var(--success);color:#333;padding:.2rem .5rem;border-radius:6px;font-size:.8rem;font-weight:700;animation:badge-pop .3s cubic-bezier(.34,1.56,.64,1)}.player-out-toast{text-align:center;font-size:.9rem;font-weight:600;color:var(--success);background:#2ecc711a;border:1px solid rgba(46,204,113,.25);padding:.3rem 1rem;border-radius:8px;animation:player-out-pop .4s cubic-bezier(.34,1.56,.64,1)}@keyframes player-out-pop{0%{opacity:0;transform:scale(.5) translateY(10px)}60%{transform:scale(1.1) translateY(-2px)}to{opacity:1;transform:scale(1) translateY(0)}}.pass-zones{display:flex;gap:1rem;justify-content:center;margin-bottom:1rem}.pass-zone{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.6rem;border-radius:12px;border:2px dashed rgba(255,255,255,.12);min-width:100px;transition:border-color .2s,background .2s,transform .15s;cursor:default}.pass-zone-active{border-color:#ffffff80;background:#ffffff0d;cursor:pointer}.pass-zone-active:hover{transform:translateY(-2px)}.pass-zone-teammate{border-color:#2ecc714d}.pass-zone-teammate.pass-zone-active{border-color:#2ecc71b3;background:#2ecc7114}.pass-zone-opponent{border-color:#e945604d}.pass-zone-opponent.pass-zone-active{border-color:#e94560b3;background:#e9456014}.pass-zone-header{display:flex;flex-direction:column;align-items:center;gap:.15rem}.pass-zone-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover}span.pass-zone-avatar{display:inline-flex;align-items:center;justify-content:center;font-size:22px;line-height:1;background:#ffffff14}.pass-zone-name{font-size:.8rem;font-weight:600}.pass-zone-relation{font-size:.6rem;text-transform:uppercase;opacity:.5;letter-spacing:.05em}.pass-zone-card{min-height:70px;display:flex;align-items:center;justify-content:center}.pass-zone-empty{font-size:.7rem;opacity:.35;padding:1rem .5rem}.pass-zone-assigned{position:relative;cursor:pointer}.pass-zone-remove{position:absolute;top:-6px;right:-6px;background:var(--primary);color:#fff;border-radius:50%;width:18px;height:18px;font-size:.65rem;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.pass-zone-assigned:hover .pass-zone-remove{opacity:1}.pass-hand{display:flex;justify-content:center;flex-wrap:wrap;gap:.25rem;margin-bottom:.75rem}.pass-hand-card{cursor:pointer;transition:transform .15s,opacity .15s}.pass-hand-card:hover{transform:translateY(-4px)}.pass-hand-active{transform:translateY(-8px);filter:brightness(1.2)}.pass-hand-assigned{opacity:.3;pointer-events:none;transform:scale(.92)}.wish-indicator{background:var(--warning);color:#333;padding:.3rem .75rem;border-radius:6px;font-weight:600;font-size:.8rem}.wish-forced-label{color:var(--warning);font-weight:600;font-size:.85rem;margin-left:.5rem}.btn-pass-highlight{animation:pass-highlight-pulse 1s ease-in-out infinite;box-shadow:0 0 8px #ffaa3299;border-color:#ffaa32!important}@keyframes pass-highlight-pulse{0%,to{box-shadow:0 0 8px #ffaa3266}50%{box-shadow:0 0 16px #ffaa32cc}}.scoring-layout{display:flex;align-items:flex-start;justify-content:center;gap:2rem;width:100%;flex:1;padding:1rem}.point-cards-panel{background:var(--surface);border-radius:10px;padding:1rem;min-width:100px;max-width:160px;max-height:70vh;overflow-y:auto}.point-cards-header{display:flex;flex-direction:column;align-items:center;gap:.25rem;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--surface-light)}.point-cards-team{font-weight:700;font-size:.85rem;text-transform:uppercase}.point-cards-total{font-size:1.1rem;font-weight:700;color:var(--success)}.point-cards-list{display:flex;flex-direction:column;gap:.4rem;align-items:center}.point-card-entry{display:flex;align-items:center;gap:.4rem}.point-card-value{font-size:.75rem;font-weight:600;color:var(--text-muted)}.point-card-negative{color:var(--primary)}.error{color:var(--primary);font-size:.9rem;text-align:center}.info{color:var(--text-muted);text-align:center}.game-toast{text-align:center;padding:.45rem 1rem;border-radius:10px;font-size:.8rem;font-weight:600;margin-bottom:.5rem;animation:toast-in .3s ease-out}.game-toast-warn{background:#ff3c3c33;color:#ff6b6b;border:1px solid rgba(255,60,60,.3)}.game-toast-info{background:#2ecc7133;color:var(--success);border:1px solid rgba(46,204,113,.3)}@keyframes toast-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.history-btn{background:none;border:none;font-size:1rem;cursor:pointer;padding:.2rem .4rem;border-radius:4px;opacity:.7;transition:opacity .15s;line-height:1}.history-btn:hover{opacity:1}.leave-btn{background:#ffffff14;border:1px solid rgba(255,255,255,.12);font-size:.65rem;font-weight:600;cursor:pointer;padding:.15rem .45rem;border-radius:4px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;transition:background .15s,color .15s;line-height:1.2}.leave-btn:hover{background:#e74c3c33;color:var(--team-b);border-color:var(--team-b)}.leave-modal{background:var(--bg);border:1px solid var(--surface-light);border-radius:16px;padding:1.5rem;text-align:center;max-width:320px;width:90%;animation:modal-enter .2s ease-out}.leave-modal p{margin:0 0 1.25rem;font-size:1rem}.leave-modal-buttons{display:flex;gap:.75rem;justify-content:center}.btn-danger{background:var(--team-b);color:#fff}.btn-danger:hover{filter:brightness(1.1)}.history-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:50;animation:fade-in .15s ease-out}.history-modal{background:var(--bg);border:1px solid var(--surface-light);border-radius:16px;padding:1.5rem;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;animation:modal-enter .2s ease-out}@keyframes modal-enter{0%{opacity:0;transform:scale(.95) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.score-history{width:100%;max-height:40vh;display:flex;flex-direction:column}.score-history .score-table-wrapper{flex:1;overflow-y:auto;min-height:0}.score-history-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.score-history-header h3{margin:0;font-size:1rem}.score-table{width:100%;border-collapse:collapse;font-size:.8rem}.score-table th{padding:.4rem .6rem;text-align:center;font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);border-bottom:1px solid var(--surface-light);position:sticky;top:0;background:var(--bg);z-index:1}.score-table td{padding:.4rem .6rem;text-align:center;border-bottom:1px solid rgba(255,255,255,.05)}.score-table tbody tr:nth-child(2n){background:#ffffff05}.score-table tbody tr:last-child{font-weight:600}.score-round-num{color:var(--text-muted);font-size:.75rem}.score-cell{display:flex;flex-direction:column;align-items:center;gap:.1rem}.score-cell .score-delta{font-weight:600;font-size:.8rem}.score-cell .score-total{font-size:.65rem;color:var(--text-muted)}.score-positive .score-delta{color:var(--success)}.score-negative .score-delta{color:var(--primary)}.score-notes{display:flex;gap:.25rem;justify-content:center;flex-wrap:wrap}.score-badge{padding:.1rem .3rem;border-radius:3px;font-size:.6rem;font-weight:700;white-space:nowrap}.badge-team-a{background:#2ecc7133;color:var(--success)}.badge-team-b{background:#e9456033;color:var(--primary)}.badge-success{background:#2ecc7133;color:var(--success)}.badge-fail{background:#e9456033;color:var(--primary)}.connection-banner{position:fixed;top:0;left:0;right:0;background:linear-gradient(135deg,var(--primary),#c03050);color:#fff;text-align:center;padding:.45rem;font-size:.8rem;font-weight:600;z-index:100;animation:pulse 1.5s ease-in-out infinite;letter-spacing:.02em}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.wish-selector{display:flex;flex-direction:column;align-items:center;gap:.5rem}.wish-grid{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:center;max-width:400px}.wish-btn{min-width:36px;text-align:center}@media (max-width: 768px){.card{width:52px;height:74px}.card-sm{width:38px;height:54px}.hand-card-wrapper{margin-left:-14px}.player-avatar{width:48px;height:48px}span.player-avatar{font-size:28px}.opponent-panel{padding:.5rem .75rem;min-width:80px}.opponent-name{font-size:.8rem}.card-count-num{font-size:1.1rem}.trick-area{min-width:220px;padding:.75rem;min-height:100px}.layout-middle,.playing-layout{gap:.5rem}.game-info{padding:.4rem .75rem;font-size:.8rem}.pass-zones{gap:.6rem}.pass-zone{min-width:85px;padding:.4rem}.pass-zone-avatar{width:28px;height:28px}}@media (max-width: 480px){.lobby-fullscreen{justify-content:center}.lobby-content{padding:2rem 1.5rem}.app{align-items:flex-start}.game-board{padding:.3rem;min-height:auto;height:100dvh;overflow:hidden}.card{width:38px;height:54px}.card-sm{width:28px;height:40px}.card-rank{font-size:.65rem}.card-suit{font-size:.5rem}.card-suit-lg{font-size:.9rem}.card-corner{padding:1px 2px}.hand-card-wrapper{margin-left:-20px}.player-avatar{width:28px;height:28px}span.player-avatar{font-size:16px}.opponent-panel{padding:.2rem .4rem;min-width:55px;gap:.1rem;border-radius:8px}.opponent-name{font-size:.65rem}.card-count-num{font-size:.85rem}.card-count-label{font-size:.55rem}.layout-middle{gap:.3rem;flex-direction:row}.trick-area{min-width:auto;flex:1;padding:.4rem;min-height:60px;border-radius:8px}.trick-player{font-size:.65rem;min-width:40px}.trick-cards{gap:.3rem}.playing-layout{gap:.2rem;flex:1;justify-content:space-between;overflow:hidden}.game-info{padding:.25rem .5rem;font-size:.7rem;margin-bottom:.2rem}.btn{padding:.45rem .8rem;font-size:.8rem}.btn-small{padding:.25rem .5rem;font-size:.7rem}.btn-group{gap:.3rem}.play-pass-group{gap:1.5rem}.phase-view h3{font-size:1rem}.info,.turn-indicator{font-size:.75rem}.tichu-badge{font-size:.5rem;padding:.1rem .3rem}.pass-badge{font-size:.5rem}.pass-zones{flex-direction:column;gap:.4rem;align-items:center}.pass-zone{flex-direction:row;min-width:auto;width:100%;max-width:280px;gap:.4rem;padding:.3rem .5rem}.pass-zone-header{flex-direction:row;gap:.3rem;min-width:80px}.pass-zone-avatar{width:22px;height:22px}.pass-zone-card{min-height:auto}.pass-hand{gap:.1rem}.my-hand-row{gap:.2rem}.revealed-hand{max-width:100px}.wish-grid{max-width:260px}.wish-btn{min-width:28px;font-size:.75rem}.collected-count{font-size:.65rem}.collected-pile .card-sm{width:24px;height:34px}.sound-toggle{font-size:.85rem;padding:.1rem .25rem}.confirm-label{font-size:.7rem}.trick-combo-long .card-sm{margin-left:-16px}.wish-indicator{font-size:.65rem;padding:.2rem .5rem}.wish-forced-label{font-size:.7rem}.no-trick{font-size:.75rem}.your-turn{font-size:.8rem}.lobby-room-row{flex-direction:column}.lobby-join-group{flex-direction:row}.lobby-solo-row .input-select,.lobby-solo-row .btn-solo-greek{font-size:.8rem;padding:.5rem}}@media (max-height: 450px) and (orientation: landscape){.game-board{padding:.2rem .4rem;min-height:auto;height:100dvh;overflow:hidden}.game-info{padding:.2rem .5rem;font-size:.7rem;margin-bottom:.15rem}.playing-layout{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:1fr auto;gap:.2rem .3rem;flex:1;overflow:hidden;align-items:center}.layout-top{grid-column:1;grid-row:1}.layout-middle{grid-column:2;grid-row:1;gap:.3rem}.my-hand-row{grid-column:1 / -1;grid-row:2;gap:.2rem}.turn-indicator{grid-column:3;grid-row:1;font-size:.7rem;writing-mode:horizontal-tb}.btn-group{grid-column:1 / -1;grid-row:3;gap:.3rem}.card{width:34px;height:48px}.card-sm{width:24px;height:34px}.card-rank{font-size:.6rem}.card-suit{font-size:.45rem}.card-suit-lg{font-size:.8rem}.card-corner{padding:1px 2px}.hand-card-wrapper{margin-left:-22px}.opponent-panel{padding:.2rem .4rem;min-width:auto;flex-direction:row;gap:.3rem;border-radius:6px}.player-avatar{width:24px;height:24px}span.player-avatar{font-size:14px}.opponent-name{font-size:.6rem}.card-count-num{font-size:.8rem}.card-count-label{font-size:.5rem}.opponent-info{gap:.2rem}.trick-area{min-width:auto;min-height:50px;padding:.3rem;border-radius:8px}.trick-player{font-size:.6rem;min-width:35px}.btn{padding:.3rem .7rem;font-size:.75rem}.btn-small{padding:.2rem .4rem;font-size:.65rem}.play-pass-group{gap:1rem}.tichu-badge{font-size:.5rem;padding:.1rem .25rem}.pass-badge{font-size:.45rem}.info{font-size:.7rem}.wish-indicator{font-size:.6rem;padding:.15rem .4rem}.wish-forced-label{font-size:.65rem}.no-trick{font-size:.7rem}.your-turn{font-size:.75rem}.confirm-label{font-size:.65rem}.collected-pile .card-sm{width:22px;height:30px}.collected-count{font-size:.6rem}.sound-toggle{font-size:.8rem;padding:.1rem .2rem}.pass-zones{flex-direction:row;gap:.4rem}.pass-zone{min-width:auto;padding:.3rem .4rem}.pass-zone-avatar{width:20px;height:20px}.wish-grid{max-width:300px}.wish-btn{min-width:26px;font-size:.7rem;padding:.2rem}.phase-view h3{font-size:.9rem}.score-table{font-size:.7rem}}.quick-guide-btn{background:#c9a84c26;border:1px solid rgba(201,168,76,.3);color:#c9a84c;width:28px;height:28px;border-radius:50%;font-size:.85rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-left:.3rem}.quick-guide-btn:hover{background:#c9a84c4d}.quick-guide-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.quick-guide{background:#1a1a2e;border:1px solid rgba(201,168,76,.2);border-radius:16px;width:100%;max-width:420px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #00000080}.quick-guide-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.2rem .5rem}.quick-guide-header h3{color:#c9a84c;font-size:1.1rem;margin:0}.quick-guide-close{background:none;border:none;color:#888;font-size:1.5rem;cursor:pointer;padding:0 .3rem}.quick-guide-close:hover{color:#fff}.quick-guide-tabs{display:flex;border-bottom:1px solid rgba(201,168,76,.15);padding:0 1rem;gap:0}.quick-guide-tabs button{flex:1;background:none;border:none;border-bottom:2px solid transparent;color:#888;padding:.6rem .5rem;font-size:.8rem;cursor:pointer}.quick-guide-tabs button.active{color:#c9a84c;border-bottom-color:#c9a84c}.quick-guide-tabs button:hover{color:#ccc}.quick-guide-content{padding:.8rem 1.2rem 1.2rem}.guide-section{display:flex;flex-direction:column;gap:.5rem}.guide-combo{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;padding:.4rem .6rem;background:#16213e80;border-radius:8px;font-size:.82rem}.guide-combo strong{color:#e0e0e0;white-space:nowrap}.guide-combo span{color:#999;text-align:right;font-size:.78rem}.guide-combo-bomb{border-left:3px solid #e74c3c}.guide-note{color:#777;font-size:.75rem;margin-top:.3rem;font-style:italic;line-height:1.4}.btn-google{background:#4285f4!important;color:#fff!important}.btn-google:hover{background:#3367d6!important}.trick-card-wrap{position:relative;display:inline-block}.phoenix-rank-badge{position:absolute;top:-4px;right:-4px;background:#c9a84c;color:#000;font-size:.6rem;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;box-shadow:0 1px 3px #0006;z-index:1}.live-games{max-width:600px;margin:0 auto;padding:1.5rem}.live-games-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.live-games-header h2{color:#c9a84c;font-size:1.3rem;margin:0}.live-games-status{text-align:center;color:var(--text-muted);padding:2rem 0}.live-games-list{display:flex;flex-direction:column;gap:.75rem}.live-game-card{display:flex;justify-content:space-between;align-items:center;background:#16213e99;border:1px solid rgba(201,168,76,.15);border-radius:12px;padding:1rem 1.2rem;transition:border-color .2s}.live-game-card:hover{border-color:#c9a84c66}.live-game-info{display:flex;flex-direction:column;gap:.4rem}.live-game-top{display:flex;gap:.6rem;align-items:center}.live-game-code{background:#c9a84c26;color:#c9a84c;padding:.15rem .5rem;border-radius:4px;font-size:.75rem;font-weight:700;letter-spacing:.05em}.live-game-phase{color:var(--text-muted);font-size:.8rem}.live-game-round{color:var(--text-muted);font-size:.75rem}.live-game-scores{display:flex;align-items:baseline;gap:.3rem;font-size:1.1rem}.live-game-score{color:var(--text);font-weight:600}.live-game-vs{color:var(--text-muted);font-size:.85rem}.live-game-target{color:var(--text-muted);font-size:.75rem}.live-game-players{display:flex;gap:.4rem;flex-wrap:wrap}.live-game-player{color:var(--text);font-size:.8rem}.live-game-player:not(:last-child):after{content:",";color:var(--text-muted)}.live-game-bots{color:var(--text-muted);font-size:.75rem;font-style:italic}.btn-spectate{white-space:nowrap;padding:.5rem 1rem!important;font-size:.85rem!important}.pass-ready-counter{text-align:center;color:#c9a84c;font-size:.9rem;font-weight:600;padding:.3rem .8rem;background:#c9a84c1a;border:1px solid rgba(201,168,76,.2);border-radius:20px;display:inline-block;margin:0 auto .5rem;width:fit-content}
