:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}*{margin:0;padding:0;box-sizing:border-box}#root{height:100vh;background:#f0f2f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app{height:100vh;background:#f0f2f5;color:#333}.game-layout{display:flex;flex-direction:column;height:100vh}.game-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:#fff;border-bottom:1px solid #e1e5e9;height:70px}.game-title{font-size:1.5rem;font-weight:700;color:#1a1a1a}.user-profile{display:flex;align-items:center;gap:.75rem}.user-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;border:2px solid #e1e5e9}.user-avatar img{width:100%;height:100%;object-fit:cover}.username{font-weight:600;color:#1a1a1a;font-size:1rem}.game-main{display:flex;flex:1;overflow:hidden}.players-sidebar{width:250px;background:#fff;border-right:1px solid #e1e5e9;padding:1rem;overflow-y:auto}.other-player-card{display:flex;align-items:center;gap:1rem;padding:1rem;margin-bottom:1rem;background:#f8f9fa;border-radius:8px;border:1px solid #e1e5e9;transition:all .3s ease}.other-player-card.current-turn{background:linear-gradient(135deg,#e3f2fd,#f0f8ff);border:2px solid #2196f3;box-shadow:0 4px 12px #2196f333;transform:translateY(-2px)}.other-player-card.current-turn .player-name:after{content:" 🎯";font-size:.9em}.other-player-card.current-turn .player-turn-indicator{display:inline-block;background:#2196f3;color:#fff;padding:.2rem .6rem;border-radius:12px;font-size:.7rem;font-weight:600;margin-left:.5rem;animation:pulse-turn 2s infinite}@keyframes pulse-turn{0%{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.player-avatar{width:40px;height:40px;border-radius:50%;overflow:hidden;flex-shrink:0}.player-avatar img{width:100%;height:100%;object-fit:cover}.player-info{flex:1;min-width:0}.player-name{font-weight:600;color:#1a1a1a;margin-bottom:.25rem}.player-balance{font-size:.8rem;color:#666}.player-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:2px;max-width:60px}.card-back-mini{width:8px;height:12px;background:#bbb;border-radius:2px}.card-count-overflow{font-size:.7rem;color:#666;font-weight:500;margin-left:.25rem}.game-board-container{flex:1;display:flex;align-items:center;justify-content:center;background:#f8f9fa;padding:2rem;overflow:auto}.game-board{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 2px 8px #0000001a;min-width:900px}.board-grid{display:flex;flex-direction:column;gap:.5rem}.grid-header{display:grid;grid-template-columns:60px repeat(9,1fr);gap:.5rem;margin-bottom:.5rem}.corner-cell{width:60px;height:40px}.rank-header{display:flex;align-items:center;justify-content:center;height:40px;font-weight:700;font-size:1.1rem;color:#333;background:#f8f9fa;border-radius:6px;border:1px solid #e1e5e9;min-width:74px}.grid-row{display:grid;grid-template-columns:60px repeat(9,1fr);gap:.5rem;align-items:center}.suit-header{display:flex;align-items:center;justify-content:center;width:60px;height:78px;background:#f8f9fa;border-radius:8px;border:1px solid #e1e5e9}.suit-header .suit-symbol{font-size:2rem;font-weight:700}.suit-symbol.hearts,.suit-symbol.diamonds{color:#dc3545}.suit-symbol.clubs,.suit-symbol.spades{color:#333}.card-position{display:flex;align-items:center;justify-content:center;height:88px;width:64px}.card-placeholder{width:64px;height:88px;border-radius:6px;border:2px dashed #dee2e6;background:transparent;transition:all .2s ease;position:relative}.card-placeholder.in-hand{border-color:#ffc107;border-width:2px}.card-placeholder.empty{border-color:#dee2e6;border-width:2px}.placeholder-rank,.placeholder-suit{display:none}.card{width:64px;height:88px;border-radius:6px;border:none;background:transparent;cursor:pointer;transition:all .2s ease;position:relative;padding:0;overflow:hidden}.card-image{width:100%;height:100%;object-fit:contain;pointer-events:none;border-radius:6px}.card:hover{transform:translateY(-3px);box-shadow:0 4px 8px #0003}.card.playable{cursor:pointer}.card.playable:hover{transform:translateY(-5px);box-shadow:0 6px 12px #28a7454d}.card.playable:after{content:"";position:absolute;inset:-2px;background:transparent;border:3px solid #28a745;border-radius:8px;pointer-events:none}.card-rank,.card-suit,.card-rank.red,.card-suit.red,.card-rank.black,.card-suit.black{display:none}.game-sidebar-right{width:200px;background:#fff;border-left:1px solid #e1e5e9;padding:1rem}.current-player-section{background:#fff;border-top:1px solid #e1e5e9;padding:1rem 2rem;height:120px}.current-player-container{max-width:1200px;margin:0 auto;height:100%}.player-label{font-size:.9rem;color:#666;margin-bottom:.5rem}.current-player-content{display:flex;justify-content:space-between;align-items:center;height:calc(100% - 1.5rem)}.current-player-hand{flex:1}.hand-cards{display:flex;gap:.5rem;align-items:center}.hand-cards .card{width:64px;height:88px;margin:0}.current-player-info{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.balance-info{font-size:.9rem;color:#666}.error-message{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:8px;padding:.75rem;margin-bottom:1rem;display:flex;justify-content:space-between;align-items:center}.error-message button{background:none;border:none;color:#721c24;font-size:1.2rem;cursor:pointer;padding:0;margin-left:.5rem}.room-manager{max-width:1200px;margin:0 auto;padding:2rem}.connection-status{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:8px;font-weight:500;margin-bottom:1rem;font-size:.9rem}.connection-status.connected{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.connection-status.connecting{background:#fff3cd;color:#856404;border:1px solid #ffeaa7}.connection-status.disconnected{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.lobby{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 6px #0000001a}.lobby-content{display:flex;gap:2rem;align-items:flex-start}.lobby-left{min-width:300px;flex-shrink:0}.lobby-right{flex:1}.player-name-section{margin-bottom:2rem}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#2c3e50}.form-group input{width:100%;padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;box-sizing:border-box;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#3498db}.form-group input:disabled{background:#f8f9fa;color:#6c757d;cursor:not-allowed}.lobby-actions{margin-bottom:2rem}.create-room-btn{background:#3498db;color:#fff;border:none;padding:.75rem 1.5rem;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s;width:100%}.create-room-btn:hover:not(:disabled){background:#2980b9}.create-room-btn:disabled{background:#bdc3c7;cursor:not-allowed}.room-list{border-left:2px solid #e1e8ed;padding-left:2rem;font-weight:600;font-size:1.1rem;color:#2c3e50;margin-bottom:1rem}.no-rooms{text-align:center;color:#7f8c8d;font-style:italic;padding:2rem;background:#f8f9fa;border-radius:8px;margin-top:1rem}.rooms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-top:1rem}.room-card{background:#fff;border:2px solid #e1e8ed;border-radius:8px;padding:1rem;transition:all .2s}.room-card:hover{border-color:#3498db;box-shadow:0 2px 8px #3498db33}.room-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.room-name{font-weight:600;font-size:1.1rem;color:#2c3e50}.room-status{font-size:.85rem;padding:.25rem .5rem;border-radius:4px;background:#f8f9fa;color:#6c757d}.room-details{margin-bottom:1rem;font-size:.9rem;color:#7f8c8d}.room-details div{margin-bottom:.25rem}.join-room-btn{width:100%;background:#27ae60;color:#fff;border:none;padding:.5rem;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .2s}.join-room-btn:hover:not(:disabled){background:#229954}.join-room-btn:disabled,.join-room-btn.disabled{background:#bdc3c7;cursor:not-allowed}.room-form{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 6px #0000001a;max-width:400px;margin:0 auto}.form-buttons{display:flex;gap:1rem;margin-top:1.5rem}.form-buttons button{flex:1;padding:.75rem;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s}.form-buttons button[type=submit]{background:#3498db;color:#fff}.form-buttons button[type=submit]:hover:not(:disabled){background:#2980b9}.form-buttons button[type=button]{background:#95a5a6;color:#fff}.form-buttons button[type=button]:hover:not(:disabled){background:#7f8c8d}.form-buttons button:disabled{background:#bdc3c7;cursor:not-allowed}.warning-message{background:#fff3cd;color:#856404;border:1px solid #ffeaa7;border-radius:8px;padding:.75rem;margin-top:1rem;font-size:.9rem}.room-info{background:#fff;border-radius:12px;padding:2rem;box-shadow:0 4px 6px #0000001a;max-width:600px;margin:0 auto}.room-info .room-header{text-align:center;margin-bottom:2rem}.room-title{font-size:1.5rem;font-weight:600;color:#2c3e50;margin-bottom:.5rem}.room-id{font-size:.9rem;color:#7f8c8d;font-family:Monaco,Menlo,monospace}.players-list{margin-bottom:2rem}.players-title{font-weight:600;color:#2c3e50;margin-bottom:1rem;font-size:1.1rem}.players-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.player-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:#f8f9fa;border-radius:8px;border:1px solid #e1e5e9}.player-item.host{background:#e3f2fd;border-color:#bbdefb}.player-details{flex:1}.player-details .player-name{font-weight:600;margin-bottom:.25rem}.host-badge{background:#2196f3;color:#fff;padding:.2rem .5rem;border-radius:4px;font-size:.7rem;font-weight:500}.start-game-button,.back-to-lobby-button{width:100%;padding:.75rem;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s;margin-bottom:1rem}.start-game-button{background:#27ae60;color:#fff}.start-game-button:hover{background:#229954}.back-to-lobby-button{background:#95a5a6;color:#fff}.back-to-lobby-button:hover{background:#7f8c8d}.waiting-message{text-align:center;color:#7f8c8d;font-style:italic;padding:1rem;background:#f8f9fa;border-radius:8px;margin-bottom:1rem}.auth-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.auth-modal{background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;width:100%;max-width:400px;margin:1rem;max-height:90vh;overflow-y:auto}.auth-modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 1.5rem 1rem;border-bottom:1px solid #e1e5e9}.auth-modal-header h2{font-size:1.25rem;font-weight:600;color:#1a1a1a;margin:0}.auth-modal-close{background:none;border:none;font-size:1.5rem;color:#6c757d;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.auth-modal-close:hover{color:#343a40}.auth-modal-content{padding:1.5rem}.auth-form-group{margin-bottom:1rem}.auth-form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#2c3e50;font-size:.9rem}.auth-form-group input{width:100%;padding:.75rem;border:2px solid #e1e8ed;border-radius:8px;font-size:1rem;box-sizing:border-box;transition:border-color .2s,box-shadow .2s}.auth-form-group input:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.auth-form-group input:disabled{background:#f8f9fa;color:#6c757d;cursor:not-allowed}.auth-form-group input[type=text]:not([id=displayName]){font-family:Monaco,Menlo,monospace;letter-spacing:.1em;text-align:center;font-size:1.2rem}.auth-button{width:100%;padding:.75rem;border:none;border-radius:8px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s;margin-bottom:.5rem}.auth-button.primary{background:#3498db;color:#fff}.auth-button.primary:hover:not(:disabled){background:#2980b9}.auth-button.secondary{background:#95a5a6;color:#fff}.auth-button.secondary:hover:not(:disabled){background:#7f8c8d}.auth-button:disabled{background:#bdc3c7;cursor:not-allowed}.auth-buttons{display:flex;flex-direction:column;gap:.5rem}.auth-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:8px;padding:.75rem;margin-bottom:1rem;font-size:.9rem}.auth-info{font-size:.9rem;color:#6c757d;text-align:center;margin-bottom:1rem;line-height:1.4}.auth-timer{color:#dc3545;font-weight:500}.auth-status{display:flex;align-items:center;gap:.75rem}.login-button{background:#3498db;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .2s}.login-button:hover{background:#2980b9}.logout-button{background:#dc3545;color:#fff;border:none;padding:.4rem .8rem;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:background .2s}.logout-button:hover{background:#c82333}.game-controls{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.pass-section{display:flex;flex-direction:column;align-items:center;gap:.25rem}.pass-button{padding:.75rem 1.5rem;border:none;border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;min-width:140px;text-align:center}.pass-button.can-pass{background:linear-gradient(135deg,#ff6b6b,#ee5a24);color:#fff;box-shadow:0 2px 8px #ff6b6b4d}.pass-button.can-pass:hover{background:linear-gradient(135deg,#ee5a24,#ff6b6b);transform:translateY(-1px);box-shadow:0 4px 12px #ff6b6b66}.pass-button:disabled{background:#6c757d;color:#fff;cursor:not-allowed;opacity:.6}.pass-info{font-size:.75rem;color:#666;text-align:center}.pass-info small{background:#ff6b6b1a;padding:.2rem .5rem;border-radius:4px;border:1px solid rgba(255,107,107,.2)}.new-game-button{background:#28a745;color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:background .2s}.new-game-button:hover{background:#218838}.winner-modal-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:2000;animation:fade-in .3s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.winner-modal{background:#fff;border-radius:20px;box-shadow:0 25px 50px -12px #00000040;width:100%;max-width:500px;margin:1rem;animation:slide-up .4s ease;overflow:hidden}@keyframes slide-up{0%{opacity:0;transform:translateY(50px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.winner-content{padding:3rem 2rem 2rem;text-align:center}.winner-celebration{margin-bottom:2rem}.winner-icon{font-size:4rem;margin-bottom:1rem;animation:bounce 1s ease infinite}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.winner-title{font-size:2.5rem;font-weight:700;color:#2c3e50;margin-bottom:1rem;text-shadow:2px 2px 4px rgba(0,0,0,.1)}.winner-announcement{font-size:1.5rem;margin-bottom:1rem;color:#34495e}.winner-name{font-weight:700;color:#e74c3c;background:linear-gradient(135deg,#e74c3c,#f39c12);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-size:1.8rem}.winner-subtitle{font-size:1rem;color:#7f8c8d;font-style:italic;margin-bottom:1rem}.winner-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.winner-button{padding:1rem 2rem;border:none;border-radius:12px;font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s ease;min-width:140px;text-transform:uppercase;letter-spacing:.5px}.winner-button.primary{background:linear-gradient(135deg,#27ae60,#2ecc71);color:#fff;box-shadow:0 4px 15px #27ae604d}.winner-button.primary:hover{background:linear-gradient(135deg,#2ecc71,#27ae60);transform:translateY(-2px);box-shadow:0 6px 20px #27ae6066}.winner-button.secondary{background:linear-gradient(135deg,#95a5a6,#bdc3c7);color:#fff;box-shadow:0 4px 15px #95a5a64d}.winner-button.secondary:hover{background:linear-gradient(135deg,#bdc3c7,#95a5a6);transform:translateY(-2px);box-shadow:0 6px 20px #95a5a666}.current-player-section.my-turn{background:linear-gradient(135deg,#fff8e1,#fffaf0);border-top:3px solid #ff9800;box-shadow:0 -4px 12px #ff98001a}.current-player-section.my-turn .player-label:after{content:" - Your Turn! 🎯";color:#ff9800;font-weight:600;animation:pulse-my-turn 1.5s infinite}@keyframes pulse-my-turn{0%{opacity:1}50%{opacity:.6}to{opacity:1}}
