*{margin:0;padding:0;box-sizing:border-box}:root{--color-red: #e74c3c;--color-blue: #3498db;--color-green: #27ae60;--color-yellow: #f1c40f;--color-wild: #2c3e50;--bg-primary: #1a1a2e;--bg-secondary: #16213e;--bg-active: #1e3a5f;--bg-card: #0f3460;--text-primary: #ffffff;--text-secondary: #a0a0a0;--accent: #e94560;--success: #27ae60;--warning: #f39c12;--error: #e74c3c;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--card-width: 140px;--card-height: 200px;--card-radius: 16px}html,body{height:100%;font-family:Segoe UI,system-ui,sans-serif;background:var(--bg-primary);color:var(--text-primary);overflow:hidden}#app{height:100%;display:flex;flex-direction:column}.btn{padding:var(--spacing-sm) var(--spacing-lg);border:none;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:#d63d5a;transform:translateY(-2px)}.btn-secondary{background:var(--bg-card);color:#fff;border:2px solid var(--accent)}.btn-secondary:hover:not(:disabled){background:var(--accent)}.btn-danger{background:var(--error);color:#fff}.btn-small{padding:var(--spacing-xs) var(--spacing-sm);font-size:.85rem}.btn-uno{--glow-color: var(--color-red);background:var(--color-red);color:#fff;font-size:1.5rem;padding:var(--spacing-sm) var(--spacing-md);border-radius:4px;animation:glow 1.5s ease-in-out infinite}.btn-uno:active{transform:scale(.95);box-shadow:0 0 10px var(--color-red)}.home-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:var(--spacing-xl);gap:var(--spacing-xl)}.logo h1{font-size:5rem;font-weight:900;background:linear-gradient(135deg,var(--color-red),var(--color-yellow),var(--color-green),var(--color-blue));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none;letter-spacing:-2px}.logo .tagline{text-align:center;color:var(--text-secondary);font-size:1.2rem}.home-actions{display:flex;flex-direction:column;gap:var(--spacing-lg);width:100%;max-width:300px}.create-section,.join-section{display:flex;flex-direction:column;gap:var(--spacing-sm)}.home-actions input{padding:var(--spacing-md);border:2px solid var(--bg-card);border-radius:6px;background:var(--bg-secondary);color:#fff;font-size:1rem}.home-actions input:focus{outline:none;border-color:var(--accent)}.divider{display:flex;align-items:center;gap:var(--spacing-md);color:var(--text-secondary)}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--bg-card)}.connecting-screen,.disconnected-screen,.error-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--spacing-lg);text-align:center;padding:var(--spacing-xl)}.spinner{width:50px;height:50px;border:4px solid var(--bg-card);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.lobby-screen{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-xl);gap:var(--spacing-xl);height:100%}.room-header{text-align:center}.room-code{font-size:3rem;font-weight:900;letter-spacing:8px;color:var(--accent);margin:var(--spacing-md) 0}.players-section{flex:1;width:100%;max-width:400px}.players-section h3{margin-bottom:var(--spacing-md);color:var(--text-secondary)}.player-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.player-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--bg-secondary);border-radius:8px;border-left:4px solid transparent}.player-item.host{border-left-color:var(--accent)}.player-name{flex:1;font-weight:500}.host-badge,.you-badge{font-size:.75rem;padding:2px 8px;border-radius:4px;font-weight:600}.host-badge{background:var(--accent)}.you-badge{background:var(--bg-card)}.host-controls,.waiting-message{text-align:center}.hint{color:var(--text-secondary);font-size:.9rem;margin-top:var(--spacing-sm)}.settings-section{width:100%;max-width:400px}.settings-section h3{margin-bottom:var(--spacing-md);color:var(--text-secondary)}.settings-list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.setting-toggle{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--bg-secondary);border-radius:8px;cursor:pointer;transition:background .2s ease}.setting-toggle:hover{background:var(--bg-active)}.setting-toggle input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);cursor:pointer}.setting-label{font-weight:500;flex:1}.setting-hint{width:100%;font-size:.85rem;color:var(--text-secondary);margin-left:28px}.settings-section.readonly .settings-list{gap:var(--spacing-xs)}.setting-item{padding:var(--spacing-sm) var(--spacing-md);background:var(--bg-secondary);border-radius:6px;font-size:.9rem}.setting-item.enabled{color:var(--success)}.setting-item.disabled{color:var(--text-secondary)}.game-screen{display:flex;flex-direction:column;height:100%;padding:var(--spacing-md);gap:var(--spacing-md);background-image:url(/tables/Table_2.png);background-size:cover;background-position:center}.game-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-sm) var(--spacing-md)}.turn-actions-row{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:40px}.turn-indicator{font-weight:600;padding:var(--spacing-sm) var(--spacing-md);font-size:1.5rem;border-radius:4px}.turn-indicator.your-turn{--glow-color: var(--success);background:var(--success);animation:glow 1.5s ease-in-out infinite}.pending-draw-indicator{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);border-radius:6px;font-weight:600;animation:glow 1.5s ease-in-out infinite}.pending-draw-indicator.draw2{--glow-color: var(--color-red);background:var(--color-red)}.pending-draw-indicator.wild4{--glow-color: var(--color-wild);background:linear-gradient(135deg,var(--color-red),var(--color-yellow),var(--color-green),var(--color-blue))}.pending-count{font-size:1.5rem;font-weight:700}.pending-label{font-size:1rem}@keyframes glow{0%,to{box-shadow:0 0 5px var(--glow-color)}50%{box-shadow:0 0 20px var(--glow-color)}}.direction-indicator{width:4rem;height:4rem}.direction-indicator svg{width:100%;height:100%;fill:#fff;stroke:#fff;stroke-width:.5;transform:scaleX(-1);transition:transform .3s ease}.direction-indicator.counter-clockwise svg{transform:scaleX(1)}.direction-indicator.direction-changed{animation:flip .5s ease}@keyframes flip{0%{transform:rotateY(0)}50%{transform:rotateY(90deg)}to{transform:rotateY(0)}}.pause-btn{width:4rem;height:4rem;background:transparent;border:none;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center;transition:transform .2s ease,opacity .2s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.pause-btn svg{width:100%;height:100%;fill:#fff;stroke:#fff;stroke-width:.5}.pause-btn:hover{transform:scale(1.1);opacity:.8}.pause-btn:active{transform:scale(.95)}.pause-btn-placeholder{width:4rem;height:4rem}.resume-btn{display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm)}.resume-icon{width:1.5rem;height:1.5rem;fill:#fff}.other-players{display:flex;flex-wrap:nowrap;justify-content:center;align-items:flex-start;gap:calc(var(--spacing-md) * 1.15);padding:var(--spacing-sm);min-height:100px}.other-player{display:flex;flex-direction:column;align-items:center;gap:calc(var(--spacing-xs) * 1.25);padding:calc(var(--spacing-sm) * 1.25) calc(var(--spacing-md) * 1.25);background:var(--bg-secondary);border-radius:10px;border:2px solid transparent;min-width:150px;transition:transform .3s ease}.other-player.current{border-color:var(--success);background:var(--bg-active);animation:player-pulse 1.5s ease-in-out infinite}@keyframes player-pulse{0%,to{box-shadow:0 0 5px #27ae604d}50%{box-shadow:0 0 20px #27ae6099}}.other-player.disconnected{opacity:.5}.other-player .player-info{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:1.4rem}.other-player .card-count{font-size:1.2rem;color:var(--text-secondary)}.uno-indicator{background:var(--color-red);color:#fff;padding:2.5px 7.5px;border-radius:5px;font-size:.9375rem;font-weight:700}.challenge-btn{--glow-color: var(--color-red);background:var(--color-red);color:#fff;font-size:1.5rem;padding:var(--spacing-sm) var(--spacing-md);border-radius:4px;animation:glow 1.5s ease-in-out infinite;cursor:pointer;border:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.challenge-btn:active{transform:scale(.95);box-shadow:0 0 10px var(--color-red)}.table-area{flex:1;display:flex;justify-content:center;align-items:center;gap:var(--spacing-xl)}.draw-pile,.discard-pile{position:relative}.draw-pile{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.draw-pile:hover .card-back{transform:translateY(-5px);box-shadow:0 10px 30px #00000080}.draw-hint{position:absolute;bottom:-35px;left:50%;transform:translate(-50%);font-size:1.3rem;color:var(--text-secondary);white-space:nowrap}.draw-arrow{position:absolute;left:-3.5rem;top:50%;transform:translateY(-50%);width:3rem;height:3rem;animation:bounce-right 1.5s ease-in-out infinite}.draw-arrow svg{width:100%;height:100%;fill:#fff;stroke:#fff;stroke-width:.5;filter:drop-shadow(0 0 10px rgba(255,255,255,.8))}.draw-arrow:after{content:"";position:absolute;inset:-30%;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.5) 0%,transparent 70%);animation:glow-arrow 1.5s ease-in-out infinite;pointer-events:none;z-index:-1}@keyframes bounce-right{0%,to{transform:translateY(-50%) translate(0)}50%{transform:translateY(-50%) translate(10px)}}@keyframes glow-arrow{0%,to{opacity:.4}50%{opacity:1}}@media(max-width:768px){.draw-arrow{left:-2.5rem;width:2.5rem;height:2.5rem}.pause-btn,.pause-btn-placeholder{width:3.5rem;height:3.5rem}}@media(max-width:480px){.draw-arrow{left:-2rem;width:2rem;height:2rem}.pause-btn,.pause-btn-placeholder{width:3rem;height:3rem}}.discard-pile.card-played .card{animation:cardPlayed .3s ease}@keyframes cardPlayed{0%{transform:scale(.8) rotate(-10deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}.current-color{position:absolute;top:-10px;right:-10px;width:30px;height:30px;border-radius:50%;border:3px solid white}.my-hand-area{display:flex;flex-direction:column;align-items:center;padding:var(--spacing-md);background:var(--bg-secondary);border-radius:12px;overflow:visible}.my-hand{display:flex;flex-wrap:nowrap;justify-content:center;max-width:100%;overflow:visible;padding:var(--spacing-sm)}.card{width:var(--card-width);height:var(--card-height);border-radius:var(--card-radius);display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:700;position:relative;transition:transform .15s ease,box-shadow .15s ease;user-select:none;-webkit-user-select:none;flex-shrink:0;touch-action:manipulation;-webkit-tap-highlight-color:transparent;overflow:hidden}.card-image{width:100%;height:100%;object-fit:contain;pointer-events:none}.card-back .pile-count{position:absolute;font-size:1.5rem;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.8)}.card.in-hand{cursor:default}.card.in-hand:hover{transform:translateY(-10px);z-index:10}.card.in-hand.playable{cursor:pointer;box-shadow:0 0 15px #ffffff4d}.card.in-hand.playable:hover{transform:translateY(-20px) scale(1.05);box-shadow:0 0 25px #ffffff80}.card.in-hand:not(.valid){filter:brightness(.7)}.card.empty{background:var(--bg-card);border:2px dashed var(--text-secondary)}.card.card-flying{filter:brightness(1);box-shadow:0 10px 40px #0009}.card-drawing{transform-style:preserve-3d;perspective:1000px}.card-drawing .card-face{position:absolute;inset:0;backface-visibility:hidden;border-radius:var(--card-radius);overflow:hidden}.card-drawing .card-face img{width:100%;height:100%;object-fit:contain}.card-drawing .card-back-face{transform:rotateY(0)}.card-drawing .card-front-face{transform:rotateY(180deg)}.card-drawing.flipping{animation:cardFlip .25s ease-in-out forwards}@keyframes cardFlip{0%{transform:rotateY(0) scale(1.1)}to{transform:rotateY(180deg) scale(1.1)}}.color-red{background:var(--color-red)}.color-blue{background:var(--color-blue)}.color-green{background:var(--color-green)}.color-yellow{background:var(--color-yellow)}.color-picker{position:fixed;inset:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:100}.color-picker.hidden{display:none}.color-picker-content{background:var(--bg-secondary);padding:var(--spacing-xl);border-radius:12px;text-align:center}.color-picker-content h3{margin-bottom:var(--spacing-lg)}.color-options{display:flex;gap:var(--spacing-md)}.color-btn{width:60px;height:60px;border:none;border-radius:50%;cursor:pointer;transition:transform .2s ease;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.color-btn:hover{transform:scale(1.2)}.color-btn.color-red{background:var(--color-red)}.color-btn.color-blue{background:var(--color-blue)}.color-btn.color-green{background:var(--color-green)}.color-btn.color-yellow{background:var(--color-yellow)}.color-picker.non-interactive{pointer-events:none;-webkit-user-select:none;user-select:none}.color-picker.non-interactive .color-btn{cursor:default}.color-picker.non-interactive .color-btn:hover{transform:none}.color-btn.selected{transform:scale(1.2)}.paused-screen{display:flex;align-items:center;justify-content:center;height:100%;background:#000000e6}.paused-content{text-align:center;padding:var(--spacing-xl)}.paused-content h2{color:var(--warning);margin-bottom:var(--spacing-md)}.host-pause-controls{margin-top:var(--spacing-xl);display:flex;flex-direction:column;gap:var(--spacing-md)}.finished-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:var(--spacing-xl)}.winner-announcement{text-align:center}.winner-announcement h1{font-size:5rem;animation:bounce .5s ease infinite alternate}@keyframes bounce{0%{transform:translateY(0)}to{transform:translateY(-20px)}}.winner-announcement h2{font-size:2rem;color:var(--success)}.toast{position:fixed;top:20px;left:50%;transform:translate(-50%) translateY(-100px);padding:var(--spacing-md) var(--spacing-xl);border-radius:8px;font-weight:500;z-index:1000;transition:transform .3s ease}.toast.show{transform:translate(-50%) translateY(0)}.toast-success{background:var(--success);color:#fff}.toast-error{background:var(--error);color:#fff}.toast-warning{background:var(--warning);color:#fff}.toast-info{background:var(--bg-card);color:#fff;border:1px solid var(--text-secondary)}.btn-uno.uno-called{animation:unoFlash .5s ease}@keyframes unoFlash{0%,to{background:var(--color-red)}50%{background:var(--color-yellow);transform:scale(1.2)}}@media(max-width:768px){:root{--card-width: 110px;--card-height: 160px}.logo h1{font-size:3rem}.room-code{font-size:2rem;letter-spacing:4px}.other-player{min-width:135px;padding:calc(var(--spacing-sm) * 1.125) calc(var(--spacing-md) * 1.125)}.other-player .card-count{font-size:.95rem}.card-value{font-size:1.4rem}.table-area{gap:var(--spacing-lg)}}@media(max-width:480px){:root{--card-width: 90px;--card-height: 130px}.game-header{flex-direction:column;gap:var(--spacing-xs)}.other-players{flex-wrap:wrap;align-items:center;gap:calc(var(--spacing-xs) * 1.15);min-height:auto}.other-player{min-width:100px;padding:var(--spacing-xs) var(--spacing-sm);transform:none!important}.other-player .card-count{font-size:.85rem}.uno-indicator{font-size:.75rem;padding:2px 6px;border-radius:4px}.btn-uno{padding:var(--spacing-sm) var(--spacing-md);font-size:1rem}}@media(prefers-reduced-motion:reduce){.other-player.current{animation:none;box-shadow:0 0 15px #27ae6080}.turn-indicator.your-turn{animation:none;box-shadow:0 0 10px var(--success)}.btn-uno{animation:none;box-shadow:0 0 10px var(--color-red)}.btn-uno:active{transform:none}.challenge-btn{animation:none;box-shadow:0 0 10px var(--color-red)}.draw-arrow{animation:none}.draw-arrow:after{animation:none;opacity:.8}.card.card-flying,.card-drawing{transition:none!important}.card-drawing.flipping{animation:none!important;transform:rotateY(180deg) scale(1.1)}}
