: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;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-right: env(safe-area-inset-right, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--mobile-padding: max(20px, var(--safe-area-top));--mobile-padding-horizontal: max(20px, var(--safe-area-right))}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100svh;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}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}}.toast{display:flex;align-items:center;min-width:300px;max-width:500px;padding:12px 16px;margin-bottom:8px;border-radius:8px;box-shadow:0 4px 12px #00000026;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;font-weight:500;animation:slideIn .3s ease-out forwards;position:relative;overflow:hidden}.toast-content{display:flex;align-items:center;width:100%;gap:12px}.toast-icon{font-size:18px;flex-shrink:0}.toast-message{flex-grow:1;line-height:1.4;word-wrap:break-word}.toast-close{background:none;border:none;font-size:20px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;flex-shrink:0;transition:background-color .2s ease}.toast-close:hover{background-color:#fff3}.toast-success{background:linear-gradient(135deg,#4ade80,#22c55e);color:#fff;border-left:4px solid #16a34a}.toast-error{background:linear-gradient(135deg,#f87171,#ef4444);color:#fff;border-left:4px solid #dc2626}.toast-warning{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff;border-left:4px solid #d97706}.toast-info{background:linear-gradient(135deg,#60a5fa,#3b82f6);color:#fff;border-left:4px solid #2563eb}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideOut{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.toast.toast-exit{animation:slideOut .3s ease-in forwards}@media (max-width: 480px){.toast{min-width:280px;max-width:90vw;margin-left:5vw;margin-right:5vw}.toast-message{font-size:13px}.toast-icon{font-size:16px}}.toast-container{position:fixed;top:20px;right:20px;z-index:1000;display:flex;flex-direction:column;align-items:flex-end}@media (max-width: 480px){.toast-container{top:10px;right:0;left:0;align-items:center}}.login-container{min-height:100svh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:max(20px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px))}.login-card{background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:15px;padding:25px;box-shadow:0 15px 30px #0000001a;max-width:450px;width:100%;text-align:center;color:#333}.login-card h1{font-size:2.2em;margin:0 0 8px;color:#4a5568;text-shadow:2px 2px 4px rgba(0,0,0,.1)}.subtitle{color:#666;margin-bottom:20px;font-size:1.05em}.login-mode-selector{display:flex;gap:8px;margin-bottom:20px;border-radius:8px;background:#0000000d;padding:4px}.mode-btn{flex:1;padding:10px 14px;border:none;border-radius:6px;background:transparent;color:#666;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.9em}.mode-btn:hover{background:#ffffffb3;color:#333}.mode-btn.active{background:#fff;color:#4a5568;box-shadow:0 2px 8px #0000001a}.login-form{display:flex;flex-direction:column;gap:15px;text-align:left}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-weight:600;color:#4a5568;font-size:.95em}.form-group input{padding:10px 14px;border:2px solid #e2e8f0;border-radius:6px;font-size:.95em;transition:all .3s ease;background:#fff;color:#495057}.form-group input:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.form-group input::placeholder{color:#a0aec0}.error-message{background:#fed7d7;color:#c53030;padding:10px;border-radius:6px;border:1px solid #feb2b2;font-size:.85em;text-align:center}.login-btn{padding:12px 20px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:1.05em;font-weight:600;cursor:pointer;transition:all .3s ease;margin-top:8px}.login-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #667eea4d}.login-btn:disabled{opacity:.7;cursor:not-allowed;transform:none}.guest-info,.register-info{margin-top:18px;padding:15px;background:#667eea1a;border-radius:8px;border:1px solid rgba(102,126,234,.2);text-align:left;font-size:.85em}.guest-info p,.register-info p{margin:0;line-height:1.6;color:#4a5568}.guest-info strong,.register-info strong{color:#2d3748}@media (max-width: 768px){.login-container{padding:15px}.login-card{padding:20px}.login-card h1{font-size:2em}.subtitle{font-size:1em;margin-bottom:18px}.login-mode-selector{margin-bottom:18px}.mode-btn{padding:8px 12px;font-size:.85em}.login-form{gap:12px}.form-group{gap:5px}.form-group input{padding:9px 12px;font-size:.9em}.login-btn{padding:10px 16px;font-size:1em}.guest-info,.register-info{margin-top:15px;padding:12px;font-size:.8em}}@media (max-width: 480px){.login-container{padding:10px}.login-card{padding:18px;margin:5px}.login-card h1{font-size:1.8em;margin-bottom:6px}.subtitle{font-size:.95em;margin-bottom:15px}.login-mode-selector{margin-bottom:15px;gap:6px;padding:3px}.mode-btn{padding:7px 10px;font-size:.8em}.login-form{gap:10px}.form-group{gap:4px}.form-group label{font-size:.9em}.form-group input{padding:8px 10px;font-size:.85em}.error-message{padding:8px;font-size:.8em}.login-btn{padding:9px 14px;font-size:.95em;margin-top:6px}.guest-info,.register-info{margin-top:12px;padding:10px;font-size:.75em}.guest-info p,.register-info p{line-height:1.5}}.login-card{animation:slideUp .6s ease-out}.form-group{animation:fadeIn .5s ease-out}.game-type-container{min-height:100svh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:max(20px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px))}.game-type-card{background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:15px;padding:20px;box-shadow:0 15px 30px #0000001a;max-width:500px;width:100%;text-align:center;color:#333;animation:slideUp .6s ease-out;position:relative}.user-status-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding:12px 16px;background:#667eea1a;border-radius:12px;border:1px solid rgba(102,126,234,.2)}.user-info{display:flex;align-items:center;gap:12px}.user-details{display:flex;flex-direction:column;text-align:left}.user-name{font-weight:600;color:#2d3748;font-size:1em}.user-type{font-size:.8em;color:#666;margin-top:2px}.header-actions{display:flex;gap:8px}.logout-btn{background:#e53e3e;color:#fff;border:none;padding:8px 12px;border-radius:8px;cursor:pointer;font-weight:600;font-size:.85em;transition:all .3s ease}.logout-btn:hover{background:#c53030;transform:translateY(-1px)}.back-btn{background:#ffffffe6;border:none;padding:8px 12px;border-radius:8px;cursor:pointer;font-weight:600;color:#4a5568;transition:all .3s ease;font-size:.85em}.type-header{margin-bottom:20px}.loading-state{text-align:center;padding:40px 20px}.loading-state h2{color:#4a5568;margin-bottom:10px}.loading-state p{color:#666}.game-icon{display:flex;flex-direction:row;justify-content:center;align-items:flex-end;gap:2px;margin-bottom:20px;animation:bounce 2s infinite;flex-wrap:wrap;width:100%}.type-header h2{margin:0 0 8px;color:#4a5568;font-size:1.5em}.type-header p{color:#666;font-size:1em;margin:0}.type-options{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:20px}.type-option{background:#fffc;border:2px solid transparent;border-radius:10px;padding:15px 12px;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden}.type-option:hover{transform:translateY(-5px);box-shadow:0 10px 25px #00000026;border-color:#667eea4d}.type-option.selected{border-color:#667eea;background:#667eea1a;transform:translateY(-5px) scale(1.02);box-shadow:0 15px 30px #667eea4d}.type-icon{font-size:2.5em;margin-bottom:8px;height:50px;display:flex;align-items:center;justify-content:center}.type-option h3{margin:0 0 8px;color:#4a5568;font-size:1.1em}.type-option p{color:#666;margin-bottom:12px;font-weight:500;font-size:.9em}.type-option ul{list-style:none;padding:0;margin:0 0 10px;text-align:left}.type-option li{color:#555;font-size:.8em;position:relative;padding:3px 0 3px 16px}.type-option li:before{content:"✓";position:absolute;left:0;color:#48bb78;font-weight:700}.type-badge{position:absolute;top:12px;right:12px;background:linear-gradient(135deg,#48bb78,#38a169);color:#fff;padding:4px 10px;border-radius:15px;font-size:.7em;font-weight:600}.type-option.selected .type-badge{background:linear-gradient(135deg,#667eea,#764ba2)}.type-info{background:#0000000d;border-radius:10px;padding:18px;text-align:left}.type-info h4{margin:0 0 15px;color:#4a5568;text-align:center;font-size:1.1em}.rules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.rule-item{background:#ffffffb3;padding:12px;border-radius:6px;font-size:.85em}@media (max-width: 768px){.game-type-container{padding:15px}.game-type-card{padding:18px;max-width:420px}.user-status-header{flex-direction:column;gap:12px;align-items:stretch}.user-info{justify-content:center}.user-avatar{width:35px;height:35px;font-size:1em}.user-details{text-align:center}.header-actions{justify-content:center}.logout-btn,.back-btn{padding:10px 16px;font-size:.9em}.type-options{grid-template-columns:1fr;gap:12px}.type-option{padding:12px 10px}.rules-grid{grid-template-columns:1fr}}@media (max-width: 480px){.game-type-container{padding:10px}.game-type-card{padding:15px}.back-btn{top:12px;left:12px;padding:8px 12px;font-size:.9em}.type-header h2{font-size:1.3em}.type-icon{font-size:2em;height:40px}.suit-icon{width:25px;height:35px}.type-option{padding:20px;min-height:120px;display:flex;flex-direction:column;justify-content:center;align-items:center}.type-option h3{font-size:1.2em;margin:10px 0 0}.type-icon{font-size:2.5rem}}@media (max-width: 480px){.game-type-card{padding:15px;max-width:90%}.type-header h2{font-size:1.3rem;margin:10px 0}.type-header p{font-size:.9rem;margin:5px 0}.type-options{gap:15px;grid-template-columns:1fr 1fr}.type-option{padding:15px;min-height:100px}.type-icon{font-size:2rem}.type-option h3{font-size:1rem;margin:8px 0 0}}.dev-console{position:fixed;bottom:20px;right:20px;background:#000000e6;color:#fff;padding:15px;border-radius:8px;border:2px solid #ffc107;z-index:1000;min-width:250px;box-shadow:0 8px 32px #0000004d}.dev-info{font-size:.9em;color:#ffc107;margin-bottom:10px;font-weight:600;text-align:center}.dev-actions{display:flex;flex-direction:column;gap:8px}.dev-btn{padding:6px 12px;border:none;border-radius:4px;font-size:.8em;cursor:pointer;transition:all .2s ease;font-weight:500}.dev-btn.clear-session{background:#dc3545;color:#fff}.dev-btn.clear-session:hover{background:#c82333}.dev-btn.view-storage{background:#17a2b8;color:#fff}.dev-btn.view-storage:hover{background:#138496}.dev-btn.close-console{background:#6c757d;color:#fff}.dev-btn.close-console:hover{background:#545b62}.dev-tools,.clear-session-btn{display:none}.game-mode-container{min-height:100svh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:max(20px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px))}.game-mode-card{background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:15px;padding:20px;box-shadow:0 15px 30px #0000001a;max-width:450px;width:100%;text-align:center;color:#333;animation:slideUp .6s ease-out;position:relative}.mode-header{margin-bottom:15px}.game-icon{display:flex;flex-direction:row;justify-content:center;align-items:flex-end;gap:1px;margin-bottom:20px;animation:bounce 2s infinite;flex-wrap:wrap;width:100%}.suit-icon{width:30px;height:45px;object-fit:contain}.mode-header h2{margin:0 0 5px;color:#4a5568;font-size:1.4em}.mode-header p{color:#666;font-size:.9em;margin:0}.mode-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:15px}.mode-option{background:#fffc;border:2px solid transparent;border-radius:8px;padding:10px 8px;cursor:pointer;transition:all .3s ease;position:relative;overflow:hidden}.mode-option:hover{transform:translateY(-5px);box-shadow:0 10px 25px #00000026;border-color:#667eea4d}.mode-option.selected{border-color:#667eea;background:#667eea1a;transform:translateY(-5px) scale(1.02);box-shadow:0 15px 30px #667eea4d}.mode-icon{font-size:1.8em;margin-bottom:4px;height:45px;margin-top:5px;display:flex;align-items:center;justify-content:center}.mode-option h3{margin:0 0 5px;color:#4a5568;font-size:1em}.mode-option p{color:#666;margin-bottom:8px;font-weight:600;font-size:.8em}.mode-option ul{list-style:none;padding:0;margin:0 0 8px;text-align:left}.mode-option li{color:#555;font-size:.75em;position:relative;padding:2px 0 2px 14px}.mode-option li:before{content:"✓";position:absolute;left:0;color:#48bb78;font-weight:700}.mode-badge{position:absolute;top:2px;right:10px;background:linear-gradient(135deg,#48bb78,#38a169);color:#fff;padding:3px 8px;border-radius:15px;font-size:.7em;font-weight:600}.mode-option.selected .mode-badge{background:linear-gradient(135deg,#667eea,#764ba2)}.mode-info{background:#0000000d;border-radius:10px;padding:18px;text-align:left}.mode-info h4{margin:0 0 15px;color:#4a5568;text-align:center;font-size:1.1em}.rules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.rule-item{background:#ffffffb3;padding:12px;border-radius:6px;font-size:.8em}.rule-item strong{color:#4a5568}.back-btn{position:absolute;top:20px;left:20px;background:#ffffffe6;border:none;padding:10px 15px;border-radius:8px;cursor:pointer;font-weight:600;color:#4a5568;transition:all .3s ease;z-index:10}.mode-info{text-align:center}.mode-info h2{margin:0 0 10px;color:#4a5568}.teams-preview{display:flex;align-items:center;justify-content:center;gap:30px;margin:20px 0;padding:20px;background:#ffffff1a;border-radius:12px}.team h4{margin:0 0 15px;color:#4a5568;font-size:1.1em}.team-players{display:flex;flex-direction:column;gap:10px}.player-info{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#fffc;border-radius:8px}.player-avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:.9em;font-weight:700;color:#fff}@media (max-width: 768px){.game-mode-container{padding:10px}.game-mode-card{padding:20px}.mode-options{grid-template-columns:1fr;gap:15px}.mode-option{padding:12px 10px}.rules-grid{grid-template-columns:1fr}.teams-preview{flex-direction:column;gap:15px}}@media (max-width: 767px){.game-mode-container{padding:8px}.game-mode-card{padding:12px;margin:5px;max-height:80vh}.mode-header{margin-bottom:10px}.mode-header h2{font-size:1.2em;margin-bottom:3px}.mode-header p{font-size:.8em;margin:0}.game-icon{margin-top:12px;gap:0}.suit-icon{width:24px;height:36px}.mode-options{gap:8px;margin-bottom:8px}.mode-option{padding:6px 4px;border-radius:6px}.mode-icon{font-size:1.3em;height:30px;margin-bottom:3px}.mode-option h3{font-size:.85em;margin-bottom:2px}.mode-option p,.mode-option ul{display:none}}@media (max-width: 480px){.game-mode-container{padding:5px}.game-mode-card{padding:20px;margin:2px;max-height:85vh}.mode-header{margin-bottom:8px}.mode-header h2{font-size:1.1em;margin-bottom:2px}.mode-header p{font-size:.75em}.game-icon{margin-bottom:8px}.suit-icon{width:20px;height:30px}.mode-options{gap:6px;margin-bottom:6px}.mode-option{padding:5px 3px}.mode-icon{font-size:1.1em;height:25px;margin-bottom:2px}.mode-option h3{font-size:.8em;margin-bottom:1px}.mode-badge{font-size:.6em;padding:2px 6px;top:6px;right:6px}.mode-info{padding:12px;border-radius:6px}.rules-grid{gap:10px}.rule-item{padding:8px;border-radius:6px}.rule-item h4{font-size:.9em;margin-bottom:4px}.rule-item p{font-size:.8em}.start-game-section{margin-top:15px}.start-game-btn{padding:10px 20px;font-size:.9em}}.matchmaking-container{min-height:100svh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:max(20px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px))}.matchmaking-card{background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;padding:12px;box-shadow:0 12px 25px #0000001a;max-width:400px;width:100%;text-align:center;color:#333;animation:slideUp .6s ease-out;max-height:90vh;overflow-y:auto}.user-info{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:10px;background:#667eea1a;border-radius:10px;text-align:left}.user-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:1.1em;font-weight:700;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.3)}.user-details h2{margin:0 0 2px;font-size:1.05em;color:#4a5568}.user-type{font-size:.8em;color:#666;background:#ffffffb3;padding:2px 5px;border-radius:8px}.matchmaking-status{margin:12px 0;min-height:100px;display:flex;align-items:center;justify-content:center}.idle-state{text-align:center}.suit-icon{width:30px;height:45px;max-width:14%;min-width:20px;object-fit:contain;display:block}.idle-state h3{margin:0 0 5px;color:#4a5568;font-size:1.1em}.idle-state p{color:#666;margin-bottom:12px;font-size:.9em}.find-match-btn{padding:8px 16px;background:linear-gradient(135deg,#48bb78,#38a169);color:#fff;border:none;border-radius:6px;font-size:.9em;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 3px 10px #48bb784d}.find-match-btn:hover{transform:translateY(-2px);box-shadow:0 8px 20px #48bb7866}.searching-state{text-align:center}.loading-spinner{width:40px;height:40px;border:3px solid rgba(102,126,234,.2);border-top:3px solid #667eea;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 10px}.searching-state h3{margin:0 0 4px;color:#4a5568;font-size:1.05em}.searching-state p{color:#666;margin-bottom:8px}.queue-info{background:#ffc1071a;border:1px solid rgba(255,193,7,.3);padding:5px;border-radius:5px;margin:8px 0;font-weight:600;color:#b7791f;font-size:.8em}.cancel-btn{padding:5px 10px;background:#e53e3e;color:#fff;border:none;border-radius:5px;cursor:pointer;transition:all .3s ease;margin-top:5px;font-size:.85em}.cancel-btn:hover{background:#c53030;transform:translateY(-1px)}.found-state{text-align:center}.success-icon{font-size:2.5em;margin-bottom:10px;animation:pulse 1.5s infinite}.found-state h3{margin:0 0 10px;color:#38a169;font-size:1.15em}.opponent-info{display:flex;align-items:center;justify-content:center;gap:8px;margin:10px 0;padding:8px;background:#38a1691a;border-radius:6px;border:1px solid rgba(56,161,105,.2)}.opponent-avatar{width:35px;height:35px;border-radius:50%;background:linear-gradient(135deg,#38a169,#48bb78);display:flex;align-items:center;justify-content:center;font-size:.95em;font-weight:700;color:#fff}.opponent-name{font-size:.95em;font-weight:600;color:#2d3748}.starting-animation{margin-top:10px}.dots{display:flex;justify-content:center;gap:8px}.dots span{width:8px;height:8px;border-radius:50%;background:#667eea;animation:wave 1.4s infinite ease-in-out}.dots span:nth-child(2){animation-delay:.2s}.dots span:nth-child(3){animation-delay:.4s}.matchmaking-info{margin-top:12px;padding:10px;background:#0000000d;border-radius:6px;text-align:left}.matchmaking-info h4{margin:0 0 8px;color:#4a5568;text-align:center;font-size:.9em}.matchmaking-info ul{list-style:none;padding:0;margin:0}.matchmaking-info li{padding:4px 0;color:#666;font-size:.8em;border-bottom:1px solid rgba(0,0,0,.1)}.matchmaking-info li:last-child{border-bottom:none}.status-message{margin-top:12px;padding:8px;background:#38a1691a;border:1px solid rgba(56,161,105,.2);border-radius:6px;color:#2f855a;font-weight:500}.back-btn{position:absolute;top:10px;left:10px;background:#ffffffe6;border:none;padding:10px 15px;border-radius:8px;cursor:pointer;font-weight:600;color:#4a5568;transition:all .3s ease;box-shadow:0 4px 12px #0000001a}.back-btn:hover{background:#fff;transform:translate(-2px)}.mode-header{position:relative;margin-bottom:12px}.mode-info h2{margin:0 0 5px;color:#4a5568}.mode-info p{color:#666;margin:0}.teams-preview{display:flex;align-items:center;justify-content:center;gap:20px;margin:12px 0;padding:12px;background:#ffffff1a;border-radius:8px}.team{text-align:center}.team h4{margin:0 0 10px;color:#4a5568;font-size:.95em}.team-players{display:flex;flex-direction:column;gap:6px}.player-info{display:flex;align-items:center;gap:6px;padding:5px 8px;background:#fffc;border-radius:5px;color:#2d3748}.player-avatar{width:22px;height:22px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:.75em;font-weight:700;color:#fff}.vs-divider{font-size:1.5em;font-weight:700;color:#4a5568}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes wave{0%,60%,to{transform:initial}30%{transform:translateY(-15px)}}@media (max-width: 768px){.matchmaking-container{padding:8px}.matchmaking-card{padding:10px;max-height:85vh}.user-info{flex-direction:row!important;text-align:left!important;gap:10px;padding:8px;margin-bottom:8px}.user-avatar{width:32px;height:32px;font-size:.9em;flex-shrink:0}.user-details{text-align:left!important;flex:1}.user-details h2{font-size:.95em;margin:0;line-height:1.2}.user-type{font-size:.75em;padding:1px 4px;margin-top:2px;display:inline-block}.matchmaking-status{min-height:60px;margin:8px 0}.idle-state h3{font-size:1em;margin:0 0 4px}.idle-state p{font-size:.85em;margin-bottom:8px}.find-match-btn{padding:6px 14px;font-size:.9em}.teams-preview{flex-direction:column;gap:10px;margin:8px 0}.game-info{margin:8px 0;padding:8px}.game-info h4{font-size:.9em;margin-bottom:6px}.game-info ul{margin:4px 0}.game-info li{font-size:.8em;padding:2px 0}}@media (max-width: 480px){.matchmaking-container{padding:5px}.matchmaking-card{padding:8px;margin:2px;max-height:88vh}.user-info{padding:6px;margin-bottom:6px}.user-avatar{width:28px;height:28px;font-size:.8em}.user-details h2{font-size:.9em}.user-type{font-size:.7em}.matchmaking-status{min-height:50px;margin:6px 0}.idle-state h3{font-size:.95em;margin:0 0 3px}.idle-state p{font-size:.8em;margin-bottom:6px}.find-match-btn{padding:5px 12px;font-size:.85em}.teams-preview{gap:8px;margin:6px 0}.team{padding:6px}.team h4{font-size:.85em;margin-bottom:4px}.player{padding:4px;margin:2px 0}.player-name{font-size:.8em}.waiting-player{font-size:.75em}.game-info{margin:6px 0;padding:6px}.game-info h4{font-size:.85em;margin-bottom:4px}.game-info li{font-size:.75em;padding:1px 0}.suit-icon{width:24px;height:36px}}.idle-state h3{font-size:.95em;margin:0 0 3px}.idle-state p{font-size:.8em;margin-bottom:6px}.find-match-btn{padding:5px 12px;font-size:.85em}.searching-state h3{font-size:1.1em}.found-state h3{font-size:1.2em}.loading-spinner{width:45px;height:45px}.success-icon{font-size:3em}.opponent-info{gap:10px;padding:10px}.opponent-avatar{width:40px;height:40px;font-size:1em}.opponent-name{font-size:1em}.matchmaking-info{padding:12px;margin-top:15px}.matchmaking-info h4{margin-bottom:10px;font-size:1em}.matchmaking-info li{padding:5px 0;font-size:.85em}.teams-preview{gap:12px;padding:12px}.team h4{font-size:.95em;margin-bottom:10px}.player-info{padding:5px 8px;gap:6px;color:#2d3748}.player-avatar{width:24px;height:24px;font-size:.75em}.card{position:relative;cursor:pointer;transition:all .3s ease;border-radius:8px;overflow:visible}.card-image{width:80px;height:150px;object-fit:cover;border-radius:8px;transition:all .3s ease;display:block}.card-medium .card-image,.card-large .card-image{width:80px;height:150px}.card-played .card-image{width:45px;height:80px}.card-small .card-image{width:60px;height:110px}.card-playable:hover:not(.card-selected){transform:translateY(-12px) scale(1.05)}.card:active,.card:focus{transform:none!important}.card-playable:not(:hover){transition:transform .2s ease-out}.card-selected{transform:translateY(-20px) scale(1.08)}.card-selected:after{content:"";position:absolute;inset:-4px;background:linear-gradient(45deg,orange,#ff0);border-radius:12px;z-index:-1;opacity:.6;animation:glow 1.5s infinite alternate}@keyframes glow{0%{opacity:.6}to{opacity:.5}}.card:not(.card-playable){opacity:.7;cursor:default;position:relative}.card:not(.card-playable):hover{transform:none}.card:not(.card-playable):before{content:"";position:absolute;inset:0;background-color:#80808066;border-radius:8px;z-index:1;pointer-events:none}@media (max-width: 768px){.card-played .card-image{width:35px;height:65px}}@media (max-width: 480px){.card-played .card-image{width:30px;height:55px}}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;overflow:hidden;padding:0;margin:0}.game-wrapper{width:100vw;height:100svh;background:linear-gradient(135deg,#0f5132,#198754,#0f5132);display:flex;flex-direction:column;position:relative;overflow:hidden;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}.game-header{background:#fffffff2;padding:8px 16px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #0000001a;z-index:10;position:relative;min-height:60px}.game-title{font-size:1.5rem;font-weight:700;color:#0f5132;margin:0}.title-suit-icon{height:1.7em;width:auto;vertical-align:middle;margin-right:.4em;margin-bottom:.15em;display:inline-block}.players-names{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;font-size:.9rem;font-weight:600;z-index:5}.player-name-simple{color:#198754;transition:all .2s ease}.player-name-simple.active{color:#0f5132;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.1)}.opponent-name-simple{color:#dc3545;transition:all .2s ease}.opponent-name-simple.active{color:#c82333;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.1)}.vs-simple{color:#666;font-size:.8rem;font-weight:500}.desktop-controls{display:flex;gap:12px}.game-btn{padding:8px 16px;border:none;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease}.btn-primary{background:#198754;color:#fff}.btn-primary:hover{background:#20a366}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#5c636a}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover{background:#c82333}.mobile-header-buttons{display:none}.floating-btn{width:40px;height:40px;border-radius:50%;border:none;cursor:pointer;font-size:1.2rem;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #0003;transition:all .2s ease;margin:0 4px}.details-btn{background:#198754;color:#fff}.details-btn:hover{background:#20a366;transform:scale(1.05)}.exit-btn{background:#dc3545;color:#fff}.exit-btn:hover{background:#c82333;transform:scale(1.05)}.selection-info{position:absolute;top:80px;right:20px;background:#28a745f2;color:#fff;padding:8px 12px;border-radius:15px;text-align:center;font-size:.8rem;font-weight:500;box-shadow:0 2px 8px #0000004d;border:2px solid #28a745;max-width:250px;line-height:1.2;animation:slideInRight .3s ease;z-index:15}.selection-info small{display:block;margin-top:2px;opacity:.9;font-size:.75rem}@keyframes statusFade{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.game-area{flex:1;display:flex;flex-direction:column;justify-content:flex-start;padding:24px;position:relative;overflow:hidden;gap:20px}@media (max-width: 1199px) and (min-width: 900px){.game-area{padding:20px}}@media (max-width: 899px) and (min-width: 700px){.game-area{padding:16px}}@media (max-width: 699px) and (min-width: 500px){.game-area{padding:12px}}@media (max-width: 499px){.game-area{padding:8px}}@media (max-height: 700px){.game-area{padding:8px}}@media (max-height: 600px){.game-area{padding:6px}}.opponent-section{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:10px}.opponent-avatar-display{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px;background:#dc354533;border:2px solid rgba(220,53,69,.5);border-radius:8px;transition:all .3s ease}.opponent-avatar-display:has(.turn-indicator){box-shadow:0 0 15px #ffc107cc;border-color:#ffc107}.player-avatar{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.opponent-name{color:#fff;font-size:.85rem;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.3);text-align:center;line-height:1}.opponent-cards-indicator{display:flex;align-items:center;gap:2px;font-size:11px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.turn-indicator{color:#ffc107;font-weight:700}.play-area{display:flex;justify-content:center;align-items:flex-start;min-height:200px;position:relative;gap:60px}.play-area.treseta-layout{justify-content:center;max-width:400px;margin:0 auto;gap:0}.played-cards-section{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:12px;min-width:200px;position:relative}.played-cards-label{color:#fff;font-size:.9rem;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.3)}.played-cards-area{display:flex;gap:16px;min-height:110px;align-items:center;justify-content:center;background:#ffffff1a;border:2px dashed rgba(255,255,255,.3);border-radius:12px;padding:16px;min-width:180px}.deck-trump-section{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:12px;min-width:100px;position:relative}.deck-label{color:#fff;font-size:.9rem;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.3)}.deck-trump-stack{position:relative;width:100px;height:120px}.trump-card{position:absolute;top:10px;left:15px;z-index:1}.deck-card{position:absolute;top:-20px;left:15px;z-index:2;transform:rotate(90deg);width:70px;height:120px}.player-section{display:flex;flex-direction:column;align-items:center;gap:16px;min-height:280px;position:relative;bottom:25px}@media (min-height: 820px){.player-section{margin-top:auto;bottom:50px}.player-status-combined{font-size:.7rem;padding:12px 24px;margin-bottom:12px}}.game-status{background:#fffffff2;color:#0f5132;padding:8px 16px;border-radius:20px;font-size:.5rem;font-weight:600;box-shadow:0 2px 8px #0003;text-align:center;border:2px solid rgba(15,81,50,.2);animation:statusFade .3s ease;max-width:350px;margin-bottom:8px}.player-status-combined{background:#fffffff2;color:#0f5132;padding:10px 20px;border-radius:20px;font-size:.7rem;font-weight:600;box-shadow:0 2px 8px #0003;text-align:center;border:2px solid rgba(15,81,50,.2);animation:statusFade .3s ease;max-width:450px;margin-bottom:8px}.player-label{color:#fff;font-size:1.1rem;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.3);margin-top:-16px}.points-display{color:gold;font-size:.95em;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.5)}.player-cards{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:12px}.scores-overlay{position:absolute;inset:0;background:#000c;display:flex;justify-content:center;align-items:center;z-index:20}.scores-modal{background:#fff;border-radius:12px;padding:32px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;color:#000}.scores-header{text-align:center;margin-bottom:24px}.scores-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:32px;align-items:start}.player-stats{text-align:center}.player-stats h3{color:#0f5132;margin-bottom:16px}.stat-item{display:flex;justify-content:space-between;margin-bottom:8px;padding:4px 0;border-bottom:1px solid #eee}.trump-info{text-align:center;padding:0 16px}.trump-info h3{color:#0f5132;margin-bottom:16px}.close-scores{width:100%;margin-top:24px;padding:12px;background:#6c757d;color:#fff;border:none;border-radius:6px;font-size:1rem;cursor:pointer}.close-scores:hover{background:#5c636a}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@media (max-width: 768px){.game-header{padding:8px 16px}.game-title{font-size:1.2rem}.desktop-controls,.players-names{display:none}.mobile-header-buttons{display:flex;align-items:center;gap:8px}.game-status{font-size:.8rem;padding:6px 12px;max-width:90vw;margin-bottom:6px}.player-status-combined{font-size:.6rem;padding:8px 16px;max-width:95vw;margin-bottom:5px}.selection-info{position:fixed;inset:auto auto 20px 50%;transform:translate(-50%);max-width:90vw;font-size:.75rem;padding:6px 10px;border-radius:20px}.play-area{flex-direction:row;justify-content:center;align-items:flex-start;gap:20px;min-height:160px}.played-cards-section{flex:1;min-width:120px;max-width:65%}.played-cards-area{min-width:100px;padding:12px;min-height:80px;gap:12px}.deck-trump-section{flex:0 0 auto;min-width:80px}.deck-trump-section.treseta-deck{position:absolute;top:50%;right:50px;transform:translateY(-50%);z-index:3}.play-area.treseta-layout{gap:0;max-width:100%}.deck-trump-stack{width:80px;height:120px}.trump-card{top:8px;left:-5px}.deck-card{left:10px;width:60px;height:110px}.player-cards,.opponent-cards{gap:6px;flex-wrap:wrap;max-width:100%}.scores-grid{grid-template-columns:1fr;gap:24px}.game-area{gap:10px;padding:8px}.opponent-section{margin-top:5px}.player-section{margin-top:30px}}@media (max-width: 480px){.played-cards-area{min-width:90px;padding:10px;min-height:70px;gap:10px}.game-area{gap:5px;padding:6px}.opponent-section{margin-top:-5px}.play-area{gap:30px}.floating-btn{width:36px;height:36px;font-size:1rem}.game-status{font-size:.75rem;padding:5px 10px}.selection-info{font-size:.7rem;padding:5px 8px}}@media (max-height: 500px) and (orientation: landscape){.opponent-section{gap:6px}.play-area{min-height:120px;gap:15px}.player-section{gap:8px;min-height:200px}.game-status{font-size:.75rem;padding:4px 8px;margin-bottom:4px}}.card-pickup-overlay{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;z-index:1000;pointer-events:none}.card-pickup-animation{background:#fffffff2;border-radius:16px;padding:24px;box-shadow:0 8px 32px #0000004d;border:3px solid #198754;animation:pickupSlideIn .4s ease-out;max-width:90vw;max-height:80vh}@keyframes pickupSlideIn{0%{transform:scale(.8) translateY(-50px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.pickup-header{text-align:center;margin-bottom:20px}.pickup-header h3{color:#0f5132;font-size:1.2rem;margin:0}.pickup-cards{display:flex;gap:24px;justify-content:center;align-items:center;margin-bottom:20px;flex-wrap:wrap}.pickup-player{display:flex;flex-direction:column;align-items:center;gap:8px}.pickup-label{font-weight:600;color:#0f5132;font-size:1rem}.pickup-winner{text-align:center;font-size:1.1rem;font-weight:600;color:#0f5132;padding:12px;background:#1987541a;border-radius:8px;border:2px solid rgba(25,135,84,.3)}@media (max-width: 768px){.card-pickup-animation{padding:16px;margin:16px}.pickup-header h3{font-size:1rem}.pickup-cards{gap:16px;margin-bottom:16px}.pickup-winner{font-size:1rem;padding:8px}}.final-score-overlay{position:fixed;top:0;left:0;width:100vw;height:100svh;background:#000000e6;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .5s ease-in-out}.final-score-container{background:linear-gradient(135deg,#fff,#f8f9fa);border-radius:20px;padding:40px;box-shadow:0 20px 40px #0000004d;text-align:center;max-width:600px;width:90%;animation:slideUp .6s ease-out}.final-score-header{margin-bottom:30px}.final-score-header h2{color:#0f5132;font-size:2.5rem;margin-bottom:10px;font-weight:700}.result-emoji{font-size:4rem;margin-bottom:20px;animation:bounce 1s ease-in-out}.final-scores-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:30px;align-items:center;margin-bottom:30px}.final-player-score{background:#0f51321a;border-radius:15px;padding:25px;position:relative;border:2px solid transparent;transition:all .3s ease}.final-player-score .player-name{font-size:1.3rem;font-weight:700;color:#0f5132;margin-bottom:10px}.final-player-score .player-points{font-size:2rem;font-weight:700;color:#198754;margin-bottom:5px}.final-player-score .player-cards{font-size:1rem;color:#6c757d;margin-bottom:10px}.vs-divider{font-size:1.5rem;font-weight:700;color:#6c757d;align-self:center}.winner-badge{background:linear-gradient(135deg,gold,#ffed4a);color:#0f5132;padding:8px 16px;border-radius:20px;font-weight:700;font-size:.9rem;margin-top:10px;border:2px solid #ffd700;animation:glow 2s ease-in-out infinite alternate}.game-result{background:#6c757d1a;border-radius:10px;padding:20px;margin-bottom:30px}.game-result p{font-size:1.2rem;color:#495057;margin:0}.final-score-actions{display:flex;gap:20px;justify-content:center;flex-wrap:wrap}.btn-primary-large{background:linear-gradient(135deg,#198754,#28a745);color:#fff;border:none;padding:15px 30px;border-radius:10px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #1987544d}.btn-primary-large:hover{transform:translateY(-2px);box-shadow:0 6px 20px #19875466;background:linear-gradient(135deg,#157347,#198754)}.btn-secondary-large{background:linear-gradient(135deg,#6c757d,#8d969e);color:#fff;border:none;padding:15px 30px;border-radius:10px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #6c757d4d}.btn-secondary-large:hover{transform:translateY(-2px);box-shadow:0 6px 20px #6c757d66;background:linear-gradient(135deg,#545b62,#6c757d)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@keyframes glow{0%{box-shadow:0 0 5px gold,0 0 10px gold,0 0 15px gold}to{box-shadow:0 0 10px gold,0 0 20px gold,0 0 30px gold}}@media (max-width: 768px){.final-score-container{padding:15px;margin:10px;max-width:95%;width:95%;max-height:90vh;overflow-y:auto}.final-score-header{margin-bottom:15px}.final-score-header h2{font-size:1.4rem;margin-bottom:5px}.result-emoji{font-size:2.5rem;margin-bottom:10px}.final-scores-grid{grid-template-columns:1fr;gap:12px;margin-bottom:15px}.vs-divider{order:2;font-size:1rem;margin:5px 0}.final-player-score{padding:12px;border-radius:10px}.final-player-score .player-name{font-size:1rem;margin-bottom:6px}.final-player-score .player-points{font-size:1.3rem;margin-bottom:4px}.final-player-score .player-cards{font-size:.85rem;margin-bottom:6px}.winner-badge{padding:4px 12px;font-size:.75rem;margin-top:6px}.game-result{padding:12px;margin-bottom:15px}.game-result p{font-size:.95rem}.final-score-actions{flex-direction:column;gap:10px}.btn-primary-large,.btn-secondary-large{width:100%;padding:10px 16px;font-size:.95rem}.opponent-avatar-display{gap:3px;padding:4px;border-radius:6px}.player-avatar{width:30px;height:30px;font-size:12px}.opponent-name{font-size:.75rem}.opponent-cards-indicator{font-size:10px;gap:1px}}.game-2v2 .game-header{padding:8px 16px}.game-2v2 .desktop-controls{z-index:15;position:relative}.team-scores{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:20px;font-weight:600;z-index:5}.team-score{display:flex;flex-direction:column;align-items:center;padding:4px 10px;border-radius:12px;background:#ffffff1a;color:#fff;transition:all .3s ease;color:#000}.team-score.my-team{background:#28a745cc}.team-label{font-size:.8rem;opacity:.9}.team-points{font-size:1.2rem;font-weight:700}.vs-divider{color:#000;font-size:.9rem;font-weight:500}.player-icon-display{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;background:#ffffff1a;border-radius:12px;transition:all .3s ease}.player-icon-display.teammate{background:#28a74533;border:2px solid rgba(40,167,69,.5)}.player-icon-display.opponent{background:#dc354533;border:2px solid rgba(220,53,69,.5)}.player-icon-display.current-turn{box-shadow:0 0 20px #ffc107cc;border-color:#ffc107}.player-avatar{width:60px;height:60px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.player-avatar.teammate{background:linear-gradient(135deg,#28a745,#20c997)}.player-avatar.opponent{background:linear-gradient(135deg,#dc3545,#fd7e14)}.player-cards-indicator{display:flex;align-items:center;gap:4px;font-size:14px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}.cards-icon{width:18px;height:18px;background:#ffc107;border-radius:2px;display:flex;align-items:center;justify-content:center;font-size:10px;color:#000;font-weight:700}.game-area-2v2{flex:1;display:grid;grid-template-rows:auto 1fr auto;padding:15px;gap:15px;overflow:hidden;transform:scale(.85);transform-origin:center}.player-position{display:flex;flex-direction:column;align-items:center;gap:10px}.top-player{justify-self:center;margin-bottom:20px}.bottom-player{justify-self:center;min-height:180px}.left-player,.right-player{display:flex;align-items:center;justify-content:center}.middle-section{display:grid;grid-template-columns:1fr 1fr auto 1fr;gap:20px;align-items:center;min-height:300px;position:relative}.middle-section.no-deck{grid-template-columns:1fr 2fr 1fr}.left-player,.right-player{display:flex;flex-direction:column;align-items:center;gap:10px;position:relative;height:250px;justify-content:center}.game-2v2 .left-player .opponent-cards.vertical,.game-2v2 .right-player .opponent-cards.vertical{position:absolute;top:50%;left:50%;display:flex!important;flex-direction:row!important;gap:-5px;flex-wrap:nowrap;align-items:center;justify-content:center}.game-2v2 .left-player .opponent-cards.vertical{transform:translate(-50%,-50%) rotate(90deg);transform-origin:center center}.game-2v2 .right-player .opponent-cards.vertical{transform:translate(-50%,-50%) rotate(-90deg);transform-origin:center center}.center-area{display:flex;flex-direction:row;align-items:center;gap:30px;min-height:250px;justify-content:center}.game-2v2 .deck-trump-section{display:flex;flex-direction:column;align-items:center;gap:8px}.game-2v2 .played-cards-section{display:flex;flex-direction:column;align-items:center;gap:10px}.game-2v2 .played-cards-label{font-size:.9rem;color:#fffc;text-align:center;margin-bottom:5px}.game-2v2 .deck-trump-stack{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px}.game-2v2 .trump-card{position:relative;z-index:1}.game-2v2 .deck-card{position:relative;z-index:2;top:-20px}.game-2v2 .deck-label{font-size:.9rem;color:#fffc;text-align:center;margin-bottom:5px}.played-cards-cross{position:relative;width:400px;height:250px;display:flex;align-items:center;justify-content:center;background:#ffffff1a;border:2px dashed rgba(255,255,255,.3);border-radius:12px}.played-card-position{position:absolute;display:flex;flex-direction:column;align-items:center;z-index:11}.played-card-position.top{top:20px;left:50%;transform:translate(-50%)}.played-card-position.right{right:20px;top:50%;transform:translateY(-50%)}.played-card-position.bottom{bottom:20px;left:50%;transform:translate(-50%)}.played-card-position.left{left:20px;top:50%;transform:translateY(-50%)}.played-card-position.center{top:50%;left:50%;transform:translate(-50%,-50%)}.card-player-label{margin-top:5px;font-size:.7em;color:#fffc;background:#00000080;padding:2px 6px;border-radius:4px;text-align:center}@media (max-width: 768px){.played-cards-cross{width:300px;height:300px}.played-card-position.top{top:15px}.played-card-position.right{right:15px}.played-card-position.bottom{bottom:15px}.played-card-position.left{left:15px}}@media (max-width: 476px){.team-scores{display:none!important}.game-2v2 .desktop-controls .game-btn{padding:6px 8px;font-size:1.2rem;min-width:36px;text-align:center}.game-2v2 .desktop-controls .btn-primary:before{content:"🔍"}.game-2v2 .desktop-controls .btn-danger:before{content:"🚪"}.game-2v2 .desktop-controls .btn-secondary:before{content:"↩️"}.game-2v2 .desktop-controls .game-btn{text-indent:-9999px;overflow:hidden;position:relative}.game-2v2 .desktop-controls .game-btn:before{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-indent:0}}@media (max-width: 480px){.played-cards-cross{width:190px;height:190px}.played-card-position.top{top:10px}.played-card-position.right{right:10px}.played-card-position.bottom{bottom:10px}.played-card-position.left{left:10px}}.played-cards-area-2v2{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:20px;min-height:180px;min-width:320px;width:100%;max-width:400px;align-items:center;justify-items:center;background:#ffffff1a;border:2px dashed rgba(255,255,255,.3);border-radius:12px;padding:25px}.player-info{text-align:center;padding:8px 12px;border-radius:8px;background:#ffffff1a;color:#fff;font-size:.9rem;min-width:120px;position:relative;z-index:10;color:#4a5568}.player-info.teammate{background:#28a7454d;border:1px solid rgba(40,167,69,.5)}.player-info.opponent{background:#dc35454d;border:1px solid rgba(220,53,69,.5);top:-230px}.player-info.my-player{background:#28a74580;border:2px solid rgba(40,167,69,.8);font-weight:600}.player-name{font-weight:600;margin-bottom:4px}.player-cards-count{font-size:.8rem;opacity:.9}.teams-scores-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:32px;align-items:start}.team-stats{text-align:center}.team-stats h3{color:#0f5132;margin-bottom:16px}.team-players{margin-top:16px;color:#4a5568}.player-stat{display:flex;justify-content:space-between;margin-bottom:8px;padding:4px 0;border-bottom:1px solid #eee;font-size:.9rem}@media (min-width: 1920px){.middle-section{grid-template-columns:1fr 1fr 120px 1fr;gap:25px}.played-cards-area-2v2{min-width:400px;min-height:200px;gap:25px;padding:30px}.center-area{gap:40px}}@media (max-width: 1919px) and (min-width: 1366px){.middle-section{grid-template-columns:1fr 1fr 100px 1fr;gap:20px}.played-cards-area-2v2{min-width:280px;min-height:160px;gap:15px;padding:20px}.center-area{gap:25px}.player-info{font-size:.8rem;padding:6px 10px;min-width:100px}.selection-info{position:fixed;top:80px;right:20px;background:#28a745f2;color:#fff;padding:8px 12px;border-radius:15px;text-align:center;font-size:.8rem;font-weight:500;box-shadow:0 2px 8px #0000004d;border:2px solid #28a745;max-width:250px;line-height:1.2;animation:slideInRight .3s ease;z-index:15}.player-info.my-player{bottom:10px}}@media (max-width: 1365px) and (min-width: 1024px){.middle-section{grid-template-columns:80px 1fr 80px 80px;gap:15px}.played-cards-area-2v2{min-width:240px;min-height:140px;gap:12px;padding:18px}.center-area{gap:20px}.player-info{font-size:.75rem;padding:5px 8px;min-width:90px}}@media (max-width: 1023px) and (min-width: 768px){.team-scores{display:none}.game-area-2v2{padding:10px;gap:12px;transform:scale(.9)}.middle-section{grid-template-columns:70px 1fr 70px 70px;gap:10px;min-height:200px}.left-player,.right-player{height:180px}.played-cards-area-2v2{min-width:200px;min-height:120px;gap:10px;padding:15px}.center-area{gap:15px}.player-info{font-size:.7rem;padding:4px 6px;min-width:70px}}@media (max-width: 767px){.team-scores{position:static;transform:none;gap:12px;font-size:.8rem;margin:4px 0}.team-score{padding:2px 6px;font-size:.75rem}.team-points{font-size:1rem}.vs-divider{font-size:.75rem}.game-2v2 .desktop-controls{display:flex!important;gap:8px;flex-wrap:wrap;justify-content:flex-end}.game-area-2v2{padding:8px;gap:8px;transform:scale(.95)}.middle-section{display:grid;grid-template-columns:80px 1fr 80px;gap:12px;min-height:180px;justify-items:center;top:-30px}.left-player,.right-player{height:140px;justify-content:center}.left-player .player-info{position:absolute;top:-105px;left:35px;transform:translate(-50%);font-size:.65rem;padding:3px 6px;min-width:70px;white-space:nowrap}.right-player .player-info{position:absolute;top:-105px;left:-29px;transform:translate(-50%);font-size:.65rem;padding:3px 6px;min-width:70px;white-space:nowrap}.center-area{display:flex;flex-direction:column;align-items:center;gap:12px;min-height:160px;justify-content:center}.played-cards-section{order:1}.played-cards-area-2v2{min-width:160px;min-height:100px;gap:8px;padding:12px;max-width:220px}.played-cards-label{font-size:.7rem;margin-bottom:4px}.game-2v2 .deck-trump-section{order:2;min-width:60px;gap:4px}.game-2v2 .deck-trump-stack{width:60px;height:90px;position:relative;top:-60px;right:-40px}.game-2v2 .trump-card{position:absolute;top:8px;left:5px;z-index:1}.game-2v2 .deck-card{position:absolute;top:-15px;left:-20px;z-index:2;transform:rotate(90deg)}.game-2v2 .deck-label{font-size:.65rem;margin-bottom:3px}.bottom-player{min-height:140px;gap:6px}.game-status{font-size:.75rem;padding:4px 8px;margin-bottom:4px;max-width:90vw;z-index:1}.player-cards{gap:4px;margin-top:2px}.selection-info{position:fixed;bottom:200px;left:85%;transform:translate(-50%);font-size:.7rem;padding:4px 8px;max-width:90vw;border-radius:15px}.game-2v2 .card-medium .card-image,.game-2v2 .card-small .card-image{width:30px;height:60px}.teams-scores-grid{grid-template-columns:1fr;gap:16px}.scores-modal{padding:20px;max-width:95vw}.player-position.bottom-player{position:relative;bottom:75px}}.game-2v2 .card-small .card-image{width:55px;height:100px}.game-2v2 .card-medium .card-image,.game-2v2 .card-large .card-image{width:80px;height:150px}@media (max-width: 1900px) and (min-width: 1200px){.game-2v2 .card-medium .card-image{width:60px;height:110px}.game-2v2 .card-small .card-image{width:40px;height:75px}.middle-section{top:-50px}.player-info.opponent{top:-160px}.player-position.bottom-player{position:relative;top:-50px}.player-position.top-player{position:relative;top:-10px}}@media (max-width: 768px){.player-icon-display{padding:8px;gap:6px}.player-avatar{width:45px;height:45px;font-size:18px}.player-name{font-size:12px;color:#fff}.player-cards-indicator{font-size:11px}.cards-icon{width:14px;height:14px;font-size:8px}}@media (max-width: 767px) and (max-height: 850px){.game-2v2 .card-medium .card-image,.game-2v2 .card-small .card-image{width:55px;height:105px}.card-played .card-image{width:35px;height:65px}.player-icon-display{padding:6px;gap:4px}.player-avatar{width:35px;height:35px;font-size:14px}.player-name{font-size:10px;max-width:60px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:#fff}.player-cards-indicator{font-size:9px}.cards-icon{width:12px;height:12px;font-size:7px}.middle-section.no-deck{grid-template-columns:1fr 3fr 1fr;gap:15px;margin-bottom:150px;top:25px}.deck-trump-stack{width:45px;height:70px}.game-2v2 .trump-card{top:60px;left:-50px}.game-2v2 .deck-card{position:absolute;top:45px;left:-70px;z-index:2;transform:rotate(90deg)}.played-cards-area-2v2{min-width:140px;min-height:80px;gap:6px;padding:8px}.middle-section{min-height:140px}.left-player,.right-player{height:110px}.right-player .player-info{position:absolute;top:-65px;left:-29px;transform:translate(-50%);font-size:.65rem;padding:3px 6px;min-width:70px;white-space:nowrap}.left-player .player-info{position:absolute;top:-65px;left:35px;transform:translate(-50%);font-size:.65rem;padding:3px 6px;min-width:70px;white-space:nowrap}.selection-info{position:fixed;bottom:175px;margin-left:0;transform:translate(-50%);font-size:.5rem;padding:1px 2px;max-width:100vw;border-radius:15px}.selection-info small{display:block;margin-top:2px;opacity:.9;font-size:.5rem}}@media (max-height: 670px){.game-2v2 .card-medium .card-image,.game-2v2 .card-small .card-image{width:42px;height:80px}}.final-teams-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:30px;align-items:center;margin-bottom:30px}.final-team-score{background:#0f51321a;border-radius:15px;padding:25px;position:relative;border:2px solid transparent;transition:all .3s ease}.team-header{margin-bottom:15px}.team-header h3{font-size:1.5rem;font-weight:700;color:#0f5132;margin-bottom:10px}.final-team-score .team-points{font-size:2rem;font-weight:700;color:#198754;margin-bottom:10px}.final-team-score .team-cards{font-size:1rem;color:#6c757d;margin-bottom:15px}.team-players{display:flex;flex-direction:column;gap:5px}.team-player{font-size:.9rem;color:#495057;padding:4px 8px;border-radius:6px;background:#6c757d1a}.team-player.current-player{background:#19875433;color:#0f5132;font-weight:700}@media (max-width: 768px){.final-teams-grid{grid-template-columns:1fr;gap:20px}.vs-divider{order:2;font-size:1.2rem}.final-team-score{padding:20px}.final-team-score .team-points{font-size:1.5rem}.team-header h3{font-size:1.2rem}}.reconnect-overlay{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}.reconnect-dialog{background:#fffffff2;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:15px;padding:25px;box-shadow:0 20px 40px #0003;max-width:450px;width:100%;text-align:center;color:#333;animation:slideUp .3s ease-out}.reconnect-header{margin-bottom:20px}.reconnect-header h2{margin:0 0 10px;color:#4a5568;font-size:1.3em}.connection-status{padding:6px 12px;border-radius:20px;font-size:.85em;font-weight:600;display:inline-block}.connection-status:contains("✅"){background:#28a74533;color:#28a745;border:1px solid rgba(40,167,69,.3)}.connection-status:contains("❌"){background:#dc354533;color:#dc3545;border:1px solid rgba(220,53,69,.3)}.reconnect-content{margin-bottom:25px;text-align:left}.reconnect-content>p{text-align:center;margin-bottom:15px;color:#666}.game-info{background:#667eea1a;border:1px solid rgba(102,126,234,.2);border-radius:10px;padding:15px;margin-bottom:15px}.info-item{display:flex;justify-content:space-between;margin-bottom:8px;padding:4px 0;border-bottom:1px solid rgba(0,0,0,.1)}.info-item:last-child{margin-bottom:0;border-bottom:none}.info-item strong{color:#4a5568}.connection-warning{background:#ffc10733;border:1px solid rgba(255,193,7,.4);border-radius:8px;padding:12px;margin-bottom:10px;text-align:center}.connection-warning p{margin:0 0 5px;color:#856404;font-weight:600}.connection-warning small{color:#6c757d}.reconnect-attempts{text-align:center;margin-bottom:10px}.reconnect-attempts small{color:#6c757d;font-style:italic}.reconnect-actions{display:flex;gap:12px;justify-content:center}.btn-primary{background:linear-gradient(135deg,#28a745,#20c997);color:#fff;border:none;padding:12px 18px;border-radius:8px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.9em;flex:1}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px #28a7454d}.btn-primary:disabled{background:#6c757d;cursor:not-allowed;opacity:.6}.btn-secondary{background:#6c757d;color:#fff;border:none;padding:12px 18px;border-radius:8px;font-weight:600;cursor:pointer;transition:all .3s ease;font-size:.9em;flex:1}.btn-secondary:hover{background:#5a6268;transform:translateY(-1px)}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.reconnect-overlay{padding:15px}.reconnect-dialog{padding:20px}.reconnect-actions{flex-direction:column}.btn-primary,.btn-secondary{flex:none;width:100%}.reconnect-header h2{font-size:1.2em}.game-info{padding:12px}.info-item{font-size:.9em}}#root{margin:0;padding:0;min-height:100svh}.App{margin:0;padding:0;min-height:100svh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.connection-error{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#ff6b6b,#ee5a24);color:#fff;text-align:center;padding:20px}.connection-error h2{font-size:2.5em;margin:0 0 20px;text-shadow:2px 2px 4px rgba(0,0,0,.3)}.connection-error p{font-size:1.2em;margin:10px 0;opacity:.9}.connection-error button{margin-top:30px;padding:15px 30px;background:#fff3;color:#fff;border:2px solid white;border-radius:10px;font-size:1.1em;font-weight:600;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.connection-error button:hover{background:#ffffff4d;transform:translateY(-2px);box-shadow:0 8px 20px #0003}.loading-screen{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;text-align:center;padding:20px}.loading-screen h2{font-size:2em;margin:20px 0 10px;text-shadow:2px 2px 4px rgba(0,0,0,.3)}.loading-screen p{font-size:1.1em;opacity:.8}.loading-spinner{width:60px;height:60px;border:4px solid rgba(255,255,255,.2);border-top:4px solid white;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box}body{margin:0;padding:0}.text-center{text-align:center}.mt-20{margin-top:20px}.mb-20{margin-bottom:20px}@media (max-width: 768px){.connection-error h2,.loading-screen h2{font-size:1.8em}.connection-error p,.loading-screen p{font-size:1em}}
